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

下载本文档

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

文档简介

1、.实验名称 LED灯控制器 指导教师 专业班级 姓名 学号 联系电话 本人承诺:本报告内容真实,无伪造数据,无抄袭他人成果。本人完全了解学校相关规定,如若违反,愿意承担其后果。签字: 年 月 日一、任务要求实验内容:利用C8051F310单片机设计一个LED灯控制器 实验要求:1. LED灯外接于P0.0端。2. LED灯分别按2Hz,1Hz和0.2Hz三种不同频率闪动,各持续10s。3. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。4. 利用单片机内部定时器定时,要求采用中断方式。 二、设计思路C8051F310单片机片上晶振频率为24.5MHz,采用8分频后为3.0625MHz ,输入时

2、钟信号为48个机器周期,T1定时器采用定时方式1。2Hz,1Hz频率闪动均可以通过内部定时器单次计时直接达到效果,而0.2Hz单次闪动时间过长,无法达到,故通过中断内设置定时器技术的方式达到延长计时时间的效果。三、资源分配 P0.0:为LED灯控制端口,高电平触发。P3.1:为蜂鸣器控制端口,高电平触发。P0.1:为KINT键控制端口,下降沿触发。 R1、R2:用于存放计时器计时数据,R1赋给TH1、R2赋给TL1。 R3:0.2Hz下的中断程序内部循环计数器R7:存放三种模式的循环次数。 R0:在外部中断程序中赋值,用于判断采用何种模式。 PSW.1:为标志位,用于等待定时器中断,中断执行完

3、清零,并在中断处向下继续执行程序。四、流程图 1、 主程序流程图(含提高部分)2、 T_KINT中断部分 3、 ITOP中断部分 4、 IT1P部分五、源代码 (含文件头说明、语句行注释)包含基础部分和提高部分;-;- Generated Initialization File -;-$include (C8051F310.inc)LED BIT P0.0 ;LED灯控制端口BEEP BIT P3.1 ;蜂鸣器控制端口KINT BIT P0.1 ;KINT按钮端口 ORG 0000H LJMP MAIN ORG 0003H ;外部中断0入口LJMP T_KINTORG 000BH ;定时器T0

4、中断入口 LJMP IT0PORG 001BHLJMP IT1P ORG 1000HMAIN: LCALL Init_Device;设备初始化 MOV SP, #40H;置堆栈指针 MOV TMOD, #11H ;定时器T0、T1均为工作方式1MOV R0,#00H CLR LED ;关led灯 CLR BEEP ;关蜂鸣器 CLR PSW.1 ;标志位1清零 CLR PSW.5 ;标志位2清零SETB EX0 ;外部中断0允许 SETB IT0 ;下降沿触发SETB EA ;中断总允许 SETB ET0 ;定时器T0中断源允许SETB ET1 ;定时器T1中断源允许CHOO: CJNE R0

5、,#02H,LOOP ;选择模式 LJMP MODEL2 ;R0等于02H,跳转到1HzLOOP: JC MODEL1 ;R0小于02H,跳转到2Hz LJMP MODEL3 ;R0大于02H,跳转到0.2HzMODEL1: MOV R1, #0C1H ;设定2Hz闪烁方式定时器T0计数初值 MOV R2, #0B1H MOV R7, #28H ;置2Hz闪烁方式闪烁次数 ACALL L1 ;取定时器T0计数初值 SETB P3.1 ;蜂鸣器鸣响一次SETB TR0 ;启动定时器T0CLR P0.0 ;开LED灯HERE1: CJNE R7, #00H, HERE1;等待中断 CLR TR0;

6、2Hz闪烁方式结束,关闭定时器 MODEL2: MOV R1, #83H ;设定1Hz闪烁方式定时器T0计数初值 MOV R2, #63H MOV 7, #14H ;置1Hz闪烁方式闪烁次数 ACALL L1;取定时器T0计数初值 SETB P3.1;蜂鸣器鸣响一次SETB TR0;启动定时器T0CLR P0.0;开LED灯HERE2: CJNE R7, #00H, HERE2;等待中断 CLR TR0;1Hz闪烁方式结束,关闭定时器 MODEL3: MOV R1, #0C1H ;设定0.2Hz闪烁方式定时器T1计数初值 MOV R2, #0B1H MOV R7, #28H;置0.2Hz闪烁方

7、式闪烁次数 ACALL L3;取定时器T1计数初值 MOV R3, #00H;定时中断循环初值 SETB P3.1;关蜂鸣器SETB TR1;启动定时器T1 CLR P0.0;关LED灯HERE3: CJNE R7, #00H, HERE3;等待中断 CLR TR1;0.5Hz闪烁方式结束,关闭定时器 LJMP MODEL1;重新开始下一轮的闪烁L1: MOV A, R1;定时器0计数初值赋值子程序 MOV TH0, A MOV A, R2 MOV TL0, ARETL3: MOV A, R1 ;定时器1计数初值赋值子程序 MOV TH1, A MOV A, R2 MOV TL1, ARET

8、ORG 1200HIT0P: DEC R7;定时器T0中断服务程序 MOV A, R1;计数初值重新赋值 MOV TH0, A MOV A, R2 MOV TL0, ACLR P3.1;蜂鸣器停止鸣响 CPL P0.0;LED灯亮灭切换RETIORG 1400HIT1P: DEC R7;定时器T1中断服务程序 MOV A, R1;计数初值重新赋值 MOV TH1, A MOV A, R2 MOV TL1, AINC R3;循环初值加1 MOV A,R3ANL A,#0FHCJNE A,#0AH,BACK MOV R3,#00H CLR P3.1 CPL P0.0BACK: RETIT_KINT

9、:SETB PSW.1 ;标志位1置一,用于判断是否顺序执行三种模式 INC R0 ;R0加一,用于判断何种模式 CJNE R0,#04H,K_RET CLR PSW.1 ;R0到04H时清零标志位和R0 MOV R0,#00HK_RET: CLR TR1 ;关定时器1 POP SP POP SP ;出栈两次 MOV DPTR,#0036H PUSH DPL ;DPL压入栈顶 PUSH DPH ;DPH压入栈顶 RETI ; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_I

10、nit: anl PCA0MD, #0BFh mov PCA0MD, #000h retTimer_Init: mov TMOD, #011h mov CKCON, #002h retPort_IO_Init: ; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 - Unassigned, Open-Drai

11、n, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ;

12、P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 - Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassi

13、gned, Open-Drain, Digital mov XBR1, #040h retInterrupts_Init: mov IE, #08Bh ret; Initialization function for device,; Call Init_Device from your main programInit_Device: lcall PCA_Init lcall Timer_Init lcall Port_IO_Init lcall Interrupts_Init retend六、程序测试方法与结果如预期,三种波形的频率都有显示,而且没有错误。提高部分:在C8051F310单片机开发板烧录代码:不按KINT键时,LED灯以2Hz,1Hz和0.2Hz三种不同频率闪动,各持续10s,在开始、结束和切换模式时,蜂鸣器都响1s,按一次,LED灯以2Hz闪烁1

温馨提示

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

评论

0/150

提交评论