基于74hc595和74hc138的点阵显示.docx

上传人:b****7 文档编号:8978478 上传时间:2023-02-02 格式:DOCX 页数:18 大小:290.35KB
下载 相关 举报
基于74hc595和74hc138的点阵显示.docx_第1页
第1页 / 共18页
基于74hc595和74hc138的点阵显示.docx_第2页
第2页 / 共18页
基于74hc595和74hc138的点阵显示.docx_第3页
第3页 / 共18页
基于74hc595和74hc138的点阵显示.docx_第4页
第4页 / 共18页
基于74hc595和74hc138的点阵显示.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于74hc595和74hc138的点阵显示.docx

《基于74hc595和74hc138的点阵显示.docx》由会员分享,可在线阅读,更多相关《基于74hc595和74hc138的点阵显示.docx(18页珍藏版)》请在冰豆网上搜索。

基于74hc595和74hc138的点阵显示.docx

基于74hc595和74hc138的点阵显示

基于74hc595和74hc138的点阵显示

基于74hc595和74hc138的16x40点阵显示

作者:

廖基鑫桂林电子科技大学一、电路原理图。

(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写一个字节的数据

voidwrite_595(ucharDATA)//向595写一个字节的数据{

uchari;

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介绍。

管脚及电路接法。

五、ULN2003介绍。

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)6080100VVCEO集电极-发射极电压(IB=0)6080100VVEBO发射极-基极电压(IC=0)5V

IC集电极电流5A

ICM集电极峰值电流8A

IB基极电流0.1A

Ptot耗散功率Tcase?

25?

65W

(2)ULN2003介绍。

ULN2003是一个单片高电压、高电流的达林顿晶体管阵列集成电路。

它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。

单个达林顿对的集电极电流是500mA。

达林顿管并联可以承受更大的电流。

此电路主要应用于继电器驱动器,字锤驱动器,灯驱动器,显示驱动器(LED气体放电),线路驱动器和逻辑缓冲器。

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

附录:

原理图

源程序:

//16x64点阵程序及滚动效果视频

#include

#defineucharunsignedchar

#defineuintunsignedint

#definehangP1//行扫描接在P1口

sbitSI=P2^3;

sbitSCK=P2^0;

sbitOE=P2^2;

sbitRCK=P2^1;

uintcounter;

ucharflag;

voiddelay_ms(ucharz)//延时0.5秒

{

uchari,j;

for(i=z;i>0;i--)

for(j=120;j>0;j--);

}

ucharcodedisplay[][32]={

/*--文字:

好--*/

/*--宋体12;此字体下对应的点阵为:

宽x高=16x16--*/

0x10,0x00,0x11,0xFC,0x10,0x08,0x10,0x10,0xFC,0x20,0x24,0x20,0x24,0x20,0x27,0xFE,0x44,0x20,0x64,0x2

0,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,0x2

0,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,0xF

E,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,0x0

4,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,0x8

0,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,0x8

0,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,0x2

4,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,0x

00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x00,0x00};

voidwrite_595(ucharDATA)//向595写一个字节的数据

{

uchari;

for(i=0;i<8;i++)

{

SI=(~DATA)&0x01;

SCK=1;

SCK=0;

DATA=DATA>>1;

}

}

voidmain()//主函数

{

uchari,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)//停留一秒

{

ucharj;

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)//停留一秒

{

ucharj;

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);

}

}

}

voidtimer0()interrupt1//中断函数

{

counter++;

if(counter==20)//1秒设置

{

counter=0;

flag=0;

}

TH0=(65535-50000)/256;

TL0=(65536-50000)%256;}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1