上机报告3剖析
实验名称 LED灯控制器 成 绩
任务要求
利用C8051F310单片机设计一个LED灯控制器
主要功能和技术指标要求:
1. LED灯外接于P0.0端。
2. 采用PWM方式调节LED灯的亮度,亮度分为16个等级,亮度顺序为
0-1-2…E-F-E-D…1-0-1-2…F-E…2-1-0,每个亮度等级延时2秒钟。
0对应熄灭,F最亮。
3. 在LED显示器上显示当前亮度等级。
4. 在LED灯亮度最大最小时蜂鸣器分别鸣响1次(0.5秒钟)。
5. 利用单片机内部定时器定时,要求采用中断方式。
提高要求:
1)使用按键(KINT)开关LED灯,要求采用中断方式。
2)改变LED的亮度调节范围为0-31,并在在LED显示器上显示当前亮度值。
3)可用键盘设置亮度值。
4)其它个性化设计。
设计思路
基础部分:定时器T0用于定义一个单位时间,用R7控制有效电平占用的单位时间的
个数,R6控制周期的单位时间个数,R5计周期个数。这样通过占空比通过
控制R7的值即可;R5,R6用CJNZ语句判断是否该电平翻转,开关蜂鸣器,
到达延时2s的时间等。
为了更好展现代码,可以将控制R7的值作为主程序,延时、显示、蜂鸣器
均作为子程序被调用。
定时器定时时间为2s÷200(R5)÷20(R6)=0.0005s容易计算定时器初值,
为了保证显示器稳定显示,可以每0.01s扫描一次数码管,即每次R5加一
就显示一次。
提高部分:主程序是扫描键盘,获得按键的值,但是为了在扫描键盘的同时LED亮度还
是会按规律的改变,在提高部分将LED亮度控制部分放在定时器中断程序里
面,这样就可以在不影响键盘扫描的同时对LED进行控制。主要想法是用两
个定时器,定时器T0作为LED有效电平时间的控制,定时器T1作为LED
周期时间的控制:T0定时结束即关闭T0,并且关闭LED;直到T1定时结束,
在中断程序中打开定时器T0,并且再次打开LED灯,并且用R6计进入T1
中断次数,即计周期数,当同一占空比(即同一亮度)延时2s完成,则置
标志位,再进入改变占空比,改变显示器等的子程序中。另外注意,须将
T0中断优先级置得比T1高。
由于这次是用定时器控制有效电平时间,则T0的初值是要有规律的改变的,
基于此不如用查表法查询T0定时初值,用MOVC A,@A+DPTR指令即可,只需
注意DW指令先存高位后存低位即可。
提高部分中显示部分为了稳定的显示两位亮度,必须置标志位,标志位控制
每次显示的数码管是哪一个。由于要轮流显示两位数码管,标志位只需定时
取反即可。
KINT外部中断需判断是第一次按键还是第二次按键,第一次按键则关定时
器,关显示,关蜂鸣器等,第二次则开定时。但是由于如果第一次按KINT
键后就退出中断,再进中断后要处理的问题就比较复杂,极易出现bug,不
如第一次按键释放后就在中断程序中等待再次按键,这样比较容易实现。
资源分配
P0.0 控制LED P0.1 控制KINT 键 P3.1 控制蜂鸣器
基础部分:R5 存放完成的周期数
R6、R7 存放经历的单位时间数
T0定时器,工作方式1
提高部分:R1 存放按键次数
R2 存放送入P2端口的值
R3 存放按键的行值
R4 存放按键的列值
R6 存放进入T1中断的次数
R7 存放当前亮度的BCD码
20H.0 作为标志位
30H 存放当前亮度的16进制数
31H、32H 存放循环次数
35H 存放TL0
36H 存放TH0
定时器T0,T1工作方式1
流程图
基础部分:
子程序:
提高部分:
主程序:
主程序中各模块的具体流程:
子程序:
中断程序:
源代码 (含文件头说明、语句行注
您可能关注的文档
最近下载
- 应用文写作求职信.pptx VIP
- 注册安全工程师考试《安全生产专业实务(其他安全)》题库(案例分析题)10211.pdf VIP
- 安徽单招考试2025、2025分类考试真题语文数学英语试题(含答案).pdf VIP
- 41834马工程西方文学理论全套PPT课件.pptx
- 粉尘涉爆安全教育课件.ppt VIP
- 协同治理机制经典文献推荐.docx VIP
- 1.国家电力投资集团有限公司光伏项目工程建设管理标准化工作手册.docx VIP
- CECS246-2008 给水排水工程顶管技术规程.pdf VIP
- 人教版(2024)七年级下册英语 Unit 6 Rain or Shine 教案(单元整体教学设计).docx
- 2025年苏州农业职业技术学院单招笔试英语试题库含答案解析.docx VIP
原创力文档

文档评论(0)