点阵LED汉字显示系统的毕业设计.docx
- 文档编号:2895542
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:33
- 大小:549.93KB
点阵LED汉字显示系统的毕业设计.docx
《点阵LED汉字显示系统的毕业设计.docx》由会员分享,可在线阅读,更多相关《点阵LED汉字显示系统的毕业设计.docx(33页珍藏版)》请在冰点文库上搜索。
点阵LED汉字显示系统的毕业设计
点阵LED汉字显示系统的毕业设计
AbstractⅡ
第1章绪论
1.1课题背景
1.1.1选题背景
目前,点阵显示屏已广泛用于银行、酒店、超市、汽车站牌和高速公路等场所的广告宣传和交通提示,正逐步应用于公交汽车内和街道两旁的报栏上。
如公交车内的点阵屏将由太阳能电池板供电,利用单片机和PLD实现显示屏字幕的静态、动态控制和定时显示控制,以实现节约电能的目的[1]。
LED点阵显示屏具有亮度高、故障低、能耗少、使用寿命长、显示内容多样、显示方式丰富等优点,可广泛用于车站、码头、体育场馆等公共场合。
我以此为背景,开发了个16*16的LED点阵显示屏。
1.1.2研究现状及发展趋势
LED显示屏的发展可分为以下几个阶段:
第一阶段为1990年到1995年,主要是单色和16级双色图文屏。
用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。
第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。
视频控制技术、图像处理技术、光纤通信技术等的应用将LED显示屏提升到了一个新的台阶。
LED显示屏控制专用大规模集成电路芯片也在此时由国内企业开发出来并得以应用。
第三阶段从1999年开始,红、纯绿、纯蓝LED管大量涌入中国,同时国内企业进行了深入的研发工作,使用红、绿、蓝三原色LED生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。
蓝色及纯绿色LED产品自出现以来,成本逐年快速降低,已具备成熟的商业化条件。
全彩色LED显示屏将是LED显示屏的重要发展方向。
LED产品性能的提高,使全彩色显示屏的亮度、色彩、白平衡均达到比较理想的效果,完全可以满足户外全天候的环境条件要求,同时,由于全彩色显示屏价格性能比的优势,预计在未来几年的发展中,全彩色LED显示屏在户外广告媒体中会越来越多地代替传统的灯箱、霓红灯、磁翻板等产品,体育场馆的显示方面全彩色LED屏更会成为主流产品[2]。
1.2 LED显示屏概述
1.2.1LED发光二极管
LED发光二极管是一种固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。
但这两种半导体连接起来的时候,它们之间就形成一个P-N结。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
50年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于1960年。
LED是英文lightemittingdiode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以LED的抗震性能好。
1.3主要设计内容及技术指标
1.3.1主要设计内容
1、用单片机AT89C51及LED点阵显示器为核心器件,制作一个点阵式汉字电子显示屏。
2、完成电路原理图、印制电路板设计、元器件采购、装配及调试工作。
3、完成该课题的程序设计、提交程序设计框图及程序设计清单。
4、完成硬件与软件的综合调试,能实现预定的功能和主要技术指标。
1.3.2主要技术指标
(1)点阵式显示器能依次显示4个汉字。
(2)通过编程能够随时对汉字进行修改、调整。
第2章硬件电路设计
2.1电路的工作原理
2.1.1硬件电路的设计原理
图2.1硬件电路设计框图
根据设计要求与设计思路,该硬件电路设计框图如图2.1所示:
硬件电路结构由7个部分组成:
电源电路、时钟电路、复位电路、AT89C51单片机、点阵显示器阳极驱动电路、阴极驱动电路和16×16点阵显示器电路。
在单片机电路中,P0口作为I/O口,输出行数据和控制信号。
P1.0到P1.3口作为I/O口输出列控制信号。
选择16片三极管8080作为16×16点阵LED显示器的行驱动,16片三极管8550作为它的列驱动。
图2.2单片机控制的16×16LED显示屏硬件原理图
2.1.216×16点阵LED显示器汉字显示的工作原理
16×16点阵LED显示器有两种接线方式,即共阴极接法和共阳极接法。
共阳极接法原理图如图2-3所示,图中只画出了4×4点阵的二极管。
每一行发光二极管的阳极接在一起,有一个引出端r,每一列发光二极管的阴极接在一起,有一个引出端c。
当给发光二极管阳极引出端加上一高电平,阴极引出端加上一低电平时,左上角的二极管点亮。
因此,对行和列的电平进行扫描控制,可以达到显示不同汉字的目的[3]。
图2.316×16点阵LED原理图
2.1.3控制电路的工作原理
在单片机P0口会输出一组数据来通过三极管8050控制16行,P1.0至P1.3通过由两片74LS138构成的4-16线译码器输出列数据,并经由三极管8550控制16列,每一列由两个字节组成,数据分两次送入,然后扫描一列,最终达到显示汉字的目的。
用控制电路来控制其电路的开始和结束。
2.1.4单片机电路的工作原理
该电路采用AT89C51单片机最小化应用设计,P0口作为I/O口,每输入一组高电平时在单片机P0口就会输出一组行数据和控制信号。
每输入一组低电平时在单片机的P1.0至P1.3口就输出列控制信号,通过高低电平的转换达到汉字显示的目的。
时钟电路采用了两个30皮法的电容和一个12MHz晶振。
从而使显示更精确、更好。
2.2LED点阵显示系统的硬件设计
2.2.1显示驱动部分
LED点阵选用2*4模块,每4块排列成一个16*16的点阵,用于显示一个汉字。
点阵每一列的所有LED共阳极,每一列的所有LED共阴极。
系统由单片机控制。
行线用4个三极管8050驱动,将单片机P0口输出的行选通信号作为三极管8050的输入,可以得到16行的行值信号,如图2.4所示。
而列驱动部分则用两个74LS138译码,将列选通信号作为两个译码器地址输入,可以得到16列的列值信号,如图2.5所示。
图2.4行驱动电路
图2.5列驱动电路
2.2.2LED点阵显示方式
LED点阵显示方式由动态显示和静态显示之分。
静态显示只需在定时中断处理程序中从显示缓冲区调入相应的一行显示数据,然后选中该行即可实现该行的显示,如此循环,便可显示整个内容。
我设计的这个电路的显示则采用逐行扫描方式,即动态显示的方式。
工作时,由单片机从缓冲区取出第一行需要显示的8字节点阵数据,再由列点阵数据输入端P0.0口按位依次串行输入至列移位寄存器,其数据输入的顺序与显示内容的顺序相反。
经延时一段时间后再进行下一行点阵数据的显示。
需要注意的是,每次只能选通一行数据,即要通过不断的逐行扫描来实现汉字或字符的显示。
采用这种方式的优点是耗电少,成本低,寿命长,但是也存在显示亮度及内容显示稳定的问题。
根据视觉滞留原理,根据视觉滞留原理,每屏的完整的显示时间应控制在20ms之内,即50Hz,人眼看上去才不会觉得闪烁。
由于要扫描16行的点阵,所以每行的时间绝不能超过20ms÷16=1.25ms,同时也不是每行的扫描时间越短越好,因为LED的亮度同电流的大小和维持时间的长短有关[4]。
LED点阵块的单点静态电流一般在10mA左右,由于占空比是1/16,所以单点的动态电流最大可以达到160mA。
在维持时间恒定的情况下,电流越大(不超过额定电流),点阵亮度也越亮,而在电流恒定的情况下,需要一段维持时间来保持亮度。
试验表明当输入LED的电流为15mA时,维持时间至少需要1ms,否则LED呈微亮状态。
2.3LED点阵外围电路
2.3.1电源电路
电路主要分为:
变压、整流、滤波、稳压四个部分。
电流进入电路,通过一个220V变9V的电源变压器把220V的交流电压变为9V的交流电压,然后通过整流器把9V交流,功率为15W左右。
变压器次级线圈输出的9V交流电压经过全桥QD2进行全波整流,C19滤波,LM7805稳压后,输出稳定的+5V直流工作电压,如图2.6所示。
图2.6电源电路
2.3.2复位电路
89C51的复位是由外部的复位电路来实现的。
AT89C51的复位引脚RST通过一个施密特触发器与复位电路相连,施密特触发器用来控制噪音,当在80C51单片机的RST引脚入高电平并保持2个机器周期时,单片机就执行复位操作(若引脚持续保持高电平,单片机就处于循环复位状态)施密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
上电复位要求接通电源后,单片机自动实现复位操作。
我采用的是按钮复位—按键手动复位。
按键手动复位由电平方式和脉冲方式两种,我采用的是电平复位。
电平复位是通过RET端经电阻与电源VCC接通而实现的,如图2.7电平复位所示。
时钟频率取12MHZ,R1取1K,C1取10μF。
图2.7电平复位电路
2.3.3时钟电路
89C51单片机的时钟信号通常有两种方式产生:
一是内部时钟方式,二是外部时钟方式。
采用内部时钟方式:
89C51单片机各功能的运行都是以时钟控制信号为基准、有条不紊的工作。
因此,时钟频率直接影响单片机的速度,始终电路的质量也直接影响单片机系统的稳定性。
89C51内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2[5]。
这两个引脚跨接石英晶体振荡器(简称晶振)和微调电容,就构成一个稳定的自激振荡器,如图3时钟电路所示,是89C51内部时钟方式的振荡器电路。
电路中的电容C3、C2典型值通常选择30pF,对外接电容虽然没有严格要求,但电容的大小会影响振荡器频率的高低、振荡器稳定性和起振的快速性。
晶振的频率越高,则系统的时钟频率也就越高,单片机的运行速度也越快,所以我选用的晶振是12MHZ晶振。
晶振为12MHZ时的机器周期的计算:
一个机器周期=12个振荡周期,时钟频率f=1/T,
一个机器周期=1/T*12,若晶振=12MHZ,一个机器周期=1/12M*12=1μS
外部时钟方式时把外部已有的时钟信号引入到单片机内,此方式常用与多片80C51单片机同时工作,以便各单片机的同步。
图2.8时钟电路
2.416*16LED点阵显示屏硬件电路图
由以上分析可得出我所设计的点阵显示屏硬件电路图,此硬件电路图以89C51单片机为核心,辅以外围电路连接到16*16LED点阵显示屏上,如图2.9所示。
图2.916*16LED点阵显示屏硬件电路图
第3章软件电路设计
3.1软件系统
程序可以实现与计算机的通信,可非常方便地任意修改所要显示的汉字;并使显示屏可固定、平移地显示汉字。
程序中将数据存储器分为三个区:
显示缓冲区,数据存储区和接收缓冲区。
单片机通过内部程序传来的数据(包括显示内容,显示方式和显示状态)暂时放在接收缓冲区,处理后放入数据存储区保存,然后再根据显示方式从数据存储区中读出数据放入显示缓冲区用于显示。
显示方式的实现取决于数据放入显示缓冲区的顺序,左移使从数据存储区取出一位数放入显示缓冲区,上移使每次取出一行数据放到缓冲区,时间显示时先把实时时钟的数据放到显示缓冲区,显示时并不识别显示缓冲区的数据,只是依次从显示缓冲区提取数据向显示屏发送并送入相应的锁存消隐和行值信号,完成扫描。
3.2程序流程图
3.2.1主程序流程图
图3.1主程序流程图
3.2.2显示程序流程图
图3.2显示程序流程图
3.3汉字动态编码的具体实现
3.3.1汉字识别
汉字在PC机内的存储和处理是用机内码来实现的。
每个汉字的机内码是唯一的,由2个字节组成,分区码和位码,为了和西文的ASCII码有区别,汉字机内码的区码和位码的取值都大于0A0H。
我们要处理的源程序文件都是文本文件,存储的都是西文字符、控制符的ASCII码和中文字符的机内码,当扫描到文件中大于0A0H的字节内容时,即可判断该字节是汉字机内码的1个字节,而且肯定是成对出现,第1个字节是区别,第2个字节是位码,都大于0A0H,否则出错。
在C和汇编程序中表示字符的方式有所不同,但最终字符在文件中的存储格式是一样的。
3.3.2建立编码字典
编码字典是在扫描的同时逐步建立起来的,每扫描到一个汉字(包括全角符号),即与字典中已有的字符进行比较,如没有重复,是新的字符就顺序存入字典,否则继续扫描,直至文件结属。
由于每个字符都是从尾部添加的,它们的序号也是依次递增的,根据序号就可以进行动态编码了。
由于显示的汉字一般都得在256个以上,即使进行动态编码,也需要用2字节编码来实现。
以MCS51系列单片机和16×16点阵汉字做一优化编码示例:
8051的地址指针DPTR是16位指针,由高、低2字节指针DPH、DPL组合而成,如果将存储器按0FFH(256)字节分布,修改DPH即可直接寻址到任一页,修改DPL可寻址该页的任一字节。
一个16×16点阵汉字的字模是32字节大小,每页存储器正好能容纳8个汉字字模。
可以优化设计动态编码的高字节指向字模的页地址(DPH),低字节指向字模在该页的首地址(DPL)。
考虑地址空间的有效分配,将字库的地址放在0A000H以后(程序或数据存储器均可),动态编码的高字节要加上地址有效分配,将字库的地址放在0A000H以后(程序或数据存储器均可),动态编码的高字节要加上地址的页偏移量(大于等于0A0H);考虑汉字与西文字符的区别,动态编码的低字节也需要加上一个大于或等于0A0H的偏移量。
设某汉字在编码字典中的序号为Num,则该汉字的动态编码为:
动态编码高字节=页偏移量+Num/8
动态编码低字节=偏移量+(Num%8)×32
偏移量一般可设为0A0H。
当单片机显示某个汉字时,只需将其动态编码的高字节送DPH,低字节减0A0H后送DPL,即可得到对应字模的地址指针。
3.3.3提取字模、建立动态字库
汉字机内码与点阵字库的详细关系可参考有关资料,它们存在如下联系:
字模首地址=((机内码高字节-1)×94+(机内码低字节-1))×N
注:
N为一个汉字点阵字模的字节数。
按照编码字典内容,根据字模首地址,依次取出汉字字模,顺序写入一个二进制文件,即建成动态字库(其它方法略),用烧录器写入EPROM,就可以使用了。
3.3.4编码改写
机内码是PC机识别处理汉字用的,单片机只能处理我们建立起来的动态编码,还得把程序中汉字的仅机码根据编码字典改成对应的动态编码才行。
由于在编写源程序的文本编辑器中看到的是经过系统处理过的字节,看不到汉字的机内码,也无法对其进行改写。
根据"汉字识别"一节所述,不经过文本编辑器,直接将动态编码(十六进制数)定改磁盘文件对应位置即可,但是处理过后的汉字在文本编辑器里会显示出乱码。
3.3.5提取汉字的软件设计及实现
由于二进制方式访问文件可以直接查看文件中指定的字节,而且二进制方式也是唯一支持用户到文件的任何位置读写任意长度数据的方法,因而以二进制方式打开汉字字库文件是最合适的。
而且程序也支持西文字符的现实,显示时也让其占用一个汉字的空间,流程图如图3.2所示。
图3.3汉字点阵的提取
3.4LED点阵显示屏显示字符原理
下图所示为单基色8*8的点阵屏内部结构图:
从结构上可知,它的每一列共用一根列线,每一行共用一根行线。
当相应的行接高电平是,对应的发光二极管被点亮。
通常情况下,一块8*8像素的LED点阵显示屏是不能用来显示一个汉字的,因此,按照其原理结构进行扩展为16*16,就足以显示一个完整的汉字。
在显示过程中,多采用扫描方式,利用人的视觉暂停效应,只要刷新速率不小于25帧/秒,就不会有闪烁的感觉。
3.5程序清单
本次设计是利用AT89C51芯片,通过单片机C语言编制程序,实现了单字左移的功能,一共显示两个汉字,并将两个汉字的字库存在单片机的程序内,使这两汉字在LED点阵显示屏上得以显示并左移,其程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
#definespeed=8//移动的速度//
uintcodetext[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//*-------------------------------*//
0x04,0x00,0x04,0x01,0x04,0x02,0x04,0x04,0x04,0x08,0x04,0x30,0x05,0xC0,0xFE,0x00,
0x05,0x80,0x04,0x60,0x04,0x10,0x04,0x0C,0x04,0x06,0x04,0x03,0x04,0x02,0x00,0x00,
//*---------------大----------------*//
0x00,0x40,0x01,0x90,0x7F,0x10,0x55,0x10,0x95,0x50,0x01,0x54,0x55,0x52,0x29,0x51,
0x55,0x5E,0x01,0x70,0x55,0x50,0x55,0x10,0x7F,0x50,0x01,0x90,0x01,0x10,0x00,0x00,
//*---------------学----------------*//
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
//*-------------------------------*//
};
ucharcodea[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,
0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0};//*定义列扫描信号*//
voiddelay(uintz)//*延时*//
{uinti,j;
for(i=z;i>0;i--)
for(j=50;j>0;j--);
}
voidmain()
{uintj,m,n;uchari,s;
while
(1)
{for(j=0;j<64;j++)//总共4*16个字型//
{for(s=0;s {for(i=0;i<16;i++)//扫描的次数// {if(i {P1=a[i];//送入列扫描信号// P0=text[2*j-2*i-2];//i m=2*j-2*i-2; m++; P2=text[m]; } else{P1=a[i]; P0=text[30+2*j-2*i];//i>=j时的行扫描输出// n=30+2*j-2*i; n++; P2=text[n]; } delay (2); P0=0x00;//清除屏幕防止拖尾// P2=0x00; } } } } } 第四章结果调试与讨论 4.1故障分析 因为软件设计部分我在实习期间就已经完成,所以焊接及其调试是本次设计我最关心和重视的一部分。 这部分的制作花费了我大部分的时间。 本章就重点来介绍硬件制作的过程及其遇到的问题与觉得有待改进的地方。 在焊接过程中出现了很多的问题,如: 虚焊、假焊、搭焊、拉尖、沙眼、气泡和引脚的焊锡碰到了导线引起的短路等等。 这些都需要细心的检测和调试以后才能使用,所以在调试之前要对板子上所有的元器件进行检查,导线与焊点的检测: 制作完板子,焊上插槽后要检查导线是否导通以及是否有虚焊,这可以借助5V电源和万用表来测量,元器件的引脚上已经焊好了焊锡,但是如果你用万用表测量他的引脚和旁边的导线,有时你会发现本来该导通的,却不导通,这有可能是虚焊,这是我们新手经常出现的问题。 以下是我各部分碰到的问题的分析: 一、电路的焊接在买好元器件后,为了安全起见,我把每一个不管大小元器件都认真的检测了一下,在确保好的的情况下,安装到通用板上,由于电路板上焊接的空间比较小,致使我在焊接的过程中出了点小问题,通过万用表的检测,发现中间有部分接头短路了,还存在虚焊和搭焊等问题,经过复查、检测,电路基本正常。 二、LED点阵数码管显示错误分析在16×16LED显示屏的制作中,我遇到了很大的问题。 首先,常州电子器材市场上根本就没有16×16的显示片,只能有4片8×8的显示片拼成16×16的。 其次,买到的8×8的和书本上介绍的有很大的区别! 共阴极端和和共阳极端不是在同一端,必须用万用表一个脚一个脚的检测。 这样就给连线和焊接带来很大的麻烦。 导致在软硬件调试过程中,出现有好多点不亮的现象,最后检测出是焊接出现了假焊和搭焊的现象。 三、延时程序分析在设计电路中,结果是通过LED显示屏显示实现的。 程序设计屏幕的显示顺序是从左到右,先下后上,一列一列的扫描过去。 在开始调试时,由于延时程序时间设定的太短,导致每一个字一闪即逝,并有闪烁现象,根本看不清楚。 通过不断的调整、调试,最后确定。 4.2电路的显示误差讨论 综合分析可以知道在测试电路的过程中可能带来的误差因素有: 1、LED显示片本身就存在有的点不亮的现象。 2、焊接中使用的线质量太差,可能存在中间断开的现象,导致点无法被电亮。 3、由于每个点上都有多个线头且每个点相隔很近,存在拉尖,搭焊现象。 可以通过以下的方法去改进此电路: 1、使用万用表检和5V电源测每个点,查看有无搭焊、虚焊、短路现象。 2、接上5V电源,用一根导线一列一列的点亮,查出每一列中不亮的点。 3、把存在问题的导线换掉,重新焊接上新线。 结论 一个半月的毕业设计就要结束了,意味着大学生活也将结束了。 在这次的毕业设计中,我对单片机汇编语言和硬件的设计有了很深的学习和理解,原理图的设计,元器件的焊接等基本方法得到进一步的掌握,也对LED显示屏有了进一步的认识。 通过本次设计,让我更进一步的了解到LED显示的工作原理以及它的要求和性能指标,也让我认识到在此次设计电路中所存在的问题,而通过不断的努力去解决这些问题。 在解决设计问题的同时自己也在其中有所收获,我们这次设计的这个LED显示屏,以时钟电路和复位电路为控制电路,以单片机AT89C51为控制核心,两个驱动电路分别控制行信号和列信号,驱动LED显示屏的汉字显示。 在设计此电路的时候,由于时间比较短的原因,我付出了很大的努力,最终完成了此电路,但距离一个完全实用的,能完全符合市场需求的显示系统还有一定的差距。 因此,在以后的研制过程中,还需要做大量的工作,比如: (1) 在系统抗干扰方面,都还必须在工作现场根据时间情况进行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 点阵 LED 汉字 显示 系统 毕业设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)