1、 贵阳学院本科毕业论文(设计) 本科毕业论文(设计)题 目: LED点阵广告牌的设计与制作 院 系:物电系08级电信(1)班 专 业:电子信息科学与技术姓 名: 学 号: 指导教师: 教师职称:教授 填写日期:2011 年 12月 20 日摘 要对于这个设计,我用的主控模块是AT89C52,驱动88的点阵式广告牌是由一些简单的外围电路来驱动的,在这个设计中,我们不仅用了AT89C52,还用了四个74HC595,这四个芯片是用来作为88点阵的驱动,最终能够达到的目标是能是实现“祝您路途愉快!”这几个汉字的往左移的过程,也就是说,整体的电路大致可以分类为两块,一个是外围电路,一个是驱动电路。这两个
2、电路能够一起实现一个88的点阵广告牌,在人体肉眼观察的情况下,广告牌的亮点都能够显示亮度均匀,不晃眼,可以显示图形和文字。不仅如此,显示的文字还很稳定,特别的清晰无扰动。其显示方式有移入和移出。最后,烧录很方便,可以实现单片机和电脑等一系列的外围存储设备的传输数据功能。并且能够用软件来仿真出其内容的变化。从另外一个角度来说,LED点阵是当今新型的显示器件,由多个二极管组成的。通过控制Led灯的亮灭个数来控制我所需要显示的图形和文字。关键词:AT89C52;控制模块;点阵广告牌;驱动电路;外围电路Abstract For this design, I use the main control m
3、odule is based on AT89C52 and drive the 8 * 8 dot matrix type billboard is driven by some simple peripheral circuits, in this design, we not only use the AT89C52, four 74HC595. These four chip is used as the 8 * 8 dot matrix drive, and ultimately to achieve the target is is able to achieve: I wish y
4、ou a pleasant journey! This several Chinese characters to the left of the process, that is, the overall circuit can be roughly classified as two, one is the external circuit, one is the drive circuit. The two circuits can together to achieve a 8 * 8 dot matrix billboards and in the human eye observa
5、tion, billboard highlights are able to display brightness uniformity, no glare, can display graphics and text. Not only that, the text is still very stable, especially clear without disturbance. The display mode has to move in and out of. Finally, programming is very convenient, data transmission fu
6、nction can achieve a series of single-chip computer and computer peripheral storage devices. And can use the software to simulate the change of its content. From the other point of view, LED dot matrix is a new type of display device, which is composed of a plurality of diodes. By controlling the Le
7、d bright lights to control what I need to display graphics and text.Keywords: AT89C52; control module; dot matrix advertisement board; driving circuit; peripheral circuit目 录第一章 前 言4第二章 点阵的概述5第一节 功能要求5第二节 关于LED的了解5一、LED点阵显示系统简介5二、LED点阵显示系统的主要特点5三、LED点阵显示屏的分类5四、8*8点阵内部电路图6第三节 方案论证6(一)点阵探究6(二)扫描规律7第三章
8、方案比较8第一节 LED点阵广告牌的设计一般有两种方案:8第二节 电源的选择与论证8第三节 点阵信息提取方案8第四节 显示驱动电路9第四章 系统总体设计方案10第一节 广告牌总体设计方案10第二节 LED显示驱动电路10(一)LED显示原理10(二)驱动所用芯片11(三)所选方案论述11(四)74HC595的引脚接线11第三节 单片机系统及外围电路12第五章 软件设计13第一节 显示驱动程序13第二节 系统主程序13第六章 PROTEUS软件仿真15第一节 Proteus软件简介15第二节 proteus仿真过程15图6-2-1 仿真过程15致 谢16参考文献17附 录18第一章 前 言点阵式
9、广告牌于生活中处处可见,它的存在对我们的生活有着十分重要的影响。点阵广告牌在显示的时候,其颜色艳丽,视觉效果强。用于许多地方,如,店铺,十字路口,站台,警察局,医院,等等任何建筑都有着它的存在。它的成本十分的低廉,但它实现的功能又特别重要,所以它十分受人们的青睐。它的原理是利用动态扫描的显示方法。第二章 点阵的概述第一节 功能要求 我们需要设计一个8*8的点阵式广告牌,我们需要它的显示能够稳定,抗扰动性能好,能够显示我们所需要的图形和文字,并且能够按照我们自己的要求进行左移或者右移。第二节 关于LED的了解一、LED点阵显示系统简介我所介绍的LED显示屏,能够按照要求显示一些生活中常见的图形和
10、文字,能够广泛的应用于社会。其结构和原理都十分简单,安装起来也没有难度。不仅如此,其外形简洁美观,显示的内容也十分清晰。通过AT89C52芯片来控制,其稳定性和可靠性都大大的提升。而且它还具有掉电保护的功能,并不影响它的脱机工作。总共大约能够显示将近2000个文字。经过串口来和电脑进行信息交互,操作起来很简单,容易上手。二、LED点阵显示系统的主要特点1.选用高品质的LED晶片,抗静电强,亮度衰减低,波长稳定性高;2.先进的封装设备,保证品质和寿命;3.室全彩户外电子屏幕,由RGB三色LED灯组成,可显示36bit色,且能实时、同步地显示各种信息,如二维或三维动画、录像、电视及现场实况等多种视
11、频信息内容。4.显示屏长期使用后仍可保持完美的画质和白平衡再现及足够的亮度。5.高精度的LED光学设计,使RGB三色LED的远场视角图完美匹配,以保证从任一角度都能得到视屏画面的完美再现。6.具有视角大、色彩均匀一致、故障率低、易维护。7.标准的加工工艺,保证每一行和每一列灯管都在同一水平线上,保证画面的稳定清晰。8.IP65级高性能的防水,防尘能力!三、LED点阵显示屏的分类1、我们将LED点阵显示屏分为两大类,主要依据与他们的应用场所不同(1)室内屏从字面上理解来说,就是放在室内的液晶显示屏幕,是将许多点阵模块或者数码管模块拼凑到一定的板子上,根据客户的需求来定制他们所需要的尺寸。(2)户
12、外屏从字面上理解来说就是放在户外的液晶显示屏幕,是将许多点阵模块或者数码管组装成一个箱,根据场地的不同要求可以设计成不同的形状或者大小。我们一般采用强反光的介质,使得显示起来更加醒目。2、LED是由许多发光二极管组成的,根据发光二极管发出不同颜色的光,我们又将LED分为单色,双色或者全彩色这几种类型。(1)单色从字面上理解来说,就是只有一种颜色,一般我们采用红色,应为红色的透射率最强,也是最醒目的,其次就是黄色,或者绿色。(2)双基色从字面理解来说,就是有两种颜色,通过采用两种不同颜色的发光二极管来组合出不同颜色灰度。有点黑白的意思。(3)全彩色从字面上理解就是有很多颜色,多种颜色的混合就可以
13、形成彩色,通过不同的变化,能够不错的还原大自然的颜色,这也是许多客户喜爱的原因之一。四、8*8点阵内部电路图图2-2-1 8*8点阵模块内部电路图第三节 方案论证(一)点阵探究动态扫描这个名词,从字面上来说就是不断的扫描,具体的对于8*8点阵来说,就是8行中的每一行都将一极连在一起,这里又分为共阴极和共阳极,这主要取决于二极管是什么类型,如果输入高电平就亮,这种就是共阴极,如果输入低电平就亮,这种就是共阳极。他们的8每8行,每8列都连在一起,同一个时间只能点亮一个灯亮,所以需要单片机一个一个点亮,因为单片机执行速度很快,这样逐个点亮的速度用肉眼就分辨不出来,在人看来,这就是同时亮,这里利用了人
14、类的视觉暂留效果。这样我们就能看到稳定的图形或者文字了。第三章 方案比较第一节 LED点阵广告牌的设计一般有两种方案:方案一:控制器,我们采用可编程逻辑器件,PLC或者PLD,这种方案执行力差,速度较慢,编程起来也十分复杂,不易控制。而且成本很高,不受消费者青睐。方案二:我们采用AT89C52芯片,芯片的执行速度相对较快,而且编程十分容易,对于我们来说已经熟练掌握,而且它的成本也是十分低廉。综合多方面考虑,选择方案二。第二节 电源的选择与论证方案一:采用普通干电池,方便携带,但是容量小,不利于大功率使用,也不能长期使用,需要频繁的更换,而且污染环境。方案二:采用自制直流稳压电源,这个能够根据不
15、同的要求设计不同的电源,个性化强,节省成本,耐用。综上所述,采用方案二第三节 点阵信息提取方案上大学的时候搞单片机实验,大家都知道要提取字库。很多人还在研究UCDOS下的那些点阵文件,其实使用C#,可以很方便地写一个程序提取Windows字体。优点是,代码实现起来非常容易。并且可以借助Windows上庞大的TTF字体资源,实现各种各样的字体,不再局限UCDOS中几种有限的字体。还可以实现很多特殊效果,因为Windows的字体就是绘图嘛。第四节 显示驱动电路LED显示屏幕常规驱动电路的设计:只要合理选择电阻的值,就可以保证LED中流过的电流稳定不变,并且可以使LED发光二极管巩工作在正向电流与对
16、应发光亮度的最佳状态,用这种列恒流驱动工作方式,可以做到不管一行中LED管子亮点数的多少,其行驱动管的管压降虽然有变化,电源电压VCC也可以有所变化,由于每个LED发光二极管中流过的电流恒定不变,从而保证了LED显示屏幕亮度的均匀性。该LED显示屏恒流驱动电路与原常规驱动电路相比,仅利用较小的改动就客服了常规型驱动电路的缺陷,确保了较完美的性能,笔者通过多块显示屏的实际使用均得到了理想的显示效果。第四章 系统总体设计方案第一节 广告牌总体设计方案 驱 动 器 单片机片机LED显示点阵 图4-1-1 总体设计方案图第二节 单片机系统及外围电路我们的单片机采用的型号是AT89C52,它的晶振是12
17、MHZ的,我们将单片机与驱动电路相连接,驱动电路将驱动显示电路也就是LED显示屏。P0和P3口连接驱动,P3口送数据从而控制LED液晶屏的显示,P1.6接时钟,P1.7输出使能。 图4-2-1 74HC595的引脚 图4-2-2 74HC595在电路中的连线第五章 软件设计1.初始化设置程序#include #define uchar unsigned char#define uint unsigned intsbit outen = P17;sbit latch = P16;设置变量和使能管脚,输出端口。2.显示字的模块uchar code zero122=0x00,0x00,0x00,0x
18、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/祝uchar code zhu122=0x40,0x40,0x27,0xE0,0xF4,0x40,0x14,0x40,0x24,0x40,0x67,0xC0,0xB2,0x80,0x22,0x80,0x22,0xA0,0x24,0xA0,0x38,0xE0,0x00,0x00;/您uchar code nin122=0x24,0x00,0x27,0xE0,0x48,0x40,0xD5,0x
19、80,0x49,0x40,0x51,0x20,0x47,0x00,0x08,0x00,0x54,0xC0,0x50,0xA0,0x9F,0x80,0x00,0x00;/旅uchar code lui122=0x42,0x00,0x22,0x00,0xFB,0xE0,0x44,0x00,0x70,0xC0,0x57,0x00,0x55,0x40,0x55,0x80,0x54,0x80,0x95,0x40,0xB6,0x20,0x00,0x00,;/途uchar code tu122=0x82,0x00,0x45,0x00,0x48,0x80,0x17,0x60,0xC2,0x00,0x4F,0x
20、C0,0x42,0x00,0x4A,0x80,0x56,0x40,0xA0,0x00,0x9F,0xE0,0x00,0x00;/愉uchar code yu122=0x42,0x00,0x45,0x00,0x68,0x80,0xD7,0x60,0xC0,0x00,0x4E,0xA0,0x4A,0xA0,0x4E,0xA0,0x4A,0xA0,0x4E,0xA0,0x4A,0x60,0x00,0x00;/快uchar code kuai122=0x42,0x00,0x42,0x00,0x4F,0xC0,0xE2,0x40,0xD2,0x40,0x42,0x40,0x5F,0xE0,0x42,0x
21、00,0x45,0x00,0x48,0x80,0x70,0x60,0x00,0x00;/!uchar code well122=0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00;分别是“祝您旅途愉快!“这几个字样。3.液晶屏的初始化程序uchar idata buffer168;uchar *pc16;void display(uint);/显示void delay(uint);/延时void move(v
22、oid);void carry();void t_state(void);void clean(void);/清空显存void slogan(uchar m);void LeftMove(uchar *p);void UpMove(void);void WordUpMove(void);void LoadNoSmoking(uchar *p);显示字符之前的准备程序4.显示字符程序uchar i;TMOD=0x11;SCON=0x00;EA=1;ES=0;while(1)clean();display(20);for(i=0;i1;i+)/祝您旅途愉快!pc0=&dh00;pc1=&zhu00
23、;pc2=&nin00;pc3=&lui00;pc4=&tu00;pc5=&yu00;pc6=&kuai00;pc7=&well00;slogan(8);/slogan(8);pc0=&zero00;for(i=0;i5;i+)slogan(1);正式显示“祝您旅途愉快!“这几个字样5.清屏程序void clean(void)uchar i,j;for(i=0;i16;i+)for(j=0;j8;j+)bufferij=0x00;屏幕清空6.左移程序void slogan(uchar m)uchar i;for(i=0;im;i+)LeftMove(pci);字符向左移动一个字符长度。7. 延
24、时函数void delay(uint t) int i,j; for(i=0;it;i+) for(j=0;j10;j+);用于延时间隔。8.展示函数void display(uint t)uint i;uchar j,k,a;uchar *disp;for(i=0;it;i+)a=0x80;latch=0;outen=1;P0=0;P2=0;for(j=0;j8;j+)disp=bufferj+6;for(k=0;k1;outen=1;P0=0;a=0x80;for(j=0;j8;j+)disp=bufferj+8+6;for(k=0;k1;outen=1;挨个展示字符函数9.字符操作函数v
25、oid move(void)uchar *m,i,j;for(i=0;i16;i+)for(j=0;j7;j+)m=&bufferij;*m=*m7;bufferi7=bufferi71; /*=void carry()uchar i,j,*car=wc;for(i=0;i16;i+)/16行for(j=0;j4;j+)/4 bytebufferij+3=*car+;*/void LeftMove(uchar *p)uchar i;buffer07=buffer17=buffer147=buffer157=0x00;for(i=0;i12;i+)bufferi+27=*(p+2*i);/装载高
26、8位for(i=0;i8;i+)/左移8次,并显示move();display(1);for(i=0;i12;i+)bufferi+27=*(p+1+2*i);/装载低4位for(i=0;i4;i+)/左移4次,并显示move();display(1);void LoadNoSmoking(uchar *p)uchar i;for(i=0;i16;i+)bufferi7=*(p+2*i);/装载高8位for(i=0;i8;i+)/左移8次,并显示move();display(1);for(i=0;i16;i+)bufferi7=*(p+1+2*i);/装载低4位for(i=0;i8;i+)/左
27、移8次,并显示move();display(1);void UpMove(void)uchar i,j;for(i=0;i15;i+)for(j=0;j7;j+)bufferij=bufferi+1j;for(i=0;i7;i+)buffer15i=0x00;void WordUpMove(void)uchar i,j;buffer150=*pc0;display(3);UpMove();buffer150=*(pc0+1);display(3);UpMove();for(i=0;i12;i+)buffer150=*(pc0+2+i);for(j=0;j4);buffer153+3*j=(*(
28、pc2+2*j+2*i)4);display(3);UpMove();buffer150=*(pc0+14);display(3);UpMove();buffer150=*(pc0+15); display(150);display(150);第六章 Proteus软件仿真第一节 proteus仿真过程 原理图的绘制程序编写和编译装载HEX代码调试得到仿真效果 图6-2-1 仿真过程参考文献1 谭浩强.C程序设计.第三版.北京:清华大学出版社,20052 童诗白.模拟电子技术基础.第三版.北京:高等教育出版社,20003 闫石.数字电子技术基础.第三版.北京:高等教育出版社,19894 何立民
29、.单片机应用技术选编.北京:北京航空航天大学出版社,20005 余发山,王福忠.单片机原理及应用技术.徐州:中国矿大出版社,20046 胡汉才.单片机原理及其接口技术.第二版. 北京: 清华大学出版社,20047 江泽佳.电路原理.第三版.北京:高等教育出版社,19928 张新成,杨志邦.c语言程序设计.郑州:河南科学技术出版社,2009附 录附1 源程序代码#include #define uchar unsigned char#define uint unsigned intsbit outen = P17;sbit latch = P16;/zerouchar code zero122=
30、0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;/祝uchar code zhu122=0x40,0x40,0x27,0xE0,0xF4,0x40,0x14,0x40,0x24,0x40,0x67,0xC0,0xB2,0x80,0x22,0x80,0x22,0xA0,0x24,0xA0,0x38,0xE0,0x00,0x00;/您uchar code nin122=0x24,0x00,0x27,0xE0,
31、0x48,0x40,0xD5,0x80,0x49,0x40,0x51,0x20,0x47,0x00,0x08,0x00,0x54,0xC0,0x50,0xA0,0x9F,0x80,0x00,0x00;/旅uchar code lui122=0x42,0x00,0x22,0x00,0xFB,0xE0,0x44,0x00,0x70,0xC0,0x57,0x00,0x55,0x40,0x55,0x80,0x54,0x80,0x95,0x40,0xB6,0x20,0x00,0x00,;/途uchar code tu122=0x82,0x00,0x45,0x00,0x48,0x80,0x17,0x60,
32、0xC2,0x00,0x4F,0xC0,0x42,0x00,0x4A,0x80,0x56,0x40,0xA0,0x00,0x9F,0xE0,0x00,0x00;/愉uchar code yu122=0x42,0x00,0x45,0x00,0x68,0x80,0xD7,0x60,0xC0,0x00,0x4E,0xA0,0x4A,0xA0,0x4E,0xA0,0x4A,0xA0,0x4E,0xA0,0x4A,0x60,0x00,0x00;/快uchar code kuai122=0x42,0x00,0x42,0x00,0x4F,0xC0,0xE2,0x40,0xD2,0x40,0x42,0x40,
33、0x5F,0xE0,0x42,0x00,0x45,0x00,0x48,0x80,0x70,0x60,0x00,0x00;/!uchar code well122=0x00,0x00,0x30,0x00,0x78,0x00,0x78,0x00,0x78,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00;uchar idata buffer168;uchar *pc16;void display(uint);/显示void delay(uint);/延时void move(void);void ca
34、rry();void t_state(void);void clean(void);/清空显存void slogan(uchar m);void LeftMove(uchar *p);void UpMove(void);void WordUpMove(void);void LoadNoSmoking(uchar *p);/*/*主程序开始*/*/void main(void)uchar i;TMOD=0x11;SCON=0x00;EA=1;ES=0;while(1)clean();display(20);for(i=0;i1;i+)/祝您旅途愉快!pc0=&dh00;pc1=&zhu00;pc
35、2=&nin00;pc3=&lui00;pc4=&tu00;pc5=&yu00;pc6=&kuai00;pc7=&well00;slogan(8);/slogan(8);pc0=&zero00;for(i=0;i5;i+)slogan(1);void clean(void)uchar i,j;for(i=0;i16;i+)for(j=0;j8;j+)bufferij=0x00;void slogan(uchar m)uchar i;for(i=0;im;i+)LeftMove(pci);void delay(uint t) int i,j; for(i=0;it;i+) for(j=0;j10
36、;j+);void display(uint t)uint i;uchar j,k,a;uchar *disp;for(i=0;it;i+)a=0x80;latch=0;outen=1;P0=0;P2=0;for(j=0;j8;j+)disp=bufferj+6;for(k=0;k1;outen=1;P0=0;a=0x80;for(j=0;j8;j+)disp=bufferj+8+6;for(k=0;k1;outen=1;void move(void)uchar *m,i,j;for(i=0;i16;i+)for(j=0;j7;j+)m=&bufferij;*m=*m7;bufferi7=bufferi71; /*=void carry()uchar i,j,*car=wc;for(i=0;i16;i+)/16行for(j=0;j4;j+)/4 bytebufferij+3=*car+;*/void LeftMo