单片机实验报告LED灯控制器_第1页
单片机实验报告LED灯控制器_第2页
单片机实验报告LED灯控制器_第3页
单片机实验报告LED灯控制器_第4页
单片机实验报告LED灯控制器_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. 微机实验报告 LED灯控制器 指导教师: 专业班级 : 姓名: 学号: 联系方式: . . 一、 任务要求 实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。 实验内容:利用C8051F310单片机设计一个LED灯控制器 主要功能和技术指标要求: 1. LED灯外接于P0.0端。 2. LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。 3. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。 4. 利用单片机内部定时器定时,要求采用中断方式。 提高要求: 使用按键(KINT)控制LED灯闪烁模式的切换。 二、

2、设计思路 C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,所以T1定时器采用定时方式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次。 用LOOP3:MOV C,PSW.5 ;PSW.5为标志位,进定时器中断后置一 JNC LOOP3 代替踏步程序等

3、待中断,以便中断完后回到主程序继续向下执行。 为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、TL1,R7为循环次数(用DJNZ语句实现);定时中断里,重新给TH1、TL1赋值时同理。这样,循环时只要把定时时间和循环次数赋给R1、R2、R7即可,达到减少代码长度的效果。 蜂鸣器也采用T1定时方式1,定时一秒。 . . 提高部分: 采用外部中断0,下降沿触发。外部中断程序里置标志位PSW.1和R0,PSW.5用于判断执行完一种模式后,是否跳出循环结束。R0用于判断执行何种模式,每按一次后RO加一,第四次时就将R0和PSW.5清零,这样程序就又回到了基础部分的循序执行。

4、 因为中断程序执行完后,会回到原来程序中断的地方,继续向下执行而给程序运行带来诸多不便。所以,查看了RETI语句的实现形式:将栈顶压入PCH,POP后再将栈顶压入PCL ,利用这个定义,只要将需要返回的地址压入PCH和PCL就能返回到指定地址。 三、 资源分配 P0.0:为LED灯控制端口,高电平触发。 P3.1:为蜂鸣器控制端口,高电平触发。 P0.1:为KINT键控制端口,下降沿触发。 R1、R2:用于存放计时器计时数据,R1赋给TH1、R2赋给TL1。 R7:存放三种模式的循环次数。 R0:在外部中断程序中赋值,用于判断采用何种模式。 PSW.1:为标志位,用于等待定时器中断,中断执行完

5、清零,并在中断处向下继续执行程序。 PSW.5:为标志位,用于判断执行一种中断还是三种,在外部中断程序中改变。 四、 流程图 : 1.主程序流程图(含提高部分). . 始开化始初发沿触0,下降许允外部中断1方式,定时器允许定时1中断YR0=02HNYR002HNCASE2CASE1CASE33H806H R1R10C1H?R1?3H? R2 R2?0C6H0B1H6 R214HR7R7?0AH8HR7?2?1?TH?TL?7-R?R7=caseA=14PSW.1=caseA141中. . 外部中断流程图2.3.定时器中断流程图 定时器溢出下键按KINT触发中断1置PSW.1重新赋值?R1H1T

6、TL1?R20+1R0?R标志位PSW.1置一NR0=04H关定时Y零PSW.1清零清R0LED(P0.0)取PO036DPT?DPDP主 . . 五、 源代码 (含文件头说明、资源使用说明、语句行注释) ;* ;Filename: LED灯闪烁.asm ;Decription: LED LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。 ; 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。按一次按钮,LED以 ; 2Hz 频率闪动;按第二次以1Hz频率闪动;按第二次以0.5Hz频率闪动; ; 第四次时又顺序执行三种模式(可以在任何时候按按钮,不必等上一模 ; 式闪烁完)

7、;Designed by: gxy ;Date: 2012.10.31 ;* $include (C8051F310.inc) LED BIT P0.0 ;LED灯控制端口 BEEP BIT P3.1 ;蜂鸣器控制端口 KINT BIT P0.1 ;KINT按钮端口 ORG 0000H ;复位入口 LJMP MAIN ;外部中断0ORG 0003H 入口 LJMP T_KINT ;定时器ORG 001BH 1入口 LJMP TIME1 初始化配置MAIN: LCALL Init_Device ; MOV R0,#00H CLR LED ;led灯关 CLR BEEP CLR PSW.1 ; 标

8、志位1清零 ;标志位 CLR PSW.5 2 清零 允许总中断 ; SETB EA . . SETB EX0 ;外部中断0允许 ; 下降沿延触发 SETB IT0 ;置T1为定时方式 1 MOV TMOD,#10H SETB ET1 ;定时器T1允许中断;* ;外部中断返回处,选择模式 ;* CHOO: CJNE R0,#02H,LOOP ;选择模式 LJMP CASE2 ;R0等于02H,跳转到模式2 LOOP: JC CASE1 ;R0小于02H,跳转到模式1 LJMP CASE3 ;R0大于02H,跳转到模式3 ;* ;模式1,2Hz闪烁10s ;* CASE1:MOV R1,#0C1H

9、 MOV R2,#0B1H MOV R7,#28H LJMP START ;* ; 模式2,1Hz闪烁10s ;* CASE2:MOV R1,#83H MOV R2,#63H MOV R7,#14H LJMP START ;* ; 模式3,0.5Hz闪烁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,R7 BACK: SETB TR1 ;开定时 LOOP1:MOV C,PSW.5 ;

10、等待中断,中断会置一标志位PSW.5 JNC LOOP1 ;中断结束,继续向下运行 CLR PSW.5 ;清零标志位 DJNZ R7,BACK ; 循环,使闪烁达到10s MOV C,PSW.1 等待外THERE为1则只执行一种模式跳转到 JC THERE ; PSW.1 部中断; CJNE A,#14H,LOOP2 ;顺序执行时,判断下一模式3 LJMP CASE3 ;A=14H则跳转到模式LOOP2:JC THERE LJMP CASE2 ;A14H则跳转到模式2 1s 蜂鸣THERE:LCALL VOICE ; 踏步,等待外部中断 SJMP $ ;* 1s ;蜂鸣器响;* VOICE:S

11、ETB BEEP 开蜂鸣 ; . . MOV TH1,#06H MOV TL1,#0C6H CLR PSW.5 SETB TR1 ;开定时器1 LOOP3:MOV C,PSW.5 ;等待中断 JNC LOOP3 CLR BEEP ;关蜂鸣 RET ;* ;外部中断0 ;* T_KINT:SETB PSW.1 ;标志位1置一,用于判断是否顺序执行三种模式 INC R0 ;R0加一,用于判断何种模式 CJNE R0,#04H,K_RET CLR PSW.1 ;R0到04H 时清零标志位和R0 MOV R0,#00H K_RET: CLR TR1 ;关定时器1 POP SP POP SP ;出栈两次

12、 MOV DPTR,#0036H ;0036H 为选择处地址 PUSH DPL ;DPL压入栈顶 PUSH DPH ;DPH压入栈顶 RETI ;返回到知道位置 ;* ;定时器1中断 ;* TIME1: MOV TH1,R1 MOV TL1,R2 ;重新置数 SETB PSW.5 ;标志位置一 关定时 CLR TR1 ;. . CPL LED ;LED取反 RETI ;* ;初始化配置 ;* PCA_Init: ;关闭看门狗 anl PCA0MD, #0BFh mov PCA0MD, #000h ret Timer_Init: ;定时器1初始化配置 mov TMOD, #010h mov CK

13、CON, #002h ret 端口初始化配置 Port_IO_Init: ; mov XBR1, #040h ret Interrupts_Init: ;中断初始化配置 mov IE, #009h ret Init_Device: lcall PCA_Init lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init ret END . . 六、 程序测试方法与结果、软件性能分析 1 、软件调试总体界面: 2 、定时器1测试 软件调试时 利用标志位用LOOP1:MOV C,PSW.5 JNC LOOP1 语句,可以在中断返回后,在中断处

14、继续向下执行代码 硬件调试时,可以顺序以2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s,并且蜂鸣器鸣叫1s正常 3、定时循环代码测试: 例如执行模式1定时0.25s,要循环40次才能跳出 开始时,R7为28H 一次循环后R7为27H . . 跳出循环时,R7为0 所以,定时循环程序正常 4、外部中断测试 如图,软件调试时,进入中断程序执行到RETI后,DPTR被赋为0036H,pc在00ACH处 再执行一步 . . KINT处,返回到了指定位置。所以,这说明不管程序运行到了哪里,只要按下在0036HPc 键,就会返回到指定位置,选择下一种模式运行。 Program Size: dat

15、a=8.0 xdata=0 code=219 方而且让各个子段程序的功能一目了然,代码利用合理空行和注释,不仅在视觉上美化了, 便调试和检错 C8051F310单片机开发板上跑代码:硬件调试时,在,在开始、结10s0.5Hz1Hz和三种不同频率闪动,各持续KINT不按键时,LED灯以2Hz, ,束和切换模式时,蜂鸣器都响1s 后结束;闪烁10s按下一次时,LED灯以2Hz 10s后结束;LED灯以1Hz闪烁按下两次时, 后结束;0.5Hz闪烁10s按下三次时,LED灯以 当按下第四次时,又切换回顺序执行三种模式, 在上述过程,蜂鸣器君鸣叫正常。 综上:此次程序,运行正常,很好的完成了要求的基础

16、部分和提高部分 . . 七、 思考题 .若想实现3种闪耀方式的持续时间在5s-20s范围内可调,且每种方式的持续时间各不相同,应如何设计程序? 答: 三种闪烁方式利用定时器执行,定时时间为0.25s、0.5s、1s 通过循环次数来控制持续时间,所以只要改变循环次数,就能改变持续时间(初始持续时间可设为10s) 可以利用矩阵键盘来实现,通过键值扫描程序来判断按下了什么键,再通过键值处理来执行按键的功能 可以设置 +键、-键、和输入键 按下+键,寄存器如R5加一;按下-键,寄存器如R5减一 再按输入键后,模式1循环次数加4* R5;模式1循环次数加2* R5;模式1循环次数加1* R5,再执行程序来达到改变持续时间的功能。 八、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论