基于51单片机32×32点阵显示屏.doc
- 文档编号:30810503
- 上传时间:2024-01-30
- 格式:DOC
- 页数:28
- 大小:2.10MB
基于51单片机32×32点阵显示屏.doc
《基于51单片机32×32点阵显示屏.doc》由会员分享,可在线阅读,更多相关《基于51单片机32×32点阵显示屏.doc(28页珍藏版)》请在冰豆网上搜索。
单片机原理与接口技术
课程设计
课程名称:
单片机原理与接口技术
课设项目:
基于51单片机32×32点阵显示屏
课设地点:
电机馆跨越机房
专业班级:
自动化1004班
学号:
2010001159
姓名:
指导教师:
李丽宏
2013年7月4日
摘要
LED显示屏是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
图文显示屏可与计算机同步显示汉字、英文文本和图形;视频显示屏采用微型计算机进行控制,图文、图像并茂,以实时、同步、清晰的信息传播方式播放各种信息,还可显示二维、三维动画、录像、电视、VCD节目以及现场实况。
LED显示屏显示画面色彩鲜艳,立体感强,静如油画,动如电影,广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
LED点阵是由发光二极管排列组成的显示器件,具有耗电少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远、规格品、可靠耐用、应用灵活、安全、响应时间短、绿色环保、控制灵活等特点。
目前LED显示屏作为新一代的信息传播媒体,已经成为城市信息现代化建设的标志。
本文详细介绍了32X32LED点阵电子显示屏的设计。
使用AT89S52单片机作为主控制器,采用串行EEPROM24C02储存点阵字型码数据。
字型码依次通过串入并出移位寄存器74HC595输出,采用4-16译码器74HC154产生行扫描选通信号,分16行进行动态扫描。
行采用三极管驱动,其中行驱动电路采用三极管并联,以增大行驱动电流。
通过改变行扫描的顺序,可实现显示内容上下滚屏;通过依次将字型码移位后再输出的方式可实现显示内容左右滚屏。
关键词:
LED点阵显示屏动态扫描滚屏
目录
1. 引言 1
1.1设计意义 1
1.2系统功能要求 1
2. 方案设计 1
2.1总体设计 2
2.2显示原理及控制方式分析 2
2.2.1LED点阵模块结构 2
2.2.2LED动态显示原理 2
2.2.2LED常见的控制方式 3
3. 硬件设计 4
3.1单片机系统及其管脚 4
3.2点阵驱动部分 6
3.332×32LED点阵显示制作 7
3.3.116×16LED点阵的内部结构及工作原理 7
3.3.2用8×8LED点阵构成16×16LED点阵 8
3.3.3用16×16LED点阵构成32×32LED点阵 9
3.4主控单片机的接口说明 10
4. 软件设计 11
4.1系统主程序及其流程图 11
4.2Proteus仿真 12
5. 系统调试 13
6. 设计总结 16
7. 参考文献 16
8. 附录 16
总体电路图 16
源程序 17
1引言
1.1.设计意义
LED电子显示屏(LightEmittingDiodePanel)是由几百--几十万个半导体发光二极管构成的像素点,按矩阵均匀排列组成。
利用不同的半导体材料可以制造不同色彩的LED像素点。
目前应用最广的是红色、绿色、黄色。
而蓝色和纯绿色LED的开发已经达到了实用阶段。
LED显示屏是一种通过控制半导体发光二极管的亮度的方式,来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。
LED显示屏分为图文显示屏和条幅显示屏,均由LED矩阵块组成。
图文显示屏可与计算机同步显示汉字、英文文本和图形;而条幅显示屏则适用于小容量的字符信息显示。
LED显示屏因为其像素单元是主动发光的,具有亮度高,视角广、工作电压低、功耗小、寿命长、耐冲击和性能稳定等优点。
因而被广泛应用于车站、码头、机场、商场、医院、宾馆、银行、证券市场、建筑市场、拍卖行、工业企业管理和其它公共场所。
LED显示屏的发展前景极为广阔,目前正朝着更高亮度、更高气候耐受性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
1.2.系统功能要求
设计一个能显示32X32点阵图文LED显示屏,要求能显示文字,显示文字应稳定、清晰,以卷帘形式向上滚动显示。
2方案设计
2.1总体设计
列驱动器
单
片
机
电源
32X32LED显示点阵
行驱动器
2.2显示原理及控制方式分析
2.2.1LED点阵模块结构
八十年代以来出现了组合型LED点阵显示器模块,以发光二极管为像素,它用高亮度发光二极管芯阵列组合后,环氧树脂和塑模封装而成。
这种一体化封装的点阵LED模块,具有高亮度、引脚少、视角大、寿命长、耐湿、耐冷热、耐腐蚀等特点。
LED点阵规模常见的有4×4、4×8、5×7、5×8、8×8、16×16等等。
根据像素颜色的数目可分为单色、双基色、三基色等。
像素颜色不同,所显示的文字、图象等内容的颜色也不同。
单色点阵只能显示固定色彩如红、绿、黄等单色,双基色和三基色点阵显示内容的颜色由像素内不同颜色发光二极管点亮组合方式决定,如红绿都亮时可显示黄色,如果按照脉冲方式控制二极管的点亮时间,则可实现256或更高级灰度显示,即可实现真彩色显示。
图1示出最常见的8×8单色LED点阵显示器的内部电路结构和外型规格,其它型号点阵的结构与引脚可试验获得。
图18×8单色LED模块内部电路
LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号.如5x7点阵显示器用于显示西文字母.5×8点阵显示器用于显示中西文,8x8点阵可以用于显示简单的中文文字,也可用于简单图形显示。
用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过PC机或单片机控制驱动。
2.2.2LED动态显示原理
LED点阵显示系统中各模块的显示方式:
有静态和动态显示两种。
静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲电压驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的列数据信号,反复循环以上操作,就可显示各种图形或文字信息。
点阵式LED汉字广告屏绝大部分是采用动态扫描显示方式,这种显示方式巧妙地利用了人眼的视觉暂留特性。
将连续的几帧画面高速的循环显示,只要帧速率高于24帧/秒,人眼看起来就是一个完整的,相对静止的画面。
最典型的例子就是电影放映机。
在电子领域中,因为这种动态扫描显示方式极大的缩减了发光单元的信号线数量,因此在LED显示技术中被广泛使用。
以8×8点阵模块为例,说明一下其使用方法及控制过程。
图2.1中,红色水平线Y0、Y1……Y7叫做行线,接内部发光二极管的阳极,每一行8个LED的阳极都接在本行的行线上。
相邻两行线间绝缘。
同样,蓝色竖直线X0、X1……X7叫做列线,接内部每列8个LED的阴极,相邻两列线间绝缘。
在这种形式的LED点阵模块中,若在某行线上施加高电平(用“1”表示),在某列线上施加低电平(用“0”表示)。
则行线和列线的交叉点处的LED就会有电流流过而发光。
比如,Y7为1,X0为0,则右下角的LED点亮。
再如Y0为1,X0到X7均为0,则最上面一行8个LED全点亮。
现描述一下用动态扫描显示的方式,显示字符“B”的过程。
其过程如图2
图2用动态扫描显示字符“B”的过程
2.2.3LED常见的控制方式
目前常见的是并行传输方式,通过8位锁存器将8位总线上的列数据进行锁存显示,各8位锁存器的片选信号由译码器提供。
此种方式的优点是传输速度快,对微控制器(MCU)的通信速度要求较低。
但是这种方案最大的缺点是不便于随意扩展显示单元的数目。
每增加一个16×16点阵的全角汉字显示单元,就需要在之前的电路上多增加两根地址线,这就要求在PCB布线的时候要留有充足的地址线冗余量。
再一个缺点是,每个单元的PCB随着安放位置的不同,布线结构也不相同,不利于厂家批量生产。
并行传输需要的芯片较多,因此市场上已经出现用FPGA,CPLD等高密度可编程逻辑器件(PLD)来取代传统锁存器IC的方案。
成本有所下降,但可扩展性仍旧较差。
因此,并行传输方式适用于显示单元数目确定的条屏。
随着广告屏显示内容的多媒体化,对控制器传输速度,运算能力的要求越来越高。
因此控制器的种类也在不断发展以适应要求,从最初的8051单片机,到PIC单片机,又到FPGA,直到现在的ARM处理器。
不同功能档次的广告屏对应着不同的处理器。
一.以传统8051单片机为控制器的LED显示屏。
因受到单片机运算速度及通信速率的限制,LED动态显示的刷新率不可能做得太高。
对显示效果和移动算法的处理也比较吃力,在实际显示效果上有比较明显的闪烁感。
除此之外,传统8051单片机的内部资源贫乏,仅128字节的数据存储器,几K字节的程序存储器,无E2PROM,SPI。
这就需要对单片机扩展外设,无疑增加了硬件成本。
因此,8051控制的条屏只能用于显示内容及其简单,不需要经常更改显示内容的场合。
二.以PIC单片机为控制器的LED显示屏。
因PIC单片机是RISC架构的工业专用单片机,处理指令的速度有所增加,抗干扰能力优秀,型号种类繁多。
作为条屏的控制器,可以明显的改善显示效果,同时PIC单片机内部的资源较丰富,可节省外部电路设计难度,同时降低了硬件成本。
因此,以PIC单片机为控制器的条屏目前仍是单色条屏市场的主流。
三.以FPGA(复杂可编程逻辑门阵列)为控制器的LED显示屏。
FPGA以高速、并行著称。
是近年来新兴的可编程逻辑器件。
用他作为LED显示屏的控制器,能够高速的处理色阶PWM信号、高速的完成动态扫描逻辑、高速的完成字符移动算法。
因此被运用于双基色、三基色的显示系统。
但是其成本较高,开发难度较大。
四.以ARM(32位RISC架构高性能微处理器)为控制器的LED显示屏。
ARM有着极高的指令效率,极高的时钟频率。
因此其运算能力非常强大,内部资源也十分丰富,极大的简化了硬件设计的难度,缩短了开发周期。
在条屏的运用中,能用ARM来实现花样繁多的显示方式,以及高色阶,多像素的全彩屏驱动。
ARM与FPGA的组合更是功能强大,除了海量存储技术,无线更新技术外,还能实时地显示视频信号。
因此,以ARM为控制器的显示屏常为视频全彩屏。
3硬件设计
3.1单片机系统及其管脚
u单片机AT89S52简介
AT89S52是一种带4KB可编程可擦除只读存储器的低电压、高性能CMOS型8位微处理器,俗称单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S52是一种高效微控制器,AT89S52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
因此,本设计将AT89S52作为单片机选择对象。
AT89S52的特点:
1、价格便宜,即性价比高;
2、集成度高,体积小,可靠性好;
3、低功耗、低电压;
4、易扩展。
图3单片机结构图
u单片机系统及其管脚
常用的时钟电路设计有两种方式,一种是内部时钟方式,一种是外部时钟方式。
本实验采用内部时钟方式,将XTAL1与XTAL2之间跨接一个石英晶振和微调电容,从而构成一个稳定的自激震荡器。
电容值取30pF左右,其大小将影响震荡频率的高低、振荡器的稳定性和起振的快速性。
为减少线间的寄生电容,晶振和电容应尽能安装得与单片机靠近,保证晶振稳定可靠的工作。
另一部分是复位部分。
上电自动复位电路是最简单的复位电路,只需要一个1K左右电阻、一个22pF左右的电容及12MHZ的晶振。
有时还需要按键手动复位,此时只要在电容上并联一个按键即可。
还有一部分是按钮切换字幕部分。
与串行口P0.1相连,初始时P0.1为1,按钮按下后P0.1为0。
其图形如下图
图4单片机接线图
3.2点阵驱动部分
点阵显示用是动的态扫描来实现的。
在采用扫描方式显示时,由于每行要带动32个二极管,每行电流较大。
若每个二极管安5mA计算,32个二极管就得80mA电流,超出单片机管脚的承受范围,因此每行都加有一个驱动器,本设计的行驱动用的是32个pnp型三极管。
三极管的发射极接5V电压,集电极接点阵的行线,而其基级本应接单片机,但该接线方式占用为了32个单片机管脚,为了节省单片机管脚,用了P0.0作为片选信号控制两片74159译码器,轮流导通两片74159译码器,这样就只需要4个管脚了。
74159的管脚图及其说明如图5。
点阵驱动仿真部分总体接线图如图6(未画完整)
对4个输入信号进行译码,得到16个输出状态。
G1,G2为数据允许输出端,G1,G2低电平有效。
G1高电平有效。
A,B,C,D为译码信号输出端,Y0~Y16为译码输出端,低电平有效。
图574159管脚图
图6点阵驱动仿真图
3.332×32LED点阵显示制作
3.3.116×16LED点阵的内部结构及工作原理
以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。
即国家标准汉字库中的每一个字均由256点阵来表示。
我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。
事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素范围内的任何图形。
这里我们以“高”字说明,如图7所示。
图716*16LED汉字显示
用8位的AT89C51单片机控制,由于单片机的总线为8位,一个字需要拆分为2个部分。
一般把它拆分为上部和下部,上部由8×16点阵组成,下部也由8×16点阵组成。
在本例中单片机首先显示的是左上角的第一列的上半部分,即第0列的p00—p07口。
方向为p00到p07,显示汉字“高”时,p02点亮,由上往下排列,为p0.0灭,p0.1灭,p0.2灭,p0.3灭,p0.4灭,p0.5亮,p0.6灭,p0.7灭。
即二进制00000100,转换为16进制为04h。
上半部第一列完成后,继续扫描下半部的第一列,为了接线的方
便,我们仍设计成由上往下扫描,即从p27向p20方向扫
描,从上图可以看到,这一列全部为不亮,即为00000000,16进制则为00h。
然后单片机转向上半部第二列,仍为p01点亮,为00000100,即16进制04h.这一列完成后继续进行下半部分的扫描,p20点亮,为二进制00000010,即16进制02h.依照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“高”的扫描代码为:
02h,00h,01h,04h,0FFh,0FEh,00h,00h,1Fh,0F0h,10h,10h,10h,10h,1Fh,0F0h,00h,04h,7Fh,0FEh,40h,04h,4Fh,0E4h,48h,24h,48h,24h,4Fh,0E4h,40h,0Ch。
由这个原理可以看出,无论显示何种字体或图像,都可以用这个方法来分析出它的扫描代码从而显示在屏幕上。
不过现在有很多现成的汉字字模生成软件,就不必自己去画表格算代码了。
3.3.2用8×8LED点阵构成16×16LED点阵
Proteus中只有5×7和8×8等LED点阵,并没有16×16LED点阵,而在实际应用中,要良好地显示一个汉字,则至少需要16×16点阵。
下面我们就首先介绍使用8×8点阵构建16×16点阵的方法,并构建一块16×16LED点阵,用于本例的显示任务。
首先,从Proteus7.1的元件库中找到“MATRIX-8X8-RED”元器件,并将四块该元器件放入Proteus文档区编辑窗口中。
此时需要注意,如果该元器件保持初始的位置(没有转动方向),我们要首先将其左转90°,使其水平放置,那么此时它的左面8个引脚是其行线,右边8个引脚是其列线(当然,如果你是将右转,则右边8个引脚是行线)。
然后我们将四个元器件对应的行线和列线分别进行连接,使每一条行线引脚接一行16个LED,列线也相同。
并注意要将行线和列线引出一定长度的引脚,以便下面我们使用。
连接好的16×16点阵如图8所示。
成如上图的16×16点阵只是第一步,这样分开的数块并不能达到好的显示效果,下面我们要将其进一步组合。
组合实际上很简单,首先选中如上图中右侧的两块8×8点阵,然后拖动并使其与左侧的两块相并拢,如图9所示。
图8点阵模块组合
图9
可以看到原来的连线已经自动隐藏了,至于线上的交点,我们不要去动。
然后,我们再来最后一步,选中下侧的两块点阵,并拖动使其与上侧的两块并拢,最后的效果如图10所示。
看到,原来杂乱的连线现在已经几乎全部隐藏了,一块16×16的LED点阵做成了。
需要注意,做成的LED点阵的行线为左侧的16个引脚,下侧的16个引脚为其列线,而且其行线为高电平有效,列线为低电平有效。
然后,我们将其保存,以便以后使用。
图10
3.3.3用16×16LED点阵构成32×32LED点阵
最后,把原来16×16的LED点阵块复制可以做成32×32的LED点阵。
如图11
图1132×32的LED点阵
3.4主控单片机的接口说明
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复制用口,作为输入口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写入“1可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期激活内部上拉电阻。
在Flash编程时,PO口接收指令节,而在程序校检时,输出指令字节,校检时,要求外接上拉电阻。
P1口:
P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
Flash编程和程序校检期间,P1接收低8位地址。
P2口:
P2口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问外部数据存储器或16位地址的外部数据存储(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。
Flash编程和校检时,P2亦接收高位地址和其他控制信号。
P3口:
P3口是一个带内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作输入端口,作输入端时,被外部拉低的P3口将用上拉电阻,输出电流I。
P3口还接收一些用于Flash闪速存储器编程和程序校检的控制信号。
RST:
复位输入,当震荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于所存地址的低8位字节。
即使不访问外部存储器,ALE乃以时钟振动频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
4软件设计
本软件要求实现文字要以一定速度上升滚动显示,当按下按钮,LED显示屏的文字切换到另一个字幕,再按一下,切换回原来的字幕。
显示屏软件模块:
初始化程序、主程序、多字滚动、显示程序、扫描程序。
显示程序的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示。
软件设计中,显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序。
显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作。
系统应用程序完成系统环境设置(初始化)、按键扫描、显示效果处理等工作,由主程序来实现。
4.1系统主程序及其流程图
本设计的系统软件能使系统LED显示屏各点亮度均匀、充足,可显示文字,显示文字应稳定、清晰无串扰。
文字显示有静止、移入移出等显示方式。
系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约几秒;接着向上滚动显示汉字。
由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果。
单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容。
如果想改变些事内容,先用字模产生字代码,将用这段代码覆盖原来的代码,即可显示你想要的内容。
图12是系统主程序流程图
4.2Proteus仿真
Proteus最重要的特点是它能够把用户编写的应用软件作用在微处理器上并和连接在该处理器的外围模拟器件及数字器件协同仿真,就像在真正的单片机应用系统的硬件平台上执行目标代码。
支持的微控制器有51系列、Microchip的PIC系列、Atmel的AV系列、和ARM7/LPC2000。
Proteus软件使用彻底改变了传统单片机学习和开发方式,初学者可以在没有实验硬件条件下进行仿真实验,开发者也不必经历“原理图设计、PCB线路板制作、元件焊接、然后进行软件编程、通过仿真器对系统硬件和软件调试”过程,可以直接用Proteus进行电路设计和仿真运行程序,运行成功后再制作产品,缩短开发周期,节约开发成本。
汉字点阵显示电路设计制作时,显示部分由8×8单色LED模块拼接而成,元件引脚较多,硬件制作繁琐,应用Proteus进行仿真设计,极大缩短开发周期。
下图用Proteus软件设计32×32点阵显示屏。
图1332×32点阵显示屏结构图
5系统调试
从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写。
刚刚开始,编写不会一次性通过,经过仔细分析修改最后编译成功。
但是,在实际写如S51中,LED显示屏出现各种各样的乱码,通过再次认真仔细分析多次修改程序后,程序能够正常运行。
其运行结果如图:
图14初始化运行界面1
图15初始化运行界面2
图16点击按钮后运行画面1
图17点击按钮后运行画面2
6设计总结
本文设计的32x32的点阵LED文字显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示文字,显示的文字较稳定、清晰。
文字向上滚动显示。
本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点。
在此次设计中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 32 点阵 显示屏