实训报告基于单片机的霓虹灯设计姓名:xxx学号:xxxxxxxxxxxxxxx2018/5/311.模块功能简介1.1 STC89C52单片机及其引脚说明89C52是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器, 一个5中断源两个优先级的中断结构,一个双工的串行口, 片上震荡器和时钟电路。
引脚说明:·V CC:电源电压·GND:地·P0口:P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL 逻辑门电路。
当对0端口写入1时,可以作为高阻抗输入端使用。
当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。
在这种模式下,P0口具有内部上拉电阻。
在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。
程序校验时需要外接上拉电阻。
·P1口:P1口是一带有内部上拉电阻的8位双向I/O口。
P1口的输出缓冲能接受或输出4个TTL逻辑门电路。
当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。
当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流<I IL)。
·P2口:P2是一带有内部上拉电阻的8位双向的I/O端口。
P2口的输出缓冲能驱动4个TTL 逻辑门电路。
当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流<I IL)。
P2口在访问外部程序存储器或16位地址的外部数据存储器<例如MOVX @ DPTR)时,P2口送出高8位地址数据。
在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。
当利用8位地址线访问外部数据存储器时<例MOVX @R1),P2口输出特殊功能寄存器的内容。
当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。
·P3口:P3是一带有内部上拉电阻的8位双向的I/O端口。
P3口的输出缓冲能驱动4个TTL 逻辑门电路。
当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流<I IL)。
·RST:复位输入。
当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
·ALE/PROG:当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
当在Flash编程时还可以作为编程脉冲输出<PROG)。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
·PSEN:程序存储允许时外部程序存储器的读选通信号。
当AT89C52执行外部程序存储器的指令时,每个机器周期PSEN两次有效,除了当访问外部数据存储器时,PSEN将跳过两个信号。
·EA/V PP:外部访问允许。
为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,EA必须同GND相连接。
需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,EA应该接到V CC端。
·XTAL1:振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:振荡器反相放大器的输出端。
1.2 单片机的最小系统电路本次实训用到的晶振为12M,30PF的无极性电容两个,主要作用是帮助振荡器起振,晶体的振荡频率范围是 1.2~13MHZ。
晶体振荡频率高,则系统的时钟频率也高,单片机运行的速度也就越快在最小系统中用到一个轻触按键,用于单片机的复位,接单片机的第9脚.单片机最小系统连线如图1所示:图1 单片机最小系统1.3电路中的发光二极管的接法共阳接法主控模块采用的是AT89S52单片机,AT89S52是一个8位单片机,片内ROM全部采用FLASH ROM 技术,与MCS-51系列完全兼容,它能以3V的超低电压工作,晶振时钟最高可达24MHz。
AT89S52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。
第31引脚需要接高电位使单片机选用内部程序存储器;第9引脚是复位引脚,要接一个上电手动复位电路;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS 引脚之间接0.1μF高频滤波电容。
第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号。
芯片与电路图:LED发光二极管如图3所示:图3 LED发光二极管连接图1.4 LED发光二极管LED发光二极采用共阳接法,因为单片机I/O口输出功率比较小.如果把发光二极管阳极接在I/O 口的话,会导致二极管亮度不够.共阳接法使得发光二极管获得比较大的功率。
实训中用到16个470欧的电阻,起到限流的作用,保护LED发光二极管。
该霓虹灯是以单片机AT89S52为核心来完成的,在硬件电路中采用P2口作为8位LED数码管的驱动接口。
单片机的八个输出端P0口同时又用来控制数码管的显示。
8个三极管,再接于数码管阳极用于驱动数码管。
因为共阳的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的8位LED数码管均用共阳极的数码管。
在8位LED显示时,为了简化电路,降低成本,8个LED显示器共用一个8位的I/O, 8位LED数码管的位选线分别由相应的端口控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。
主控模块采用的是AT89S52单片机,AT89S52是一个8位单片机,片内ROM全部采用FLASH ROM技术,与MCS-51系列完全兼容,它能以3V的超低电压工作,晶振时钟最高可达24MHz。
AT89S52是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。
第31引脚需要接高电位使单片机选用内部程序存储器;第9引脚是复位引脚,要接一个上电手动复位电路;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS 引脚之间接0.1μF高频滤波电容。
第18、19脚之间接上一个12MHz的晶振为单片机提供时钟信号。
2 方案要求2.1 课题设计要求、系统方案介绍设计一个霓虹灯,采用LED模拟,要有多重花样.用单片机的P0口控制8盏发光二级管,P2口控制8盏发光二级管,P1口控制一个共阳数码管。
P0,P2口控制的 16盏灯排成4×4矩阵,数码管显示灯的花样种类,方案中总共有12种花样,数码管显示数字为0,1,2,3,4,5,6,7,8,9,H,F。
在设计的过程中,P0口要加上上拉电阻,这是单片机系统内部决定的。
在方案中用到三个按键,按键S1是单片机复位键,按键S2是中断控制灯的闪亮速度,按键S3是选择灯的花样,按键每按下一次,切换花样一次。
3单片机的选择方案一:8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,从而造成成本较高,性价比低。
方案二:89C51芯片内部有ROM,且片内ROM全部采用Flash ROM,它能于3V的超低压工作,与MCS-51系列单片机完全兼容,但是其不具备ISP在线编程技术,需把程序编写好以后再放到编程器中烧写,才可以进行硬件电路的调试,倘若程序编写出现问题,调试电路就比较麻烦,而且其芯片内存也只有4KB。
方案三:采用STC89C52, STC89C52单片机是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。
使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
4 实训总结在看到题目后,第一件事是根据据自己的情况选择一个题目,因为自己对单片机的掌握能力还处于入门级别,所以选择霓虹灯的设计,大致制定了一下计划,初步设计通过三个通讯端口输出来控制霓虹灯,在程序设计上基本上是按照要实现的功能来实现,因为时间的问题,程序没有简化,所以先对而言看起来比较的复杂,在硬件的焊接过程中,板子质量比较差,在焊接要求上比较的严格,焊接完成的后,先检测了一下硬件的焊接无误,然后测试了一下基本功能,然后开始设计霓虹灯样式,设计用keil软件进行设计,设计完成通过protues仿真。
所有功能设计完毕后,将程序烧录进单片机,基本设计完毕,通过这次实训,加深了对单片机的认识,对于焊接技术也有相应的提高,虽然这次的设计比较简单,但是这是一个开始,通过这次简单的开始可以慢慢的深入。
元件清单程序清单#include<reg52.h>#define unit unsigned int voiddelayms(unit>。
void main(> {while(1>{P0=0xff。
P1=0xff。
P2=0xff。
delayms(2000>。
P0=0x16。
P1=0x56。
P2=0x06。
delayms(1000>。
P0=0xfe。
P1=0xfe。
P2=0xfe。
delayms(80>。
P0=0x06。
P1=0x56。
P2=0x06。
delayms(1000>。
P0=0xfe。
P1=0xfe。
P2=0xfe。
delayms(80>。
P0=0x7e。
P1=0x7e。
P2=0x06。
delayms(1000>。
P0=0xfe。
P1=0xfe。
P2=0xfe。
delayms(80>。
P0=0x06。
P1=0x56。
P2=0x46。
delayms(1000>。
P0=0xfe。
P1=0xfe。
P2=0xfe。
delayms(80>。
P0=0x16。
P1=0x56。
P2=0x46。
delayms(1000>。
P0=0xfe。
P1=0xfe。
P2=0xfe。
delayms(80>。
P0=0x1e。
P1=0xde。
P2=0x06。
delayms(1000>。
P0=0xfe。
P1=0xfe。
P2=0xfe。
delayms(80>。
P0=0x56。