序
🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机控制LED点阵显示器的设计
1 硬件系统设计
1.1将要实现的功能要求
设计一个室内用32×16点阵LED图文显示屏,要求在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形或文字应稳定、清晰无串扰。图形或文字显示有静止、移入移出等显示方式。
1.2方案论证
从理论上说,不论图形还是文字,只要控制组成这些图形或文字的各个点所在位置相对应的LED期间发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。32×16的点阵共有512个发光二极管,显然单片机没有这么多端口,按8位的锁存器来计算,32×16的点阵需要512/8=64个锁存器。这个数字很庞大,因为我们仅仅是32×16的点阵,在实际应用中的显示屏往往要大得多,在锁存器上花的成本将是一个很庞大的数字。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。具体就32×16点阵来说,把所有同1行的发光二极管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;.......第32行之后,又重新燃亮第1行。反复轮回。当这样的轮回速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。显示时要把一行中个列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。显然,采用并行方式时,从控制电路到列驱动器的线路数量很大,相应的硬件数目很多。当列数很多时,并行传输的方案是很不可取的。
采用串行输出的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两个部分。对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下,留给行显的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。即在显示本行各列数据的同时,传送下一行的列数据。为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。经过上述分析,可以归纳出列驱动器电路应具备的主要功能,对于列数据准备来说,它应能实现串入并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。图1-1为显示屏电路实现的结构框图。
图1-1 显示屏电路框图
1.3系统硬件电路的设计
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分。
单片机采用89S52或其兼容系列的芯片,采用24MHZ或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。单片机的串口与列驱动器相连,用来送显示数据。P1口与行驱动器相连,送出行选信号;P3口则用来发送控制信号。P0和P2口空着,在有必要时可以扩展系统的ROM和RAM。32×16点阵显示屏的硬件原理图如图1-2所示:
图1-2 32×16点阵显示屏的硬件原理图
单片机P1口输出的行号经74LS154译码后产生32条行选通信号线,再经过驱动器驱动对应的行线。一条行线上要带动16列的LED进行显示,按每一LED期间20mA电流计算,16个LED同时发光,需要320mA电流,选用三极管8550作为驱动管可满足要求。
1.4主要芯片介绍
1.4.1正向驱动器74LS245及其应用
74LS245是正向驱动器,他具有8位同步数据通信总线,其功能为:
1.输入缓冲及抗噪声干扰。
2.2方式同步数据总线通信。
3.输入两极高速终止效果。
4.ESD大于3500V。
图1-3 74LS245
它具备两种工作方式,我们可以通过控制他DIR 及E管脚的逻辑电平从而控制其工作方式如表3-1所示:
表1-1
真值表 | ||
INPUT |
OUPUT |
|
E |
DIR |
|
L |
L |
总线B流向总线A |
L |
H |
总线A流向总线B |
H |
× |
隔离状态 |
H:代表高电平 | ||
L:代表低电平 | ||
×:代表忽略 |
工作方式一:管脚E为低电平而管脚DIR为高电平时,数据输出方向是由A口流向B口。
工作方式二:管脚E和管脚DIR均为高电平时,数据输出方向是由B口流向A口。
在本电路中选取了其工作方式一,也就是将数据从A口经放大在B口输出。
从表3可知74LS245的工作电压为4.5-5.5V,正常工作温度为-55-125度。
本文选用74LS245来替代三极管放大作用,在功能相同的情况下一方面节省了线路版空间,使元件更加整齐。另一方面,使电路的焊接工作带来很大便利。
表1-2
符号 |
参数 |
最小 |
典型 |
最大 |
单位 |
|
VCC |
支持电压 |
54 |
4.5 |
5 |
5.5 |
V |
74 |
4.75 |
5 |
5.25 |
|||
TA |
元件运行温度范围 |
54 |
-55 |
25 |
125 |
度 |
74 |
0 |
25 |
70 |
|||
I OH |
最大输出电流 |
54.74 |
-3 |
mA |
||
54 |
-12 |
|||||
74 |
-15 |
|||||
I OL |
最小输出电流 |
54 |
12 |
mA |
||
74 |
24 |
1.4.2 4-16线译码器
功能:
1.74154进行高速缓存和解码处理的译码器。
2.将4位编码转变为彼此互斥的16位编码。
3.通过不同输入控制16位编码数据输出的分配实现其复用功能。
4.输入半导体单一化系统设计。
5.高电压,低阻抗输出。
6.完全适用于绝大多数的TTL及MSI电路。
图1-4 74LS154管脚图
通过对其管脚图及真值表进行观察不难看出,G1,G2为74LS154的片选端,也就是说当G1和G2同为低电平时74154,可以正常工作。除此之外的另外3种情况74154的16位输出均为高电平。74154的情况下,当A,B,C,D输入都为低电平时,其16位输出中0脚的输出为低电平其他各脚均为高电平,当A为低电平,B,C,D分别为高电平时,1管脚输出为低电平而其他管脚均为高电平……按此规律如图3-4所示,当A,B,C,D输入都为高电平时,其16位输出中的15脚输出为低电平其他各脚均为高电平。利用它的扩展功能,能够解决89C51在本电路中口线不足的难题。74LS154是本电路的重要元器件之一。
表1-3 74LS154真值表
输入 |
输出 |
||||||||||||||||||||
G1 |
G2 |
D |
C |
B |
A |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
L |
L |
L |
L |
L |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
L |
L |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
L |
H |
L |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
L |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
H |
L |
L |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
H |
L |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
H |
H |
L |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
H |
L |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
L |
L |
H |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
L |
L |
H |
L |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
H |
L |
L |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
H |
L |
L |
H |
H |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
H |
L |
L |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
H |
L |
L |
H |
H |
H |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
H |
L |
L |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
L |
H |
× |
× |
× |
× |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
L |
× |
× |
× |
× |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
× |
× |
× |
× |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
H |
1.4.3 32×16 LED数码显示屏
32×16 LED数码显示屏是由8块8×8LED数码管分两排拼凑而成,数码管为共阳极,是由64个发光二极管组合而成,以4×4的内部结构图为例,如图1-5所示:
图1-5 4×4的LED内部结构图
当0.1.2.3四列中其中任何一列选通(为低电平)那么那一列所在的四行A.B.C.D如有高电平输入,它所对应的二极管就会导通。所以按照这种原理,就可以用单片机的P1口经过两个74LS154扩展出32位低电平选通端,再通过单片机的P3口输出高低电平将发光二极管导通,通过逐列扫描法拼凑出想要实现的字符。
一般地,发红光的LED每段流过5MA的平均电流,就可以有较满意的亮度,7MA电流会更亮些,10MA以上也不会再亮多少。但长期运行于10MA以上会缩短其寿命。最大电流平均值不得超过30MA。LED显示器允许的反向最大值为5V,此时的反向电流一般小于10UA。小尺寸的LED显示器每段只有一个发光二极管,其正向压降约为1.5V。一般最大不大于2V。大尺寸的LED显示器每段可能由数个发光二极管串联,每段压降也要增大。
1.4.4系统核心单片机部分--- AT89S52
单片机AT89S52有内部RAM,可以作为各种数据区使用,内部闪电存储器存放LED电子显示屏的控制程序。
AT89系列单片机是ATMEL公司生产的。这是当前最新的一种电擦写8位单片机,与MCS-51系列完全兼容,有超强的加密功能,可完全替代87C51/52和8751/52。它物美价廉,深受用户欢迎。
与87C51相比,AT89系列的优越性在于,其片内闪电存储器的编程与擦除完全用电实现;数据不易挥发,可保存10年;编程/擦除速度快,全4K字节编程只需时3s,擦除时间约用10ms;AT89系列了实现在线编程;也可借助电话线进行远距离编程。
AT89S52是一种低功耗、高性能内含8K字节闪电存储器(Flash Memory)的16位CMOS微控制器。这种器件系以ATMEL高密度不挥发存储技术制造,与工业标准MCS-51指令系统和引脚完全兼容。片内闪电存储器的程序代码或数据可在线写入,亦可通过常规的编程器编程。例如,MP-100这样一种经济型的编程器,它支持通用EPROM等各种存储器、PAL、GAL以及INTEL、ATMEL和PHILIPS等各公司的全系列52单片机的编程。ME5103和ME5105仿真器支持AT89系列所有器件的调试、仿真和编程。
AT89S52的结构框图如图1-6所示:
P0.0 – P0.7 P2.0 – P2.7
图1-6 AT89S52结构框图
AT89C52具有下列主要性能:
1.8KB可改编程序Flash存储器(可经受1,000次的写入/擦除周期)
2.全静态工作:0Hz~24MHz
3.三级程序存储器保密
4.256 X 8字节内部RAM
5.32条可编程I/O线
6.3个16位定时器/计数器
7.6个中断源
8.可编程串行通道
片内时钟振荡器
另外,AT89S52是用静态逻辑来设计的,其工作频率可下降到0 Hz,并提供两种可用软件来选择的省电方式——空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下一次硬件复位为止。
主电源引脚
1.Vcc 电源端
2.GND 接地端
外接晶体引脚XTAL1和XTAL2
1.XTAL1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。
2.XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。
3.控制或与其它电源复用引脚RST、ALE//PROG、/PSEN和/EA/Vpp
(1)RES 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。
(2) ALE//PROG 当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。在对Flash存储器编程期间,该引脚还用于输入编程脉冲(/PROG)。
如果需要的话,通过对专用寄存器(SFR)区中8EH单元的D0位置数,可禁止ALE操作。该位置数后,只有在执行一条MOVX或MOVC指令期间,ALE才会被激活。另外,该引脚会被微弱拉高,单片机执行外部程序时,该设定禁止ALE位无效。
(3) /PSEN 程序存储允许(/PSEN)输出是外部程序存储器的读选通信号。当AT89C51/LV51由外部程序存储器取指令(或常数)时,每个机器周期两次/PSEN有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
(4) /EA/Vpp 外部访问允许端。要使CPU只访问外部程序存储器(地址为0000H~ FFFFH),则/EA端必须保持低电平(接到GND端)。然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存/EA端的状态。
当/EA端保持高电平(接Vcc端)时,CPU则执行内部程序存储器中的程序。在Flash存储器编程期间,该引脚也用于施加12V的编程允许电源Vpp(如果选用12V编程)。
输入/输出引脚 P0.0~P0.7、P10.~P1.7、P2.0~P2.7 和P3.0~P3.7
1.P0端口(P0.0~P0.7) P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。
在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。
在Flash编程时,P0端口接收指令字节;而在验证程序时,则输出指令字节。验证时,要求外接上拉电阻。
2.P1端口(P1.0~P1.7) P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在对Flash编程和程序验证时,P1接收低8位地址。
3.P2端口 (P2.0~P2.7) P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVX @DPIR指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。
在对Flash编程和程序验证期间,P2也接收高位地址和一些控制信号。
4.P3端口(P3.0~P3.7) P3 是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在AT89S52中,P3端口还用于一些专门功能,这些兼用功能见表3-4
Flash存储器的编程和程序校验:
AT89S52单片机内部有一个8K字节的Flash PEROM。这个Flash存储阵列通常是处于已擦除状态(既存储单元的内容为FFH),随时可对它进行编程。编程接口可接收高电压(12V)或低电压(Vcc)的允许编程信号。低电压编程方式可很方便地对AT89S52内的用户系统进行编程;而高电压编程方式则可与通用的EPROM编程器兼容。
表 1-4
端口引脚 |
兼 用 功 能 |
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 (外部数据存储器读选通) |
在对Flash编程和程序验证时,P3还接收一些控制信号。
图1-7
AT89S52的程序存储器阵列是采用字节写入方式编程的,既每次写入一个字节。要对片内的PEROM程序存储器写入任何一个非空字节,都必须用片擦除方式将整个存储器的内容清除。
对Flash存储器编程
编程前,必须按照表5和图7建立好地址、数据和相应的控制信号。编程单元的地址加在P1端口和P2端口的P2.0~P2.3(11位地址为0000H~0FFFH),数据从P0端口输入。引脚P2.6、P2.7和P3.6、P3.7的电平选择见表2。/PSEN应保持低电平,而RST应保持高电平。/EA/VPP是编程电源的输入端,按要求加入编程电压。ALE//PROG端输入编程脉冲(应为负脉冲信号)。编程时,采用4~20 MHz的振荡器。对AT89S52编程的步骤如下:
1.在地址线上输入要编程单元的地址。
2.在数据线上输入要写入的数据字节。
3.激活相应的控制信号。
4.在采用高电压编程方式时,将/EA/VPP端的电压加到12V。
每对Flash存储阵列写入一个字节或每写入一个程序加密位,加一个ALE//PROG编程脉冲。
改变编程单元的地址和要写入的数据,重复步骤a~e,直到全部文件编程完毕。
每个字节写入周期是自动定时的,通常不大于1.5ms。
数据查询方式
图 1-8 Flash编程方式
AT89S52单片机用数据查询方式来检测一个写周期是否结束。在一个写周期期间,如果想读出最后写入的哪个字,则读出数据的最高位(P0.7)是原来写入字节最高位的反码。写周期一旦完成后,有效的数据就会出现在所有输出端上,这时可开始下一个写周期。一个写周期开始后,可在任何时间开始进行数据查询。
图1-9 Flash编程 图 1-10 程序的校验
2 调试及性能分析
LED显示屏硬件电路只要期间质量可靠,引脚焊接正确,一般无需调试即可正常工作。软件部分需要调试的主要有显示屏刷新频率及显示效果两部分。显示效果刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5-1给出了实验调试时采用的频率以及对应的定时器T0初值。
表2-1 显示屏刷新率(帧频)与T0初值关系表(24MHz晶振)
刷新率/Hz |
25 |
50 |
62.5 |
75 |
85 |
100 |
120 |
T0初值 |
0xEC78 |
0xF63C |
0xF830 |
0xF97E |
0xFA42 |
0xFB1E |
0xFBEE |
从理论上来说,24HZ以上的刷新率就能够看到连续稳定的显示,刷新率越高,显示越稳定,同时刷新率越高,显示驱动程序占用的CPU时间越多。实验表明,在目测条件下刷新率40HZ以下的画面看起来闪烁较严重,刷新率50HZ以上的基本觉察不出画面闪烁,刷新率程序自行分析。
这个方案设计的32×16点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形和文字。
原理图
控制板PCB图
文章来源:https://www.toymoban.com/news/detail-786102.html
如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!文章来源地址https://www.toymoban.com/news/detail-786102.html
到了这里,关于毕业设计 基于51单片机控制LED点阵显示器的设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!