APP下载

基于AT89S52单片机的8×8 LED点阵显示屏的设计

2019-07-23孙陈英

通信电源技术 2019年6期
关键词:低电平原理图字符

孙陈英

(江苏省江阴中等专业学校,江苏 江阴 214400)

0 引 言

LED点阵显示屏因具有色彩鲜艳、功耗低、工作稳定及亮度高等优点,被广泛应用与商场、公交站台、银行及车站等公共场所,可以动态流水显示各种各样的字符、数字及汉字。本文选用8×8 LED点阵(1588BS)设计一块可以显示“Happy Birthday!”的显示屏来取代蛋糕上的纸质贺卡,实现由静态到动态,由无光到有光的感官效果。

1 8×8 LED点阵的电路原理图设计和字符取码

1.1 8×8 LED点阵电路原理图设计

8×8 LED点阵是由64只发光二极管以8行、8列的形式呈现,根据发光颜色可分为单色、双色及三色。本文选用的1588BS是单色8×8 LED点阵,根据其内部结构可知,为使某一个LED点亮,只需让其对应的列送低电平,对应的行送高电平即可。当需要多个LED同时被点亮时,只需让其对应的行列根据LED点亮情况送相应的高低电平。

点阵行列高低电平的输入通过编写程序来控制,程序的编写要和电路原理图相结合。对于单个8×8 LED点阵,其驱动电路比较简单,选用单片机最小系统电路,包括单片机芯片、晶振、复位及电源电路,同时用单片机的P0口加上拉电阻直接驱动点阵的行,P2口直接驱动点阵的列。为了便于仿真和调试,用PROTEUS仿真软件绘制电路原理图[1]。

1.2 8×8 LED点阵的字符取码

分析字符在LED点阵的显示原理,首先要分析字符的显示代码。字符的显示通过动态扫描显示方式来实现,扫描方式有行扫描和列扫描两种。本文采用列扫描来分析显示字符“H”的动态扫描过程,字符H的点阵示意图如图1所示。

图1 字符H的点阵示意图

扫描第一列,只需给第一列送低电平,列输入数据为01111111;根据字符“H”的字形,需要第一行至第七行的LED点亮;根据LED的显示原理,行输入数据让需要点亮的LED所在行送高电平,无需点亮的送低电平,可以得出二进制数据编码为11111110;结合电路原理图得知P0.0连接的是点阵第一行,而P0.7连接的是点阵第八行,所以将二进制编码转换为十六进制编码为0x7F[2]。

按照此方法依次扫描其余几列,可以得出字符H的数据编码如表1所示。单片机反复重复扫描第一列至第八列,虽然是逐列扫描,逐列显示,但是可以合理控制循环扫描的时间,利用人眼的视觉滞留效应,看到的是各列同时点亮,出现一个完整的字符H。

按照此方法可以分析得出所有字符的数据编码,但是一般在多个字符取码中,为了提高效率,常采用取模软件来进行取码。经取模软件取码得出“Happy Birthday!”中所有字符的编码。

表1 H字符点阵数据编码

2 8×8 LED点阵动态显示“Happy Birthday!”程序设计

在分析得出各个字符数据编码的基础上,点阵行列高低电平的输入需要通过编写程序来实现[3],下面是动态流水显示“Happy Birthday!”的程序编写。

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar time,yw,i;

uchar code dat[]={

0x7F,0x08,0x08,0x08,0x7F, // -H-

0x24,0x54,0x54,0x38,0x40, // -a-

0xFC,0x24,0x24,0x24,0x18, // -p-

0xFC,0x24,0x24,0x24,0x18, // -p-

0x9C,0xA0,0xA0,0x90,0x7C, // -y-

0x00,0x00,0x00,0x00,0x00, // - -

0x7F,0x49,0x49,0x49,0x36, // -B-

0x00,0x00,0x79,0x00,0x00, // -i-

0x04,0x78,0x04,0x04,0x08, // -r-

0x04,0x3F,0x44,0x44,0x24, // -t-

0x7F,0x08,0x04,0x04,0x78, // -h-

0x38,0x44,0x44,0x28,0x7F, // -d-

0x24,0x54,0x54,0x38,0x40, // -a-

0x9C,0xA0,0xA0,0x90,0x7C, // -y-

0x00,0x00,0x5F,0x00,0x00, // -!-

0x00,0x00,0x00,0x00,0x00, // - -

0x00,0x00,0x00,0x00,0x00, // - -

0x00,0x00,0x00,0x00,0x00, // - -

};

void delay(uint x)// 延迟函数结束

{

uint i,j; // 声明变量

for(i=0;i<x;i++) // 外循环 xms

for(j=0;j<10;j++); // 内循环 1ms

}

void INit()

{

TMOD|=0x01;//定时器0 模式1 16位定时模式

TH0=(65536-10000)/256;//定时10.000ms

TL0=(65536-10000)%256;

ET0=TR0=EA=1;//定时器开始计数

}

main () // 主程序开始

{ // 声明变量

INit();

while(1) // 无穷循环

{

for(i=0;i<8;i++) // 扫描 8 列

{

P2=~(0x01<<i);// 扫描第一列

P0=dat [i+yw];// 输出行数据

delay(1); // 延迟 1ms

P0=0x00;//清影

} // 扫描8列 (i循环)结束

}

}

void timer0() interrupt 1

{

TH0=(65536-10000)/256;//10.000ms 进入一次中断

TL0=(65536-10000)%256;

time++;

if(time==10)//到100.000ms时间加以实现移动 用于控制移动速度

{

time=0;

yw++;

if(yw>80)yw=0;

}

}

将程序编译完成后生成HEX文件,下载至单片机,打开PROTEUS仿真软件运行后即可以看到动态流水显示“Happy Birthday!”。

3 结 论

文中以AT89S52芯片为硬件基础,完成了8×8 LED点阵显示字符的的硬件和软件设计。仿真效果表明,该方案有效可行。其中编写单片机驱动点阵程序来显示字符是学习8×8 LED点阵的要点。

猜你喜欢

低电平原理图字符
论高级用字阶段汉字系统选择字符的几个原则
浅谈STM32核心板原理图设计
字符代表几
电路原理图自动布图系统的设计与实现
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
一种实用的电脑接口判断方法
基于Protel DXP 2004层次原理图的设计
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
数字电子技术的应用