网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机报告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 流程图 基础部分: 子程序: 提高部分: 主程序: 主程序中各模块的具体流程: 子程序: 中断程序:

文档评论(0)

文档精品 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6203200221000001

1亿VIP精品文档

相关文档