闪烁LED小灯的设计.docx
- 文档编号:12181562
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:9
- 大小:21.39KB
闪烁LED小灯的设计.docx
《闪烁LED小灯的设计.docx》由会员分享,可在线阅读,更多相关《闪烁LED小灯的设计.docx(9页珍藏版)》请在冰豆网上搜索。
闪烁LED小灯的设计
闪烁LED小灯的设计
一、设计要求
利用单片机作为控制核心,完成功能:
本设计的闪烁小灯控制器,
具体要求如下:
可使小灯轮流点亮,可使小灯轮流点亮、逐点点亮、间隔点亮。
通过按键来进行切换。
基本部分
(1)主程序
(2)中断程序
(3)扫描子程序
(4)延时程序
二、实验方案与原理分析
实验总体电路构造方案比较简单,主要包括键盘控制电路(用脉冲按键开关对电路进行控制),程序控制电路和显示电路(单片机控制发光二极管的显示)。
按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。
低电压、高性能CMOS8位单片机,具有丰富的内部资源:
4kB闪存、128BRAM、32根I/O口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有~的电压工作范围和0~12MHz工作频率,使用ST89C52单片机时无须外扩存储器。
因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
方案一
利用STC89C52A芯片做为CPU。
只有工作电压的STC89C52单片机,使得产品更小,更轻,功耗更低降低成本,提升性能,原有程序直接使用,硬件无需改动。
如果相关新增功能没有用到,则不需看相应部分。
用STC提供的工具将您原有的代码下载进STC相关的单片机即可,或用通用编程器编程。
另外TXD和RXD是用于异步串行通信的。
其实STC系列单片机的ISP下载线就是一个max232芯片连接STC和计算机的串行通信口。
计算机把程序从九针串口送到MAX232芯片,电平转换后送进单片机的串行口,也就是TXD和RXD。
然后单片机的串行模块把数据送到程序区。
方案一系统方框图如下:
«SkipRecordIf...»
图1系统方框图
方案一的电路原理图:
«SkipRecordIf...»
图2方案一的电路原理图
、方案二
利用MSP430芯片做为CPU。
MSP430各端口具有丰富的控制寄存器供用户实现相应的操作。
其中P1,P2具有7个寄存器,P3~P6具有4个寄存器。
通过设置寄存器我们可以实现:
(1)每个I/O位独立编程;
(2)任意组合输入,输出和中断;(3)P1,P2所有8个位全部可以用作外部中断处理;(4)可以使用所以指令对寄存器操作;(5)可以按字节输入、输出,也可按位进行操作;
方案二的框图如下:
«SkipRecordIf...»
图3方案二系统框图
、方案三
框图略。
利用芯片PIC16FA做为主要芯片。
此芯片具有高性能RISCCPU.仅有35条单字指令,除程序分支指令为两个周期外,其余均为单周期指令,有14个中断源,8个深度的硬件堆栈,也是支持直接,间接和相对寻址方式。
三、方案对比
利用STC89C52A芯片做为CPU时在掉电时典型功耗为,还可由外部中断唤醒,中断返回后,继续执行原程序。
空闲模式,典型功耗为2mA。
正常工作模式,典型功耗为4mA-7mA。
超强抗干扰STC89C51RC/RD+系列单片机。
I/O口输入/输出口经过特殊处理,很多干扰是从I/O进去的,每个I/O均有对VCC/对GND二级管箝位保护。
电源单片机内部的电源供电系统经过特殊处理,很多干扰是从电源进去的。
时钟,单片机内部的时钟电路经过特殊处理,很多干扰是从时钟部分进去的。
看门狗,单片机内部的看门狗电路经过特殊处理,打开后无法关闭,可放心省去外部看门狗。
复位电路,单片机内部的复位电路经过特殊处理,很多干扰是从复位电路部分进去的,STC89C51RC/RD+系列单片机为高电平复位。
推荐外置复位电路为MAX810/STC。
而在用MSP430芯片做为CPU时,MSP430系统中没有专门的输入/输出指令,输入/输出操作通过传送指令来实现。
当任一事件引起的中断进行处理时,~不会自动复位,必须由软件来判断是对哪一个事件,并将相应的标志复位并且外部中断事件的时间必须保持不低于倍的MCLK时间,以保证中断请求被接受,且使相应中断标志同时端口P3、P4、P5、P6没有中断能力,端口COM和S,他们实现必需要与液晶片的直接接口相连。
对于方案三中,在当中断发生时,中断标志位置1,不管它的相应使能位或全体使能位的状态,用户软件在使能一个中断之前保证合适的中断标志位清零。
且价格比ST89C52要贵得多。
尤其重要的是STC89C52A芯片便宜,且对于我们所需功能不是很多,且对于这个要求不是很高的LED灯点亮的情况下,都能满足条件。
因此我是毫不犹豫的选择了STC89C52A芯片做为我的主芯片;
四、LED灯的介绍
该灯使用5V电源供电,220V交流电经C1降压电容降压后经全桥整流再通过C2滤波后经限流电阻R3给串联的38颗LED提供恒流电源.LED的额定电流为20mA,但是我们在制作节能灯的时候要考虑很多方面的因素对LED的影响,包括光衰和发热的问题,我们在做这种灯的时候因为LED的安装密度比较高,热量不容易散出,LED的温度对光衰和寿命影响很大,如果散热不好很容易产生光衰,因为LED的特性是温度升高电流就会增大,所以一般在做大功率照明时散热的问题是最重要的,将影响到LED的稳定性,小功率一般都采取自散热方式,所以在电路设计时电流不宜过大.所以一定要有个保护电阻,电容C1还得有一个卸放电阻,限流电阻防止电压升高和温度升高LED的电流增大,C2是滤波电容,实际在LED电路中可以不用滤波电路,C2是用来防止开灯时的冲击电流对LED的损害,开灯的瞬间因为C1的存在会有一个很大的充电电流,该电流流过LED将会对LED产生损伤,有了C2的介入,开灯的充电电流完全被C2吸收起到了开灯防冲击保护.该电路是小功率灯杯最实用的电路,占用体积小可以方便的装在空间较小的灯杯里,现在被灯杯产品广泛的采用.优点:
恒流源,电源功耗小,体积小,经济实用.但是在设计时降压电容要采用耐压在400V以上的涤纶电容或CBB电容,滤波电容要用耐压250v以上.此电路适合驱动20-40只20mA的LED.
五、程序说明
程序中我们是可以逐个控制P1端口的每个位来实现的,但是程序显得会有点复杂,而我利用循环移位指令及查表,采用循环程序结构进行编程。
我们在程序一开始就给P1口送一个数,这个数本身就让先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果啦。
由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。
具体编程如下所示,程序结构确实简单了很多。
运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。
我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中,然后通过查表指令“MOVC A,@A+DPTR”把数据取到累加器A中,然后再送到P1口进行显示
、初始化程序
通过扫描口,判断是否有按键按下,然后再20H内存单元的低3位的对应位置1标志,确定应执行的闪烁功能。
当为1时,发光管轮流点亮;当为1时,发光管逐点点亮;当为1时,发光管间隔点亮。
在主程序对20H的低3位进行位值判定后,转入相应的闪烁控制程序。
上电初始化时,对20H的最低置1,系统进入轮流点亮方式.
如果按键较多,常用软件方法去抖,即检测出键闭合后执行一个延时程序,产生5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。
当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
以下是本次设计的软件消抖子程序块:
DELAY:
MOVR3,#20;延时秒,改变R3的值可以改变延时间的长短
D1:
MOVR4,#20
D2:
MOVR5,#248
DJNZR5,$
DJNZR4,D2
DJNZR3,D1
RET
;延时时间为513us
DL512:
MOVR2,#0FFH
LOOP1:
DJNZR2,LOOP1
RET
;10ms延时子程序(调用20次延时子程序)
DL10MS:
MOVR3,#14H
LOOP2:
LCALLDL512
DJNZR3,LOOP2
RET
;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为200ms*15)
DL05S:
MOVR4,#0FH
LOOP3:
LCALLDL25MS
DJNZR4,LOOP3
RET
;200ms延时子程序,调用扫键子程序延时,可快速读出功能按键值
DL25MS:
MOVR5,#0FFH
LOOP4:
LCALLKEYWORK
DJNZR5,LOOP4
RET
5.2显示功能程序
我们主要是从显示设备上获取微机系统的信息的,因此,我们每操作一下,显示设备上都应该有一定的反应。
也就是说监控程序需要调用显示模块。
不同的操作就需要显示不同的内容。
这也说明各执行模块对显示模块的驱动方式是不同的。
但是没有操作的时候,显示的内容也是要有变化的,如现场各个量的变化情况。
在安排中断程序时,中断程序也是要调用显示模块。
这样一来我们可以得到一种比较好的方法就是只让一处调用显示模块,其他各处均不得直接调用显示模块,但是有权力申请。
我们只要设置一个标志,当某个模块需要时,将申请标志置位,同时设定有关显示内容。
这样一来就不会发生冲突了。
为了使显示模块能及时反映系统需要,应将显示模块安排在一个重复执行的循环。
这样处理起来也就比较方便,只要在监控程序的汇合处调用显示模块就可以了。
不过在为了避免出现显示混乱。
解决这个的办法是在申请显示前,先检查是否已经有显示申请,如果有,就不再申请,等待下次机会;如果没有,则先置位申请标志,再将显示内容送到显示缓冲区。
这时就不必担心其他的前台模块来打扰了,就可以得到一次完整的显示机会。
显示程序由显示主程序和显示子程序组成。
显示主程序负责每次显示地址首址(在A寄存器中)、第个数字的显示时间和下一个显示地址的间隔用延时来处理。
在显示子程序中,1ms延时程序是用调用键扫描子程序的方法实现的。
主程序如附录(四)延时程序所示.
第一种功能就是轮流点亮,我采用的带进位的左移指令这样的话也就是使灯从变成→→→→→→→01111111→.
第二种功能就是逐点点亮,为了方便,我是用了查表的方式把整个显示放在一个TAB中。
也就是为了方便查表使用。
只要我让其在最开始时就把指针放在表头位置,然后一步一步查表就可以得到我们想要的效果。
第三种功能是间隔点亮,这个功能是最简单的了,我们只要赋好了初值,也就是关键是把初值赋成了,也就是一开始便让他是间隔点亮。
这样一来,我们只要用一个指令CPL也就是逐位取反可以得到,但是仔细一点会发现,我们只要通过移位指令就可以了。
我就是用的RL移位指令来实现我们所需要的这种功能。
对于三种功能的实现,只要利用按键就可以进行切换。
这就是这次课程设计的总体设计任务的实现。
六、总结与思考及致谢
我们进行了为期一周的课程设计。
通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。
而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。
尤其是观察、分析和解决问题的实际工作能力。
运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。
检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。
对我们电子专业的学生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。
这也是一次预演和准备毕业设计工作。
通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。
在这个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。
并且在这次课程设计的过程中,我真正接触到了硬件,经历从对硬件方面知识的欠缺到熟悉的过程,通过这次实验,第一次觉得原来硬件并不像我想象中的那样难,相反地,它是一门很有意思的课程,那么多不同的小小的芯片组合在一起竟然可以实现你想象不到的效果,真的是很神奇!
以前只是觉得软件里的程序很神奇,因为就是那些密密麻麻的代码组合在一起也可以实现很特别的功能,现在看来硬件也蛮有意思的,总的说来,计算机真的是一门很神奇的课程,不管在哪些方面,都起着举足轻重的作用,想想现在的各行各业,哪个不用到微型机,对于学习通信专业的我来说,这应该是个警示,在剩下的大学生活里,我应该好好珍惜,好好学习各方面的知识。
我相信这次课程设计会对我以后的工作会有很大程度的益处,在此还要谢谢徐老师的用心指导!
指导教师:
指导教师评语:
指导教师签名:
年月日
成绩评定
项目
权重
成绩
1、设计过程中出勤、学习态度等方面
20%
2、课程设计质量与答辩
50%
3、设计报告书写及图纸规范程度
30%
总成绩
100分制
教研室审核意见:
教研室主任签字:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 闪烁 LED 设计