基于单片机AT89C51的彩灯循环控制系统的设计.docx
- 文档编号:24161132
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:32
- 大小:647.61KB
基于单片机AT89C51的彩灯循环控制系统的设计.docx
《基于单片机AT89C51的彩灯循环控制系统的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机AT89C51的彩灯循环控制系统的设计.docx(32页珍藏版)》请在冰豆网上搜索。
基于单片机AT89C51的彩灯循环控制系统的设计
目 录
摘 要
本设计提出了一种基于AT89C51单片机的彩灯循环控制的方案,实现对LED灯的控制。
本方案以89C51单片机作为主控核心,以按键、显示、驱动等模块组成核心主控制模块。
进一步熟悉和掌握89C51单片机的结构及工作原理,掌握单片机的接口技术及相关外围芯片的外特性和控制方法。
通过实际程序设计和调试,逐步掌握模块化程序设计的方法和调试技术。
本设计完成后,能掌握以单片机核心的电路设计的基本方法和技术。
根据用户需要可以编写各种亮灯模式的程序,用户可以根据不同场合选用不同的彩灯循环方式。
与普通LED彩灯相比,它具有体积小、价格低、低能耗等优点。
通过完成一个包括电路设计和程序开发完整过程,了解开发以单片机应用系统的全过程,为今后从事相应工作打下基础。
关键词 89C51单片机;中断;循环
第1章 绪论
当今社会中,循环彩灯在人们的日常生活中有着日益重要的作用。
它不仅能美化环境,渲染气氛,还可以用于娱乐场所和电子玩具中,并且在不同场所都各具特色。
由于循环彩灯的快速发展使其应用也越来越广泛,逐渐深入到了人们生产、生活的各个领域。
随着彩灯应用的深入发展,对其安全要求也就越来越高。
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时也带动传统控制日新月异更新。
在自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,并加以完善。
随着社会不断的发展,电子产品的质量也不断提高。
彩灯循环电路也由以前的简单、功能单一的电路,变为现在复杂、实现功能多的电子产品。
本次我进行了彩灯循环控制电路的设计。
彩灯是我们日常经常使用的产品,它制作简单,过程易学,还可以提高我们的动手能力,增强我们分析和解决问题的能力。
利用控制电路可使彩灯按一定的规律不断的改变状态,不仅可以获得良好的观赏效果,而且可以省电。
近年来,随着人们生活水平的较大提高,人们对于物质生活的要求也在逐渐提高,不仅需要各种各样的生活电器,也开始对环境提出了更高的要求。
彩灯的运用已经遍布于人们的生活中,从歌舞厅到各种儿童电子玩具,从庆祝节日到日常生活中的点缀。
这些都说明了彩灯的发展及应用水平有了很大的飞跃,也说明科技在现实运用中有了较大的发展,随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。
LED彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到广泛运用。
本次毕业设计全面运用了我们以前所学的知识,在加强我直接应用综合能力的同时,力求让我在短时间里得以掌握先进科学技术:
如本设计中所使用到的keil、Protel99等设计软件,使自己能够理论联系实际,并且设计电路的能力也有所提高。
第2章 系统设计方案
2.1设计方案介绍
本次设计的彩灯循环控制电路采用的方案如图2-1所示。
图2-1方案图
系统电路主要由主控器、时钟电路、电源电路、复位电路、彩灯显示电路、模式控制电路等部分组成。
2.2组成方案各部分的功能介绍
1.主控器
在AT89C51中烧入软件程序后就控制整个电路实现功能。
2.时钟电路
为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
时序电路用于产生单片机工作所需要的时钟信号。
3.电源电路
采用经市电降压、整流、滤波、稳压的稳压电源把市电变为+5v的直流给单片机供电。
4.模式控制电路
模式控制部分是单片机的一个中断系统,中断按下后,转换彩灯循环的不同模式。
5.复位电路
使CPU和系统中其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。
6.彩灯显示电路
由LED发光二极管组成,也是本次设计的主体,就是要用编写程序烧入芯片,并有单片机控制电路实现LED灯的循环点亮。
7.数码管显示电路
本次设计的彩灯循环共有5种循环模式,在仿真中当按键按下的时候,七段数码管就显示由1~5的模式号。
第3章 硬件电路设计
3.1电源电路
采用经市电降压、整流、滤波、稳压的稳压电源电路如图3-1所示:
图3-1电源电路
220V市电经过降压后得到12V交流电,经二极管整流成脉动直流电,经过电容滤波后,再经过LM7805稳压得到5V的直流电供系统工作,发光二极管用作电源指示,470μF的电容起到再次滤波的作用。
3.2主控器
主控器就是AT89C51单片机,它是指集成在一个芯片上的微型计算机,包括CPU、随机存取存储器RAM、只读存储器ROM、基本输入、输出接口电路、定时、计数器等部件制作在一块集成芯片上,构成一个完整的微型计算机。
整个电路以单片机为中心组成。
在单片机中烧入程序,单片机运行程序输出信号控制彩灯的循环闪亮。
以下对单片机的引脚及相关功能和内部结构加以介绍。
3.2.1单片机的引脚及相关功能
单片机引脚图如图3-2所示:
图3-2单片机引脚图
芯片的40个引脚按功能大致可分为4个部分:
电源部分、时钟部分、控制部分和I/O引脚部分。
1.电源部分
(1)VCC:
芯片电源,接+5V;
(2)VSS:
接地端;
注:
用万用表测试单片机引脚电压一般为0V或者5V,这是标准的TTL电平。
但有时候在单片机程序正在工作时候测试结果并不是这个值而是介于0V-5V之间,其实这是万用表响应速度没这么快而已,在某一个瞬间单片机引脚电压仍保持在0V或者5V。
2.时钟部分
在89C51系列单片机内部有一个高增益反相放大器,其输入端引脚为XTAL1,其输出端引脚为XTL2。
只要在XTL1和XTL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自激振荡器。
3.控制部分
控制线共有4根:
(1)ALE/PROG:
地址锁存允许/片内EPROM编程脉冲;
ALE功能:
用来锁存P0口送出的低8位地址;
PROG功能:
片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
(2)PSEN:
外ROM读选通信号。
(3)RST/VPD:
复位/备用电源;
RST(Reset)功能:
复位信号输入端;
VPD功能:
在VCC掉电情况下,接备用电源。
(4)EA/VPP:
内外ROM选择/片内EPROM编程电源;
EA功能:
内外ROM选择端;
VPP功能:
片内有EPROM的芯片,在EPROM编程期间,施加编程电源VPP。
4.I/O引脚部分
(1)80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
(2)P3口第二功能:
P30RXD串行输入口;
P31TXD串行输出口;
P32INT0外部中断0;
P33INT1外部中断1;
P34T0定时计数器0;
P35T1定时计数器1;
P36WR外部数据存储器写选通(低电平有效);
P37RD外部数据存储器读选通(低电平有效)。
3.2.28051单片机内部结构
单片机内部结构如图3-3所示:
图3-38051单片机内部结构
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
1.中央处理器
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
2.数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
3.程序存储器(ROM)
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
4.定时/计数器(ROM)
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
5.并行输入输出(I/O)口
8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。
3.3单片机最小系统的介绍
3.3.1单片机最小系统组成
单片机最小系统以89c51为核心,外加时钟和复位电路,电路结构简单,抗干扰能力强,成本相对较低,非常符合本设计的所有要求.89c51单片机系列是在MCS-51系列的基础上发展起来的,是当前8位单片机的典型代表,采用CHMOS工艺,即互补金属氧化物的HMOS工艺,CHMOS是CMOS和HMOS的结合,具有HMOS高速度和高密度的特点,还具有CMOS低功耗的特点。
单片机最小系统如图3-4所示:
图3-4单片机最小系统
3.3.2复位电路
无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。
单片机的复位操作使单片机进入初始化状态。
而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。
许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。
单片机系统的复位方式有:
手动按钮复位和上电复位。
1.手动按钮复位
手动按钮复位需要人为在复位输入端RST上加入高电平(图3-5手动按钮复位)。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。
手动按钮复位的电路如所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
图3-5手动按钮复位
2.上电复位
AT89C51的上电复位电路如图3-6所示,只要在RST复位输入引脚上接一电容至Vcc端,下接一个电阻到地即可。
图3-6上电复位
复位电路采用简易的手动按钮复位电路,主要由电阻R,电容C,开关K组成,分别接至AT89C51的RST复位输人端。
当按下复位电路的复位开关Reset按钮时,瞬间短接复位开关,由于此reset复位开关一端接地为低电平,另一端有电源5V供电端和PG信号端,间接供给为高电平,通常为3.3V,而此复位开关的某一段也会直接或者间接的作用于南桥内的复位系统控制模块,所以瞬间短接复位开关会在开关的高电平端会产生一个低电平信号,此信号会直接或间接作用于南桥内的复位系统控制器,使南桥强行复位之后,南桥也会强行去复位其他的设备和模块,南桥给主板其他硬件设备复位后,整个主板复位完成,这就是主板复位电路的原理。
本设计采用手动按钮复位,以满足复位的时间要求及设计质量。
3.3.3时钟电路
时钟电路如图3-7所示:
图3-7时钟电路
时钟电路简单介绍如下:
1.就是产生像时钟一样准确的振荡电路。
2.任何工作都按时间顺序,用于产生这个时间的电路就是时钟电路。
现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485等。
这些电路的接口简单、价格低廉、使用方便,被广泛地采用。
本设计中时钟电路由AT89C51的18,19脚的时钟端(XTAL1及XTAL2)以及12MHz晶振X、电容C1、C2组成,采用片内振荡方式。
3.4彩灯循环和数码管显示电路
单片机P1.p2经过4块芯片74ls20(四路反向控制器)分别接16个发光二极管的阳极,16个二极管的阴极接地(如图3-8所示)。
当P1.P2口输出低电平“0”时经过74LS240反向后输出高电平,相应的发光二极管被点亮;当P1.P2口输出高电平“1”时经过74LS240反向后输出低电平,相应的发光二极管熄灭。
图3-8彩灯循环电路
74LS240(如图3-9)它是一块具有驱动功能的四路反向器,除反向功能外,还可以起到隔离作用,保护单片机机芯的内部电路,增加输出口的扇出电流,提高负载能力。
图3-974LS240芯片
数码管显示的是彩灯循环闪亮的模式号,接在p0口,由于p0单片机内不具有上拉电阻就在数码管之间接了一排上拉电阻。
数码管显示电路如图3-10所示:
图3-10数码管显示电路
3.5模式控制电路
模式控制部分为一个电阻接高电平和一个按键接低电平连接构成。
按一下按键彩灯模式就换一种。
模式控制电路如图3-11所示:
图3-11模式控制电路
3.6整机电路工作原理
根据彩灯循环控制电路设计的原理框图,可得出整机电路工作原理图如附录1所示。
其工作原理为:
控制程序存储在89C51单片机中,在XTL1与XTL2之间跨接两个容值为10nF的微调电容和一个振荡频率为12MHZ的晶体震荡器,并由此产生电路运行的时钟信号。
单片机由P1.0~P1.7,P2.0~P2.7十六只引脚输出低电平,经过74L240反相器反向后输出高电平,再将此高电平输入LED就能使彩灯依次点亮。
P3.2引脚为INT0的中断信号,一旦模式转换开关被按下后就向CPU发出中断命令,单片机就停止当前运行的方式执行此时CPU发出的中断命令,彩灯就一次按照转换的相应模式循环闪亮。
第4章 系统软件设计
4.1主程序设计流程图
主程序的主要功能是负责整个电路的运行,由INT0引出的中断信号,转换控制彩灯循环闪亮的方式。
判断是否有中断命令向CPU发出,若是则转换闪亮的模式,若不是若该方式继续运行,每个彩灯闪烁的周期为1s。
流程图如图4-1所示。
图4-1主流程图
主程序设计如下:
voidmain()
{
ucharcodedispcode[5]={0x06,0x06,0x5b,0x4f,0x66};
IT0=1;//置外部中断为边沿(下降沿)触发方式
EX0=1;//开放外部中断0允许位
EA=1;//开放中断允许位
flag=1;//定义变量
light=0x01;//彩灯高电平点亮
assum=0;
assum=0;//假设变量
dw=0;
while
(1)
{
switch(flag)
{
case1:
left();break;//运行模式1,否则跳出
case2:
right();break;//运行模式2,否则跳出
case3:
assume();break;//运行模式3,否则跳出
case4:
zg();break;//运行模式4,否则跳出
case5:
sl();break;//运行模式5,否则跳出
}
P0=dispcode[flag];//定义P0为输出
delay0_5s();
}
}
4.2彩灯循环模式转换程序设计
彩灯循环模式的转换其实就是由中断控制的,当程序初始化后,按下按键中断信号发出,模式就转换为另一种,而彩灯就在该模式下循环闪亮。
如按键没有按下则彩灯还是保持当前循环不变,本设计彩灯共有5种循环模式,按下按键这5种模式就依次转换。
其流程图如图4-2所示。
图4-2模式转换流程图
各种模式转换程序设计如下:
****************************模式一**************************************
voidleft()//定义模式1为由里向外循环点亮
{
ucharcodexun[16]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00};
ucharcodeyun[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x40,0x20,0x10,0x08,0x04,0x02,0x01};//设置模式1彩灯循环数组
if(dw==15)
dw=0;//数据库中循环到15时,数据显示回0
elsedw++;//数据加一循环
P1=xun[dw];
P2=yun[dw];//将定义数组的值赋给P1,P2
}
*****************************模式二**************************************
voidright()//定义模式2为由外向里循环点亮
{
ucharcodegj[16]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00};
ucharcodezf[16]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,
0x04,0x08,0x10,0x20,0x40,0x80};//设置模式2彩灯循环数组
if(dw==15)
dw=0;//数据库中循环到15时,数据显示回0
elsedw++;//数据加一循环
P2=gj[dw];
P1=zf[dw];//将定义数组的值赋给P1,P2
}
*****************************模式三**************************************
voidassume()//定义模式3为左下斜排顺序循环闪亮
{
ucharcodezx[7]={0x01,0x02,0x04,0x08,0x10,0xa0,0x40};
ucharcodefx[7]={0x00,0x08,0x14,0xa2,0x41,0x00,0x00};//设置模式3彩灯循环数组
if(assum==6)
assum=0;//数据库中循环到6时,数据显示回0
elseassum++;//数据加一循环
P2=zx[assum];
P1=fx[assum];//将定义数组的值赋给P1,P2
}
*****************************模式四**************************************
voidzg()
{
P1=0xaa;P2=0xaa;//设置P1,P2为输出端
delay0_5s();
P1=0x55;
P2=0x55;
}
***************************模式五**************************************
Voidsl()//定义模式5为彩灯以竖排形式循环闪亮
{
ucharcodesj[5]={0x00,0x01,0x02,0x84,0x78};
ucharcodeso[5]={0x00,0x0e,0x91,0x60,0x00};//设置模式4彩灯循环数组
if(assum==4)
assum=0;//数据库中循环到4时,数据显示回0
elseassum++;//数据加一循环
P2=sj[assum];
P1=so[assum];//将定义数组的值赋给P1,P2
}
4.3中断程序设计
中断信号由P3.2脚输入,通过IT0位来决定是低电平有效还是下降沿有效,一旦输入信号有效,即向CPU申请中断,并建立IE0中断标志。
中断命令发出后,控制彩灯在相应的模式下循环闪亮。
中断设计程序如下:
voidint_()interrupt0//interrupt0表示函数为中断类型号0的中断函数
{
delay10ms();//中断延时为0.1秒
if(INT0==0);//输入中断信号
{flag++;
if(flag>5)flag=1;//中断显示最大为5,否则跳到1
}
}
第5章 电路仿真与调试
5.1用KeilC51软件编译程序
KeilC51软件是目前最流行的开发MCS-51系列单片机的软件。
KeilC51提供了C编辑器、宏汇编、链接器、库管器和一个功能强大的仿真调试器等在内的完整开发方案,并通过一个集成开发环境(μVision2)将它们组合在一起。
由于KeilC51本身是纯软件,还不能直接进行硬件仿真,所以必须挂接单片机仿真器的硬件才可以进行仿真。
KeilC51同时还支持PLM汇编和C语言的程序设计,它界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序和软件仿真方面也有很强大的功能(如图5-1所示)。
KeilC51支持的CPU很多,本设计中选用的是Atmel公司的AT89C51芯片。
图5-1在keil软件中编程和调试
使用C语言程序肯定要使用到C编译器,以便把写好的C程序编译为机器码。
将C语言源程序导入,这样单片机才能执行编写好的程序。
在新建Keil项目时选择AT89C51单片机作为CPU,,在keil软件中完成程序编写、调试和编译之后,加载程序为.HEX文件,生成能让单片机运行的Hex文件,如图5-2所示:
图5-2程序编写与编译
5.2电路仿真
当程序编写并仿真成功后,就运行Proteus的ISIS软件,将电路图画好后在进行调试,进入该仿真软件的主界面。
主界面由菜单栏、工具栏、预览窗口、元件选择按钮、元件列表窗口、原理图绘制窗口和仿真进程控制按钮组成。
通过元件选择按钮P(从库中选择元件命令)命令,在弹出的PickDevices窗口(如图5-3所示)中选择电路所需的元件,放置元件并调整其相对位置,对元件参数设置及元器件间连线,完成单片机系统的硬件原理图绘制。
图5-3PickDevices窗口
打开如图5-4所示的对话框。
在ProgramFile栏添加编译好的十六进制格式的程序文件zrcd.hex,并将AT89C51输入晶振频率设置为12MHZ,单击OK按钮完成程序添加工作。
图5-4添加程序文件zrcd.hex
绘制完成后的电路图就添加hex文件到单片机中,按下运行按键就可以进行仿真了。
仿真过程中如有硬件问题可在ProteusISIS中直接修改,如有软件问题可在KeilμVision2中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。
本次设计的彩灯循环有5种模式,各种模式的仿真图如下所示。
图5-5模式一仿真图
图5-6模式二仿真图
图5-7模式三仿真图
图5-8模式四仿真图
图5-9模式五仿真图
总 结
本系统就是充分利用了AT89S51芯片的I/O引角。
系统采用MSC-51系列单片机为中心器件来设计彩灯循环控制器,根据实际需要实现了彩灯循环闪亮的功能。
p2口和p1口外接彩灯。
本系统电路和程序设计简便、操作简单、实用性强。
经过本次的设计,现将循环控制中出现的优缺点归纳为以下几点:
1.本循环控制电路具有及时、可靠性高、效率高、寿命长、成本低等优点。
2.本系统维护简单,出现故障时能较快的消除。
3.此彩灯循环电路只能用于小型场合,不适于大型场合。
4.控制循环的彩灯数量也受到了一定的限制。
通过这次设计,使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程C语言的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。
我还学会了许多书本上不能学到的知识,增强了自己的实践能力。
即将毕业的我更加珍惜这次锻炼的机会,认真努力完成了自己的设计任务,但由于自己的知识水平有限,仍然存在很多的不足之处,恳请老师
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 AT89C51 彩灯 循环 控制系统 设计