74hc595通过ULN2003驱动8*8LED点阵屏

一、 电路原理图。
(1)输入输出口
jp1 为输入口,jp2为输出口(为串联下一块点阵),245为电平转换。
(2)行控制端电路
有2块3-8译码器组成4-16译码器。将a,b,c,d,接入一个8位i/o口,直接对i/o口赋值。
(3)行写入端电路
二、74hc595介绍。
74hc595 是一款漏极开路输出的cmos 移位寄存器,输出端口为可控的三态输出
端,亦能串行输出控制下一级级联芯片。
10 脚 sclr 移位寄存器清零端 直接接地,
11 脚 sck 数据输入时钟线
12 脚 rck 输出存储器锁存时钟线
13 脚 oe 输出使能 低电平为输出有效
14 脚 si 数据线 串行输入数据,亦能串行输出数据到下一级级联芯片
输入数据程序:
1. 向595写一个字节的数据
void write_595(uchar data) //向595写一个字节的数据
{
uchar i;
for(i=0;i>1;
}
}
2.向多个595写一个字节的数据
9 脚sqh 位串行数据输出管脚 将多个595的数据由9脚传至下一个595,全部写入后在打开输出存储器锁存时钟线
for(i=0;i0;j--) //向多个595写一个字节的数据
{
write_595(display[7][k]);
write_595(display[7][k-1]);
write_595(display[6][k]);
write_595(display[6][k-1]);
write_595(display[5][k]);
write_595(display[5][k-1]);
write_595(display[4][k]);
write_595(display[4][k-1]);
k+=2;
hang=16-j; //为138输入行控制数据
rck=1;rck=0;
}
delay_ms(20);
}
3.595-rck信号与138的输出使能e2信号为同一信号,故可以相连。
三、74hc138介绍。
3 线-8 线译码器
当一个选通端(g1)为高电平,另两个选通端(/(g2a)和/(g2b))为低电平时,将地址端(a、b、c)的二进制编码在一个对应的输出端以低电平译出。
利用 g1、/(g2a)和/(g2b)可级联扩展成24 线译码器;若外接一个反相器还可级联扩展成32 线译码器。
引出端符号:
a、b、c 译码地址输入端
g1 选通端
/(g2a)、/(g2b) 选通端(低电平有效)
y0~y7 译码输出端(低电平有效)
功能表:
逻辑图:
四、74hc245介绍。
管脚及电路接法。
五、uln 2003介绍。
uln2003是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对npn达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500ma。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(led气体放电),线路驱动器和逻辑缓冲器。
74hc595通过uln2003驱动8*8led点阵屏。
五、8*8点阵屏介绍
8*8点阵屏管脚如上,l1-l8由达林顿管tip127驱动,h1-h8有uln2003驱动
(1)tip127简介
外延基pnp达林顿功率晶体管,采用to-220塑料封装
vcbo 集电极-基极电压(ie = 0) 60 80 100 v
vceo 集电极-发射极电压(ib = 0) 60 80 100 v
vebo 发射极-基极电压(ic = 0) 5 v
ic 集电极电流 5 a
icm 集电极峰值电流 8 a
ib 基极电流 0.1 a
ptot 耗散功率 tcase≤25℃ 65 w
(2)uln 2003介绍。
uln2003是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对npn达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是500ma。达林顿管并联可以承受更大的电流。此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(led气体放电),线路驱动器和逻辑缓冲器。
74hc595通过uln2003驱动8*8led点阵屏。
附录:原理图
源程序:
//16x64点阵程序及滚动效果视频
#include
#define uchar unsigned char
#define uint unsigned int
#define hang p1 //行扫描接在p1口
sbit si=p2^3;
sbit sck=p2^0;
sbit oe=p2^2;
sbit rck=p2^1;
uint counter;
uchar flag;
void delay_ms(uchar z) //延时0.5秒
{
uchar i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
uchar code display[][32]={
/*-- 文字: 好 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x00,0x11,0xfc,0x10,0x08,0x10,0x10,0xfc,0x20,0x24,0x20,0x24,0x20,0x27,0xfe,0x44,0x20,0x64,0x20,0x18,0x20,0x08,0x20,0x14,0x20,0x26,0x20,0x44,0xa0,0x80,0x40,
/*-- 文字: 好 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x00,0x11,0xfc,0x10,0x08,0x10,0x10,0xfc,0x20,0x24,0x20,0x24,0x20,0x27,0xfe,0x44,0x20,0x64,0x20,0x18,0x20,0x08,0x20,0x14,0x20,0x26,0x20,0x44,0xa0,0x80,0x40,
/*-- 文字: 学 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x08,0x10,0x8c,0x0c,0xc8,0x08,0x90,0x7f,0xfe,0x40,0x04,0x8f,0xe8,0x00,0x40,0x00,0x80,0x7f,0xfe,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x80,0x01,0x00,
/*-- 文字: 习 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x00,0x3f,0xfc,0x00,0x04,0x08,0x04,0x04,0x04,0x03,0x04,0x01,0x14,0x00,0x64,0x01,0x84,0x06,0x04,0x38,0x04,0x10,0x04,0x00,0x04,0x00,0x24,0x00,0x14,0x00,0x00,
/*-- 文字: 天 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x08,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xff,0xfe,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x0e,0xc0,0x04,
/*-- 文字: 天 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x08,0x7f,0xfc,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xff,0xfe,0x01,0x00,0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x0e,0xc0,0x04,
/*-- 文字: 向 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x02,0x00,0x04,0x00,0x08,0x04,0x7f,0xfe,0x40,0x04,0x40,0x24,0x4f,0xf4,0x48,0x24,0x48,0x24,0x48,0x24,0x48,0x24,0x4f,0xe4,0x48,0x24,0x40,0x04,0x40,0x14,0x40,0x08,
/*-- 文字: 上 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x10,0x01,0xf8,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xff,0xfe,0x00,0x00};
void write_595(uchar data) //向595写一个字节的数据
{
uchar i;
for(i=0;i>1;
}
}
void main() //主函数
{
uchar i,j,k;
oe=0; //154使能
ea=1; //开总中断
tmod=0x01; //定时器0工作方式0
et0=1; //定时器0使能
th0=(65535-50000)/256; //定时器0设置初值
tl0=(65536-50000)%256;
while(1)
{
for(i=0;i0;j--) //向多个595写一个字节的数据
{
write_595(display[7][k]);
write_595(display[7][k-1]);
write_595(display[6][k]);
write_595(display[6][k-1]);
write_595(display[5][k]);
write_595(display[5][k-1]);
write_595(display[4][k]);
write_595(display[4][k-1]);
k+=2;
hang=16-j;
rck=1;rck=0;
}
delay_ms(20);
}
tr0=1;flag=1;
while(flag) //停留一秒
{
uchar j;
for(j=0;j0;i--) //字滚动出显示区
{
k=31;
for(j=i-1;j>0;j--)
{
write_595(display[7][k]);
write_595(display[7][k-1]);
write_595(display[6][k]);
write_595(display[6][k-1]);
write_595(display[5][k]);
write_595(display[5][k-1]);
write_595(display[4][k]);
write_595(display[4][k-1]);
k-=2;
hang=j;
rck=1;rck=0;
}
delay_ms(20);
}
for(i=0;i0;j--)
{
write_595(display[3][k]);
write_595(display[3][k-1]);
write_595(display[2][k]);
write_595(display[2][k-1]);
write_595(display[1][k]);
write_595(display[1][k-1]);
write_595(display[0][k]);
write_595(display[0][k-1]);
k+=2;
hang=16-j;
rck=1;rck=0;
}
delay_ms(20);
}
tr0=1;flag=1;
while(flag) //停留一秒
{
uchar j;
for(j=0;j0;i--) //滚出显示区
{
k=31;
for(j=i-1;j>0;j--)
{
write_595(display[3][k]);
write_595(display[3][k-1]);
write_595(display[2][k]);
write_595(display[2][k-1]);
write_595(display[1][k]);
write_595(display[1][k-1]);
write_595(display[0][k]);
write_595(display[0][k-1]);
k-=2;
hang=j;
rck=1;rck=0;
}
delay_ms(20);
}
}
}
void timer0() interrupt 1 //中断函数
{
counter++;
if(counter==20) //1秒设置
{
counter=0;
flag=0;
}
th0=(65535-50000)/256;
tl0=(65536-50000)%256;
}

储能还未真正进入商业化运行阶段
寻址方式与内存计算的详细说明
智能灯泡为你的房间进行二次“装修”
18年电感厂家告教你插件共模电感如何选型
如何正确的理解Plasma和Plasma Cash的基础概念
74hc595通过ULN2003驱动8*8LED点阵屏
骁龙875和麒麟9000的CPU差距有多大?
碳性电池的优点_碳性电池有毒吗_松下碳性电池颜色区别
1.5v转5v的逆变器电路图
利用机器视觉系统解决涂胶检测问题
如何把握5G基础设施市场机遇?Qorvo IDP高性能解决方案总经理这么说
以租代售会是个好模式吗?
利用区块链技术打造保护用户数据的基本规则
老美为什么禁止携带电子产品登机,原因竟是有人企图用ipad制造炸弹
如何使用Raspberry Pi为船制作GPS导航系统
中昊光电商业照明光环境体验中心开业,带来“触手可及的好光”体验
如何对抗毫米波频段的路径损耗和穿透损耗?
浅析汽车座舱主芯片市场与产业格局
基于CMOS工艺的锂聚合物电池保护电路设计
10nm SRAM、10核心芯片亮相ISSCC