基于51单片机的LED点阵显示系统.doc
《基于51单片机的LED点阵显示系统.doc》由会员分享,可在线阅读,更多相关《基于51单片机的LED点阵显示系统.doc(15页珍藏版)》请在冰豆网上搜索。
中南民族大学
毕业论文(设计)
学院:
电子信息工程学院
专业:
电子信息工程年级:
2004
题目:
基于51单片机的LED点阵显示系统
学生姓名:
皮本元 学号:
04071090
指导教师姓名:
危立辉职称:
副教授
2008年5月31日
12
中南民族大学本科毕业论文(设计)原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
年月日
目录
摘要:
1
Abstract 1
1引言 2
2系统方案 2
2.1系统框图 2
2.2方案比较 3
2.2.1显示方式的选择 3
2.2.2点阵信息的提取方式 4
4硬件设计 4
4.1显示控制电路 4
4.2显示驱动部分 5
4.3显示接口 7
5软件设计 7
5.1软件总体设计 7
5.2汉字点阵信息的获取 8
5.3汉字的固定显示以及左移和上移的实现 9
5.3.1固定显示方式 10
5.3.2左移显示方式 10
5.3.3上移显示方式 10
6工艺设计 11
6.1接口设计 11
6.2显示模块可扩展性的实现 11
7总结 12
致谢 12
参考文献 12
基于51单片机的LED点阵显示系统
摘要:
LED显示屏作为一种显示媒体,随着大规模集成电路和计算机技术的进步,得到了飞速发展。
LED显示屏具有亮度高、动态显示效果好、故障低、耗能少、使用寿命长、性价比高等优势,已广泛应用于各行各业。
本文介绍了一种以单片机AT89S52为核心的点阵LED显示系统的设计与制作过程,包括汉字显示的硬件电路、PCB设计、软件设计及调试等方面。
该系统通过RS-232与上位机通信,上位机可以发送指令给AT89S52单片机控制系统,该控制系统驱动显示电路,实现了LED显示屏多种显示方式和状态。
本文详细说明了利用AT89S52单片机最小系统实现汉字显示的原理及编程思路。
关键词:
单片机LED点阵PC机取字
DisplayChinesecharacters
byMS-51singlechiponLEDlattice
Abstract:
LEDdisplaywaswidelyusedinmanyindustriesduetoitsexcellentfeaturessuchasfullcolor,highefficiency,highbrightness,longlifetimeandlowpowerconsumption.Inthisarticle,weintroducetheprocessofdesigningaLEDdisplayingsystemcontrolledbyAT89S52,concludinghardwaredesign、PCBdesign、softwaredesignanddebugging.thissystemcommunicatewithPCthroughRS-232.ThePCcansendinstructionstothecontrolsystembasedonAT89S52,thenthissystemdrivethedisplayingcircuit,andcarriedavarietyofformsandstatesofdisplaying.Thistextindetailillustratestheworkingelementsofhowtodesignthedisplayingelectricalcircuitanduselarge-contentmemorytodisplayChinesecharacters.
Keywords:
SinglechipLEDlattice FetchwordsfromPersonalComputer
1引言
随着图形点阵LED显示模块在各行各业的逐步使用,使得人机界面变得越来越直观形象,尤其对于国内大多数需要有汉字和图形显示的用户来说,显示界面的友好与否,将直接影响到其产品的形象和市场竞争力。
该点阵LED显示屏[5],显示汉字和各种常见字符等信息,可广泛应用于各种场所。
具有结构简单、安装方便、字型美观、图案清晰,采用高性能单片机控制,性能稳定,可靠性高。
经过一条RS-232串口线与电脑连接更换信息,操作简单,使用方便。
LED显示屏的设计方案,目前有两种:
一种是以单片机为核心,单片机要完成所有的逻辑控制功能,采用这种方案设计的屏幕比较小;另一种是利用单片机控制可编程逻辑器件,单片机主要完成接收上位机数据、向大规模可编程逻辑器件发送数据等功能。
大规模可编程逻辑器件负责驱动电路的各种时序。
采用这种方案可以设计较大的显示屏,但这种方案的造价比较高。
LED显示屏是多种技术综合应用的产品,涉及光电子学,半导体器件,数字电子电路,大规模集成电路,单片机及微机等各个方面,既有硬件又有软件。
[1]
2系统方案
2.1系统框图
本系统主要分为串行通信模块,显示控制模块,存储模块,如图-1。
基本工作流程为:
[4]
①单片机以及显示模块初始化;
②上位机(PC机)发送数据(机内码);
③单片机接受数据送数据接受缓存区;
④通过机内码在字库中提取对应的点阵信息并送入显存中;
⑤单片机驱动LED点阵显示电路。
上
位
机
单片机
字库
显存
16x16LED
74HC595
74HC595
驱动电路
74
HC
595
74
HC
595
驱动电路
图-1系统框图
2.2方案比较
2.2.1显示方式的选择
(1)静态显示方式
该方案的特点是每一位数据寄存器对应一颗发光管,可以用较小的电流驱动发光管,这更有利于延长发光管的寿命,户外屏和高档的显示屏,例如全彩屏通常采用这种驱动方式。
但是这种显示方式成本高,硬件电路设计复杂,见图-2;
列数据
+5V
列数据
+5V
第一行
第二行
图-2静态显示方式
(2)动态显示方式
该方案的特点是每一时刻只有一行发光管被点亮,列电路可以复用,从而节约了元器件成本。
但是,点亮发光管的瞬态电流较大,通常是平均电流的数倍甚至十几倍。
对于规模不是太大的显示模块比较适用,见图-3。
列选通信号
列
数
据
图-3动态显示方式
综合比较两种方案和本系统设计的要求,我选择第二种方案。
2.2.2点阵信息的提取方式
(1)直接提取方式
该方案是直接由上位机(PC机)通过串口发送32字节的汉字点阵信息到数据显示缓冲区,然后送显。
该方案节省了单片机通过字库提取点阵信息的步骤,显示更直接,但缺点是给用户带来不便,见图-4。
PC
机
单
片
机
显
示电路
32字节
点阵信息
图-4直接提取方式
(2)间接提取方式
该方案可以直接在上位机(PC机)输入汉字,然后通过串口将对应的机内码(2字节)传输到单片机的数据接收缓冲区,然后由单片机进行处理,从存储有字库的外部flash中读取32字节点阵信息到显示缓冲区。
见图-5。
PC
机
单
片
机
显示电路
字库
2字节
机内码
图-5间接提取方式
比较两种方案,虽然方案二涉及到对大容量存储器的操作,但是它对于用户来说更加的方便、直观,因此,我选择该方案。
4硬件设计
4.1显示控制电路
控制部分以单片机AT89S52为核心,辅以外围电路,完成串行通信、外部存储器读取、行列选通信号输出等任务。
在PC机内部,汉字是以机内码的形式存储的,每个汉字占两个字节。
单片机AT89S52将PC机发送过来的数据放到WS6264中开辟的数据缓存区。
AT89S52的通过由数据缓存区中存储的汉字内码,并将其换算成汉字首地址,从AT29C040A(512K*8)的字库中提取相应的汉字(一组32字节的数据),对应于显示屏排列好存贮到片外RAM(WS6264)中,重复上述过程将所有的汉字都提取出并排列存储好,最后由AT89S52将RAM中的数据经P1.0~P1.4和P3.2输出给显示驱动电路。
汉字库的制备与普通程序存储器的烧录并无区别。
将汉字库文件以二进制形式打开,通过编程器烧录到AT29C020A中即可。
AT29C020A的18位地址和WS6264的13位地址信号分别由P0口(经锁存器74HC373输出作为地址线)、P2口、P3口(P3.4~P3.5)产生。
FLASH(AT29C020A)、RAM(6264)与单片机的接口如图-6所示[1]。
单片机89S52通过AD0~AD7地址数据复用引脚来选通地址并读写数据。
[7][8]
图-6单片机与外围电路接口
4.2显示驱动部分
LED点阵选用16×16模块,每2块排列成一个16×32的点阵,用于显示两个汉字。
点阵每一行的所有LED共阳极,每一列的所有LED共阴极。
行列驱动均由754LS595驱动,该芯片具有串行输入、并行输出两个独立的时钟信号。
输入数据在串行移位时钟SRCLK上升沿由串行输入端SER输入到芯片内部串行移位寄存器中,同时,SQH端串行输出;在锁存时钟信号RCLK上升沿到来时,芯片将内部串行移位寄存器8位数据并行输出。
正常工作时,应将复位端SRCLR与使能端RCLK分别接高电平、低电平。
单片机输出信号直接与串入并出移位寄存器74HC595的锁存器输出端连接。
列数据使用两片754LS595级联得到,可以得到16列的列数据信号。
列扫描信号同样使用四片754LS595级联构成32位的串进并出移位寄存器,可以得到列扫描信号,考虑到754LS595的驱动能力有限,列扫描信号通过UNL2803与LED列扫描信号相连,每列可以得到500mA的灌入电流,驱动电路原理图如图-7所示。
[3]
图-7显示驱动电路
4.3显示接口
图-8显示接口
5软件设计
5.1软件总体设计
程序可以实现与计算机的通信,可非常方便地任意修改所要显示的汉字;并使显示屏可固定、平移地显示汉字。
程序中将数据存储器分为三个区:
显示缓冲区,数据存储区,和接收缓冲区。
单片机通过串口接收PC机传来的数据暂时放在接收缓冲区,处理后放入数据存储区保存,然后再根据显示方式从数据存储区中读出数据放入显示缓冲区用于显示。
程序功能框图如图-9所示。
软件系统采用模块化结构,包括主程序、显示子程序和串口中断服务程序等。
主程序为顺序结构,完成中断、串口的初始化设置后,循环调用显示子程序,以及响应串行接收或发送中断;显示子程序从显示缓冲区取出字模.中断服务程序串口接收PC机发送的汉字机内码数据,实现与计算机实时通信。
程序各部分的功能由各个模块分别实现。
程序模块有:
串口初始化模块、数据输入模块、汉字首地址计算模块、取字模块、显示模块和移动模块。
[6][9]
初始化显示及串口
显示特定字符
串口接
收到数据
否
中断CPU更新接收缓存
取字模信息并更新显存
是
显示新数据并延时
启动
图-9软件流程图
5.2汉字点阵信息的获取
对UCDOS7.0,汉字点阵信息存于相应点阵字库中,对16×16点阵汉字,其点阵字库文件为⋯UCDOS\HZK16,每个汉字占32个字节,横向排列,这一字库收集了国标一、二级汉字及图形符号7445个,在文件中按区位码顺序排列。
通过PC机和单片机的串口通信将汉字的机内码传送到单片机的接受缓存中,再根据机内码与区位码的函数关系,求出汉字的区码和位码。
设汉字机内码的高低两字节的十六进制值分别为Gb_H和Gb_L,区位码的区码和位码分别为Qm和Wm,则求区码和位码的算式为:
Qm=Gb_H-0xA0
(1)
Wm=Gb_L-0xA0
(2)
(1)式和
(2)式中的Qm和Wm分别是区码和位码的十六进制值,在程序设计时要予以注意。
最后用下式求出每个汉字点阵在文件中的首地址Dz:
Dz=(Qmd-1)×94×32+(Wmd-1)×32 (3)
上式是汉字点阵在文件中的首地址的十进制表达式,Qmd和Wmd分别是区码和位码的十进制值。
字模的长度则是由显示所用的点阵决定的,以常用的16×16点阵字模为例,一个汉字字模要16×16/8=32个字节。
因此从字模的开始依次读取32个字节就可以得到该汉字16×16的字模(行字模)。
5.3汉字的固定显示以及左移和上移的实现
汉字的显示信息保存在显存中,该显存是由一个2K的RAM实现的,RAM具有读写速度快的优点,但是断电后存储信息丢失。
在本设计中显示屏为64X128点阵,一共可以显示32个汉字,每个汉字的点阵信息为32字节,因此最小需要32x32字节=1K的存储空间,2K的RAM完全够用。
我们以16x32点阵显示汉字A和汉字B为例,见图-10。
在显存中这两个汉字一共占据64字节的连续空间(纵向取模)。
下面我将分别介绍三种显示方式的显示原理。
A0A1A2A3A4A5
汉字A(32字节)
汉字B(32字节)
图-10汉字存储格式
列扫描信号
A字2字节数据
B字2字节数据
图-11点阵显示汉字模型
5.3.1固定显示方式
首先定义一个指向第一个显示的汉字的指针*p,在该例中指向图-10中的A0位置,在固定显示方式中该指针不变;再定义一个指向显示数据的指针*q,该指针首先被赋值为p,即指向第一个显示的汉字的首地址,即A0.在列扫描信号位于第一行时,q指针指向A0,当输出了汉字A的第一列数据后指针p向后移动2个字节,然后输出第二列数据,依次输出完64字节的数据后指针重新指向p,反复循环。
5.3.2左移显示方式
同样定义一个指向第一个显示的汉字的指针*p,在该例中指向图-10中的A0位置,再定义一个指向显示数据的指针*q,该指针首先被赋值为p,即指向第一个显示的汉字的首地址,即A0.在列扫描信号位于第一行时,q指针指向A0,当输出了汉字A的第一列数据后指针p向后移动2个字节,然后输出第二列数据,依次输出完64字节的数据后,指针p加2,指针q重新指向p,反复循环。
5.3.3上移显示方式
该显示方式中,实现的效果为2个汉字同时上移。
为实现该种显示方式,需要对列数据进行处理。
如果现在已经显示了汉字A和B,如果接着输出的汉字为C和D,则将汉字C和D的列数据分别向上移一位,这样便实现了数据的整体上移,见图-12。
A字2字节数据
B字2字节数据
列扫描信号
C
字
2
字
节
数
据
向 上 移 位
D
字
2
字
节
数
据
图-12汉字移动示意图
6工艺设计
6.1接口设计
本设计中涉及到的电路板有单片机最小系统板、外围器件、显示模块,为了美观接口均设计成机械式接口。
6.2显示模块可