基于单片机的彩灯控制系统设计Word文档下载推荐.docx
- 文档编号:21621770
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:25
- 大小:843.99KB
基于单片机的彩灯控制系统设计Word文档下载推荐.docx
《基于单片机的彩灯控制系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的彩灯控制系统设计Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
因此有必要对现有的彩灯控制器进行改进。
本文提出了一种基于AT89C52单片机的彩灯控制方案,实现对LED彩灯的控制.
第1章彩灯控制器方案设计和选择
1。
1设计要求
本次毕业设计要求设计一个可编程彩灯控制器,其设计要求如下:
1、用32个发光二极管作为显示电路。
2、实现LED动态显示.
3、能连续循环显示。
1.2系统功能
彩灯控制器可直接与220V交流市电相连接,经过开关电源变换,输出直流工作电压,一方面为管内LED模块提供12V工作电源,另一方面为主控模块单片机系统提供5V工作电源。
整个系统工作由软件程序控制运行.上电后,彩灯控制器按程序设计好的模式进行显示,由全灭→按程序显示→全都熄灭为一个周期。
然后循环继续工作。
3方案选择
方案1:
可采用AT89C52作为主控制芯片,用74LS164作为驱动,用4个164分别接8个LED,32个LED构成显示模块。
可用C或者汇编编程实现。
方案框图如图1—1:
图1-1方案一框图
方案1用了164作为驱动,编程有些复杂,实现功能比较多,但164不具有数据锁存功能,显示不稳定,容易受干扰。
方案2:
可用AT89C52作为主控芯片,用74HC595作为驱动,用4个595分别接8个LED,32个LED构成显示模块.可用C或者汇编编程实现。
方案框图如图1-2:
图1-2方案二框图
方案2采用595作为驱动,由于595有数据锁存功能,显示稳定,不易受干扰,显示方案也比方案1多。
综合考虑:
本设计采AT89C52作为主控芯片,595作为驱动,实现彩灯循环显示。
第2章硬件设计
2。
1系统整体硬件电路和各部分介绍
2.1.1单片机AT89C52
图2—1AT89C52引脚图
VCC:
供电电压。
GND:
接地。
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8gTTL逻辑门电路,对端口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),参表2—1。
Flash编程和程序校验期间,P1接收低8位地址。
表.P1。
0和P1.1的第二功能
表2—1P1.0和P1。
1的第二功能
引脚号
功能特性
P1。
T2,时钟输出
1
T2EX(定时/计数器2)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口P2写“1"
,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据.在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容.Flash编程或校验时,P2亦接收高位地址和一些控制信号.
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口.P3口输出缓冲级可驱动4个TTL逻辑门电路.对P3口写入“1"
时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出.
振荡器特性:
AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器。
外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路.使用石英晶体,我们推荐电容使用30pF±
10pF,使用陶瓷谐振器建议选择40pF±
10F。
用户也可以采用外部时钟。
这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空.
AT89C52主要特性:
兼容MCS51指令系统,8k可反复擦写(>
1000次)FlashROM
32个双向I/O口,256x8bit内部RAM
3个16位可编程定时/计数器中断,时钟频率0—24MHz
2个串行中断,可编程UART串行通道
2个外部中断源,共6个中断源
2个读写中断口线,3级加密位
低功耗空闲和掉电模式,软件设置睡眠和唤醒功。
2.1。
2复位电路
为确保两点间温度控制系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位.一般电路正常工作需要供电电源为5V±
5%,即4.75~5.25V.
复位是单片机的初始化操作,其目的是使CPU及各专用寄存器处于一个确定的初始状态。
如:
把PC的内容初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要复位以使其恢复正常工作状态。
RST端的外部复位电路有两种操作方式:
上电自动复位和按键手动复位。
按键手动复位有电平方式和脉冲方式两种,本系统设计采用按键电平复位,如图2—2所示。
按键电平复位是相当于RST端通过电阻接高电平来实现单片机的复位。
图2-2复位电路
1.3时钟电路
单片机的时钟信号用来提供单片机内各种微操作的时间基准,时钟电路用于产生单片机工作所需要的时钟信号。
单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:
内部振荡和外部振荡。
本系统设计采用内部振荡方式,如图2-3所示。
MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。
图2-3时钟电路
主控模块:
本设计用AT89C52作为主控模块,用P10口作为信号口与驱动模块相连。
AT89C52单片机作为主控模块,由C1,C2和X1构成振荡器,引脚XTAL1和XTAL2分别是输入端和输出端。
P1口的P10作为信号输出,将控制程序烧入单片机上电后开始工作.
274HC595的引脚及功能
图2—474HC595引脚图
Q0Q1Q715,1,7并行数据输出
GND8接地
Q7`9串行数据输出
MR10主复位(低电平)
SHCP11移位寄存器时钟输入
STCP12存储寄存器时钟输入
OE13输出有效(低电平)
DS14串行数据输入
VCC16电源
74HC595主要特性:
8位串行输入/8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率。
并行输出,总线驱动。
595移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线.
2.3驱动模块
本设计用74HC595作为驱动,有4个74HC595构成驱动模块,将单片机的P10,P11,P13,P12口分别与595的SH_CP,DS,ST_CP,MR相连,并注上相应标号。
DS作为数据口,SH_CP和ST_CP作为时钟,第一个595的输入端DS与P11口相连,第一个595输出端与第二个595输入端相连,直到连到最后一个。
将输出端与LED相连构成驱动模块。
驱动模块图如图2—5:
图2-5驱动电路
驱动模块工作原理:
本设计采用AT89C52的P10口输出信号,P11和P12作为时钟输入,用了4个74HC595。
上电后P10口输出信号给595,74HC595是含8位串入、串/并出移位寄存器和8位三态输出锁存器.寄存器和锁存器都有自己的时钟输入,都是上升沿有效.当SH_CP从低到高电平跳变时,串行输入数据移入寄存器;
当ST_CP从低到高电平跳变时,寄存器的数据置入锁存器;
清除端MR的低电平只对寄存器复位(Q7为低电平),而对锁存器无影响。
当输出允许控制E为高电平时,并行输出(O0—O7)为高阻态,而串行输出(Q7)不受影响。
74HC595最多只需要5根控制线,即SH_CP、DS、ST_CP、MR和E。
其中MR可以直接接到高电平,用软件来实现寄存器清零;
把SH_CP、ST_CP、MR三根线和单片机的P10、P13、P12口相接,数据从DS口送入74HC595,在每个SH_CP的上升沿,DS口上的数据移入寄存器,在SH_CPMR的第9个上升沿,数据开始从Q7移出。
把第一个74HC595的Q7和第二个74HC595的DS相连,数据即移入第二个74HC595中,照此一个一个接下去,直到接到第4个。
数据全部送完后,给ST_CP一个上升沿,寄存器中的数据置入锁存器.如果E为低电平,数据即从并口O0—O7输出,把O0—O7与八个LED相连,LED就可以实现显示了。
2.4显示模块简介
显示模块有32个LED构成,分成4行8列,每行8个,每列4个。
每个LED分别与0.25k的电阻相连,在接上电源。
当程序烧入单片机,上电后在595的驱动下按程序循环显示。
如图2-6:
图2-6LED显示电路
2.5彩灯控制器总图
将主控模块,驱动模块,显示模块连接起来构成控制器总图。
将程序烧入单片机,上电后,信号由P1口输出送入595,在由595驱动显示模块按程序设定的模式循环显示。
如图2-7:
图2-7彩灯控制器总图
第3章软件设计
3.1语言选择新型
LED彩灯控制器最大特点在于所有亮灯模式均由软件控制完成.本设计采用AT89C51单片机为主控芯片,所以程序实现可以用汇编语言或C语言,也可以汇编和C混合使用。
汇编语言有其一定的优点,比如:
能够直接访问与硬件相关的存储器或I/O端口;
能够不受编译器的限制,对生成的二进制代码进行完全的控制;
能够根据特定的应用对代码做最佳的优化,提高运行速度;
能够最大限度地发挥硬件的功能;
用汇编语言编写的程序比用高级语言编写的程序所要求的存储空间与执行时间将显著减少等。
但是汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点。
比如:
编写的代码非常难懂,不好维护;
很容易产生Bug,难于调试;
只能针对特定的体系结构和处理器进行优化;
开发效率很低,时间长且单调。
使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言等.而C语言也有其缺点,主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷;
C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。
但是C语言简洁紧凑、灵活方便、运算符丰富、数据结构丰富、C语法限制不太严格,程序设计自由度大、C语言允许直接访问物理地址,可以直接对硬件进行操作、C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10へ20%,C语言适用范围大,可移植性好。
由于本设计需要仿真调试,经过综合考虑,选用C语言编程实现对LED彩灯的控制。
3。
2程序功能说明
LED彩灯控制器所有亮灯模式均由软件控制完成。
可以根据需要来确定各种模式工作时间Ti,以及确定在各种亮灯模式Model_i内点亮和熄灭各种颜色LED灯的时刻。
整个系统软件由主程序(Main)、各个模式子程序(Model_i)、显示子程序(Display)等程序组成。
根据模式需要计算好各控制信号的发生时刻,根据不同的模式Model_i可以设定不同的工作时间Ti通过P1口输出,使LED彩灯按照设计的模式工作。
亮灯模式子程序Model_i可以编写若干(n种),只要控制好各色灯触发和熄灭时刻就可以组合成各种亮灯效果。
本设计的功能是通过改变LED亮灭方式使彩灯轮流显示,上电后在缺省状态顺序调用Model_i花样亮灯模式,由从右到左同步依次点亮→两列一组从右到左同步依次点亮→6,7,8列点亮→2,3,4列点亮→右4列亮左4列灭→右四列灭左4列亮→3,4,7,8列亮→2,3,4,6,7,8列亮→全亮→奇数列亮→偶数列亮→从两边到中间依次点亮→从中间到两边依次熄灭→前两行亮后两行灭→前两行灭后两行亮→左4列亮右4列灭→左4列灭右四列亮→对角亮→OK图形构成亮灯模式的循环。
3.3主程序流程图
图3-1主程序流程图
4程序简介
本设计用了P1口的P10,P11,P12和P13。
程序有主程序,子程序,延时程序。
定义LED低电平亮高电平灭.由于显示方式比较多,需要定义一个数组来存放显示数据。
当显示方式比较简单逐个点亮时还可以调用流水灯程序段。
延时一定时间后按显示数据依次显示下去直到最后一种显示方式.延时一定时间后循环继续显示。
第4章彩灯控制器的调试与仿真
本设计采用Proteus.Professional(单片机仿真软件)进行仿真,由于电路图是用Protel99SE所绘制,Proteus不能识别,所以进行仿真前打开Proteus新建文件→添加元件→在新建文件界面放置元件→布局→连线→修改。
确定无误后保存.程序则由KEIL编译,编译成功后保存。
在打开Proteus→打开电路图→双击单片机→添加程序→点击开始→进行仿真。
若不能实现预期效果,则检查电路图和程序进行修改程序中数组显示的结果.部分仿真图如下:
图4-1彩灯显示
此图为左4列亮右4列灭显示方式,对应程序数组中的0x0f0f0f0f显示方式。
图4—2彩灯显示
此图是1,2列和5,6列同时亮显示方式,对应程序数组中的0xcccccccc显示方式.
图4-3彩灯显示
此图是奇数列亮显示方式,对应程序数组中的0x55555555显示方式。
图4—4彩灯显示
此图是偶数列显示方式,对应程序数组中的0xaaaaaaaa显示方式。
图4-5彩灯显示
此图是对角亮显示方式,对应程序数组中的0x0f0ff0f0显示方式。
图4-6彩灯显示
此图是最后一种显示方式“OK"
,对应程序数组中的0xf61313f6显示方式.
结论
在本设计过程中虽然遇到很多困难,但是从中收获很多.本设计主要是用单片机设计彩灯控制器,用C语言编程实现对彩灯亮灭模式的控制,用AT89C52作为主控芯片,用74HC595作为驱动,其中硬件设计与软件设计都离不开对单片机知识的再学习。
这让我对单片机知识的理解更加深刻。
单片机由于去造价低廉控制简单等特点而得到广泛应用。
在LED设计中选用单片机可以减少很多不必要的麻烦.本次设计需要根据要求运用所学知识将其付诸实践来完成.这并不是在课堂上的单纯听懂,或者课后看书过程中的深入理解,这需要的是一种理论联系实践的能力。
理论知识往往都是在一些理想状态下的假设论,而实际的动手操作则完全不同,需要考虑实际中的很多问题.有些知识在理论上可能完全没错但到了实际中则不然。
比如在动笔做题时我们是不用考虑导线的电阻的,但在实际中,导线电阻有时是会造成花型变化的错乱,所以我们应尽量在连接电路时选择最短路径。
这次的设计中应用了整块板子,对电路板更加了解了。
设计中通过对电路的连接也懂得了如何通过设计的分析对所连电路的整体布局,如何更好的放置芯片在最合适的位置.在导线的连接上,如何选择导线走向是关键,我们应该尽量保证所连电路的简捷,宁短勿长,合理布线.一个成功的作品不仅要能很好的完成要求实现功能,还要在感官上给人美的享受。
所以站在美的角度对自己的电路进行改良是很必要的.本设计采用C语言编程,则可以分块编程,画出程序流程图,但总体思路要清晰。
通过查阅资料,找到相似设计的程序,适当修改,将其变成自己的程序,前提是读懂,吸收此相似程序。
编写程序时要细心,有时一个字母的大小写就可以使程序出错。
修改程序时要从上到下修改,有时上面修改好了下面的自然就没错了,不要从下到上或者随机修改。
总之,编程是需要细心,耐心和技巧的。
在设计中经常会遇到一些自己可能暂时无法想明白的问题,请教同学或老师是很好的做法,既节省时间也会从别人身上学到更多.在设计时和同学相互交流各自的想法也是很重要的,不同的人对问题的看法总有差异,我们可以从交流中获得不同的意见,其他人的设计一定有比你出色的地方,很好的借鉴,最终一定会得到很好的设计方法。
与市面上大多数的LED彩灯相比,该种彩灯具有更好的灯光装饰效果,性价比更高,与普通的全硬件LED彩灯相比具有更好的经济效益。
应用主控模块输出的控制信号去控制灯管内的LED板模块工作,使得产品性能稳定,便以安装容易操作。
由于控制程序存储在89C52单片机的电可擦除Flash闪存EPROM中,如果用户需要更改系统的亮灯模式,无须改变系统硬件电路,只需修改其中程序即可,是一种很有发展前途的彩灯控制。
参考文献
[1]任为民。
电子技术基础课程设计.1997年5月第一版。
北京:
中央广播大学出版社。
1997。
5
[2]张毅坤、陈善久、裘雪红。
单片微型计算机原理机及应用。
1998年第一版.西安:
西安电子科技大学出版社.1998.8
[3]谭浩强.C程序设计.第2版.北京:
清华大学出版社。
2005。
6
[4]田立,田清,代方震。
51单片机C语言程序设计快速入门。
北京:
电子工业出版社.2007
[5]AT89C52中文资料.电子译站
[6]刘乐善,欧阳星明,刘学清.微型计算机借口技术及应用.2000年4月第一版.武昌:
华中科技大学出版社。
2000.4
附录1源程序清单
#include<
reg52。
h>
#defineucharunsignedchar
#defineuintunsignedint
#defineulongunsignedlong
#defineBUF_LONG42
sbitST_CP=P1^3;
sbitSH_CP=P1^0;
sbitMR=P1^2;
sbitDS=P1^1;
voiddelay_ms(uint);
voidwrit_data(ulong);
ulongcodedata_buf[BUF_LONG]={
0xfefefefe,0xfdfdfdfd,0xfbfbfbfb,0xf7f7f7f7,0xefefefef,0xdfdfdfdf,0xbfbfbfbf,0x7f7f7f7f,0xfcfcfcfc,0xf3f3f3f3,0xcfcfcfcf,0x3f3f3f3f,0xf8f8f8f8,0x8f8f8f8f,0xf0f0f0f0,0x0f0f0f0f,0xcccccccc,0x88888888,0x00000000,0x7f7f7f7f,0x5f5f5f5f,0x57575757,0x55555555,0xbfbfbfbf,0xafafafaf,0xabababab,0xaaaaaaaa,0x7e7e7e7e,0x3c3c3c3c,0x18181818,0x00000000,0x18181818,0x3c3c3c3c,0x7e7e7e7e,0xffffffff,0x0000ffff,0xffff0000,0x0f0f0f0f,0xf0f0f0f0,0x0f0ff0f0,0xf0f00f0f,0xf61313f6
};
voidmain()
{
ulongtxdata=0x1;
uchari;
ST_CP=0;
SH_CP=0;
MR=0;
ST_CP=1;
ST_CP=0;
MR=1;
delay_ms(800);
writ_data(0XFFFFFFFF);
while
(1)
{
for(i=0;
i〈BUF_LONG;
i++)
{
writ_data(data_buf[i]);
delay_ms(800);
}
}
{
txdata=(0x01);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 彩灯 控制系统 设计