0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

2oON_changxuemc 来源:未知 作者:李倩 2018-04-27 15:38 次阅读

一、 电路原理图。

(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<8;i++)

{

SI=(~DATA)&0x01;

SCK=1;

SCK=0;

DATA=DATA>>1;

}

}

2.向多个595写一个字节的数据

9 脚SQH 位串行数据输出管脚 将多个595的数据由9脚传至下一个595,全部写入后在打开输出存储器锁存时钟线

for(i=0;i<16;i++) //字从下往上滚动出现

{

k=1;

for(j=i+1;j>0;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<8;i++)

{

SI=(~DATA)&0x01;

SCK=1;

SCK=0;

DATA=DATA>>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;i<16;i++) //字从下往上滚动出现

{

k=1;

for(j=i+1;j>0;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;j<16;j++)

{

write_595(display[7][j*2+1]);

write_595(display[7][j*2]);

write_595(display[6][j*2+1]);

write_595(display[6][j*2]);

write_595(display[5][j*2+1]);

write_595(display[5][j*2]);

write_595(display[4][j*2+1]);

write_595(display[4][j*2]);

hang=j;

RCK=1;RCK=0;

}

}

TR0=0;

for(i=16;i>0;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;i<16;i++) //下四个字滚动出现在显示区

{

k=1;

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=16-j;

RCK=1;RCK=0;

}

delay_ms(20);

}

TR0=1;flag=1;

while(flag) //停留一秒

{

uchar j;

for(j=0;j<16;j++)

{

write_595(display[3][j*2+1]);

write_595(display[3][j*2]);

write_595(display[2][j*2+1]);

write_595(display[2][j*2]);

write_595(display[1][j*2+1]);

write_595(display[1][j*2]);

write_595(display[0][j*2+1]);

write_595(display[0][j*2]);

hang=j;

RCK=1;RCK=0;

}

}

TR0=0;

for(i=16;i>0;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;

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 译码器
    +关注

    关注

    4

    文章

    310

    浏览量

    50243
  • 74HC595
    +关注

    关注

    7

    文章

    191

    浏览量

    30745
  • 74HC138
    +关注

    关注

    5

    文章

    49

    浏览量

    20818

原文标题:基于74hc595和74hc138的16x40点阵显示

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    74HC595输出端可以直接接到ULN2003的输入端口吗

    51单片机的IO口不够用了,就想用74HC595扩展一下IO口,把595的输出端直接接到达林顿ULN2003上可以吗?
    发表于 01-08 23:47

    74HC595驱动LED点阵或数码管的正确用法 精选资料推荐

    这几天有些时间想做LED点阵玩玩,所以需要学习74HC595芯片,上网找了几个例程和关于74HC595的几篇应用,照猫画虎实际操作一下,哪知根本不可行,教程都是错误的。于是自己潜心研究
    发表于 07-22 08:49

    74HC595芯片的作用是什么

    74HC595是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵驱动芯片, 使用74HC595
    发表于 07-22 07:05

    74HC595驱动LED点阵或数码管的正确用法是什么?

    74HC595正确的工作原理是什么?74HC595驱动LED点阵或数码管的正确用法是什么?
    发表于 07-23 12:34

    怎样去设计一种8×8LED点阵电路

    怎样去设计一种8×8LED点阵电路?74HC595芯片有哪些管脚?其功能是什么?开发板1602液晶接口电路该怎样去设计?
    发表于 08-06 07:05

    如何使用三片74HC595对一个8X8双色点阵进行控制呢

    74HC595是什么?74HC595串行转并行芯片各引脚的作用是什么?如何使用三片74HC595对一个8X8双色点阵进行控制呢?
    发表于 10-25 09:04

    使用移位寄存器74HC595ULN2003的7段屏蔽2,3英寸

    描述7段屏蔽2,3英寸7 段屏蔽 2,3 使用移位寄存器 74HC595ULN2003pcb
    发表于 09-09 06:04

    [图文]74HC595驱动8LED电路图

    74HC595驱动8LED电路图
    发表于 04-16 17:59 5310次阅读
    [图文]<b class='flag-5'>74HC595</b><b class='flag-5'>驱动</b><b class='flag-5'>8</b>个<b class='flag-5'>LED</b>电路图

    74HC595驱动8LED电路

    74HC595驱动8LED电路
    发表于 02-25 15:43 7931次阅读
    <b class='flag-5'>74HC595</b><b class='flag-5'>驱动</b><b class='flag-5'>8</b>个<b class='flag-5'>LED</b>电路

    74HC595驱动led单色点阵程序

    74HC595、138、4953等做的单色模组驱动程序
    发表于 07-24 16:10 2w次阅读

    基于单片机实现74HC595通过ULN2003驱动2路步进电机

    基于单片机实现74HC595通过ULN2003驱动2路步进电机
    发表于 01-06 14:30 225次下载

    基于单片机74HC595驱动点阵

    基于单片机74HC595驱动点阵程序,喜欢的朋友下载来学习。
    发表于 01-06 14:31 130次下载

    一种用 74hc138 和 74hc595 驱动 8x8 点阵显示技术

    用STC89C52,74hc138驱动列,74hc595驱动行,8x8点阵显示问题。
    发表于 05-30 10:18 1w次阅读
    一种用 <b class='flag-5'>74hc</b>138 和 <b class='flag-5'>74hc595</b> <b class='flag-5'>驱动</b> <b class='flag-5'>8x8</b> <b class='flag-5'>点阵</b>显示技术

    C51单片机学习——8×8LED点阵学习笔记

    C51单片机学习——8×8LED点阵学习笔记目录C51单片机学习——8×8LED
    发表于 11-14 11:21 45次下载
    C51单片机学习——<b class='flag-5'>8</b>×<b class='flag-5'>8LED</b><b class='flag-5'>点阵</b><b class='flag-5'>屏</b>学习笔记

    7段屏蔽使用移位寄存器74HC595ULN2003

    电子发烧友网站提供《7段屏蔽使用移位寄存器74HC595ULN2003.zip》资料免费下载
    发表于 08-18 15:17 2次下载
    7段屏蔽使用移位寄存器<b class='flag-5'>74HC595</b>和<b class='flag-5'>ULN2003</b>