资源描述
XX职业学院毕业设计(论文)X X 职 业 学 院毕业设计 (论文)题 目 单片机点阵式LED显示屏设计 学生姓名 年级专业 08级 电气自动化 学 号 指导教师 起止日期 2010-9-17至2010-10-162010年10 月7 日XX职业学院毕业设计 (论文)任务书机电系电气自动化专业 班级08电气 姓名学号 毕业设计名称:单片机点阵式LED显示屏设计毕业设计主要研究内容及研究意义:研究内容:1、用8051单片机显示字体 2、PROTEUS软件和KEIL软件的使用3、单片机的控制程序 4、点阵屏幕的使用研究意义:利用51单片机和C语言程序的控制制定的汉字在点阵屏幕上的显示,了解51单片机的性质和使用,提高对PROTEUS软件和KEIL软件的使用。毕业设计研究思路及方法: 通过介绍51单片机和所用到的元件,用KEIL软件写C程序并仿真对错与修改,还在PROTEUS软件里面画仿真电路图,把正确的C程序烧入51单片机的芯片里面,运行。在点阵屏幕上显示“单片机”三个字样。毕业设计研究起止时间:2010-9-16至2010-10-16主要参考书:1.宁爱民 兰如波 单片机应用技术 北京理工大学出版社,2009.82.张永枫.单片机应用实训教程 清华大学出版社,2008.123.彭伟.单片机基于8051+Proteus仿真 电子工业出版社,2009.64.张毅刚.MCS-51单片机设计 哈尔滨工业电子出版社,19965.阳进.基于单片机的LED显示屏的汉字显示J.中国科技信息,2005.126.郑刚.LED大屏幕显示系统的设计 北方工业大学出版社,1997.37.杨恢先 黄辉先.单片机原理及应用 人民邮电出版社,2006 108.谭浩强 C语言程序设计教程(网络),9.8051系列单片机C语言程序设计完全手册指导教师意见: 思路可行,同意论文设计工作。签名:李福武 2010年 9月 20 日系部意见:盖章: 年 月 日北海职业学院学生毕业设计(论文)成绩鉴定表姓 名性 别男出生年月1988 07系机电系年级2008级班级08电气班专业电气自动化学号设计(论文)题目单片机点阵式LED显示屏设计指导教师对毕业设计(论文)的评语:该论文主要使用一片at89C51单片机、8*8点阵及一些外围电子器件实现单片机点阵式LED显示屏功能。电路图设计使用了目前流行的集仿真和设计一体化的PROTEUS软件进行设计,电路设计正确、简单;单片机程序则使用了主流的51单片机开发软件KEIL下使用高级语言C语言进行设计,程序设计思路清晰,编写的代码也简洁。论文的结构完整,条理清晰,重点也突出。从这个论文可以看出,该同学具有扎实的理论知识,较好的自学能力,较强的动手能力。成绩: 优秀 指导教师签字: 李福武 2010年11 月1日答辩小组对优秀毕业设计(论文)的评语:成绩: 答辩小组组长签字: 年 月 日综合评定成绩(等级): 系领导签字(盖章): 年 月 日单片机点阵式LED显示屏设计作者: 【摘要】 本设计是以单片机AT89C51为核心的控制器,介绍了LED点阵电子显示屏的动态显示的设计过程。LED点阵电子显示屏是由许多相互独立的发光二极管排列而成的,由于发光管的离扇性,决定了其发光控制和驱动只能以数字方式进行。单片机控制程序采用单片机C语言进行编辑,通过编程控制各显示点对应的LED阳极和阴极端的电平,就可以有效的控制LED点阵电子屏各显示点的亮灭,从而显示程序设计中要求显示的字体,这里显示屏使用的是4个8*8的LED点阵模块组成一个16*16点阵LED电子显示屏,显示方式是滚动显示。本设计还介绍了基于51单片机的LED显示屏控制系统的显示原理,对16*16点阵汉字进行显示,系统仿真利用PROTEUS仿真软件和KEIL软件的联调对LED点阵显示屏系统进行调试,并对LED点阵显示的硬件设计思路、硬件电路各部分的功能及原理,相应软件的程序进行了介绍。【关键字】 AT89C51单片机 LED点阵显示屏 滚动显示 PROTEUS仿真引言在现今社会中,广告的普及和生活水平的提高,LED点阵大屏的需求日益强烈!LED显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。它具有发光效率高、使用寿命长、状态灵活、色彩丰富、而且其体积小、耗电量低、环保等优点而被广泛应用于公共场所的大屏显示上,在车站、机场、商场、银行、学校等公共场合的信息发布和广告宣传都使用到了LED显示屏显示。由8*8点阵组成的LED显示屏系统在工业、商业及生活中占有重要的地位,多年来,研究这个领域的工程技术人员曾为简化电路、提高可靠性、降低成本,做出了很大的努力,也做出了不少成绩。如今,这些物美价廉、体积小、可靠性高的由8*8点阵组成的LED字符显示器的出现,为这一领域的技术打开新的天地,也为社会的进步做出了很大贡献。LED字符显示器发展到今天已经是从模拟化、分立化迈进了数字化、集成化LED系列。在单片机程序设计中,采用“模块化”思路,设计中大量硬件用软件代替,从而简化了系统结构。本设计就是以AT89C51单片机为核心,采用串行传输、动态(滚动)扫描技术,制作一个显示拟定汉字的LED显示屏。一、系统硬件设计1、设计框图及介绍LED点阵总体框图如图所示,点阵大体上可分成微机本身的硬件、显示驱动电路、控制信号电路三部分。控制电路部分包括一个51CPU和一些外围电路。在整个电路当中此控制电路部分相当于一个上位机,它负责控制整个电路以及相应的程序的运行、与PC机的串行通讯、以及给屏体电路部分发送命令。点阵显示屏体、以及它的行和列的各个驱动电路。此显示电路采用扫描方式进行显示时,每行每列都有一个行驱动器,由行译码器给出的行选通信号,从第一行开始,按顺序依次对各行进行扫描。因此,根据各列锁存的数据,确定相应的列驱动器是否将该列与电源的另一端接通。接通的列,就在该行该列点燃相应的LED;未接通的列所对应的LED熄灭。硬件的设计思想就是由单片机AT89C51进行处理,并将行列信号分别通过显示驱动输入点阵,控制点阵的显示。AT89C51 单片机LED 16*16 点阵屏74LS595行驱动器RX-874LS154列驱动器图一 设计原理框图2、硬件电路在Proteus中连接硬件电路图如图二: 图二 仿真电路图上图电路图主要由一块AT89C51单片机芯片、8*8共阳点阵屏4个、74LS595位移寄存器2个、74LS154译码器1个、7406二极管16个、RX8电阻2个、RESPACK-8排阻两个组成。LED点阵是由4片点阵屏的组合来实现16*16的显示,从而使汉字的显示编程可能。这里分别用了两片74LS595来控制行的显示,用一块74LS154来控制列的显示。本设计使用的是AT89C51单片机芯片的P2口输出,把写好的C程序编程烧进单片机内通过P2口输出。AT89C51单片机主要起主导作用,相当于CPU的作用。74LS154译码器当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。从74LS154译码器通过接16个电阻连接LED显示屏,有稳压的作用,74LS154的A、B、C、D端口与单片机的P2.0、P2.1、P2.2、P2.3口连接,E1与单片机P3.7端口接触,E2接地,117端口接二极管116端口。74LS595位移寄存器传送一行共二个字节(16位),把数据锁存出现在IC1和IC2的并行输出口上显示,N1到N16端口与RX8的N1到N16端口连接。LED显示屏主要显示制定汉字“单片机”,使用滚动式的显示方式。RX8芯片第一脚是接在正电源上,是为了实现上拉,增加驱动电流的的作用。因为单片机内部是开漏输出,高电平驱动能力太差,所以,通过外部上拉电阻来提高驱动能力,R1到R16端口与LED的R1到R16端口连接,RESPACK-8芯片也是实现上拉作用,以实现输出高电平,C1到C16端口接二极管,电源是接+5V,还接到LED的C1到C16各个端口,起稳压作用。2.1、点阵式LED系统设计所需的硬件 AT89C51单片机、74LS595位移寄存器2个、74LS154译码器1个、7406二极管16个、RX8电阻2个、RESPACK-8排阻两个、8*8共阳点阵屏4个。LED点阵是由4片点阵屏的组合来实现16*16的显示,从而使汉字的显示编程可能。这里分别用了两片74LS595来控制行的显示,用一块74LS154来控制列的显示。2.2、AT89C51单片机的介绍AT89C51是一种带4kb闪烁可编程可擦除只读存储器的电压、高性能CMOS型8位微处理器,俗称单片机,该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。它是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.3 、LED驱动模块LED驱动模块是LED的显示屏设计的关键部分,驱动电路设计的好坏直接关系到LED显示屏的亮度、稳定度等重要指标。本设计中的LED的驱动是采用了74LS154和74LS595加RX-8来实现的。、74LS595芯片的介绍74LS595的主要优点是具有数据存储寄存器,在位移的过程中,输出端的数据可以保持不变。595是串入并出带有锁存功能移位寄存器,它使用的方法很简单,在正常使用SCLR为高电平,G为低电平。从SER每输入一位数据,串行输595是串入并出带带有锁存功能移位寄存器,它的使用方法很简单,如下面的真值表,在正常使用时SCLR为高电平, G为低电平。从SER每输入一位数据,串行输入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。入时钟SCK上升沿有效一次,直到八位数据输入完毕,输出时钟上升沿有效一次,此时,输入的数据就被送到了输出端。、74LS154芯片的介绍54/74154 为 4 线16 线译码器,当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。 如果将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74LS154还可作1线-16线数据分配器。、RESPACK-8芯片的介绍一般是接在51单片机的P0口,因为P0口内部没有上拉电阻,不能输出高电平,所以要接上拉电阻。排阻就是好多电阻连载一起,他们有一个公共端,1端为公共端接VCC或地。、RX8芯片的介绍8路的电阻网络不可能是阻流分压,只有上拉或下拉,第一脚是接的正电源或是负电源,如是正,就是上拉,增加驱动电流的,下拉是负,就是下拉,大多是抗干扰用的一般8路阻排是用做上拉(或下拉)电阻,上拉比较多因为单片机内部大多是开漏输出,高电平驱动能力太差,所以,通过外部上拉电阻来提高驱动能力。2.4、LED点阵的介绍如下图三是一种8*8的LED点阵单色行共阳模块的内部结构图,其单点工作电压U为18 V,正向电流I为8-10 mA。当某一行线为高电平而某一列线为低时,其行列交叉的点就被点亮;而当其某一列线为高时,其行列交叉的点为暗;当某一行线为低电平时,无论列线如何,对应这一行的点全部为暗。 图三 行共阳8*8点阵显示器内部结构图用四个8*8点阵显示可构成16*16点阵显示器,其连接方法如下图四所示。图中,将(A)和(B)的8列、(C)和(D)的8列分别对应相连,同时将(A)和(C)的8行、(B)和(D)的8行分别对应相连。即可形成一个16行(每一行有16个LED)、16列(每一列也有16个LED)的16*16点阵显示器,可将这256个点称为一页,这样,显示字符时,只要对一页中对应的亮灭进行控制即可。图四 16*16点阵显示器连接图LED驱动显示采用动态(间隔时间)扫描方法,静态扫描方式是点对点点亮LED。以16*16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1个字发光管亮灭的数据并锁存,然后选通第1个字使其燃亮一定的时间,然后熄灭;再送出第2个字的数据并锁存,然后选通第2个字使其燃亮相同的时间,然后熄灭;.第5个字之后,又重新燃亮第1个字,反复轮回。当这样轮回的速度足够快,由于人眼的视觉暂留现象,就能看到显示屏上稳定且流畅的图形。该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。对于串行传输方式来说,列数据准备时列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度二、系统软件设计1、汉字显示的实现在显示屏幕比较小的情况下,为了能显示更多的内容,普遍采用的方法是移动显示或间隔时间段显示,间隔时间显示广泛应用于条型显示屏,它的特点是可以显示的内容比屏幕大、显示效果良好,编程简单等。原理是,在单片机AT89C51数据存储区里开辟64个字节的显示缓冲区(分为两个显存),一个用以保存当前要显示的内容,另一个用以数据处理,那么怎么实现加入一列数据呢?就是通过74HC595芯片对显示缓冲区进行列选,实现汉字间隔显示的效果,一行有16位数据要处理,所以我们要设一个16次循环如此循环16次后,便处理完了一行的数据,而每个字又有16行,所以我们再16次循环里面再设一个16次的外循环,如此循环16次后,整屏的数据都处理完了,此时。CPU又对另一个显存作数据处理,处理完后再交换显示,这样便实现动态移动的效果了。2、程序设计及流程图、程序流程图开始调用显示子程序打开中断配置中断串口初始化系统初始化开始设置5s的延时时间向74LS595引脚写入字节上升沿移位设置1ms定时关闭译码器结束 主程序流程图 5s钟时间是否到NY 子程序流程图、程序代码/用75LS595与74LS154在16*16点阵屏上显示信息#include#include#define uchar unsigned char#define uint unsigned intsbit Serial_Data_Pin=P00; /75LS595串行数据输入sbit Shift_CLK_Pin =P37; /75LS595位移脉冲sbit RCK_Pin =P01; /75LS595输出锁存器控制sbit Switch_74LS154 =P36; /74LS154译码器开关uchar data Bit_Stream_832; /发送给75LS595的位流,每片接收8位uchar code Word_Set_OF_161632= /待显示文字的点阵 0x00,0x00,0x00,0x00,0x3f,0xd8,0x3f,0xd8,0xb6,0xd8,0xf6,0xd8,0x76,0xd8,0x3f,0xfe,0x3f,0xfe,0x76,0x98,0xf6,0x98,0xb6,0x98,0x36,0x98,0x3f,0x98,0x00,0x00,0x00,0x00, /单 0x00,0x00,0x00,0x06,0x00,0x1c,0x7f,0xf8,0x7f,0xe0,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0xfe,0x60,0xfe,0x7e,0x06,0x7e,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00, /片 0x10,0x60,0x11,0xc0,0xff,0xfe,0xff,0xfe,0x1d,0x80,0x1c,0xc4,0x00,0x0e,0x7f,0xfc,0x7f,0xf0,0x60,0x00,0x60,0x00,0x7f,0xfc,0x7f,0xfe,0x00,0x06,0x00,0x0e,0x00,0x00, /机;void Delay(uint t) /延时 uchar i; while(t-) for(i=0;i180;i+);void Serial_Input_Pin(uchar Abyte) /向74LS595的串行输入引脚写入一个字节 uchar i; for(i=0;i8;i+) Abyte=1;Serial_Data_Pin=CY; Shift_CLK_Pin=1; /上升沿移位 _nop_(); _nop_(); Shift_CLK_Pin=0; /定时器0中断,在主程序中的延时期间以1s的间隔动态显示每列数据/所显示的数据由2片75LS595并行输出void T0_Led_Display_Contrrol() interrupt 1 uchar i; TH0=-1000/256; /1ms定时 TH0=-1000%256; i=(P2+1)&0x0f; /当前列号加1,屏蔽高4位i=015 Serial_Input_Pin(Bit_Stream_8i2+1); Switch_Input_Pin(Bit_Stream_8i2); Switch_74LS154=1; /关闭译码器 RCK_Pin =1; /上升沿将数据送达输出所锁存器 RCK_Pin =0; /打开译码器 P2=i; /列号译码(416)void main() /主程序 uchar i,k; TMOD=0x01; /定时器T0工作方式1 TH0=-1000/2556; /1ms定时 TH0=-1000%256; IE= 0x82; /允许定时器T0中断 P2=0xff; /行号端口初值 while(1) for(k=0;k8;k+) /显示十二项内容 for(i=0;i32;i+) /将当前待显示内容放入Bit_Stream_8 Bit_Stream_8i=Word_Set_OF_1616ki; TR0=1; Delay(1000); /在此期间由定时器中断显示信息 TR0=0; P2=0xff; 3、PROTEUS仿真Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。本设计利用Keil Vision3, 在新建Keil项目时选择AT89C51单片机作为CPU,将源程序导入,在“Options For Target”对话窗口中,选中“Output”选项中的“Create HEX File”,编译链接后就可以生成.HEX文件。在Proteus ISIS中,选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。对单片机设置完毕后就可以开始仿真了。仿真过程中如有硬件问题可在Proteus ISIS中直接修改,如有软件问题可在Keil Vision3中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。利用Proteus实现了对点阵式LED汉字间隔时间显示屏的仿真,说明程序和电路图都没有问题。4、仿真结果 结果分析:LED显示屏能间隔时间显示“单片机”几个汉字,实现了程序功能。结论本设计主要是基于C语言编程,通用性强,移植方便,在实际中取得了比较好的效果,仿真汉字显示清晰稳定。通过对LED点阵模块进行扫描控制,最终实现显示人们预先想好的内容,LED显示屏是有四块8*8的LED点阵构成的16*16点阵显示屏,在字模转换中能实现数字,英文,汉字及图形的显示,通过两片74HC595芯片的级联对16*16点阵显示屏列的控制,通过单片机的P0口和P2口连接16个7406三极管对16*16点阵显示屏行的控制,实现汉字的间隔时间显示效果。利用AT89C51单片机控制技术控制LED点阵的显示,再结合单片机的程序作线路布置,即硬件设计。通过系统分析,确定该系统具有哪些功能,有哪些模块,各个模块之间是怎么联系的,以及怎么组合的,确定所须的元器件,然后通过电路图进行连接,集合程序调试,调试整个的系统模块的功能,最终能在LED点阵显示屏上显示“单片机”几个汉字。通过本次是设计,让我对单片机的理论有了更深的了解,通过阅读了大量的相关资料,对LED显示屏的内部结构有了比较清楚的了解,并且更进一步增加了对单片机知识的理解和运用能力。对Proteus和keil的使用有了很深的体会,并熟悉它的使用过程。在现今的电子时代,越来越多的领域都使用带了电子产品,不管是商场,生活广告,学校等都会用到电子场品,它涉及的领域之广,用途之多是我们所不能想象的。做好本设计虽说耗费了我不少的心血,但是在设计的过程中让我不仅仅学会了制作16*16的LED显示的设计方案,对于很多的电子设计知识都有了很大的复习,翻了很多的相关书籍,对于电子的了解又有了很高的认识,也学到了在课堂上学不到的知识。要是条件允许,能做个实物出来,或许让我学到的知识会更加的多,一个电子产品需要动手做个样品出来,才算是真正的算是完整的一个设计,但是由于条件的限制,只能做个设计的方案出来。我想只要认真的去做了,相信实物也一样的会做得成功。很感谢李福武老师在课堂上给我们对单片机结构和用途的讲解,让我对单片机有了很多的认识,也很感谢朋友和同学们的支持与帮助。2.5参考文献1.宁爱民 兰如波 单片机应用技术 北京理工大学出版社,2009.82.张永枫.单片机应用实训教程 清华大学出版社,2008.123.彭伟.单片机基于8051+Proteus仿真 电子工业出版社,2009.64.张毅刚.MCS-51单片机设计 哈尔滨工业电子出版社,19965.阳进.基于单片机的LED显示屏的汉字显示J.中国科技信息,2005.126.郑刚.LED大屏幕显示系统的设计 北方工业大学出版社,1997.37.杨恢先 黄辉先.单片机原理及应用 人民邮电出版社,2006 108.谭浩强 C语言程序设计教程(网络),9.8051系列单片机C语言程序设计完全手册12
展开阅读全文