基于51单片机的动态点阵LED汉字显示屏的设计.docx
- 文档编号:28593262
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:208.23KB
基于51单片机的动态点阵LED汉字显示屏的设计.docx
《基于51单片机的动态点阵LED汉字显示屏的设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的动态点阵LED汉字显示屏的设计.docx(29页珍藏版)》请在冰豆网上搜索。
基于51单片机的动态点阵LED汉字显示屏的设计
基于51单片机的动态点阵LED汉字显示屏的设计
摘 要
LED点阵显示屏是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕,可以显示汉字、数字或特殊符号,通常用来显示时间、速度、系统状态等。
LED点阵显示屏作为一种新兴的显示器件,现已广泛应用于广告、交通运输、教育系统、银行等工业企业管理和其它公共场所,产业面临良好的市场发展机遇及前景。
本设计研究了基于单片机AT89C51的8×8点阵LED动态显示屏的设计与运用Proteus软件的仿真实现。
具体介绍了设计的系统方案、LED图形显示原理及应用、LED汉字显示屏的硬件电路设计、汇编程序设计与调试、Proteus软件仿真,软件流程图等内容。
本设计主要以AT89C51为核心芯片,通过程序控制,采用动态扫描技术,用AT89C51的P0口控制行驱动器74LS245和P3口来直接驱动显示屏,在点阵LED显示屏上实现了汉字的动态显示。
在负载范围内,只需通过简单的级联就可以对显示屏进行扩展,来制作一款拥有多功能模块化的点阵LED的多功能显示屏,是一种成本低廉的图文显示方案。
关键词:
AT89C51单片机;LED点阵;动态扫描;Proteus仿真软件
DynamicdotmatrixLEDChinesecharactersdisplaydesignBasedon51Micro-controller
ABSTRACT
LEDdotmatrixdisplaytisPlanardisplayscreenwhichiscomposedoflight-emittingdiodedotmatrixmoduleorpixelunit.LEDdotmatrixdisplaycandisplayChinesecharacters,numbers,orspecialsymbols,usuallyareusedtodisplaytime,speed,andsystemstatus.LEDdotmatrixdisplayisanewdisplaydevices,whichiswidelyusedinadvertising,transport,educationsystem,banksandotherindustrialenterprisesandotherpublicplacesnow,andtheindustryisfacinggoodopportunitiesformarketdevelopmentandprospects.Thedesignstudiesthatthe8×8dotmatrixLEDdynamicdisplaydesignbasedonAT89C51Micro-controllerandusingProteussoftwaretosimulate.Specificallydesignedsystemsolutions,LEDgraphicdisplayprincipleandapplicationofLEDChinesecharactersdisplayhardwarecircuitdesign,assemblerprogramminganddebugging,Proteussoftwaresimulation,softwareflowchart.ThisdesignregardstheAT89C51asthecorechip,usesAT89C51theP0porttocontrollinedrivethe74LS245andP3portstodirectlydrivethedisplaybytheprogramcontrollinganddynamicscanningtechnology,ChinesecharactersistobeDynamicdisplayedonadotmatrixLEDdisplay.Intheloadrange,displaycanbeextendedjustbyasimplecascade,tocreateamultifunctionaldisplaywhichhasamultifunctionalmodularLEDdotmatrix,anditisalow-costgraphicdisplayprogram.
Keywords:
AT89C51Micro-controller;LEDdotmatrix;Dynamicscanning;Thesimulationsoftwareofproteus
目 录
1 绪论
1.1 课题的来源和意义
本设计是采用AT89C51单片机实现对LED显示屏动态显示汉字的控制,通过proteus来产生仿真结果,目的是实现在教学过程中可以让学生理论与实践相结合,更加深刻地理解理论知识,使其能够独立自主的研发,并进一步使学生对软件与硬件的结合有一个更直观地了解,加深学生对课堂知识的理解与应用。
随着电子技术发展迅猛,作为现代信息显示的重要媒体,LED具有低功耗、价格低等优点,在金融证券、体育、机场、交通、指挥调度、国防军事等许多领域中得到广泛应用[1]。
所以点阵式显示器件的研制和生产同样得到了迅速发展。
由于条件限制,因此本设计只是实际用品的一个缩小实例。
因此研究LED汉字动态显示屏的设计方法具有重要的理论和现实意义。
1.2 国内外发展状况
1990年以前LED显示屏的成长形成时期:
这一时期的LED显示屏在国外应用较广,国内很少,产品以红、绿双基色为主,控制方式为通讯控制,灰度等级为单点4级调灰,产品的成本比较高。
1990-1995年,这一阶段是LED显示屏迅速发展的时期:
LED显示屏在LED材料和控制技术方面也不断出现新的成果,电子计算机及微电子领域的技术发展,在显示屏控制技术领域出现了视频控制技术。
这一阶段,LED显示屏在平板显示领域的主流产品局面基本形成,LED显示屏产业成为新兴的高科技产业。
1995年以来,LED显示屏的发展进入一个总体稳步提高产业格局调整完善的时期:
1995年以来,LED显示屏产业内部竞争加剧,形成了许多中小企业,产品价格大幅回落,应用领域更为广阔,产品在质量、标准化等方面出现了一系列新的问题,有关部门对LED显示屏的发展予以重视并进行了适当的规范和引导,目前这方面的工作正在逐步深化。
目前我国LED显示屏广泛应用于机场航班动态信息显示以及道路交通信息显示上,尤其在广告媒体新产品应用上最多。
2 LED点阵显示器的原理
2.1 LED点阵显示器简介
点阵显示器有单色和双色两类,可显示红,黄,绿,橙等。
LED点阵有4×4、4×8、5×7、5×8、8×8、16×16、24×24、40×40等多种;根据图素的数目分为,单色、双原色、三原色等。
根据图素顏色的不同所显示的文字、图像等内容的顏色也不同,单原色点阵只能显示固定色彩如红、绿、黄等单色,双原色和三原色点阵显示内容的顏色由图素内不同顏色发光二极体点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极体的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。
由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于LED管芯大多为高亮度型,因此某行或某列的单体LED驱动电流可选用窄脉冲,但其平均电流应限制在20mA内,多数点阵显示器的单体LED的正向压降约在2V左右,但大亮点∮10的点阵显示器单体LED的正向压降约为6V[2]。
大荧幕显示系统一般是将由多个LED点阵组成的小模组以搭积木的方式组合而成的,每一个小模组都有自己的独立的控制系统,组合在一起后只要引入一个总控制器控制各模组的命令和资料即可,这种方法既简单而且具有易展、易维修的特点。
2.2 8×8点阵LED原理及应用
8×8的LED点阵是由64个发光二极管按矩阵形式排列而成,每一行上的发光管有一个公共的阳极(或阴极),每一列上的发光管有一个公共的阴极(或阳极),一般按动态扫描方式显示汉字或图形。
扫描分为点扫描、行扫描和列扫描三种方式。
当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;因此要实现一根柱形的亮法,如图2-1,2-2所示,对应的一列为一根竖柱,或者对应的一行为一根横柱,因此实现柱的亮的方法如下所述:
一根竖柱:
对应的列置1,而行则采用扫描的方法来实现。
一根横柱:
对应的行置0,而列则采用扫描的方法来实现。
图2-1 8×8点阵LED外观及引脚图
图2-2 8*8LED点阵硬件图
2.3 LED点阵的显示文字图形原理
汉字显示屏用于显示汉字、字符及图像信息,在公共汽车、银行、医院及户外广告等地方都有广泛的应用。
下面是简单的汉字显示屏的制作,由单片机控制汉字的显示内容。
为了降低成本,本文设计的是一个8×8点阵LED显示屏动态显示汉字。
在实际的使用中可以根据这个原理自行的扩展显示的汉字,下面是介绍汉字显示的原理。
LED驱动显示采用动态扫描方法,动态扫描方式是逐列轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。
以16×16点阵为例,把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起(共阴的接法),先送出对应第1列发光管亮灭的数据并锁存,然后选通第1列使其燃亮一定的时间,然后熄灭;再送出第2列的数据并锁存,然后选通第2列使其燃亮相同的时间,然后熄灭;……第16列之后,又重新燃亮第1列,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源[3]。
显示数据可通过单片机的P0,P3口接驱动电路传输到点阵行引脚。
LED点阵显示模块进行的方法有两种:
(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):
此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该列上哪个LED亮(相当于段码)。
能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。
(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):
此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码(行数据,行数据为将列数据的点阵旋转90度的数据)决定该行上哪些LED灯亮(相当于段码)。
能亮的行从上向下扫描完16行(相当于位码循环移位16次)即显示一帧完整的图像。
每一个字由16行16列的点阵形成显示,即每个字均由256个点阵来表示,我们可以把每一个点理解为一个像素。
一般我们使用的16×16的点阵宋体字库,即所谓的16×16,是每一个汉字在纵横各16点的区域内显示的。
汉字库从该位置起的32字节信息记录了该字的字模信息。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
我们以“习”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如图下的,如果用8位的AT89C51的单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。
一般我们把它分解成左部分和右部分,左部分由16×8(列×行)的点阵组成,右部分也由16×8(列×行)的点阵组成。
在本例中单片机首先显示的是左上角的第一行的部分,因为列接阴极,0是亮,1是灭,“习”字的上面两行的二进制码是11111111,11111111,11000000,00000011,转换成对应的16进制代码是0xFF,0xFF,0xC0,0x03,依此类推,就这样一行一行的扫描[4]。
如图2-3:
图2-3 显示原理图
由这个原理可以看到,无论显示何种字体或图像,都可以用这种方法来分析出它的扫描代码从而显示在屏幕上。
本设计应用的是第一种的扫描方法,即逐列扫描方式。
2.4 驱动方式
LED点阵的驱动方式可分为静态驱动和动态驱动两种。
静态驱动方式:
在静态驱动的有机发光显示器件上,一般各有机电致发光像素的阴极是连在一起引出的,各像素的阳极是分立引出的,这就是共阴的连接方式。
若要一个像素发光只要让恒流源的电压与阴极的电压之差大于像素发光值的前提下,像素将在恒流源的驱动下发光,若要一个像素不发光就将它的阳极接在一个负电压上,就可将它反向截止。
但是在图像变化比较多时可能出现交叉效应,为了避免我们必须采用交流的形式。
静态驱动电路一般用于段式显示屏的驱动上。
动态驱动方式:
在动态驱动的有机发光显示器件上人们把像素的两个电极做成了矩阵型结构,即水平一组显示像素的同一性质的电极是共用的,纵向一组显示像素的相同性质的另一电极是共用的。
如果像素可分为N行和M列,就可有N个行电极和M个列电极。
行和列分别对应发光像素的两个电极。
即阴极和阳极。
在实际电路驱动的过程中,要逐行点亮或者要逐列点亮像素,通常采用逐行扫描的方式,行扫描,列电极为数据电极。
实现方式是:
循环地给每行电极施加脉冲,同时所有列电极给出该行像素的驱动电流脉冲,从而实现一行所有像素的显示。
该行不再同一行或同一列的像素就加上反向电压使其不显示,以避免“交叉效应”,这种扫描是逐行顺序进行的,扫描所有行所需时间叫做帧周期[5]。
2.5 点阵的移动
以下以16×16点阵为例介绍点阵的移动。
要显示一个字符,该字符的点阵数据可以列向(纵向)16点组字,又可以行向(横向)16点组字。
无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。
2.5.1 向左移动原理
(1)列扫描方式左移动
方法1:
延长数组法。
将原来字符点阵数组的16个数据重复一遍延长,点阵数组的数据个数为32个。
每扫描一帧取8个数据显示,下一帧取数要在数组中后移一个数取数。
循环一遍扫16帧。
可以假想有两块16×16的点阵模块(共32帧)水平平行排列,用一个恰好能罩住16列点阵的中空方框去罩这个点阵,第1(第1帧)罩住最左边数起第一列开始的16列,就扫描显示这16列;第2次(第2帧)使方框右移一列,罩住做左边数起第2列开始的16列,就扫描显示这16列;……这样每扫描完一帧使方框右移一列,最后第16次(第16帧)时,罩住左边数起的第16列开始的16列,就扫描显示这16列。
如此完成16帧画面的扫描显示,也就完成了整个一次移动循环扫描、之后反复循环,即可呈现显示字符沿水平向左移动的图像[6],如图2-4所示:
图2-4 方框图法左右移动示意图
因为是列向组字(列扫描方式,点阵数据为行码,上边为低位下面为高位),希望显示移动的一个字符,第1次扫描从行码的点阵数组中取第1~16个数据,送行码输出口,对应于这8个数据,同时用列码输出口输出列码,分别控制第1~16列。
扫描完前16个数据之后,第2次扫描从点阵数组中取第3~18个数据(第18个数据与第1个数据同),送行码输出口,对应于这16个数据,同时用列码输出口输出列码,仍分别控制扫第1~16列。
第3次扫描从点阵数组中取第5~20个数据(第20个数据码与第2个数据码相同)扫描……如此实现字符向左移动。
以上完成一个图形移动的方法,也可以看成是移动16个不同的字形,首先扫描第一个字型,同样是16行,16次扫描,16次显示;完成一个字型的扫描以后,再扫描第二个字型;完成第二个字型的扫描之后,再扫描第三个字型……依此类推,即可产生该文字的左移的感觉。
也就是把第一个字型的编码中,第1列显示数据,变为第2列显示数据;第2列显示数据,变成第3列显示数据;第3列显示数据,变成第4列显示数据;第4列显示数据,变成第5列显示数据……以此类推。
当第一个字型扫描显示完成之后,就进行这样的动作调整,以产生第二个字型的编码。
同样的,当第二个字型扫描完成之后,就进行这样的调整动作,以产生第三个字型的编码。
这个调整动作时先将16个编码根据序填入存储器,例如第1行编码存入20H,第二行编码存入21H……要进行左移调整时,则先将20H地址的数据转移到36H地址,再将21H地址的数据转移到20H地址,将22H地址的数据转移到21H地址,将23H地址的数据转移到22H地址,将24H地址的数据转移到23H地址,将25H地址的数据转移到24H地址,将26H地址的数据转移到25H地址,将27H地址的数据转移到26H地址,将28H地址的数据转移到27H地址[7]。
方法2:
数组数据“循环左移法”。
注意,不是把二进制数据按位循环左移,而是把数组中的数据按其在数组中的位置循环左移,具体方法如下。
原先字符点阵数组中的16个数据不延长,但下一帧的16个数据,是把上一帧的16个数据的位置(先后顺序)“循环左移”一次,即原来的第2个移到第1个,原来第3个移到第2个……原来的第1个移到第16个。
实现数组数据循环左移的方法有:
第一遍,“数组数据循环左移子程序”,该子程序每执行一次可把数组中的数据循环左移一次,主程序中先调用一次该子程序,这时数组中的诗句循环左移一次,然后再从数组中取数据显示。
当数组中的数据个数较多时,片内的RAM将不够大,必须将数组定义在片外RAM中;第二,不用子程序,而是用变量判断控制实现数组数据的循环左移。
3 系统硬件设计
3.1 方案要求
本方案设计一个点阵8x8的LED汉字显示屏,具体要求满足以下条件:
1.要求采用89C51单片机作为微控制器;
2.通过一个点阵8x8的LED汉字显示屏来动态显示文字;
3.在目测条件下LED显示屏各点亮度均匀、充足、稳定、清晰无串扰。
4.本设计有行驱动电路,显示器电路,单片机最小系统,运用单片机的智
能化,系统将每个功能电路模块连接在一起,通过程序控制,来动态显示汉字。
3.2 系统设计原理
数据传输有并行方式和串行方式,当用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件
数目多。
因此当列数很多时,并列传输的方案是不行的。
而采用串行方式时,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分[8]。
解决串行传输中列数据准即在显示本行各列数据的同时,传送下一列数据。
因此整个设计分为三个模块:
AT89C51单片机的最小控制系统、行驱动模块、LED点阵显示模块。
如图3-1所示:
图3-1 系统原理框图
3.3 AT89C51引脚介绍
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的
1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出[9]。
3.4 系统硬件电路图
硬件电路大致上可以分成AT89C51单片机最小系统、行驱动电路和点阵8x8的LED电子显示屏三部分。
系统硬件电路设计电路图如图3-2所示:
图3-2 硬件电路图
3.5 晶振电路设计
AT89C51单片机芯片内部设有一个由反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡电路的的输入端和输出端,时钟可有内部或外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就会产生自激振荡。
系统采用的定时元件为石英晶体和电容组成的并联谐振回路。
晶振频率采用12MHZ,C1、C2的电容值取30pF,电容的大小起频率微调的作用。
晶振电路图如图3-3所示:
图3-3 晶振电路
3.6 复位电路设计
AT89C51单片机在启动运行时或者出现死机时需要复位,使CPU以及其他功能部件处于一个确定的初始状态,并从这个状态开始工作。
单片机有多种复位方式,常用的复位操作有上电复位和手动复位方式。
本设计采用最简单的上电复位方式,电路如图3-4所示。
上电复位是通过外部复位电路的电容充电来实现的,复位电路产生的复位信号(高电平有效)由RST引脚送入到内部的复位电路,对AT89C51单片机进行复位,复位信号要持续两个机器周期(24个时钟周期)以上,才能使AT89C51单片机可靠复位。
当上电时,C1相当于短路,有时碰到干扰时会造成错误复位,可在复位端加个去耦电容,可以取得很好的效果[10]。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 动态 点阵 LED 汉字 显示屏 设计