循环彩灯的设计.docx
- 文档编号:29884070
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:26
- 大小:172.14KB
循环彩灯的设计.docx
《循环彩灯的设计.docx》由会员分享,可在线阅读,更多相关《循环彩灯的设计.docx(26页珍藏版)》请在冰豆网上搜索。
循环彩灯的设计
目录
一、系统设计2
(一)、方案的选择与论证2
(二)、总体方案设计2
二、MCS-51单片机3
(一)、单片机简介3
(二)、单片机各引脚功能4
(三)、单片机的结构组成5
三、硬件电路设计7
(一)、单机片最小系统7
(二)、按键控制电路7
(三)、中断电路8
(四)、LED显示电路8
四、系统的软件设计10
(一)、软件的设计思路10
(二)、软件设计流程图10
(三)、软件程序10
五、系统的调试17
循环彩灯的设计
(电自12102,周家乐)
摘要:
随着电子技术的迅速发展,单片机得到了越来越多的应用。
本设计以AT89C51单片机作为主控核心,且以复位电路、时钟电路、按键电路、中断电路以及彩灯显示电路组成,利用软件编程烧录程序到单片机来实现对LED彩灯进行多样控制。
单片机89c51还结合LED发光二极管制作了一个循环彩灯,它由一块89c51组成,通过逐次扫描其中一块的P0.0—P1.7口,从而依次实现彩灯轮流点亮、逐点点亮、间隔点亮、全亮全灭等。
该系统具有电路结构简单、易操作、硬件少、体积少、成本低、能耗低等优点,有一定的实用价值。
关键词:
LED彩灯;AT89C51单片机;闪烁方式;控制电路
一、系统设计
(一)、方案的选择与论证
方案一:
采用各类数字电路来组成键盘控制系统,进行信号处理,如选用CPLD等可编程逻辑器件。
本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难。
方案二:
过单片机控制二极管的闪烁,通过中断来改变模式同时串行输出数码管。
P0,P1口接16个二极管,P3口接扩展板的数码显示接口。
第二种方案简单,易于设计和控制,所以选择第二种。
(二)、总体方案设计
总体的方案设计如下:
单片机的P1口接4路按键控制电路,实现彩灯闪烁方式的切换功能;单片机的P3.3引脚接上一个按键开关以实现对彩灯中断的控制;单片机上的P0和P2口接16路LED发光二极管组成彩灯显示电路,实现多种形式的闪烁功能。
二、MCS-51单片机
(一)、单片机简介
单片机采用MCS-51系列单片机。
由ATMEL公司生产的AT89C51是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业89C51产品指令和引脚完全兼容。
在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得AT89C51为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
AT89C51具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
而且,它还具有一个看门狗(WDT)定时/计数器,如果程序没有正常工作,就会强制整个系统复位,还可以在程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。
AT89C51有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
其芯片外观及引脚图如下:
(二)、单片机各引脚功能
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1“时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89S52的一些特殊功能口,如下表所示:
表2.1AT89S52引脚功能表
管脚
备选功能
P3.0RXD
(串行输入口)
P3.1TXD
(串行输出口)
P3.2/INT0
(外部中断0)
P3.3/INT1
(外部中断1)
P3.4T0
(记时器0外部输入)
P3.5T1
(记时器1外部输入)
P3.6/WR
(外部数据存储器写选通)
P3.7/RD
(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
(三)、单片机的结构组成
MCS-51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM/EPROM)、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)。
它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器(SFR)的集中控制方式。
1、控制器
控制器是单片机的指挥控制部件,控制器的主要任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动而协调地工作。
单片机执行指令是在控制器的控制下进行的。
首先从程序存储器中读出指令,送指令寄存器保存,然后送至指令译码器进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑产生各种定时信号和控制信号,再送到单片机的各个部件去进行相应的操作。
这就是执行一条指令的全过程,执行程序就是不断重复这一过程。
控制器主要包括程序计数器、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路及时序控制逻辑电路。
2、存储器的结构
MCS-51单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开,程序存储器和数据存储器各有自己的寻址方式,寻址空间和控制系统。
这种结构对于单片机面向控制的实际应用极为方便,有利.在8051/8751弹片击中,不仅在片内集成了一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有极强的外存储器的扩展能力,寻址能力分别可达64KB,寻址和操作简单方便.MCS-51的存储器空间可划分为如下几类:
2.2.1、程序存储器
单片机系统之所以能够按照一定的次序进行工作,主要是程序存储器中存放了经调试正确的应用程序和表格之类的固定常数。
程序实际上是一串二进制码,程序存储器可以分为片内和片外两部分。
8031由于无内部存储器,所以只能外扩程序存储器来存放程序。
MCS-51单片机复位后,程序存储器PC的内容为0000H,故系统必须从0000H单元开始取指令,执行程序.程序存储器中的0000H地址是系统程序的启动地址.一般在该单元存放一条绝对跳转指令,跳向用户设计的主程序的起始地址。
2.2.2、内部数据存储器
MCS-51单片机内部有128个字节的随机存取存储器RAM,作为用户的数据寄存器,它能满足大多数控制型应用场合的需要,用作处理问题的数据缓冲器。
2.2.3、MCS-51单片机的片内存储器的字节地址为00H-7FH.MCS-51单片机对其内部RAM的存储器有很丰富的操作指令,从而使得用户在设计程序时非常方便。
地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区含8个8位寄存器,编号为R7-R0。
用户可以通过指令改变PSW中的RS1,RS0这二位来切换当前的工作寄存器区,这种功能给软件设计带来极大的方便,特别是在中断嵌套时,为实现工作寄存器现场内容保护提供了极大的方便。
3、特殊功能寄存器(SFR-SpecialFunctionRegister)
特殊功能寄存器反映了MCS-51单片机的状态,实际上是MCS-51单片机各功能部件的状态及控制寄存器.SFR综合的,实际的反应了整个单片机基本系统内部的工作状态及工作方式.SFR实质上是一些具有特殊功能的片内RAM单元,字节地址范围为80H-FFH.特殊功能寄存器的总数为21个,离散的分布在该区域中,其中]有些SFR还可以进行位寻址.128个字节的SFR块中仅有21个字节是由定义的.对于尚未定义的字节地址单元,用户不能作寄存器使用,若访问没有定义的单元,则将得到一个不确定的随机数.
4、并行I/O口
MCS-51单片机共有4个双向的8位并行I/O端口(Port),分别记作P0-P3,共有32根口线,各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。
实际上P0-P3已被归入特殊功能寄存器之列。
这四个口除了按字节寻址以外,还可以按位寻址。
由于它们在结构上有一些差异,故各口的性质和功能有一些差异。
P0口是双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。
P1口是8位准双向I/O口,可驱动4个LS型负载。
P2口是8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。
P3口是8位准双向I/O口,是双功能复用口,可驱动4个LS型TTL负载。
P1口、P2口、P3口各I/O口线片内均有固定的上拉电阻,当这3个准双向I/O口做输入口使用时,要向该口先写“1”,另外准双向I/O口无高阻的“浮空”状态,故称为双向三态I/O口。
5、时钟电路与时序
时钟电路用于产生MCS-51单片机工作时所必需的时钟信号。
MCS-51单片机本身就是一个复杂的同步时序电路,为保证同步工作方式的实现,MCS-51单片机应在唯一的时钟信号控制下,严格地按时序执行进行工作,而时序所研究的是指令执行中各个信号的关系。
在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定的操作。
CPU发出的时序信号有两类,一类用于片内对各个功能部件的控制,这列信号很多。
另一类用于片外存储器或I/O端口的控制,这部分时序对于分析、设计硬件接口电路至关重要。
这也是单片机应用系统设计者普遍关心的问题。
6、单片机的应用领域
单片机应用领域可以归纳为以下几个方面。
2.6.1智能仪表
用单片机系统取代老式的测量、控制仪表,实现从模拟仪表向数字化、智能化仪表的转化,如各种温度仪表、压力仪表、流量仪表、电能计量仪表等。
2.6.2测控系统
用单片机取代原有的复杂的模拟数字电路,完成各种工业控制、数据采集系统等工作。
2.6.3电能变换
应用单片机设计变频调速控制电路。
2.6.4通信
用单片机开发通信模块、通信器材等。
2.6.5机电产品
应用单片机检测、控制传统的机械产品,使传统的机械产品结构简化,控制智能化,提高了机电产品的可靠性,增强了产品的功能。
2.6.6智能接口
在数据传输中,用单片机实现外部设备与微机通信。
三、硬件电路设计
(一)、单机片最小系统
要使单片机工作起来,最基本的电路构成由单片机、时钟电路、复位电路等组成。
单片机最小系统由复位电路和时钟信号电路组成(如图2-1)。
复位电路:
确定单片机工作的起始状态,完成单片机的启动过程。
单片机系统的复位方式有上电自动复位和手动按键复位。
本设计采用上电自动复位。
单片机最小系统还有一块模块叫时钟电路。
时钟电路由一个晶振和两个小电容组成,用来产生时钟频率。
AT89C51单片机芯片内部有一个反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡器电路的输入端和输出端,时钟可由内部和外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就会产生自激振荡。
系统采用的定时元件为石英晶体和电容组成的并联谐振回路。
晶振频率选择12MHz,电容值取30PF,电容的大小频率起微调的作用
图1单片机最小系统图
(二)、按键控制电路
按键控制电路(如图2-2)是由4个按键开关构成的。
他们分别接在单片机AT89C51的P1.0~P1.3引脚上,为了一对一方式控制16个LED彩灯的不同闪烁形式。
当按下开关key1时,16个LED发光二极管闪烁第一种彩灯方式;当按下开关key2时,16个LED发光二极管闪烁第二种彩灯方式;同理,当按下开关key3时,16个LED发光二极管闪烁第三种彩灯方式;当按下开关key4时,16个LED发光二极管闪烁第四种彩灯方式。
图2按键控制电路图
(三)、中断电路
单片机的P3.3引脚街上一个按键开关以实现对彩灯中断的控制(如图2-3)。
当彩灯系统正在实现无论哪一种控制方式时,按下中断开关使过程终止,16个LED发光二极管同时会处于熄灭状态,停止当前工作;当再次按一下中断开关时,彩灯系统会继续进行工作,闪光方式会与中断之前的方式一样。
图3中断控制电路图
(四)、LED显示电路
流水灯采用的是发光二极管(Light-EmittingDiode),简称LED,是一种将电能转换为光能的半导体器件,具有体积小、耗电低的优点,常被用作微型计算机与数字电路的输出装置。
当LED两端加上一定的正向电压,使之流过一定的工作电流就会发光,其亮度随流过的电流增加而增加,但电流过大LED的寿命也将缩短。
普通LED正向电流一般为5~20mA。
由于51的I/O是弱上拉的方式,在输出高电平时,只能输出几十微安的电流,而在输出低电平时,I/O最大可以输入几十毫安的电流。
所以,通常采用灌电流的方式,即电流从电源经LED流向I/O口。
为了不让流过LED的电流太大而把它烧坏,还得串上限流电阻R,当P0和P2口输出高电平(+5V)时,LED两端没有电压降,所以熄灭;当P0和P2口输出低电平(即P0/P2=0)时,LED正向导通发光。
此时LED两端电压VD约为1.7V,则限流电阻R两端将存在3.3V(即5-1.7=3.3V)。
查阅AT89C51技术手册后发现,单个I/O口的输入电流不能超过10mA;P0口的输入电流总和不能超过26mA;P1、P2、P3的输入电流总和不能超过15mA;所有I/O口的输入电流总和不能超过71mA。
图4led显示电路图
四、系统的软件设计
(一)、软件的设计思路
本设计是以单片机AT89C51为核心控制16个发光二极管4种闪烁方式的变换。
硬件电路如图附录A所示,16个发光二极管分别接在单片机的P0和P2接口上。
例如,当给P0.0口输出“0”时,发光二极管点亮,当输出“1”时,发光二极管熄灭。
同理,接在P0和P2口的其他15个LED的点亮和熄灭的方法同P0.0引脚上的灯管。
因此,要实现流水灯功能,我们只要将发光二极管按照不同方式依次点亮、熄灭,16只LED灯便会一亮一暗的成流水灯了。
(二)、软件设计流程图
图5程序设计流程图
(三)、软件程序
打开keil软件,编写如下程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
consttab1[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
consttab2[]={0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00};
consttab3[]={0xFF,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00}
consttab4[]={0xFF,0xFE,0xFA,0xEA,0xAA,0x2A,0x0A,0x02,0x00};//1,3,5,7
consttab5[]={0xFF,0x7F,0x5F,0x57,0x55,0x54,0x50,0x40,0x00};//2,4,6,8
ucharkey=0;
ucharstate=0;
ucharstateTemp=0;
ucharflag=0;
voiddelay(uintn)//延时
{
uinti;
for(i=0;i } voidfun1(void) { P0=0x00; P2=0x00; delay(30000); P0=0xff; P2=0xff; delay(30000); } voidfun2(void) { uchari; for(i=0;i<8;i++)//向上逐次单个点亮 { P2=tab1[7-i]; delay(10000); if(state! =2) { P0=0xFF; P2=0xFF; return; } } P2=0xFF; for(i=0;i<8;i++) { P0=tab1[7-i]; delay(10000); if(state! =2) { P0=0xFF; P2=0xFF; return; } } P0=0xFF; for(i=0;i<8;i++)//向下逐次单个点亮 { P0=tab1[i]; delay(10000); if(state! =2) { P0=0xFF; P2=0xFF; return; } } P0=0xFF; for(i=0;i<8;i++) { P2=tab1[i]; delay(10000); if(state! =2) { P0=0xFF; P2=0xFF; return; } } P2=0xFF; } voidfun3(void) { uchari; for(i=0;i<9;i++) { P0=tab4[i]; P2=tab5[i]; delay(25000); if(state! =3) { P0=0xFF; P2=0xFF; return; } } for(i=0;i<3;i++) { P0=0xAA; P2=0xAA; delay(20000); P0=0x55; P2=0x55; delay(20000); if(state! =3) { P0=0xFF; P2=0xFF; return; } } for(i=0;i<9;i++) { P0=tab4[8-i]; P2=tab5[8-i]; delay(25000); if(state! =3) { P0=0xFF; P2=0xFF; return; } } } voidfun4(void) { uchari; for(i=0;i<9;i++)//向上逐个点亮 { P2=tab3[i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; return; } } for(i=0;i<9;i++) { P0=tab3[i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; return; } } for(i=0;i<9;i++)//向下逐个熄灭 { P0=tab3[8-i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; return; } } P0=0xFF; for(i=0;i<9;i++) { P2=tab3[8-i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; return; } } P2=0xFF; for(i=0;i<9;i++)//向下逐个点亮 { P0=tab2[i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; return; } } for(i=0;i<9;i++) { P2=tab2[i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; return; } } for(i=0;i<9;i++)//向上逐个熄灭 { P2=tab2[8-i]; delay(10000); if(state! =4) { P0=0xFF; P2=0xFF; retu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 彩灯 设计