毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc

上传人:仙人指路1688 文档编号:4136150 上传时间:2023-04-07 格式:DOC 页数:36 大小:674.50KB
返回 下载 相关 举报
毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc_第1页
第1页 / 共36页
毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc_第2页
第2页 / 共36页
毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc_第3页
第3页 / 共36页
毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc_第4页
第4页 / 共36页
毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于AT89S51单片机的LED点阵显示系统设计.doc(36页珍藏版)》请在三一办公上搜索。

1、摘 要本文介绍一个点阵LED显示系统,该系统以美国ATMEL 公司生产的40脚单片机AT89S51为核心,采用串行传输、动态扫描技术。以LED屏的显示电路和单片机控制电路为核心,采用C语言编程通过串行通信接口对LED显示系统显示参数的设定,实现点阵LED屏显示简单的数字、字母、汉字、图形等。该系统是通过S51芯片控制一个行驱动器74HC154和四个列驱动器74HC595来驱动显示屏显示。设计过程中综合应用了数字电路,模拟电路,单片机等方面的知识,并且还要学习protel软件和新的器件。 该系统特点是电路设计新颖、显示效果好、实用性强。理论与实际结合,本设计符合应用电子专业的培养目标。关键字:A

2、T89S51单片机; LED 点阵显示; 动态显示Abstract This article describes a dot-matrix LED display system, which produced the United States, 40 feet ATMEL AT89S51 microcontroller core, the use of serial transmission, dynamic scanning techniques. LED-screen display circuit and the MCU control circuit as the core, the

3、 use of C language programming via the serial communication interface display on the LED display system parameter setting and realize the simple dot-matrix LED display numbers, letters, characters, graphics and so on. The system is controlled by S51 chip, a line drive and four column driver 74HC154

4、74HC595 to drive the display shows. Comprehensive application of the design process of digital circuits, analog circuits, microcontroller and other aspects of knowledge, and also to learn protel software and new devices. The system features innovative circuit design, display a good, practical. Combi

5、nation of theory and practice, the use of electronic expertise designed to meet the training objectives. Keyword :AT89S51 microcontroller; LED dot matrix display; dynamic display 目 录摘 要1目 录2第一章引言211 LED电子显示屏概述212 LED电子显示屏的分类313 设计功能4第二章系统硬件设计与制作42.1 单片机的最小系统52.2 系统总电路62.3 1632点阵屏62.4 行驱动电路72.5 列驱动电路

6、72.6 电源模块82.7 系统PCB模块9第三章程序流程图10第四章结果调试与讨论11总结12参考文献13致谢13第一章引言11 LED电子显示屏概述LED电子显示屏(Light Emitting Diode Panel)是由几百-几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。利用不同的半导体材料可以制造不同色彩的LED像素点。目前应用最广的是红色、绿色、黄色。而蓝色和纯绿色LED的开发已经达到了实用阶段。 LED显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。 LED显示屏分为图文显示屏和条幅显示屏,均由

7、LED矩阵块组成。图文显示屏可与计算机同步显示汉字、英文文本和图形;而条幅显示屏则适用于小容量的字符信息显示。LED显示屏因为其像素单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。 LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。 12 LED电子显示屏的分类按颜色分类单基色显示屏:单一颜色(红色或绿色)。 双基色显示屏:红和绿双基色,256级灰度、可以显示655

8、36种颜色。 全彩色显示屏:红、绿、蓝三基色,256级灰度的全彩色显示屏可以显示一千六百多万种颜色。 按显示器件分类LED数码显示屏:显示器件为7段码数码管,适于制作时钟屏、利率屏等,显示数字的电子显示屏。 LED点阵图文显示屏:显示器件是由许多均匀排列的发光二极管组成的点阵显示模块,适于播放文字、图像信息。 按使用场合分类室内显示屏:发光点较小,一般3mm-8mm,显示面积一般零点几至十几平方米。 室外显示屏:面积一般几十平方米至几百平方米,亮度高,可在阳光下工作,具有防风、防雨、防水功能。 按发光点直径分类室内屏:3mm、3.75mm、5mm、 室外屏:10mm、12mm、16mm、19m

9、m、21mm、26mm 室外屏发光的基本单元为发光筒,发光筒的原理是将一组红、绿、蓝发光二极管封在一个塑料筒内共同发光增强亮度。13 设计功能本设计的任务就是完成一个可以随意扩展显示单元数目的单色动态条幅屏。任务要求:能同时显示六个简体汉字能实现汉字在屏幕上的移动第二章系统硬件设计与制作本系统由AT89S51、1个74HC154、4个74HC595及LED显示屏为核心组成的点阵式LED汉字显示屏,主要由24MHZ晶振电路、复位电路、51单片机、点阵阳极驱动电路、点阵阴极驱动电路、1632显示屏6部分组成。采用的AT89S51单片机最小化应用设计,P1口作为I/O口,输出行数据和控制信号,P2口

10、作为I/O口,与“写”控制信号配合,输出列控制信号。LED显示采用动态扫描方式实现,控制电路部分由1片74HC154和4片74HC595传输信号,传输出来的信号通过74HC595输出。再通过编译最终达到依次显示汉字的目的。其系统设计框图如图1所示图1 系统设计框2.1 单片机的最小系统AT89S51是一个低功耗,高性能8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和IS

11、P Flash存储单元。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。若将LED点阵的行列端口全部直接接入89S51单片机,则需要使用32条I/O口,这样会造成I/O资源的耗尽,系统也再无扩充的余地,因此,我们在实际应用中只是将LED点阵的4-16线译码器74HC154来选择控制,至于列选扫描信号则是由74HC595译码器来选择,这样一来列选择控制只使用了单片机的4个I/O口,节约了很多I/O

12、口资源,为单片机系统扩充使用功能提供了条件。该电路总共用到12个I/O口,采用P1口作为输出行数据和控制信号。P2口的4个口与“写”控制信号配合,输出列控制信号。P2口的另外4个I/O口是用作按键开关。单片机模块电路如图2所示。 图二:图2 单片机模块电路v2.2 系统总电路本系统采用AT89S51单片机最小应用系统作控制器,整个电路主要由单片机控制及其接口电路、驱动显示电路、电源电路等部分组成。总电路原理图如图3所示。图3 总电路原理图2.3 1632点阵屏采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。驱动器采用74HC154。对于列数据准备来说,它应能实现串入并

13、处的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。故在此我们采用74HC595作为列驱动。当74HC154扫描到某一行时,74HC595决定哪一列该亮,就这样快速扫描,就形成了图像。2.4 行驱动电路此电路采用4/16译码器74HC154作为点阵的行驱动。将从RAM输出四个信号分别输入到74HC154译码器,然后输出16位行信号,经过16个1K的电阻,再输入16个PNP8550三极管的B极来进行对行信号的放大,其中所有的三极管的E极相连接+5V的电源,所有的C极接16个1K欧姆

14、的电阻,得到的信号作为点阵LED的行输入信号,通过对154的四个输入信号进行控制,改变行信号。由154和595的信号,控制二极管的亮、灭来显示出所要求的字符、汉字。每个LED管亮需要7mA的电流,那么32个同时亮就需要224mA的电流,所以我们要对行进行驱动,我们采用晶体管8550对行信号进行放大,使LED点阵能够正常显示。其行驱动电路如图4所示: 图4 行驱动电路2.5 列驱动电路16行32列为一个基本单元,则列驱动需用4片74HC595,其工作原理为:将八片74HC595级连,共用一个串行时钟CLK及数据锁存信号STR。当第一行需要显示的数据经过84=32个CLK时钟后将全部移入74HC5

15、95中,此时产生一个数据锁存信号STR,使数据锁存在74HC595的后级锁存器中,同时由行扫描控制电路产生信号使第一行扫描管导通,相当于第一行LED的正端都接高平,显然第一行LED管子的亮、灭取决于74HC595中所锁存的信号;在第一行LED管子点亮的同时,在74HC595中移入第二行需要显示的数据,随后将其锁存,并同时由行扫描控制电路将第一行扫描管关闭而接通第二行,使第二行LED管子点亮以此类推,当第十六行扫描过后再回到第一行,只要扫描速度足够高,就可形成一幅完整的文字或图像,其列驱动电路如图5所示:图5 列驱动电路2.6 电源模块设计采用5V电源电压为其供电。直流稳压电源一般由电源变压器、

16、整流滤波器电路以及稳压电路所组成。电源变压器是将交流电网220V的电压变为所需要的值,然后经过整流电路将交流电压变成脉动的直流电压。由于此脉动的直流电压还含有较大的纹波,必须经过滤波电路加以滤波(一般有10%左右的波动)负载和温度的变化而变化。因而在整流、滤波电路之后,还需接稳压电路。稳压电路的作用是当电网电压波动、负载和温度变化时,维持输出直流电压稳定。选用输出电压固定为+5V的三端集成稳压器7805.变压器将电网220V电压变为+6V电其电源电路图如图6所示:图6 电源电路图压,经桥式整流后,送入7805的输入端,电容C1和C2用来实现频率补偿防止稳压器7805产生高频自激和抑制电路引入的

17、高频干扰,C3是点解电容,以减少稳压电源输出端由输入电源引入的低频干扰。2.7 系统PCB模块 本作品采用通用的Protel 99SE版软件完成PCB图的设计。本设计用的元件数量不算多,用到2块集成块、一片单片机与多个电阻和三极管及16*32的点阵屏,但是他们的连接却是相当复杂的,因此我们设计两块PCB图,即主控制电路图和点阵屏电路图。我们采用的是单面布线策略,多处还使用到跳线、排针与排线来连接。已设计好的PCB图如图7所示。图7 系统PCB图第三章程序流程图程序在初始化后将存储在ROM内部的站点信息读出,送至单片机的RAM,初步的进行汉字点阵转换,转换后的数据处理送至行驱动和列驱动,一般行的

18、用74LS154,列用74HC595控制,工作原理是当154扫描到某一行时,595决定哪一列该亮,就这样快速扫描,形成了图像了。它是用动态显示的原理工作的,即每个时刻只有一个LED被点亮,因为它的工作频率很高,所以人的眼睛看不出来它是动态的,LED点阵输入端有行和列,在不同的行和列之间接入信号相应的LED就会被点亮,但同时只能有一个行和列被接入信号,否则会乱码. 为让人眼能看清楚字的显示,对它进行延时以控制显示效果,使其循环处理。当按下不同的按键时,即可让字不同的滚动,当显示完毕就可结束。其流程图如图8所示:图8 系统流程图第四章结果调试与讨论根据系统设计方案,本系统的调试共分为三大部分:硬件

19、调试,软件调试和软硬联调。由于在系统设计中采用模块设计法,所以方便对个电路模块功能进行逐级测试,LED驱动模块的调试,程序模块的调试等,最后将各模块组合后进行整体测试。点阵屏测试:用2节1.5V直流干电池串联的到3V电压,连接点阵屏测试各行各列点阵工作是否正常,显示顺序是否正确。测试结果无误。主电路测试:将主电路连接到显示正常的点阵屏上,接上电源,结果点阵屏无法正常显示,点阵屏出现零散几个亮点。估计原因:(1)电路是否有出现断路现象。经万用表测试,各导线连接全部正常。(2)行驱动74HC154行驱动是否正常。我们换用另一块同样型号的74HC154,结果点阵屏还是无法正常显示。(3)晶振电路不起

20、振。我们将原电路的12M晶振换为16M晶振。结果点阵屏能正常显示预期的字样,但闪烁感强烈。这时,我们估计是晶振频率不够,后相继换上24M个27M晶振,结果采用27M晶振点阵屏同样出现闪烁感,而采用24M晶振,点阵屏显示正常而且稳定,无闪烁感现象。最后测试:最后测试左、右、上、下移动,移动正常。最后毕业设计实物调试成功。总结虽然本设计只是一块16*32汉字点阵电路的这几,但是通过这两个月的毕业设计,我受益匪浅,它是我大学三年所学知识很好的总结。它的制作过程使我认识到应用电子的重要性,让我知道时态的变化是多么的快,也让我知道应用电子在社会是处于一个什么样的地位。这些更让我坚定不移的继续学习应用电子

21、技术,选择它是一个明确答案。以下是我在制作过程中,主要做了下面几点较突出的工作:一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标。二、本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示文字,显示文字应稳定、清晰无串扰。文字显示有静止、左移、右移、上移、下移等显示方式。三、文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面。四、在这次毕业设计的过程中学会了 Protel 99se 的基本使用,感到Protel

22、 99se 对电子专业的同学来说是一门非常重要且很有用的课程。五、通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了PCB版的制作过程。参考文献1 谭浩强. C程序设计(第二版)M. 北京:清华大学出版社,1999.12.9 阎石.数字电子技术基础(第四版)M.北京:高等教育出版社,1998.11.10 中国集成电路大全编委会编.中国集成电路大全CMOS集成电路M. 北京:国防工业出版社,1985.附录附录1 单片机程序#include#include#include /字库#include /DS1302#include /DS18B20#define uchar unsign

23、ed char#define uint unsigned int#definelight 120/点阵亮度调节;视情况而定,实际电路中请设为120(效果好些)void delayms(uint n); /(n)ms延时子程序void delay(); /显示扫描延时void DS1302_Initial (void); /初始化ds1302void initTimer(void); /初始化定时器void lie(); /列控制函数void send8bit(unsigned int n); /发送字函数void mod_key(void);/显示模式选择函数void set_key(void

24、); /显示调整函数void read_clockS(void); /时钟数据读取函数void Set_hanzi(unsigned char se);/调节汉字函数void Set_time(unsigned char sel); /设置时间函数void Set_naozhong(unsigned char sel);/闹钟设置函数void deal_naozhong(void);/闹钟处理函数void check_shijian(void); /读取时间void load_shijian(void); /将待显示时间内容存至缓冲区void check_wendu(void); /读取温度v

25、oid load_wendu(void); /将待显示温度内容存至缓冲区void load_hanzi1(void);/将待显示汉字1存至缓冲区void load_hanzi2(void);/将待显示汉字2存至缓冲区/void load_tupian1(void);/将待显示图片1存至缓冲区void load_tupian2(void);/将待显示图片2存至缓冲区void display(void); /显示子程序sbit MOD=P32; /模式选择键sbit SET=P33; /状态调节键sbit ADD=P06; /加键sbit DEC=P07; /减键sbit speak=P03;/蜂

26、鸣器sbit dat=P37; /595数据sbit clock=P35; /595时钟信号sbit so=P36; /595锁存信号sbit gate=P34; /154门控信号uchar count,q=0; /标志位uchar disbuf64;/显示缓冲区uchar m,n,p,t;/缓冲区中间量uchar min,hour,sec,hour1,nh,nm; /定义时间映射全局变量uchar dian1,dian2,dian3,dian4;/用于时间闪烁的冒号uchar mod_st=0;/调整选择标志0:正常走时;1:温度;2:字幕;3:动画uchar set_st=0; /显示调整

27、标志0:uchar mod_key_st=0;/模式标志,为1则调用一次MOD键处理函数uchar set_key_st=0;/设置标志,为1则调用一次SET键处理函数uchar nz; /闹钟开启关闭标志 nz=0开;nz=1关uchar k=1,s=1,ss=1;/秒闪烁标志,调时闪烁标志,调闹钟秒不闪烁标志uchar x,y; /时基便于从某种状态中自动还原uint z,b,f,c,g;/调时自动恢复标志;字幕显示速度;报警时间;字幕显示速度标志;图片显示速度标志uchar speed=7;/字幕显示速度/*主函数*/void main() nh=8;nm=0; /闹钟初始时间设定 sp

28、eak=1;/关蜂鸣器 gate=1; /关闭显示,防止花屏delayms(500);/等待芯片复位,目的是稳定检测是否需要初始化while(SET=0)/通电前按下SET键不放,接通电源时便初始化时间信息DS1302_Initial();initTimer();/初始化定时器TR0=1;/开启定时器0ET0=1;/允许T0中断EA=1;/开中断总开关IT0=1;/开启外部中断0EX0=1;IT1=1;/开启外部中断1EX1=1;y=0;/系统时基清零hour= DS1302_r(0x85); /读取小时数据 check_wendu(); /读取温度信息while(1) while(mod_k

29、ey_st) mod_key();EX0=1; /模式选择if(mod_st!=1)&set_st=3) set_st=0;/*时间显示模式*/if(mod_st=0) ss=1; / 开秒闪 if(set_key_st) set_key();EX1=1;if(!set_st) if(z=1000)set_st=0;z=0;/进入调时选中状态后如果长时间无调整则自动退出 if(set_st=1|set_st=2) while(!ADD|!DEC)&set_st0) Set_time(set_st); /调节键按下check_shijian();/读取时间信息deal_naozhong();/闹

30、钟处理函数 display(); /显示load_shijian(); /将待显示时间内容存至缓冲区准备显示 display(); /显示 /*闹钟调节模式*/if(mod_st=1) ss=0;/关秒闪 if(set_key_st) set_key();EX1=1;if(set_st) if(z=800)set_st=0;z=0;/进入调时选中状态后如果长时间无调整则自动退出 if(set_st=3) nz=nz; /开关闹钟 if(set_st0) while(!ADD|!DEC)&set_st0) Set_naozhong(set_st); /调节键按下 m=nh/10;/计算得到小时十

31、位数字 n=nh%10; /计算得到小时个位数字 p=nm/10;/计算得到分钟十位数字 t=nm%10;/计算得到分钟个位数字display(); /显示load_shijian(); /将待显示时间内容存至缓冲区准备显示 display(); /显示 /*显示温度*/if(mod_st=2)check_wendu(); /读取温度信息 load_wendu(); /加载温度 display(); /显示/*显示汉字*/if(mod_st=3) if(set_key_st) set_key();EX1=1; if(set_st) if(!ADD|!DEC)&set_st0) Set_hanz

32、i(set_st); /调节键按下 load_hanzi1(); /加载汉字 c+; if(cspeed) b+;c=0;/改变speed可以改变字幕显示速度 if(b179*16) b=0; display(); /显示 else load_hanzi2(); /加载汉字 display(); /显示 /*显示图片*/if(mod_st=4)/*if(set_key_st) set_key();EX1=1; if(!set_st) load_tupian1(); /加载图片c+;if(c8) g+;c=0; /改变c可以改变图片显示速度if(g9) g=0; display(); /显示 *

33、/ / if(set_st) / load_tupian2(); /加载图片c+;if(c8) g+;c=0; /改变c可以改变图片显示速度if(g24) g=0; display(); /显示/ /*扫描延时(调节显示亮度)*/void delay()/*延时子程序*/ unsigned int n; for(n=0;nlight;n+); /*(n)ms延时子程序*/void delayms(uint n)uchar i;while(n-)for(i=0;i=40)s=s;y=0;/系统时基、工作节拍控制if(x80)k=k;x=0;/0.5秒k取反一次,用于秒的冒号闪烁和调时选中闪烁 /

34、控制秒冒号闪烁 if(k=1&ss=1) dian1=dian3=0x00;dian2=dian4=0x00; else dian1=dian3=0x06;dian2=dian4=0x60;/*外部中断0服务程序*/void int0(void) interrupt 0EX0=0;mod_key_st=1;/开启模式键标志/*外部中断1服务程序*/void int1(void) interrupt 2EX1=0;set_key_st=1;/开启设置键标志 /*初始化DS1302*/void DS1302_Initial (void) DS1302_w(0x8e,0x00);/允许写操作DS13

35、02_w(0x8c,0x09);/年 09DS1302_w(0x8a,0x01);/星期一DS1302_w(0x88,0x02);/月 2DS1302_w(0x86,0x10);/日 16DS1302_w(0x84,0x00);/小时 DS1302_w(0x82,0x00);/分钟DS1302_w(0x80,0x00);/秒DS1302_w(0x90,0xa5);/充电DS1302_w(0x8e,0x80);/禁止写操作 /*常用时钟数据读取*/void read_clockS(void) hour1=hour;hour = DS1302_r(0x85);/读取小时数据min = DS1302

36、_r(0x83);/读取分钟数据/*在本电子钟中暂不需要读取以下信息,暂时屏蔽*/sec = DS1302_r(0x81);/读取秒数据/day = DS1302_r(0x87);/读取日数据/month= DS1302_r(0x89);/读取月数据/week = DS1302_r(0x8b);/读取星期数据/year = DS1302_r(0x8d);/读取年数据 if(hour!=hour1)&!set_st) speak=0; /开整点报时if(f100) speak=1;f=0; /关整点报时/*MOD键处理程序*/void mod_key(void)if(!MOD)mod_st+;w

37、hile(!MOD)display();if(mod_st4) mod_st=0;/调整功能标志加一mod_key_st=0;/关闭设置键标志/*SET键处理程序*/void set_key(void) if(!SET)set_st+;while(!MOD)display();if(set_st3) set_st=0;/调整功能标志加一set_key_st=0;/关闭设置键标志/*设置时间函数*/void Set_time(unsigned char sel)/引入调整选择标志 signed char address,item; signed char max,mini; if(sel=1)

38、address=0x84; max=23;mini=0; /小时 if(sel=2) address=0x82; max=59;mini=0; /分钟/if(sel=3) address=0x80; max=0;mini=0; /秒/ if(sel=4) address=0x8c; max=99; mini=0; /年/ if(sel=5) address=0x88; max=12;mini=1; /月/ if(sel=6) address=0x86; max=31;mini=1; /日/ if(sel=7) address=0x8a; max=7;mini=1; /星期 item=(DS1302_r(address+1)/16)*10 + (DS1302_r(address+1)%16;/读取1302某地址上的数值转换成10进制赋给itemif(!ADD)item+;while(!ADD)display();z=0;if(!DEC)item-;while(!DEC)display();z=0; if(itemmax) item=mini;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号