点阵字模提取: https://pan.baidu.com/s/1DZSeLyD_SUkaHRgTm26o-A
提取码: 1111
一、LED点阵显示器结构
点亮点阵中一个发光二极管条件:对应行为高电平,对应列为低电平。如在很短时间内依次点亮很多个发光二极管,LED点阵就可显示一个稳定字符、数字或其他图形。控制LED点阵显示器显示,实质就是控制加到行线和列线上编码,控制点亮某些发光二极管(点),从而显示出由不同发光点组成的各种字符。
16×16 LED点阵显示器的结构与8×8LED点阵显示模块内部结构及显示原理是类似的,只不过行和列均为16。16×16是由4个8×8 LED点阵组成,且每个发光二极管也是放置在行线和列线的交叉点上,当对应某一列置0电平,某一行置1电平时,该发光二极管点亮。
二、LED点阵显示器显示原理
下面以显示字符“子”为例:
显示过程如下:
先给LED点阵的第1行送高电平(行线高电平有效),同时给所有列线送高电平(列线低电平有效),从而第1行发光二极管全灭;
延时一段时间后,再给第2行送高电平,同时给所有列线送“1100 0000 0000 1111”,列线为0的发光二极管点亮,从而点亮10个发光二极管,显示出汉字“子”的第一横;
延时一段时间后,再给第3行送高电平,同时加到列线的编码为“1111 1111 1101 1111”,点亮1个发光二极管;
……;
延时一段时间后,再给第16行送高电平,同时给列线送“1111 1101 1111 1111” ,显示出汉字“子”的最下面的一行,点亮1个发光二极管。然后再重新循环上述操作,利用人眼视觉暂留效应,一个稳定字符“子” 显示出来。
三、单片机控制16×16点阵显示屏显示“江”字
(1)原理图
利用单片机及 74LS154(4-16译码器)、74LS07、16×16 LED点阵显示屏来实现字符显示。
图中16×16 LED点阵显示屏16行行线R0~R15电平,由P1口低4位经4-16译码器74HC154的16条译码输出线L0~L15经驱动后的输出来控制。16列列线C0~C15的电平由P0口和P2口控制。剩下问题是如何确定显示字符的点阵编码,以及控制好每一屏逐行显示的扫描速度(刷新频率)。
扫描显示时,单片机通过P1口低4位经4-16译码器74HC154的16条译码输出线L0~L15经驱动后的输出来控制,逐行为高电平,来进行扫描。由P0口与P2口控制列码的输出,从而显示出某行应点亮的发光二极管。
(2)源代码
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define out0 P0
#define out2 P2
#define out1 P1
void delay(uint j) //延时函数
{
uchar i=250;
for(; j>0; j--)
{
while(--i);
i=100;
}
}
uchar code string[]=
{
0xFF,0xFF,0xFB,0xFF,0x17,0xC0,0xF7,0xFD,0xFE,0xFD,0xFD,0xFD,0xED,0xFD,0xEF,0xFD,
0xF7,0xFD,0xF7,0xFD,0xF8,0xFD,0xFB,0xFD,0xFB,0xFD,0x0B,0x80,0xFB,0xFF,0xFF,0xFF,/*"江",2*/
/* (16 X 16 , 宋体 )*/
};
void main()
{
uchar i,j,n;
while(1)
{
for(j=0; j<3; j++) //共显示4个汉字
{
for(n=0; n<40; n++) //每个汉字整屏扫描40次
{
for(i=0; i<16; i++) //逐行扫描16行
{
out1=i%16; //输出行码,
out0=string[i*2+j*32]; //输出列码到C0~C7,逐行扫描
out2=string[i*2+1+j*32]; //输出列码到C8~C15,逐行扫描
delay(4); //显示并延时一段时间
out0=0xff; //列线C0~C7为高电平,熄灭发光二极管
out2=0xff; //列线C8~C15为高电平,熄灭发光二极管
}
}
}
}
}
(3)显示结果
四、思考题
1、与数码管显示相比,LED点阵显示的优势是什么?
答:(1)高分辨率:LED点阵显示屏可以显示更复杂的图案、文本和动画等,具有较高的分辨率,能够展示更多的细节和更丰富的图像。
(2)显示灵活性:点阵屏可以显示更多的像素和细节,适用于需要显示复杂图案、文本和动画等信息的应用,比数码管更加灵活和多样化。
(3)控制复杂性:虽然点阵屏的控制较为复杂,但这种复杂性带来了更大的显示灵活性,允许创建更为精细和动态的显示效果。