实验四 单片机设计实验

合集下载

单片机C语言 - 实验四实验报告

单片机C语言 - 实验四实验报告
快速(数码管显示04)
单洗(数码管显示05)
单托(数码管显示06)
洗衣进度状态:
浸泡(数码管显示AA)
洗涤(数码管显示bb)
漂洗(数码管显示cc)
脱水(数码管显示dd)
蜂鸣器:
1个(P23)。
编写全自动洗衣机控制程序。
程序流程:按键开机-指示灯亮,按键选择轻柔洗涤,按水位选择开关循环选择水位。确认后启动。过程中用led模拟电机正反转,进水排水。洗涤启动后要求数码管每1秒钟切换显示剩余时间和当前的洗涤状态进度。并利用AT24C01保存当前的洗涤状态进度。在进入脱水状态之前检测机盖是否盖好(SW5按键按下模拟一次),蜂鸣提示没有盖好。洗好后蜂鸣提示正常结束和非正常结束。
2.实验数据全面,调试步骤准确,结果正确。很好( ) 一般( ) 否( )
3.实验报告格式规范,图表清晰。很好( ) 一般( ) 否( )
成绩
教师签名
张远海
批改时间
2008年4月3日
学生实验报告
系别
课程名称
单片机语言C51程序设计
专业
实验名称
实验四全自动洗衣机控制程序设计
班级
小组情况
1人1组
姓名
实验时间
2008年月日
学号
指导教师
张远海
报告内容
一、实验目的和任务
1.根据上次项目收集资料整理的程序流程图来完善全自动洗衣机控制程序的编写。
二、实验原理介绍
1.利用IO口控制共阳数码管的公共端作为数码管的选通控制,利用定时器编程实现数码管的动态显示驱动。利用IO口检测按键输入。利用IO口驱动LED灯,模拟显示全自动洗衣机状态。
三、实验设备介绍
1.系统需求:安装有windows98以上版本的操作系统

单片机系统实验实训报告

单片机系统实验实训报告

一、实验目的1. 熟悉单片机的基本结构和原理。

2. 掌握单片机的编程方法和调试技巧。

3. 培养单片机应用系统的设计能力。

4. 提高实际操作能力和团队协作精神。

二、实验内容本次实验实训主要围绕单片机应用系统展开,包括以下内容:1. 单片机最小系统搭建- 熟悉单片机的最小系统组成,包括复位电路、晶振电路、VCC、GND等。

- 掌握电路板焊接和调试方法。

2. LED流水灯实验- 学习使用51单片机进行简单的单片机应用系统硬件设计。

- 掌握单片机GPIO端口的使用方法。

- 通过编程实现LED灯的流水效果。

3. 按键控制LED灯实验- 学习使用按键输入控制LED灯的亮灭。

- 掌握按键去抖动技术。

4. LCD1602显示屏控制实验- 学习使用LCD1602显示屏显示文字和数字。

- 掌握LCD1602的初始化和显示控制方法。

5. 串口通信实验- 学习使用单片机串口进行通信。

- 掌握串口初始化和通信协议。

6. 温湿度传感器实验- 学习使用温湿度传感器获取环境温度和湿度信息。

- 掌握传感器数据读取和温度湿度计算方法。

7. 多功能密码锁实验- 学习使用单片机实现密码锁功能。

- 掌握按键输入、密码存储和匹配方法。

三、实验步骤1. 实验一:单片机最小系统搭建- 根据实验指导书,准备好实验器材,包括51单片机、电路板、焊接工具等。

- 按照电路图焊接电路,确保电路连接正确。

- 上电测试,观察LED灯是否亮起,确认电路工作正常。

2. 实验二:LED流水灯实验- 编写LED流水灯程序,使用51单片机GPIO端口控制LED灯的亮灭。

- 烧录程序到单片机,观察LED灯的流水效果。

3. 实验三:按键控制LED灯实验- 编写按键控制LED灯的程序,使用按键输入控制LED灯的亮灭。

- 烧录程序到单片机,测试按键控制功能。

4. 实验四:LCD1602显示屏控制实验- 编写LCD1602显示屏显示文字和数字的程序。

- 烧录程序到单片机,观察LCD1602显示屏的显示效果。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。

二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。

2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。

通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。

三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,点亮LED灯。

2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将按键和LED灯与单片机相连。

(3)编写程序,实现按下按键控制LED灯亮灭。

3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将数码管与单片机相连。

(3)编写程序,将数字输出到数码管上显示。

4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,实现定时器功能。

四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。

2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。

按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。

3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。

通过程序设计,可以实现数码管显示不同的数字。

4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。

通过调节定时器的参数,可以实现不同的定时功能。

五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。

通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。

这些技能对于日常生活和工程设计都具有很大的实用性。

在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。

单片机实训实验报告

单片机实训实验报告

一、实验名称单片机原理及应用实验二、实验目的1. 熟悉单片机的基本结构和原理,了解单片机在电子系统中的应用。

2. 掌握单片机编程语言C的基本语法和编程技巧。

3. 学会使用单片机进行简单控制,实现LED流水灯、数码管显示等基本功能。

4. 提高动手实践能力,培养团队合作精神。

三、实验仪器与设备1. 单片机实验箱:包括单片机、电源、按键、LED灯、数码管等。

2. 电脑:用于编程和仿真。

3. 编程软件:Keil uVision5或IAR EWARM等。

四、实验原理单片机是一种集成度高、功能强大的微控制器,具有运算速度快、功耗低、体积小等优点。

本实验以51单片机为例,介绍其基本原理和编程方法。

51单片机主要由以下几个部分组成:1. 中央处理器(CPU):负责执行指令,控制整个单片机系统。

2. 存储器:包括程序存储器(ROM)和数据存储器(RAM),用于存储程序和数据。

3. 输入/输出接口:用于与外部设备进行数据交换。

4. 定时器/计数器:用于实现定时和计数功能。

5. 中断系统:用于处理中断事件。

本实验主要涉及以下几个方面:1. 单片机基本结构和工作原理。

2. 单片机编程语言C的基本语法和编程技巧。

3. 单片机I/O口的使用和驱动能力。

4. 定时器/计数器的使用和编程。

5. 中断系统的使用和编程。

五、实验内容1. 实验一:LED流水灯(1)实验目的:掌握单片机I/O口的使用,实现LED流水灯效果。

(2)实验原理:通过单片机I/O口输出高低电平,控制LED灯的亮灭,实现流水灯效果。

(3)实验步骤:① 连接实验箱电路,将LED灯连接到单片机的P1口。

② 编写程序,设置P1口为输出模式,通过循环改变P1口输出电平,实现LED流水灯效果。

③在电脑上编译、下载程序,观察实验效果。

2. 实验二:数码管显示(1)实验目的:掌握单片机I/O口的使用,实现数码管显示功能。

(2)实验原理:通过单片机I/O口输出高低电平,控制数码管显示数字。

单片机实验4报告

单片机实验4报告

单片机实验4报告一、实验目的本次单片机实验的目的是深入了解和掌握单片机的编程与应用,通过实际操作来提升对单片机工作原理的理解,并能够熟练运用所学知识解决实际问题。

二、实验设备与工具1、单片机开发板2、编程软件(如 Keil)3、下载器4、电脑三、实验内容本次实验主要涉及以下几个方面:1、单片机的端口控制通过编程实现对单片机端口的高低电平输出,控制外接的 LED 灯的亮灭状态。

2、定时器/计数器的应用利用单片机的定时器/计数器功能,实现精确的定时控制,例如控制LED 灯的闪烁频率。

3、中断系统的使用了解单片机的中断机制,通过外部中断来实现特定的功能,如按键触发相应的操作。

四、实验步骤1、端口控制实验首先,在编程软件中创建一个新的工程,并选择对应的单片机型号。

编写端口控制的程序代码,设定某个端口为输出模式,并通过赋值来控制其输出电平。

将编写好的程序编译生成可执行文件。

使用下载器将程序下载到单片机开发板中,观察 LED 灯的亮灭状态是否符合预期。

2、定时器/计数器实验同样在编程软件中创建工程,并配置好相关的定时器/计数器参数。

编写定时器/计数器的初始化代码和中断服务程序,以实现特定的定时功能。

编译、下载程序,观察 LED 灯的闪烁频率是否符合设定的时间间隔。

3、中断系统实验先设置好中断的触发方式和优先级。

编写中断服务程序,当外部中断触发时,执行相应的操作。

编译、下载程序,通过按键触发中断,观察系统的响应是否正确。

五、实验结果与分析1、端口控制实验结果成功实现了通过编程控制单片机端口的输出电平,使 LED 灯按照预期的方式亮灭。

这表明对端口的配置和操作指令理解正确,能够有效地控制端口的输出状态。

2、定时器/计数器实验结果LED 灯的闪烁频率与设定的时间间隔相符,说明定时器/计数器的配置和编程正确,能够准确地实现定时功能。

3、中断系统实验结果按键触发中断后,系统能够迅速响应并执行中断服务程序中的操作,表明中断系统的设置和编程正确,能够及时处理外部中断事件。

单片机综合实验教学设计

单片机综合实验教学设计

单片机综合实验教学设计一、实验目的通过本实验,学生应能够:1.掌握单片机的基本原理和工作方式;2.理解单片机的输入输出口和端口控制;3.能够设计和实现简单的单片机控制电路。

二、实验器材1.STM32F103系列单片机开发板;2.电脑;3. J-Link仿真器;4.电源、USB线、母排线等。

三、实验内容及步骤1.实验一:LED灯控制实验目的:通过控制单片机输出口控制LED灯的亮灭,验证控制单片机的输出口功能。

实验步骤:(1)将LED灯的阳极连接到STM32F103开发板的一个IO口,将LED 的阴极通过电流限制电阻接地;(2)利用Keil或者编写汇编语言代码,控制该IO口输出高电平和低电平,从而控制LED灯的亮灭;2.实验二:按键控制LED灯实验目的:通过按键的输入控制LED灯的亮灭,进一步验证单片机的输入和输出功能。

实验步骤:(1)将一个按键连接到STM32F103开发板的一个IO口,通过上拉电阻将IO口引脚拉高;(2)编写程序,读取该IO口的电平状态,当按键按下时,该IO口电平跳变,从而控制LED灯的亮灭;3.实验三:数码管显示实验目的:通过控制单片机输出口的电平状态,实现对数字的显示。

实验步骤:(1)连接一个4位共阳数码管到STM32F103开发板的4个IO口,并通过电流限制电阻接入;(2)编写程序,设置文本、数字等需要显示的内容,并将其输出到对应的IO口,控制对应的数码管段亮灭;4.实验四:温度采集和控制实验目的:通过连接温度传感器和继电器,实现对温度的采集和控制。

实验步骤:(1)将温度传感器连接到STM32F103开发板的一个AD口,通过编程读取AD值,转换为温度值;(2)将继电器连接到另一个IO口,通过控制IO口的输出电平,实现继电器的断开和闭合;(3)编写程序,通过读取温度传感器的数值,判断温度是否超过设定值,当温度过高时,通过IO口控制继电器开关继电器,实现对温度的控制;四、实验总结学生完成了一系列基于单片机的实验项目,通过实践学习了单片机的基本原理和应用。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。

本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。

实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。

通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。

实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。

通过编程,可以控制这些功能模块的工作,实现各种应用。

2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。

本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。

实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。

2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。

程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。

3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。

4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。

实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。

通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。

实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。

同时,我们也加深了对温度传感器的原理和应用的理解。

这些知识和技能对于今后的学习和工作都具有重要意义。

单片机实训报告实验步骤

单片机实训报告实验步骤

一、实验目的1. 掌握单片机的基本工作原理和硬件结构。

2. 熟悉单片机的编程方法,提高编程能力。

3. 学习单片机的调试技巧,提高调试效率。

4. 通过实际操作,培养动手能力和团队合作精神。

二、实验仪器与设备1. 单片机实验开发板2. 编译器(如Keil、IAR等)3. 仿真软件(如Proteus、Multisim等)4. 连接线、电源、示波器等辅助设备三、实验步骤1. 熟悉单片机实验开发板(1)观察开发板的硬件结构,了解各个模块的功能和连接方式。

(2)熟悉开发板上的按键、LED、串口、I2C、SPI等接口。

2. 编写程序(1)根据实验要求,设计程序功能。

(2)选择合适的编程语言(如C语言、汇编语言等)。

(3)使用编译器编写程序代码,并进行语法检查。

3. 程序调试(1)使用仿真软件(如Proteus)对程序进行仿真调试。

(2)观察程序运行结果,检查程序是否存在错误。

(3)根据仿真结果,修改程序代码,直至程序正常运行。

4. 硬件连接(1)根据程序功能,连接开发板上的相关硬件模块。

(2)确保连接正确,避免短路或接触不良。

5. 实验运行(1)打开电源,启动单片机。

(2)观察程序运行情况,验证程序功能是否实现。

(3)根据实验要求,调整程序参数或硬件配置,优化程序性能。

6. 数据采集与记录(1)使用示波器等设备,采集实验过程中的数据。

(2)记录实验数据,为后续分析提供依据。

7. 结果分析(1)对实验数据进行整理和分析,评估程序性能。

(2)总结实验过程中的经验教训,提出改进措施。

8. 实验报告撰写(1)整理实验过程,包括实验步骤、实验数据、实验结果等。

(2)分析实验结果,总结实验经验教训。

(3)撰写实验报告,要求格式规范、内容完整。

四、实验注意事项1. 确保实验环境安全,避免触电、短路等事故。

2. 严格遵守实验操作规程,避免损坏实验设备。

3. 注意程序调试过程中的细节,提高调试效率。

4. 实验过程中,积极思考,勇于创新,提高动手能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程名称:单片机实验
题目:实验四单片机设计实验
学生姓名:
专业:
班级:
学号:
指导教师:
日期:年月日
实验四单片机设计实验
一、实验目的
1、掌握单片机定时器、中断、键盘扫描、动态显示及数值计算的综合运用能力;
2、掌握编程的运用能力;
3、设计一只简易的16 键计算器。

二、实验内容
图5-1
编程实现图5-1的简易16键4位十进制整数计算器的功能。

要求:
1.设计4*4的键盘,其中10个数字键0~9,其余6个为“+”“-”“*”“/”“=”和“C”
2.设计4位LED接口电路或LCD显示电路
3.实现2位数的简单运算
编程提示:
1、定时显示
开辟一显示缓冲区,显示中断程序定时读取缓冲区显示各位数字,每位显示2.5ms,显
示4 位需要10ms,也就是显示的刷新频率是100Hz。

这样既保证亮度又不闪烁,同时CPU 还
有足够时间做其他事情。

2、键盘中断扫描
利用键盘中断扫描程序,读出按键的键码,存入键盘缓冲区,供主程序读取。

3、计算器的主程序读取键盘缓冲区的键码,驱动计算器的运行。

4、计算中需要十进制与十六进制(或二进制)转化。

图5-2 简易16键计算器主程序框图
三、系统硬件设计电路图
四、软件设计
#include <reg51.h>
#include <intrins.h> //循环位移头文件
#define uchar unsigned char //宏定义
#define uint unsigned int
sbit P1_4=P1^4; //I/O端口定义(矩阵扫描后4位端口)sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
uchar i,num s;
uchar wei,wei 2,ss,ss1,ss2,str[]={0,0,0,0,0,0,0};
long temp,temp1,str[]={10,10,10,10,10,10,10};
uchar code dutable[]={ //段位编码
0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code wetable[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void init(); //函数声明
void panduan();
void display();
void delay(uint z);
void shaomiao();
void main() //主函数
{
init(); //调用变量初始化函数
while(1) //大循环
{
shaomiao(); //调用矩阵扫描加处理函数diaplay(); //调用显示函数
}
}
void init()
{
ss2=0;
wei2=1;
temp1=0;
ss=0;
ss1=0;
temp=0;
wei=0;
num=0;
}
{
uchar i;
uint j;
for(j=z;j>0;j--)
for(i=114;i>0;i--);
}
void shaomiao() //扫描加处理函数
{
for(i=0,s=0xfe;i<4;i++) //低四位端口依次赋值1 {
P1=s; //对P1口赋值
panduan(); //调用判断处理函数
s=_crol_(s,1); //s循环位左移
s=sl0xf0; //进行位或运算(使高4位复原)
}
}
void panduan()
{
uchar n;
if(P1_4==0||P1_5==0||P1_6==0||P1_7==0)
{
delay(10);
P1=sl0xf0;
if(P1_4==0||P1_5==0||P1_6==0||P1_7==0)
{
if(P1_4==0)
{n=1;num=i*4+n-1;}
else if(P1_5==0)
{n=2;num=i*4+n-1;}
{n=3;num=i*4+n-1;}
else if(P1_7==0)
{n=4;num=i*4+n-1;}
if(num<10&&wei!=7)
{
wei++;
if(ss1==1)
{
temp=0;
str[6]=str[5]=str[4]=str[3]=str[2]=str[1]=10;
str1[6]=str1[5]=str1[4]=str1[3]=str1[2]=str1[1]=0;
ss1=0;
}
str[wei]=num;
if(str[1]!=10) temp=str[1];
if(str[2]!=10) temp=str[1]*10+str[2];
if(str[3]!=10) temp=str[1]*100+str[2]*10+str[3];
if(str[4]!=10) temp=str[1]*1000+str[2]*100+str[3]*10+str[4];
if(str[5]!=10) temp=str[1]*10000+str[2]*1000+str[3]*100+str[4]*10+str[5];
if(str[6]!=10) temp=str[1]*100000+str[2]*10000+str[3]*1000+str[4]*100+str[5]*10+str[6]; }
if(num>=10)
{
wei=0;
if(num==10)
{
temp=0;
l[1]=0;
wei=0;
ss=0;
wei2=1;
}
if(ss1==0&&num==11||(ss1==0&&ss2!=0&&num>>11&&num<16)) {
if(num==11)
ss2=0;
switch(ss)
{
case0:break;
case1:temp=temp1;break;
case2:temp=temp1-temp;break;
case3:temp=temp*temp1;break;
case4:temp=temp1/temp;break;
}
if(temp>999999)
temp=0;
ss1=1;
}
if(num==12)
{
temp1=temp;
ss=1;ss1=1;ss2=1;
}
if(num==13)
{
temp1=temp;
ss=2;ss1=1;ss2=1;
}
temp1=temp;
ss=3;ss1=1;ss2=1;
}
if(num==15)
{
ss=4;ss1=1;ss2=1;
}
}
}
str1[6]=temp/100000;
str1[5]=temp%100000/10000; str1[4]=temp%10000/1000; str1[3]=temp%1000/100;
str1[2]=temp%100/10;
str1[1]=temp%10/1;
if(str1[1]!=0)
wei2=1;
if(str1[2]!=0)
wei2=2;
if(str1[3]!=0)
wei2=3;
if(str1[4]!=0)
wei2=4;
if(str1[5]!=0)
wei2=5;
if(str1[6]!=0)
wei2=6;
}
void display()
{
char i1;
for(i1=1;i1<wei2+1;i1++)
{
P2=wetable[0];
P3=dutable[14];
}
else
{
P2=wetable[i1-1];
P3=dutable[str1[i1]];
delay(10);
P3=0xff;
}
}
五、实验感想与体会
这一次的单片机设计实验我花了五天时间去完成,第一天我通过在网上和去图书馆找资料了解了这一方面的知识,第二,三天我在电脑上进行硬件电路的设计,第四,五天我进行了软件的设计并且进行了最后的仿真调试。

在这次单片机设计过程中我锻炼了自己的思考能力和动手能力,本次单片机设计实验加强了我思考问题的完整性和实际生活联系的可行性,在设计实验过程中,我培养起了综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识,还锻炼了个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力,并且熟练掌握了有关器件的性能及测试方法。

相关文档
最新文档