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

下载本文档

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

文档简介

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,输入时钟 信号为 48

2、个机器周期, 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、主程序流程图(含提高部分)开始C51初始化,允许外部中断0 ,下降沿触发,允许定时器TO、T1中断,工作方式11是 r切换至0.2Hz模式是R0=02H否Cy=0否切换至2Hz模式通过调用相应子程序(L1-L3)给定时器TO赋予初值,R1,R2分别赋予高位THO和低位TLO,R7为循环次数切换至1Hz模式蜂鸣器响,开LED,开启计时等待外部中断2、T KINT中断部分KINT键按下3、I TOP中断部分4、I TIP部分五、源代码 (含文件头说明、语句行注释)包含基础部分和提高部分;- Generated Initialization

4、File -$include (C8051F310.inc)LED BIT P0.0 ;LED灯控制端口BEEP BIT P3.1 ;蜂鸣器控制端口KINT BIT P0.1 ;KINT按钮端口ORG 0000HLJMP MAINORG 0003HLJMP T_KINTORG 000BHLJMP IT0PORG 001BHLJMP IT1P外部中断 0 入口定时器 T0 中断入口ORG 1000HMAIN: LCALL Init_Device; 设备初始化MOV SP, #40H; 置堆栈指针MOV TMOD, #11H; 定时器 T0、 T1 均为工作方式 1CLR LED ;关 led 灯

5、CLR BEEP ;关蜂鸣器CLR PSW.1; 标志位 1 清零CLR PSW.5; 标志位 2 清零MOV R0,#00H取定时器TO计数初值SETB IT0SETB EASETB ET0SETB ET1CHOO: CJNE R0,#02H,LOOPLJMP MODEL2 ;R0LOOP: JC MODEL1;R0LJMP MODEL3;R0MODEL1: MOV R1, #0C1HMOV R2, #0B1HMOV R7, #28HACALL L1SETB P3.1SETB TR0CLR P0.0HERE1: CJNE R7, #00H, HERE1CLR TR0MODEL2: MOV R

6、1, #83HMOV R2, #63HMOV 7, #14H下降沿触发 中断总允许定时器 T0 中断源允许定时器 T1 中断源允许选择模式等于 02H, 跳转到 1Hz小于 02H, 跳转到 2Hz大于 02H, 跳转到 0.2Hz设定2Hz闪烁方式定时器TO计数初值置2Hz闪烁方式闪烁次数蜂鸣器鸣响一次启动定时器 TO开LED灯; 等待中断;2Hz 闪烁方式结束 , 关闭定时器;设定1Hz闪烁方式定时器 TO计数初值置1Hz闪烁方式闪烁次数ACALL L1; 取定时器 TO 计数初值CLR PO.O;开 LED灯HERE2: CJNE R7, #00H, HERE2CLR TR0MODEL3

7、: MOV R1, #0C1HMOV R2, #0B1HMOV R7, #28HACALL L3MOV R3, #00HSETB P3.1SETB TR1CLR P0.0HERE3: CJNE R7, #00H, HERE3CLR TR1LJMP MODEL1L1: MOV A, R1MOV TH0, AMOV A, R2MOV TL0, ARETL3: MOV A, R1MOV TH1, A; 等待中断;1Hz 闪烁方式结束 , 关闭定时器; 设定 0.2Hz 闪烁方式定时器 T1 计数初值; 置 0.2Hz 闪烁方式闪烁次数; 取定时器 T1 计数初值; 定时中断循环初值; 关蜂鸣器; 启

8、动定时器 T1;关 LED灯; 等待中断;0.5Hz 闪烁方式结束 , 关闭定时器; 重新开始下一轮的闪烁; 定时器 0 计数初值赋值子程序定时器 1 计数初值赋值子程序MOV A, R2MOV TL1, ARETORG 1200HIT0P: DEC R7; 定时器 T0 中断服务程序MOV A, R1; 计数初值重新赋值MOV TH0, AMOV A, R2MOV TL0, ACLR P3.1; 蜂鸣器停止鸣响CPL P0.0;LED 灯亮灭切换RETIORG 1400HIT1P: DEC R7; 定时器 T1 中断服务程序MOV A, R1; 计数初值重新赋值MOV TH1, AMOV A

9、, R2MOV TL1, AINC R3; 循环初值加 1MOV A,R3ANL A,#0FHCJNE A,#0AH,BACKMOV R3,#00HCLR P3.1CPL P0.0BACK: RETIT_KINT:SETB PSW.1 ;标志位 1 置一,用于判断是否顺序执行三种模式INC R0 ;R0加一,用于判断何种模式CJNE R0,#04H,K_RETCLR PSW.1;R0到 04H 时清零标志位和 R0MOV R0,#00HK_RET: CLR TR1J关定时器 1POP SPPOP SP ;出栈两次MOV DPTR,#0036HPUSH DPL;DPL压入栈顶PUSH DPH;D

10、PH压入栈顶RETI; Peripheral specific initialization functions,; Called from the Init_Device labelPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #011hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Ope

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

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

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

温馨提示

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

最新文档

评论

0/150

提交评论