实训报告基于单片机的霓虹灯设计姓名:xxx学号:xxxxxxxxxxxxxxx2012/5/3111.模块功能简介1.1STC89C52单片机及其引脚说明89C52是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。引脚说明:·VCC:电源电压·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口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。·P2口:P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。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时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。·ALE/PROG:当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出(PROG)。一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。2·PSEN:程序存储允许时外部程序存储器的读选通信号。当AT89C52执行外部程序存储器的指令时,每个机器周期PSEN两次有效,除了当访问外部数据存储器时,PSEN将跳过两个信号。·EA/VPP:外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,EA必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。当执行内部编程指令时,EA应该接到VCC端。·XTAL1:振荡器反相放大器以及内部时钟电路的输入端。·XTAL2:振荡器反相放大器的输出端。1.2单片机的最小系统电路本次实训用到的晶振为12M,30PF的无极性电容两个,主要作用是帮助振荡器起振,晶体的振荡频率范围是1.2~13MHZ。晶体振荡频率高,则系统的时钟频率也高,单片机运行的速度也就越快在最小系统中用到一个轻触按键,用于单片机的复位,接单片机的第9脚.单片机最小系统连线如图1所示:图1单片机最小系统31.3电路中的发光二极管的接法共阳接法主控模块采用的是AT89S52单片机,AT89S52是一个8位单片机,片内ROM全部采用FLASHROM技术,与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所示:图3LED发光二极管连接图1.4LED发光二极管LED发光二极采用共阳接法,由于单片机I/O口输出功率比较小.如果把发光二极管阳极接在I/O4口的话,会导致二极管亮度不够.共阳接法使得发光二极管获得比较大的功率。实训中用到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全部采用FLASHROM技术,与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全部采用FlashROM,它能于3V的超低压工作,与MCS-51系列单片机完全兼容,但是其不具备ISP在线编程技术,需把程序编写好以后再放到编程器中烧写,才可以进行硬件电路的调试,倘若程序编写出现问题,调试电路5就比较麻烦,而且其芯片内存也只有4KB。方案三:采用STC89C52,STC89C52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。4实训总结在看到题目后,第一件事是根据据自己的情况选择一个题目,由于自己对单片机的掌握能力还处于入门级别,所以选择霓虹灯的设计,大致制定了一下计划,初步设计通过三个通讯端口输出来控制霓虹灯,在程序设计上基本上是按照要实现的功能来实现,由于时间的问题,程序没有简化,所以先对而言看起来比较的复杂,在硬件的焊接过程中,板子质量比较差,在焊接要求上比较的严格,焊接完成的后,先检测了一下硬件的焊接无误,然后测试了一下基本功能,然后开始设计霓虹灯样式,设计用keil软件进行设计,设计完成通过protues仿真。所有功能设计完毕后,将程序烧录进单片机,基本设计完毕,通过这次实训,加深了对单片机的认识,对于焊接技术也有相应的提高,虽然这次的设计比较简单,但是这是一个开始,通过这次简单的开始可以慢慢的深入。元件清单名称数量规格发光二极管24个LED黄色绿色黄色电阻7个300欧STC89C511个轻触按键1个电容2个30PF电容1个1uF电阻1个10K欧晶体振荡器1个12M排组1个10K6程序清单#includereg52.h#defineunitunsignedintvoiddelayms(unit);voidmain(){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;P1=0x56;P2=0x06;delayms(1000);P0=0xfe;P1=0xfe;P2=0xfe;delayms(80);P0=0x46;P1=0x56;P2=0x16;delayms(1000);P0=0xfe;P1=0xfe;P2=0xfe;delayms(80);P0=0xfe;P1=0xfe;P2=0x06;delayms(1000);P0=0xfe;P1=0xfe;P2=0xfe;delayms(80);P0=0x06;P1=0x76;P2=0x06;delayms(1000);P0=0xff;P1=0xff;P2=0xff;delayms(300);P0=0xfe;delayms(100);P0=0xfc;delayms(100);P0=0xf8;delayms(100);P0=0xf0;7delayms(100);P0=0xe0;delayms(100);P0=0xc0;delayms(100);P0=0x80;delayms(100);P0=0x00;delayms(100);P1=0xfe;delayms(100);P1=0xfc;delayms(100);P1=0xf8;delayms(100);P1=0xf0;delayms(100);P1=0xe0;delayms(100);P1=0xc0;delayms(100);P1=0x80;delayms(100);P1=0x00;delayms(100);P2=0xfe;delayms(100);P2=0xfc;delayms(100);P2=0xf8;delayms(100);P2=0xf0;