基于51单片机的霓虹灯.docx
- 文档编号:29441111
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:32
- 大小:71.86KB
基于51单片机的霓虹灯.docx
《基于51单片机的霓虹灯.docx》由会员分享,可在线阅读,更多相关《基于51单片机的霓虹灯.docx(32页珍藏版)》请在冰豆网上搜索。
基于51单片机的霓虹灯
实训报告
基于单片机的霓虹灯设计
姓名:
xxx
学号:
xxxxxxxxxxxxxxx
2012/5/31
1.模块功能简介
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/
:
当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
当在Flash编程时还可以作为编程脉冲输出(
)。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
·
:
程序存储允许时外部程序存储器的读选通信号。
当AT89C52执行外部程序存储器的指令时,每个机器周期
两次有效,除了当访问外部数据存储器时,
将跳过两个信号。
·
/VPP:
外部访问允许。
为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,
必须同GND相连接。
需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,
应该接到VCC端。
·XTAL1:
振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:
振荡器反相放大器的输出端。
1.2单片机的最小系统电路
本次实训用到的晶振为12M,30PF的无极性电容两个,主要作用是帮助振荡器起振,晶体的振荡频率范围是1.2~13MHZ。
晶体振荡频率高,则系统的时钟频率也高,单片机运行的速度也就越快
在最小系统中用到一个轻触按键,用于单片机的复位,接单片机的第9脚.
单片机最小系统连线如图1所示:
图1单片机最小系统
1.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/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全部采用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在线编程技术,需把程序编写好以后再放到编程器中烧写,才可以进行硬件电路的调试,倘若程序编写出现问题,调试电路
就比较麻烦,而且其芯片内存也只有4KB。
方案三:
采用STC89C52,STC89C52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52单片机为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
4实训总结
在看到题目后,第一件事是根据据自己的情况选择一个题目,由于自己对单片机的掌握能力还处于入门级别,所以选择霓虹灯的设计,大致制定了一下计划,初步设计通过三个通讯端口输出来控制霓虹灯,在程序设计上基本上是按照要实现的功能来实现,由于时间的问题,程序没有简化,所以先对而言看起来比较的复杂,在硬件的焊接过程中,板子质量比较差,在焊接要求上比较的严格,焊接完成的后,先检测了一下硬件的焊接无误,然后测试了一下基本功能,然后开始设计霓虹灯样式,设计用keil软件进行设计,设计完成通过protues仿真。
所有功能设计完毕后,将程序烧录进单片机,基本设计完毕,通过这次实训,加深了对单片机的认识,对于焊接技术也有相应的提高,虽然这次的设计比较简单,但是这是一个开始,通过这次简单的开始可以慢慢的深入。
元件清单
名称
数量
规格
发光二极管
24个
LED黄色绿色黄色
电阻
7个
300欧
STC89C51
1个
轻触按键
1个
电容
2个
30PF
电容
1个
1uF
电阻
1个
10K欧
晶体振荡器
1个
12M
排组
1个
10K
程序清单
#include
#defineunitunsignedint
voiddelayms(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;
delayms(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;
delayms(100);
P2=0xe0;
delayms(100);
P2=0xc0;
delayms(100);
P2=0x80;
delayms(100);
P2=0x00;
delayms(100);
P0=0x00;
delayms(100);
P0=0x80;
delayms(100);
P0=0xc0;
delayms(100);
P0=0xe0;
delayms(100);
P0=0xf0;
delayms(100);
P0=0xf8;
delayms(100);
P0=0xfc;
delayms(100);
P0=0xfe;
delayms(100);
P0=0xff;
delayms(100);
P1=0x00;
delayms(100);
P1=0x80;
delayms(100);
P1=0xc0;
delayms(100);
P1=0xe0;
delayms(100);
P1=0xf0;
delayms(100);
P1=0xf8;
delayms(100);
P1=0xfc;
delayms(100);
P1=0xfe;
delayms(100);
P1=0xff;
delayms(100);
P2=0x00;
delayms(100);
P2=0x80;
delayms(100);
P2=0x80;
delayms(100);
P2=0xc0;
delayms(100);
P2=0xe0;
delayms(100);
P2=0xf0;
delayms(100);
P2=0xf8;
delayms(100);
P2=0xfc;
delayms(100);
P2=0xfe;
delayms(100);
P2=0xff;
delayms(100);
P0=0xff;
P1=0xff;
P2=0xff;
delayms(300);
P2=0xfe;
delayms(100);
P2=0xfc;
delayms(100);
P2=0xf8;
delayms(100);
P2=0xf0;
delayms(100);
P2=0xe0;
delayms(100);
P2=0xc0;
delayms(100);
P2=0x80;
delayms(100);
P2=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);
P0=0xfe;
delayms(100);
P0=0xfc;
delayms(100);
P0=0xf8;
delayms(100);
P0=0xf0;
delayms(100);
P0=0xe0;
delayms(100);
P0=0xc0;
delayms(100);
P0=0x80;
delayms(100);
P0=0x00;
delayms(100);
P2=0x00;
delayms(100);
P2=0x80;
delayms(100);
P2=0xc0;
delayms(100);
P2=0xe0;
delayms(100);
P2=0xf0;
delayms(100);
P2=0xf8;
delayms(100);
P2=0xfc;
delayms(100);
P2=0xfe;
delayms(100);
P2=0xff;
delayms(100);
P1=0x00;
delayms(100);
P1=0x80;
delayms(100);
P1=0xc0;
delayms(100);
P1=0xe0;
delayms(100);
P1=0xf0;
delayms(100);
P1=0xf8;
delayms(100);
P1=0xfc;
delayms(100);
P1=0xfe;
delayms(100);
P1=0xff;
delayms(100);
P0=0x00;
delayms(100);
P0=0x80;
delayms(100);
P0=0xc0;
delayms(100);
P0=0xe0;
delayms(100);
P0=0xf0;
delayms(100);
P0=0xf8;
delayms(100);
P0=0xfc;
delayms(100);
P0=0xfe;
delayms(100);
P0=0xff;
delayms(100);
P0=0x00;
delayms(400);
P1=0x00;
delayms(400);
P2=0x00;
delayms(400);
P0=0xff;
delayms(400);
P1=0xff;
delayms(400);
P2=0xff;
delayms(400);
P0=0x00;
delayms(400);
P1=0x00;
delayms(400);
P2=0x00;
delayms(400);
P0=0xff;
delayms(400);
P1=0xff;
delayms(400);
P2=0xff;
delayms(400);
P0=0xff;
P1=0xff;
P2=0xff;
delayms(300);
P0=0x00;
P1=0x00;
P2=0x00;
delayms(400);
P0=0xff;
P1=0xff;
P2=0xff;
delayms(400);
P0=0x00;
P1=0x00;
P2=0x00;
delayms(400);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0x55;
P1=0xff;
P2=0x55;
delayms(300);
P0=0xaa;
P1=0x7e;
P2=0xaa;
delayms(300);
P0=0xff;
P1=0xff;
P2=0xff;
delayms(300);
P0=0x7f;
delayms(300);
P1=0xbf;
delayms(300);
P2=0xdf;
delayms(300);
P1=0xaf;
delayms(300);
P0=0x77;
delayms(300);
P1=0xab;
delayms(300);
P2=0xdd;
delayms(300);
P1=0xaa;
delayms(300);
P0=0xff;
P1=0xff;
P2=0xff;
delayms(300);
P2=0x7f;
delayms(300);
P1=0xbf;
delayms(300);
P0=0xdf;
delayms(300);
P1=0xaf;
delayms(300);
P2=0x77;
delayms(300);
P1=0xab;
delayms(300);
P0=0xdd;
delayms(300);
P1=0xaa;
delayms(300);
P0=0xff;
P1=0xff;
P2=0xff;
delayms(300);
P0=0x7f;
delayms(300);
P1=0xbf;
delayms(300);
P2=0xdf;
delayms(300);
P1=0xaf;
delayms(300);
P0=0x77;
delayms(300);
P1=0xab;
delayms(300);
P2=0xdd;
delayms(300);
P1=0xaa;
delayms(300);
P0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 霓虹灯