单片机实验报告材料LED灯控制器.doc

上传人:李司机 文档编号:1088005 上传时间:2022-06-21 格式:DOC 页数:14 大小:285.29KB
返回 下载 相关 举报
单片机实验报告材料LED灯控制器.doc_第1页
第1页 / 共14页
单片机实验报告材料LED灯控制器.doc_第2页
第2页 / 共14页
单片机实验报告材料LED灯控制器.doc_第3页
第3页 / 共14页
单片机实验报告材料LED灯控制器.doc_第4页
第4页 / 共14页
单片机实验报告材料LED灯控制器.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《单片机实验报告材料LED灯控制器.doc》由会员分享,可在线阅读,更多相关《单片机实验报告材料LED灯控制器.doc(14页珍藏版)》请在三一办公上搜索。

1、word微机实验报告LED灯控制器一、 任务要求实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术与中断程序的调试方法。实验容:利用C8051F310单片机设计一个LED灯控制器主要功能和技术指标要求:1. LED灯外接于P0.0端。2. LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。3. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。4. 利用单片机部定时器定时,要求采用中断方式。 提高要求:使用按键KINT控制LED灯闪烁模式的切换。二、 设计思路C8051F310单片机,输入时钟信号为48个机器周期,所以T1定时器采用定时方

2、式1,单次定时最长可以达到的时间为1.027s,可以满足0.5Hz是的定时要求。根底局部:给TMOD赋值10H,即选用T1定时器采用定时方式1,三种频率对应的半周期时间为0.25s、0.5s、1s。计算得需给TH1和TL1为C1H、B1H;83H、63H;06H、C6H。要使闪烁持续10s,三种模式需要各循环40、20、10次。用 ;为标志位,进定时器中断后置一JNC LOOP3 代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、TL1,R7为循环次数用DJNZ语句实现;定时中断里,重新给TH1、TL1赋值时同

3、理。这样,循环时只要把定时时间和循环次数赋给R1、R2、R7即可,达到减少代码长度的效果。蜂鸣器也采用T1定时方式1,定时一秒。提高局部: 采用外部中断0,下降沿触发。外部中断程序里置标志位PSW.1和R0,用于判断执行完一种模式后,是否跳出循环完毕。R0用于判断执行何种模式,每按一次后RO加一,第四次时就将R0和清零,这样程序就又回到了根底局部的循序执行。因为中断程序执行完后,会回到原来程序中断的地方,继续向下执行而给程序运行带来诸多不便。所以,查看了RETI语句的实现形式:将栈顶压入PCH,POP后再将栈顶压入PCL,利用这个定义,只要将需要返回的地址压入PCH和PCL就能返回到指定地址。

4、三、 资源分配:为LED灯控制端口,高电平触发。:为蜂鸣器控制端口,高电平触发。:为KINT键控制端口,下降沿触发。R1、R2:用于存放计时器计时数据,R1赋给TH1、R2赋给TL1。 R7:存放三种模式的循环次数。R0:在外部中断程序中赋值,用于判断采用何种模式。 PSW.1:为标志位,用于等待定时器中断,中断执行完清零,并在中断处向下继续执行程序。 PSW.5:为标志位,用于判断执行一种中断还是三种,在外部中断程序中改变。四、 流程图 1.主程序流程图含提高局部:2.外部中断流程图五、 源代码 含文件头说明、资源使用说明、语句行注释;*;Filename: LED;Decription:

5、LEDLED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。;在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。按一次按钮,LED以; 2Hz频率闪动;按第二次以1Hz频率闪动Hz频率闪动;; 第四次时又顺序执行三种模式可以在任何时候按按钮,不必等上一模; 式闪烁完;Designed by: gxy;*$include (C8051F310.inc) ;LED灯控制端口 ;蜂鸣器控制端口 ;KINT按钮端口ORG 0000H ;复位入口LJMP MAINORG 0003H ;外部中断0入口LJMP T_KINTORG 001BH ;定时器1入口LJMP TIME1MAIN: LC

6、ALL Init_Device ;初始化配置 MOV R0,#00H CLR LED ;关led灯 CLR BEEP CLR PSW.1 ;标志位1清零 CLR PSW.5 ;标志位2清零 SETB EA ;允许总中断 SETB EX0 ;外部中断0允许 SETB IT0 ;下降沿延触发 MOV TMOD,#10H ;置T1为定时方式1 SETB ET1 ;定时器T1允许中断;*;外部中断返回处,选择模式;*CHOO: CJNE R0,#02H,LOOP ;选择模式 LJMP CASE2 ;R0等于02H,跳转到模式2LOOP: JC CASE1 ;R0小于02H,跳转到模式1 LJMP CA

7、SE3 ;R0大于02H,跳转到模式3;*;模式1,2Hz闪烁10s;*CASE1:MOV R1,#0C1H MOV R2,#0B1H MOV R7,#28H LJMP START;*;模式2,1Hz闪烁10s;*CASE2:MOV R1,#83H MOV R2,#63H MOV R7,#14H LJMP START;*;10s;*CASE3:MOV R1,#06H MOV R2,#0C6H MOV R7,#0AH LJMP START;*;闪烁控制程序;*START:LCALL VOICE ;蜂鸣1s MOV TH1,R1 MOV TL1,R2 MOV A,R7BACK: SETB TR1

8、;开定时 ;等待中断,中断会置一标志位 JNC LOOP1 ;中断完毕,继续向下运行 ;清零标志位 DJNZ R7,BACK ;循环,使闪烁达到10s JC THERE ;为1如此只执行一种模式跳转到THERE等待外;部中断 CJNE A,#14H,LOOP2 ;顺序执行时,判断下一模式 LJMP CASE3 ;A=14H如此跳转到模式3LOOP2:JC THERE LJMP CASE2 ;A14H如此跳转到模式2THERE:LCALL VOICE ;蜂鸣1s SJMP $ ;踏步,等待外部中断;*;蜂鸣器响1s;*VOICE:SETB BEEP ;开蜂鸣 MOV TH1,#06H MOV T

9、L1,#0C6H SETB TR1 ;开定时器1 ;等待中断 JNC LOOP3 CLR BEEP ;关蜂鸣 RET;*;外部中断0;* ;标志位1置一,用于判断是否顺序执行三种模式 INC R0 ;R0加一,用于判断何种模式 CJNE R0,#04H,K_RET ;R0到04H时清零标志位和R0 MOV R0,#00HK_RET: CLR TR1 ;关定时器1 POP SP POP SP ;出栈两次 MOV DPTR,#0036H ;0036H为选择处地址 PUSH DPL ;DPL压入栈顶 PUSH DPH ;DPH压入栈顶 RETI ;返回到知道位置;*;定时器1中断;*TIME1: M

10、OV TH1,R1 MOV TL1,R2 ;重新置数 ;标志位置一 CLR TR1 ;关定时 CPL LED ;LED取反 RETI;*;初始化配置;*PCA_Init: ;关闭看门狗 anl PCA0MD, #0BFh mov PCA0MD, #000h retTimer_Init: ;定时器1初始化配置 mov TMOD, #010h mov CKCON, #002h retPort_IO_Init: ;端口初始化配置 mov XBR1, #040h retInterrupts_Init: ;中断初始化配置 mov IE, #009h retInit_Device: lcall PCA_I

11、nit lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init retEND 六、 程序测试方法与结果、软件性能分析1 、软件调试总体界面:2 、定时器1测试 软件调试时 利用标志位用JNC LOOP1语句,可以在中断返回后,在中断处继续向下执行代码硬件调试时,可以顺序以2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s,并且蜂鸣器鸣叫1s正常3、定时循环代码测试:例如执行模式1定时0.25s,要循环40次才能跳出一次循环后R7为27H开始时,R7为28H跳出循环时,R7为0所以,定时循环程序正常4、外部中断测试 如图,软件调试

12、时,进入中断程序执行到RETI后,DPTR被赋为0036H,pc在00ACH处再执行一步Pc在0036H处,返回到了指定位置。所以,这说明不管程序运行到了哪里,只要按下KINT键,就会返回到指定位置,选择下一种模式运行。Program Size: data=8.0 xdata=0 code=219代码利用合理空行和注释,不仅在视觉上美化了,而且让各个子段程序的功能一目了然,方便调试和检错硬件调试时,在C8051F310单片机开发板上跑代码:不按KINT键时,LED灯以2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s,在开始、完毕和切换模式时,蜂鸣器都响1s,按下一次时,LED灯以2Hz

13、闪烁10s后完毕;按下两次时,LED灯以1Hz闪烁10s后完毕;Hz闪烁10s后完毕;当按下第四次时,又切换回顺序执行三种模式,在上述过程,蜂鸣器君鸣叫正常。综上:此次程序,运行正常,很好的完成了要求的根底局部和提高局部七、 思考题.假如想实现3种闪耀方式的持续时间在5s-20s围可调,且每种方式的持续时间各不一样,应如何设计程序? 答:三种闪烁方式利用定时器执行,定时时间为0.25s、0.5s、1s 通过循环次数来控制持续时间,所以只要改变循环次数,就能改变持续时间初始持续时间可设为10s可以利用矩阵键盘来实现,通过键值扫描程序来判断按下了什么键,再通过键值处理来执行按键的功能可以设置 +键

14、、-键、和输入键按下+键,存放器如R5加一;按下-键,存放器如R5减一再按输入键后,模式1循环次数加4*R5;模式1循环次数加2*R5;模式1循环次数加1*R5,再执行程序来达到改变持续时间的功能。八、 实验小结通过本实验,我们一方面熟悉了C8051F310单片机开发板的结构、芯片间的连接方法,同时也掌握了简单的配置方法;另一方面,我们又加深对定时/计数器、中断、IO端口的理解,通过编写代码,我们也掌握了定时/计数器、中断的应用编程技术。程序写完后,调试是一定会出现很多问题,在软件调试时,我们一定要掌握利用断点来单步调试的方法,这样比拟容易找出错误,而且节约大量时间,在代码量较多时,效果尤为明显。写代码时,一定要合理布局,与时写上注释,这样也防止写下面程序时出现错误,同时也方便调试时查错。14 / 14

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号