搜档网
当前位置:搜档网 › LED流水灯单片机的设计[1]

LED流水灯单片机的设计[1]

江苏城市职业学院

题目:LED流水灯单片机的设计

学生姓名:许剑

学号:0724010156

班级:07机电

指导老师:卞忠英职称讲师

学校:江苏城市职业学院张家港办学点

第一章绪论 (3)

1.1 课题简介 (3)

1.2 设计目的 (4)

1.3设计方法 (4)

第二章设计概述 (5)

2.1 设计任务 (5)

2.2 设备器材 (5)

第三章方案论证与比较 (5)

3.1循环移位法 (5)

LED流水灯单片机的设计

许剑

内容摘要:

发光二极管(LED),是一种把电能变成光能的特种器件,主要由PN结芯片、电极和光学系统构成。当系统受到外界激发后,会从稳定的低能态跃迁到不稳定的高能态,当系统由不稳定的高能态重新回到稳定的低能态时,能量差以光的形式辐射出来,就会产生发光现象。当在PN结上加以正向电压之后,P区的空穴注入至N区,N区的电子注入至P区,相互注入的电子与空穴相遇后即产生复合,这些多数载流子在结的注入和复合中产生辐射而发光。它是自发辐射发光,不需要较高的注入电流产生粒子数反转分布,也不需要光学谐振腔,发射的是非相干光。

LED大约是在80年代中期开始在电子显示屏中使用的。进入90年代以后,由于半导体工业的迅猛发展,带动了LED制造材料和工艺的改进,在颜色与亮度方面都有了质的飞跃。早期的LED显示屏,由于受材料和工艺的限制,视角仅有200一300左右,从而制约了LED 显示屏的发展。在分辨率方而,由于受当时数字技术、集成电路技术和控制技术等技术的限制,很难作出高密度的LED显示屏。今后随着半导体工业的不断发展,无论是材料,还是加工工艺,都会不断地提高,LED显示屏在颜色、视角、亮度、密度、寿命等方面也会逐步完善,价格也会进一步降低。

关键词;

发光二极管,电子显示屏,集成电路

第一章绪论

1.1 课题简介

当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计

算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。

单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片微型计算机是微型计算机称单片机,特别适用于控制领域,故又称为微控制器。

本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。

1.2 设计目的

通过本次课题设计,应用《单片机原理及应用》等所学相关知识及查阅资料,完成简易LED流水灯系统设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。

通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。

1.3设计方法

本课题使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

在此基础上,增加外扩设备,利用74LS373和8255扩展成24个LED灯循环显示。

第二章设计概述

2.1 设计任务

设计内容:利用汇编语言(或C语言),实现8个单色LED灯的左、右循环显示,并实现循环的速度可调。

选用芯片: 8255 等

注:由于实验室的没有提供8255芯片,所以改用单片机完成此实验,并且添加了调节灯明暗的功能,以实现明暗可调。

2.2 设备器材

在本设计中,所用到的设备器材如下所示:

(1)计算机一台;

(2)唐都仪器实验箱一台;

(3) AT89C52单片机一片;

(4)导线若干。

第三章方案论证与比较

3.1循环移位法

在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果啦。由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的

指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。具体编程如下所示,程序结构确实简单了很多。

3.2查表法

上面的两个程序都是比较简单的流水灯程序,“流水”花样只能实现单一的“从左到右”流方式。运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中,然后通过查表指令“MOVC A,@A+DPTR”把数据取到累加器A中,然后再送到P1口进行显示。具体源程序如下,TAB标号处的数据表可以根据实现效果的要求任意修改。

2.3位控法

这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。

本次实验我们采用的是查表法和循环移位法,这两个方法要比位控法要复杂些,但是程序要简略的多。

第四章硬件设计方案

4.1 设计思路

本课题需要用按钮开关实现流水灯的左右循环显示、调速、控制亮度的功能。可以选用五个开关来实现这些操作。单片机正在软件运行下通过不断扫描开关状态,来将相关操作对应量送入单片机的输入端口,然后判断属于哪一类操作。五个开关分别为K1,K2,K3,K4,K5,分别控制流水灯的调向、加速、减速、变亮、变暗。

在设计过程中,接开关的端口要全部保持高电平,当按下一个开关时,输入一个低电平,即为状态改变信号。不能同时有两个端口同为高电平。

在设计中我主要负责了用云脉冲宽度调制(PWM)波控制LED灯的亮度环节,开始对PWM并不是很了解,通过请教同学和查阅相关资料,渐渐明白了其中的原理。在主程序运行时通过中断方式调整其输出电压的占空比,从而改变灯

泡的亮度。原理是这样的,主程序的始终频率和中断的始终频率并不相同,大约是中断的一千倍,LED灯在移动时如果响应了中断,则在执行中断程序时,LED 灯近似看做没有移动,此时在中断程序中设计一个初值和一个上限,当计数到初值时置灯泡灭掉,在计数到上限之前小灯泡都是熄灭的,到达上限后回0,并置灯泡为亮,继续计数,在到设定的初值时置小灯泡为灭掉。这样在主程序的一个周期内,中断程序将小灯泡置明置暗了近一千次,通过改变设定的初值可以改变小灯泡的亮度。

4.2 硬件选择

本实验选用AT89C52单片机、五个按键开关和8个发光二极管。其中AT89C52为控制核心,当5个开关的状态改变时,单片机检测到开关信号后就通过软件输出控制发光二极管。

4.3 AT89C52单片机介绍

AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。

AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线。

AT89C52的内部结构图如下:

引脚图如下:

引脚功能说明:

P0 口:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。

在Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。

P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口,P1 的输出缓

冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),

参见表1。

Flash 编程和程序校验期间,P1 接收低8 位地址。

表.P1.0和P1.1的第二功能

P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行MOVX @RI 指令)时,P2 口输出P2 锁存器的内容。

Flash 编程或校验时,P2亦接收高位地址和一些控制信号。

P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能。

P3 口还接收一些用于Flash 闪速存储器编程和程序校验的控制信号。

RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。

对Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。

PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc 端),CPU 则执行内部程序存储器中的指令。

Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。

XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

XTAL2:振荡器反相放大器的输出端。

4.4硬件连接框图

单片机从开关上提取不同输入信号,进行相应的软件操作,反映输出在发光二极管上。

4.5设计连线

本实验的连线为:开关使用唐都试验箱上的5个开关,分别接到单片机的P2.0—P2.4口,然后发光二极管分别接到单片机的P1.0—P1.7口。

4.6实验仿真电路图

4.7单片机时钟电路

时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。时钟电路如下图2-2:

第五章软件设计方案

5.1 软件设计思想

一个完整的系统仅有硬件是不够的,还要有软件的配合。软件和硬件对一个系统来说都是不可或缺的。本实验采用C语言编程,在具体设计中,通过GetKey()函数来不停的扫描开关的状态,通过KeyProcess()来确定输入的信号,即按键的位置,从而执行不同的子程序内容,实现LED灯的控制。

5.2 程序流程图

第六章调试及运行结果与存在问题

6.1 调试及运行结果

通过设计和编写程序代码,讲程序通过Keil软件编译后生成的hex文件写进AT89C52中,便可操作。为当拨动相应的开关时,看LED灯的变化。

调试过程中问题很多,主要原因是对单片机结构的不熟悉,其次就是程序中的一些问题。但通过努力,都被一一解决。实际接线前我们先用protues仿真了一下实验结果,确认无误后接线,这样提高了调试的时间。

6.2存在的问题

1、逻辑错误:它是由设计错误或加工过程中的工艺性错误所造成的。这类错误包括错线、开路、短路等。

2、元器件失效:有两方面的原因:一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效,如电解电容、集成电路安装方向错误等。

3、可靠性差:因其可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,经不起振动;走线和布局不合理也会引起系统可靠性差。

4、电源故障:若样机由电源故障,则加电后很容易造成器件损坏。电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。

调试方法:包括多级调试和联机调试。在调试过程中要针对可能出现的故障认真分析,直至检查出原因并排除。

本次硬件调试过程中,对所出现的问题进行了认真的分析和改正,最后能够很好的达到设计要求的效果。

总结

经过四次的上机课程设计,在我和同学的共同努力下,顺利的完成了任务,并在其中体现了自己的独创部分。同时我感觉自己学到了很多。首先是要把理论和实际相结合起来,从理论中得出结论,然后再实践,从而提高自己的实际动手能力和独立思考问题的能力。在设计的过程中遇到了很多的问题,也发现了自己的不足之处。首先是之前对单片机并不十分了解,通过借阅书籍,找同学咨询慢

慢的开始对其有了初步的认识。其次是一些相关软件的用法,这个通过自己慢慢的摸索也逐渐熟悉了起来。特别是protues的使用,它给了我们很大的帮助,帮助我们解决了很多调试过程中的问题。在者是对PWM波的使用,这个问题很是伤到筋,因为之前对其并不了解,从熟悉到使用我们查阅了很多资料,请教了同学,最后终于掌握了。同时也是设计更完善。

此课程设计让我加深理解了所学的理论知识,并进一步建立了计算机应用系统的整体概念,初步掌握了单片机软、硬件开发方法,为以后进行实际的单片机软、硬件应用开发奠定了良好的基础。这对下学期单片机的学习会有很大的帮助,也使我对单片机产生了兴趣。

这次课程设计的顺利完成,离不开学长,同学和知道老师的帮助,特别是PWM波的运用,也是学长给我们提出的建议。在此感谢老师和学长的无私帮助。

参考文献

[1]《PLC应用技术》申凤琴西安电子大学出版社2009 第1版

[2] 《电气制与PLC》阮友德人民邮电大学出版社2009 第1版

[3] 《单片机实验教学改进刍议》叶剑超台州学院学报 2006-6第1版

[4] 《LED制造技术与应用》陈元灯电子工业出版社2009 第1版

[5] 《跟我学用单片机》肖洪兵北京航空航天大学出版社,2002-8第1版

相关主题