河南理工大学 电子信息 单片机课程设计点阵.docx
- 文档编号:5492817
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:15
- 大小:500.99KB
河南理工大学 电子信息 单片机课程设计点阵.docx
《河南理工大学 电子信息 单片机课程设计点阵.docx》由会员分享,可在线阅读,更多相关《河南理工大学 电子信息 单片机课程设计点阵.docx(15页珍藏版)》请在冰豆网上搜索。
河南理工大学电子信息单片机课程设计点阵
河南理工大学
《单片机应用与仿真训练》设计报告
题目:
LED点阵显示屏设计
姓名:
王鸿福杨少华
学号:
310808030220310808030226
专业班级:
08电信2班
指导老师:
胡治国刘巍
所在学院:
电气工程与自动化学院
2011年11月28日
摘要
单片机是为各类专用控制器而设计的通用或专用的微型计算机系统,高密度集成了普通计算机微处理系统,一定容量的RAM和ROM以及输入/输出接口,定时器等电路于一块芯片上构成的。
它的优点是体积小、重量轻、抗干扰能力强,对环境要求不高,价格低廉,可靠性高,灵活性好,开发较为容易。
在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形来显示汉字,汉字显示屏也广泛应用到汽车报站器,广告屏等。
LED显示屏分为图文显示屏和视频显示屏,均由LED矩阵块组成。
用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组成和变化,只要设计好合适的数据文件,就可以得到满意的显示效果,因而采用点阵式图文显示屏显示经常需要变化的信息是非常有效的。
本次课程设计实现LED点阵屏核心功能即汉字的多样化显示。
加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解。
将单片机软硬件结合起来对程序进行编辑,校验,锻炼实践能力和理论联系实际的能力。
单片机课程设计任务书
题目名称
LED点阵显示屏设计
设计时间
2011年11月9日—2010年11月28日
一、课程设计目的
1、使学生系统掌握单片机软硬件的设计、开发、调试过程;
2、使学生通过设计增强对单片机的实际应用能力;
3、进一步培养学生观察分析问题和动手解决问题的能力。
二、任务和要求
1、学生自由成组,每组人数不得多于两人,小组成员要明确设计分工;
2、每个组自由选择设计题目,但每个题目最多限两组同时选择;
3、严格遵守设计时间,服从指导教师安排;
4、独立完成设计,不得抄袭它人成果;
5、按时完成设计任务,认真撰写设计报告,要求每组提交一份符合要求的
设计报告,并在最后附加每个组员的个人总结。
3、题目要求
1)设计一个16×16点阵LED显示屏,用于显示1个汉字;
2)分时切换显示“河南理工学电气学院”;
目录
一、课程设计题目……………………………………………1
二、主要技术指标……………………………………………1
三、方案论证及选择…………………………………………1
四、系统组成方框图…………………………………………2
五、单元电路设计说明………………………………………2
5.1.1单片机AT89S52………………………………………………………2
5.1.2单片机最小系统………………………………………………………4
5.2.1译码器74HC138………………………………………………………5
5.3.1LED点阵显示模块……………………………………………………6
5.3.2字模提取………………………………………………………………9
六、单片机仿真电路…………………………………………10
6.1仿真电路图………………………………………………………………10
6.2仿真效果…………………………………………………………………10
七、调试过程及分析…………………………………………11
八、原件清单及参考文献……………………………………12
九、个人总结…………………………………………………12
十、源程序代码(见附录)
LED点阵显示屏设计
一、课程设计题目:
LED点阵显示屏设计
现在市场上各类基于LED的显示屏较多,但大部分产品为单一模式的LED显示屏,其在显示内容的更换及显示屏的重组等方面都存在不便之处。
但随着信息化社会的迅速发展,LED显示屏正在向显示内容丰富、信息更改方便等方面发展。
因此制作一款多功能的LED广告显示屏是非常有意义地。
LED驱动显示采用动态扫描方法,动态扫描方式是逐行轮流点亮,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。
以16×16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;…第16行之后,又重新燃亮第1行,反复轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
本课程设计即以AT89S52单片机为核心,动态扫描技术,制作一款模块化LED多功能显示屏。
2、主要技术指标
1)设计一个16×16点阵LED显示屏,用于显示1个汉字;
2)分时切换显示“河南理工学电气学院”;
三、方案论证及选择
【方案一】采用静态锁存方式,将每一个LED发光管的一端接至单片机的一个I/O口,另一端通过电阻接电源。
这种方法可以直接驱动LED,原理简单,驱动能力强,LED的亮度也可以通过限流电阻调节,非常方便,但此种方法太浪费单片机的I/O口,只适合于较小的系统。
【方案二】采用动态扫描方式,通过译码器驱动并联在一起的LED发光管的一端(共阴或共2端),LED发光管的另一脚接通用I/O口,控制其亮灭。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
比较以上两种方案,在本课程设计中采用方案二。
四、系统组成方框图
如图4-1所示为本系统的总体框图。
分为三个模块:
单片机、驱动电路和点阵。
单片机采用AT89S52。
在行线驱动中需要一个74HC138译码器,单片机的P0、P1、P2I/O口驱动即可。
点阵由四个8*8的小点阵组成。
图4-1点阵显示总体框图
5、单元电路设计说明
本课题的电路主要由单片机AT89S52、译码器74HC138和四块8*8点阵组成。
5.1.1、单片机AT89S52
VCC:
AT89S52电源正端输入,接+5V。
VSS:
电源地端。
XTAL1:
单芯片系统时钟的反相放大器输入端。
XTAL2:
系统时钟的反相放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:
AT89S52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:
"EA"为英文"ExternalAccess"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。
因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。
如果是使用8751内部程序空间时,此引脚要接成高电平。
此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:
ALE是英文"AddressLatchEnable"的缩写,表示地址锁存器启用信号。
AT89S52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为AT89S52是以多工的方式送出地址及数据。
平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。
此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:
此为"ProgramStoreEnable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。
AT89S52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):
端口0是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。
其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。
如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。
设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT2(P2.0~P2.7):
端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。
P2除了当做一般I/O端口使用外,若是在AT89S52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT1(P1.0~P1.7):
端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LSTTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。
如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT3(P3.0~P3.7):
端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:
RXD,串行通信输入。
P3.1:
TXD,串行通信输出。
P3.2:
INT0,外部中断0输入。
P3.3:
INT1,外部中断1输入。
P3.4:
T0,计时计数器0输入。
P3.5:
T1,计时计数器1输入。
P3.6:
WR:
外部数据存储器的写入信号。
P3.7:
RD,外部数据存储器的读取信号。
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:
来自反向振荡器的输出。
图5-1AT89S52
5.1.2、单片机最小系统
单片机的最小系统是能够让单片机工作的最小硬件电路。
除了单片机外,最小系统还包括复位电路和时钟电路。
复位电路,单片机的复位电路接在复位信号RST上,复位电路用于将单片机内部电路的状态恢复到初始值。
需要复位时按下按钮即可。
时钟电路,时钟电路为单片机工作提供基本时钟。
时钟电路中包含一个晶体振荡器,简称晶振,频率范围是2~24MHz。
晶体振荡频率越高,系统的时钟频率也越高,单片机的运行速度也就越快。
图5-2单片机最小系统
5.2.1译码器(用两块74HC138连成四线16线译码器)
74HC138基本功能
74LS138为3线-8线译码器,共有54/74S138和54/74LS138两种线路结构型式,其74LS138工作原理如下:
当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为
低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
74LS138的作用:
利用G1、/(G2A)和/(G2B)可级联扩展成24线译码器;若外接一个反
相器还可级联扩展成32线译码器。
若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器
用与非门组成的3线-8线译码器74LS138
图5-374HC138译码器内部电路
表5-174HC138引脚功能介绍
5.3、LED点阵显示模块
汉字显示方式是先根据所需要的汉字提取汉字点阵,将点阵文件存入ROM,形成新的汉字编码。
而在使用时则需要先根据新的汉字编码组成语言,再由MCU根据新编码提取相应的点阵进行汉字显示。
一块8×8点阵上共有64个发光二极管组成,每个二极管是放置在行线与列线的叉点上。
本设计为一个室内用16x16的点阵LED点阵广告牌,所以设计时使用四块8×8的LED点阵发光管的模块,来组成了一个16×16的LED点阵显示屏。
图5-4四块8×8的点阵组成16×16的点阵
LED点阵显示字幕、图形,其实并不是像我们眼里看的那样一个字一下就显示出来了,在点阵里要显示一个字。
如图5-5显示一个“大”字的话,就是要把那些黄色的点点亮,但是它不是一下就能全部点亮了那些点,而是一行一行依次把所需要的点点亮,当这样的扫描速度足够快的话(每秒24次以上),由于人眼的视觉惰性,这时就会在人眼里出现一个稳定的“大”字,这样就实现了LED显示字幕、图形功能。
我们把这种扫描方式叫动态扫描方法,这样扫描驱动电路就可以实现多行的同名列共用一套列驱动器。
以16×16点阵为例,把所有同一行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第1行使其亮一定的时间,然后熄灭;再送出第2行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;….第16行之后,又重新燃亮第1行,反复轮回。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
显示数据传输采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。
对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。
采用串行传输中列数据准备和列数据显示的时间矛盾,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一行的列数据。
为了达到重叠处理的目的,列数据的显示就需要有锁存功能。
对于列数据准备来说,它应能实现串入并出的移位功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串行移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
LED点阵显示模块进行的方法有两种:
(1)水平方向(X方向)扫描,即逐列扫描的方式(简称列扫描方式):
此时用一个P口输出列码决定哪一列能亮(相当于位码),用另一个P口输出行码(列数据),决定该行上那哪个LED亮(相当于段码)。
能亮的列从左到右扫描完16列(相当于位码循环移动16次)即显示出一个完整的图像。
(2)竖直方向(Y方向)扫描,即逐行扫描方式(简称行扫描方式):
此时用一个P口输出决定哪一行能亮(相当于位码),另一个P口输出列码决定该行上哪些LED灯亮(相当于段码)。
能亮的行从上向下扫描完16行即显示一帧完整的图像。
本设计应用的是第二种的扫描方法,即竖直方向(Y方向)扫描。
我们竖直方向(Y方向)扫描显示汉字的“河”为例来说明其扫描原理,每一个字由16行16列的点阵组成显示,如图下的,如果用8位的AT89S51的单片机来控制,由于单片机的总线为8位,一个字需要拆分成两个部分。
一般我们把它分解成上部分和下部分,左部分由8*16的点阵组成,右部分也由8*16的点阵组成,如图2.9所示。
图2.9“共”的led显示
按照这个方法,继续进行下面的扫描,一共扫描32个8位,可以得出汉字“共”的扫描代码为:
0x00,0x00,0x00,0x04,0x10,0x84,0x10,0x44,
0x10,0x24,0xFF,0x17,0x10,0x04,0x10,0x04,
0x10,0x04,0x10,0x04,0xFF,0x17,0x10,0x24,
0x10,0x44,0x10,0x84,0x00,0x04,0x00,0x00,/*"共",0*/
5.3.2字模提取
“河南理工大学电气学院”的取模图如图2.10
图2.10取模图样
相应生成的代码为
0x10,0x04,0x60,0x04,0x02,0x7E,0x8C,0x01,0x00,0x00,0x04,0x00,0xE4,0x0F,0x24,0x04,0x24,0x04,0xE4,0x0F,0x04,0x40,0x04,0x80,0xFC,0x7F,0x04,0x00,0x04,0x00,0x00,0x00,/*"河",0*/0x04,0x00,0xE4,0xFF,0x24,0x00,0x24,0x08,0x64,0x09,0xA4,0x09,0x24,0x09,0x3F,0x7F,0x24,0x09,0xA4,0x09,0x64,0x09,0x24,0x48,0x24,0x80,0xE4,0x7F,0x04,0x00,0x00,0x00,/*"南",1*/0x04,0x20,0x84,0x60,0x84,0x20,0xFC,0x1F,0x84,0x10,0x84,0x10,0x00,0x40,0xFE,0x44,0x92,0x44,0x92,0x44,0xFE,0x7F,0x92,0x44,0x92,0x44,0xFE,0x44,0x00,0x40,0x00,0x00,/*"理",2*/0x00,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0xFC,0x3F,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x00,0x20,0x00,0x00,/*"工",3*/0x20,0x80,0x20,0x80,0x20,0x40,0x20,0x20,0x20,0x10,0x20,0x0C,0x20,0x03,0xFF,0x00,0x20,0x03,0x20,0x0C,0x20,0x10,0x20,0x20,0x20,0x40,0x20,0x80,0x20,0x80,0x00,0x00,/*"大",4*/0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,/*"学",5*/0x00,0x00,0x00,0x00,0xF8,0x1F,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0xFF,0x7F,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0xF8,0x9F,0x00,0x80,0x00,0xF0,0x00,0x00,/*"电",6*/0x20,0x00,0x10,0x00,0x4C,0x00,0x47,0x00,0x54,0x00,0x54,0x00,0x54,0x00,0x54,0x00,0x54,0x00,0x54,0x00,0x54,0x00,0xD4,0x0F,0x04,0x30,0x04,0x40,0x00,0xF0,0x00,0x00,/*"气",7*/0x40,0x04,0x30,0x04,0x11,0x04,0x96,0x04,0x90,0x04,0x90,0x44,0x91,0x84,0x96,0x7E,0x90,0x06,0x90,0x05,0x98,0x04,0x14,0x04,0x13,0x04,0x50,0x04,0x30,0x04,0x00,0x00,/*"学",8*/0x00,0x00,0xFE,0xFF,0x22,0x04,0x5A,0x08,0x86,0x07,0x10,0x80,0x0C,0x41,0x24,0x31,0x24,0x0F,0x25,0x01,0x26,0x01,0x24,0x3F,0x24,0x41,0x14,0x41,0x0C,0x71,0x00,0x00,/*"院",9*/
6、protesu仿真
6.1仿真电路图
Proteus仿真时,单片机需要加载程序,加载程序为.HEX文件。
本设计利用KeilμVision2,在新建Keil项目时选择89S52单片机作为CPU,将源程序导入,在“OptionsForTarget”对话窗口中,选中“Output”选项中的“CreateHEXFile”,编译链接后就可以生成.HEX文件。
在ProteusISIS中,选好所需要的仿真元件,并连接好,电路如图6-1所示。
选中AT89C51并单击鼠标左键,对AT89C51进行设置,设置单片机时钟频率为12MHz,按照正确的文件路径加载.HEX文件。
对单片机设置完毕后就可以开始仿真了。
仿真过程中如有硬件问题可在ProteusISIS中直接修改,如有软件问题可在Keil中直接修改,通过Keil与Proteus的联合调试就可以得到满意的结果。
利用Proteus实现了对点阵式LED滚动汉字显示屏的仿真,说明程序和电路图都没有问题。
图6-1总体仿真电路
6.2仿真效果(显示“河南理工电气学院”)
图6-2点阵显示字幕
七、调试过程及分析
在16*16的点阵屏中,既有16根行线和16根列线,我们在这里用P0口控制行线,列线由P2、P3口控制,所以我们这个是列扫描控制的点阵屏。
要让一个字显示出来其实就是控制这256个LED灯的亮灭问题。
因为有字模提取软件所以这个问题就显得很容易了。
LED点阵显示字体的交替出现。
交替出现文字采用if判断语句和延时函数,当满足条件既会显示出文字,每个字都是延时1s出现。
16×16点阵点阵的移动。
要显示一个字符,该字符的点阵数据可以列向16点组字,又可以行向16点组字。
无论哪一种组字方法,都既可以显示字符的水平方向的移动,又可以显示竖直方向的移动。
八、主要原件清单以及参考文献
表8-1主要原件清单
原件名称
原件个数
元件名称
原件个数
AT8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河南理工大学 电子信息 单片机课程设计点阵 河南 理工大学 单片机 课程设计 点阵
![提示](https://static.bdocx.com/images/bang_tan.gif)