第一章 概述
led点阵显示屏是通过pc机将要显示的汉字字模提取出来,并发送给单片机,然后显示在点阵屏上,主要适用于室内外汉字显示。
第二章 硬件设计
2.1 主要器件介绍
led 点阵显示屏是由20 个8*8 的led 点阵块组成,形成16*80 矩形点阵,以atmel 公司的at89s52单片机为控制核心。显示屏的其他主要硬件有:①带锁存输出的8位移位寄存器74hc595,作为led的列线驱动输入;②三八译码器74ls138,作为led行线的译码选择;③三极管c9012,连接两个三八译码器的十六个输出端,作为开关使用,驱动led的行线。
2.2 主要器件详细连接说明
atmel的at89s52芯片相关器件连接的接脚如下:p00-p03连接3-8译码器的输入口a,b,c,~g2a
p20-p23连接74hc595的输入口rck, si,sck,sclr
三八译码器74ls138的16 个输出端连接16 个c9012的三极管的基极b,发射极e 连接16 个行线控制端,集电极c连接到gnd。
点阵的80 列数据线驱动由10 片74hc595 级联组成,前一片74hc595 的q’h 引脚连接
下一片的si引脚,各片的rck、sck、sclr 分别并联。
2.3 led点阵块
8*8的led点阵为单色行共阳模块,单点的工作电压为正向(vf)=1.8 v ,正向电流(if)= 8-10 ma 。静态点亮器件时(64 点全亮)总电流为640ma,总电压为1.8 v,总功率为1.15w。动态时取决于扫描频率(1/8或1/16秒),单点瞬间电流可达80-160 ma。16*16点阵静态时16*16*10ma,动态时单点电流80-160ma。
接线方式:
当某一行线打高时,某一列线为低时,其行列交叉的点就被点亮;
某一列线为高时,其行列交叉的点为暗;
当某一行线打低时,无论列线如何,对应这一行的点全部暗。
列线:13—20控制点阵的列接低电平
行线:1-4 21-24控制点阵的行接高电平
2.4 at89s52
(1)p0.0【39 脚】,p0.1【38 脚】,p0.2【37 脚】,p0.3【36 脚】接两片3-8译码器的a,b,c和第一片的~g2a 与第二片的g1,用来选择led的行线
(2) p2.0【21 脚】:接74hc595的rck脚。
p2.1【22 脚】:接74hc595的sck脚。
p2.2【23 脚】:接74hc595的si脚。
p2.3【24 脚】:接74hc595的sclr脚。
(3) 其他
vcc 【40 脚】:接电源
ea/vpp【31 脚】:接电源
rst 【9脚】:复位脚。过10k电阻接gnd,过10uf的电容c3接vcc;复位按钮接到电容c2两端。
2.5 移位寄存器74hc595
74hc595是带锁存输出的8位移位寄存器,其管脚见下图,其中si是串行数据的输入端;
vcc、gnd分别为电源和地;rck是存储寄存器的输入时钟,sck是移位寄存器的输入时钟,sclr是移位寄存器的输入清除,q’h是串入数据的输出,g是对输入数据的输出使能控制,qa~qh串入数据的并行输出。从si口输入的数据在移
位寄存器的sck脚上升沿的作用下输入到74hc595中,在rck脚的上升沿作用下将输入的数据锁存在74hc595中,当g为低电平时时,数据并行输出。sclr为移位寄存器的输入清除端。
74hc595与at89s52的连接:si【14脚】,sck【11脚】,rck【12脚】, sclr【10脚】分别接到at89s52的p2.2【23脚】,p2.1【22脚】,p2.0【21脚】,p2.3【24脚】上。
其他脚连接:oe【13脚】接地,使其始终输出;
q’h【9脚】是连接下一片74hc595的si脚;qa,qb到qh分别连接到led点阵的1至8列的列线脚上。
2.6 三八译码器74ls138
图所示的是将两片74ls138译码器扩展为4线-16线译码器的连接图。其接线特点为:将四个输入信号~g2a,c,b,a中的低三位c,b,a同时接至两个芯片的地址输入端。输入信号的最高位~g2a接至两个芯片的使能端,使两个芯片不能同时工作。~g2a,c,b,a作为地址输入变量构成二进制代码,y0~y7、y0~y7作为输入信号,每个输出表示一个二进制代码的含义,即能实现4线-16线译码器的功能。
第三章 软件设计
3.1 单片机的程序设计
单片机在led点阵显示系统中主要负责数据的接收、存储和扫描显示led点阵屏三大主要功能。
/***************************************************************************************************
* name: khldragon
* date: 09/12/2009
* description: this program controls 16*80led and implements dynamic scan.
****************************************************************************************************/
#include
#include
#define conio p0 //行选信号
#define numofwords (6) //显示的字数
#define speed (30) //扫描周期 speed越大,扫描越慢;
#define maxwords (5) //屏幕最大固定显示字数
#define blank (4) //填充空数
#define maxrow (16) //最大行数
static sbit oe = p0^4; //控制74ls138,低电平有效
static sbit rck = p2^0; // 上升沿时数据输出
static sbit sck = p2^1; //上升沿时数据移位
static sbit si = p2^2; //74hc595串行输入
static sbit sclk = p2^3; //低电平移位寄存器清零,通常接vcc
static void send_in(unsigned char data); //串行数据输入
static void send_out(void); //并行数据输出
static unsigned int row = 0; //行选信号
static int j = 0;
static int k = 0;
static int m = 0;
static int s = 0; //与speed匹配
static int count = 0; //当为5时达到最大字数max
const static unsigned char code zimo[][32]={
{0x20,0x08,0x13,0xfc,0x12,0x08,0x02,0x08,0xfe,0x08,0x0a,0x08,0x12,0x08,0x3b,0xf8,
0x56,0xa8,0x90,0xa0,0x10,0xa0,0x11,0x20,0x11,0x22,0x12,0x22,0x14,0x1e,0x18,0x00},//祝
{0x00,0x80,0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x88,0x24,0x98,0x3e,0xa0,0x20,0xc0,
0x20,0x80,0x20,0x80,0x20,0x80,0x20,0x82,0x26,0x82,0x38,0x82,0x60,0x7e,0x00,0x00},//比
{0x01,0x00,0x7f,0xfe,0x44,0x42,0x9f,0xf4,0x04,0x40,0x1f,0xf0,0x04,0x40,0x7f,0xfc,
0x08,0x20,0x1f,0xf0,0x28,0x2e,0xc9,0x24,0x09,0x20,0x01,0x00,0x06,0xc0,0x18,0x30},//赛
{0x00,0x80,0x00,0xa0,0x00,0x90,0x3f,0xfc,0x20,0x80,0x20,0x80,0x20,0x84,0x3e,0x44,
0x22,0x48,0x22,0x48,0x22,0x30,0x2a,0x20,0x24,0x62,0x40,0x92,0x81,0x0a,0x00,0x06},//成
{0x00,0x80,0x00,0x80,0x08,0x80,0xfc,0x80,0x10,0x84,0x17,0xfe,0x10,0x84,0x10,0x84,
0x10,0x84,0x10,0x84,0x1d,0x04,0xf1,0x04,0x41,0x04,0x02,0x44,0x04,0x28,0x08,0x10},//功
{0x00,0x00,0x01,0x80,0x03,0xc0,0x03,0xc0,0x03,0xc0,0x03,0xc0,0x03,0xc0,0x01,0x80,
0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x03,0xc0,0x01,0x80,0x00,0x00,0x00,0x00},//!
};
void main()
{
//初始化引脚
conio = 0x00;
p2 = 0x08;
/**********************************动态扫描左移显示不限字数***************************************/
while(1)
{
for(k = 0; k 《 numofwords; k++)
{//扫描numofwrods遍
for(s = 0; s 《 speed; s++)
{
for(row = 0; row 《 maxrow; row++)
{
count = 0;
//将要显示的字,送入74hc595的si端,即单片机的p2^2引脚
for(j = k; j 》= 0; j--)
{
count++;
if(count 》 maxwords)
break;
send_in(zimo[j][2*row+1]);
send_in(zimo[j][2*row]);
}
//填充空白
for(m = blank-k; m 》 0; m--)
{
send_in(0);
send_in(0);
}
send_out();
conio=row;
}
}
}
//下面程序逻辑同上,只是换下位置
for(k = 1; k 《= maxwords; k++)
{
for(s = 0; s 《 speed; s++)
{
for(row = 0; row 《 maxrow; row++)
{
for(m = k; m 》 0; m--)
{
send_in(0);
send_in(0);
}
for(j = 1; j 《= maxwords - k; j++)
{
send_in(zimo[numofwords-j][2*row+1]);
send_in(zimo[numofwords-j][2*row]);
}
send_out();
conio=row;
}
}
}
}
}
/*****************************************************************
** 函数名:void send_in(unsigned char data)
** 输 入:unsigned char data
** 输 出: void
** 功能描述: send data to 74hc595
** 全局变量: sck si
** 调用模块:main()
** 作 者:khldragon
** 日 期:09/12/2009
** 版本version1.0
****************************************************************/
void send_in(unsigned char data)
{
unsigned char i;
for(i = 0; i 《 8; i++)
{ //循环8次,刚好移完8位
sck = 0; //先将移位寄存器控制引脚置为低
si = data & 0x01; //取数据的最低位,form: little endian
data 》》= 1; //将数据的次高位移到最高位
sck = 1; //再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位
_nop_();
}
}
/*****************************************************************
** 函数名:void send_out(void)
** 输 入:void
** 输 出: void
** 功能描述: send data to led
** 全局变量: rck
** 调用模块:main()
** 作 者:khldragon
** 日 期:09/12/2009
** 版本version1.0
****************************************************************/
void send_out(void)
{
rck = 0; //先将存储寄存器引脚置为低
_nop_();
_nop_();
rck = 1; //再置为高,产生移位时钟上升沿,上升沿时移位寄存器的数据进入数据存储寄存器,更新显示数据。
_nop_();
_nop_();
rck = 0; //先将存储寄存器引脚置为低
}
被广泛应用的光学镜片是如何制造出来的
基于弛豫电压的动力电池内短路故障诊断方法
处理器缓存有啥用
业绩增长放缓 企业倒闭频发,LED产业的“冬天”来袭
云mes解决方案和本地MES解决方案如何选择
AT89S52单片机对LED点阵显示屏的控制设计
如何利用间接电流模式仪表放大器放大具有大直流偏移的交流信号
LED小间距屏幕怎么选?
AI人才炙手可热 数据科学家和机器学习工程师出现大缺口
机器学习英雄访谈录之DL实践家:Dominic Monn
FPGA市场现状和未来趋势如何?
广东芯粤能半导体荣获“年度IC独角兽奖”
AMD公布2019年度五大里程碑事件 展望2020年新发展
热继电器的选型注意事项
深刻认识加快数字化发展的重大意义
风河公司在KDDI商业网络中开通运行 亚马逊云科技赋能华讯云转型
Volocopter GmbH计划2023年底前在新加坡推出飞行出租车服务 已开始售票
七牛云推出自研RTC加速网络技术有效解决延时卡顿问题
土壤水分测量传感器,是节水农业中的重要指标
扬尘噪音在线监测监控系统必须有吗