利用74HC595实现多位LED显示的方法

合集下载

利用74hc595配合单片机做流水灯

利用74hc595配合单片机做流水灯

利用74hc595配合单片机做流水灯:如有问题请加qq:97192511 验证信息:随风对于一个单片机学习者,硬件和软件是分不开的,本人刚毕业不久,对于单片机有一点个人心得,现在把这些分享给大家,希望大手子勿喷。

首先来介绍下74hc595这个芯片:芯片资料网上很多,这些我就不单独粘出来了,稍后我会说下这个芯片的使用方法以及时序图的理解。

上面这张图是我在做毕业设计时用到的原理图,其中Q0到Q7分别接LED,VCC接5V电源,GND接地P0.1,P0.2,P0,.3分别接51单片机的P0.1,P0.2,P0,.3。

这三个io口分别加了上拉电阻,关于上拉电阻,以后我会再讲解。

下面来看看这个芯片的各个引脚的功能:Q0--Q7: 八位并行输出端。

Q7': 级联输出端。

可以将它接下一个595的SI,由于这个LED只用到一个595,所以将其悬空。

DS: 串行数据输入端。

74595的控制端说明:MR(10脚): 低点平时将移位寄存器的数据清零。

SHCP(11脚):上升沿时数据寄存器的数据移位。

下降沿移位寄存器数据不变。

STCP(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。

OE(13脚): 高电平时禁止输出(高阻态)。

如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。

比通过数据端移位控制要省时省力。

74HC595各个引脚的功能:Q1~7 是并行数据输出口,即储寄存器的数据输出口Q7' 串行输出口,其应该接SPI总线的MISO接口STcp 存储寄存器的时钟脉冲输入口SHcp 移位寄存器的时钟脉冲输入口OE的非输出使能端MR的非芯片复位端Ds 串行数据输入端这幅图比较重要,是这个芯片的时序图,对于单片机来说,寄存器和时序图是非常重要的。

其中SHCP对应的是P0.3,STCP对应的是P0.2,DS对应的是P0.1.。

根据原理图,我们只用到了DS,STCP,SHCP三个引脚,下面我们来看看这三个引脚究竟怎么样工作,看时序图要从左往右慢慢看SHCP:该引脚一直处于上升下降状态,所以叫做时钟信号,箭头向上表示上升沿有效。

项目二 单片机控制8位发光二极管

项目二 单片机控制8位发光二极管

项目二单片机控制8位发光二极管简介:发光二极管是一种非常流行的电子元件,它可以将电能转化为光能,发出亮光。

在数码电子产品、时钟、闹钟、计数器等各种应用中,发光二极管都有广泛应用。

本项目使用单片机通过控制8位发光二极管,展示数字、字母和符号,实现了一个简单的显示。

原理:8位发光二极管有8个引脚分别对应8个数码,控制每个数码的发光需要控制对应的引脚输出高电平。

为了简化控制,本项目使用了74HC595串行移位寄存器,将单片机输出转换为8位并行输出,对应控制8个数码引脚。

移位寄存器通过SER输入端口读入单片机输出数据,一次读入8位数据后,通过数据锁存器将数据存储到寄存器中,依次将数据移位输出到输出端口Q0~Q7,控制对应的发光二极管发光。

由于数据在移位输出时是往高位输出,所以需要控制输出的数据是低位对应数码的数据,即从右至左依次控制每个数码的发光。

硬件设计:其中,8个数码阳极引脚通过限流电阻接入12V电源,共阳极电压为12V。

74HC595移位寄存器的VCC接入5V电源,OE、MR、SER、SRCLK、RCLK、Q0~Q7引脚接入单片机的对应引脚,其中:OE引脚为输出使能端,接地时输出有效。

MR引脚为同步复位端,接VCC时清零寄存器中存储的状态。

SER引脚为串行数据输入端,接单片机的输出引脚。

RCLK引脚为并行输出时钟端,连接与SRCLK相同的时钟引脚。

Q0~Q7引脚为并行输出端,连接到数码管对应的阳极引脚。

单片机的控制程序设计如下:duan数组为8位数码对应的7段LED表示值。

num数组为8位数码的控制数据。

延时函数delay()用于调节数字切换速度。

hc595_out()函数将num数组输出到74HC595移位寄存器。

hc595_sendbyte()函数每次将一个字节通过SER口向74HC595移位寄存器输出,并控制SRCLK时钟,将数据移位存储到寄存器中。

结论:通过单片机控制8位发光二极管的设计,可以实现数字、字母和符号的显示。

74HC595完整中文资料

74HC595完整中文资料

74HC595完整中文资料74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。

74HC595是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。

三态。

特点 8位串行输入 8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除 100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换 Remote contr ol holding register. 描述 595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准。

595是具有8位移位寄存器和一个存储器,三态输出功能。

移位寄存器和存储器是分别的时钟。

数据在SCHcp的上升沿输入,在STcp 的上升沿进入的存储寄存器中去。

如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。

移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。

CPD决定动态的能耗, PD=CPD×VCC×f1+∑(CL×VCC2×f0) F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压引脚说明符号引脚描述内部结构结合引脚说明就能很快理解 595的工作情况引脚功能表:管脚编号管脚名管脚定义功能1、2、3、4、5、6、7、15QA—QH 三态输出管脚8 GND 电源地9 SQH 串行数据输出管脚10 SCLR 移位寄存器清零端11 SCK 数据输入时钟线12 RCK 输出存储器锁存时钟线13 OE 输出使能14 SI 数据线15 VCC 电源端真值表:输入管脚输出管脚SI SCK SCLR RCK OEX X X X H QA—QH 输出高阻X X X X L QA—QH 输出有效值X X L X X 移位寄存器清零L 上沿H X X 移位寄存器存储LH 上沿H X X 移位寄存器存储HX 下沿H X X 移位寄存器状态保持X X X 上沿X 输出存储器锁存移位寄存器中的状态值X X X 下沿X 输出存储器状态保持第二步:目的:将位数据逐位移入74HC595,即数据串入方法:P1.2产生一上升沿,将P1.0上的数据移入74HC595中.从低到高。

(完整word版)74HC595程序应用(附原理图)

(完整word版)74HC595程序应用(附原理图)

74HC595芯片资料8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。

三态。

特点8位串行输入8位串行或并行输出存储状态寄存器,三种状态输出寄存器可以直接清除100MHz的移位频率输出能力并行输出,总线驱动串行输出;标准中等规模集成电路应用串行到并行的数据转换Remote control holding register。

#include<reg51.h〉#include <intrins.h〉#define uchar unsigned char#define uint unsigned intsbit stcp1=P2^2;sbit ds1=P2^1;sbit shcp1=P2^0;sbit stcp2=P2^5;sbit ds2=P2^4;sbit shcp2=P2^3;uchar code DAT[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴数码管显示码uchar code tab[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uchar code wei[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};void delay(uint ms){uint x,y;for(x=ms;x>0;x--)for(y=255;y>0;y--);}void QR0_5951(uchar num1){uchar j;for (j=0;j<8;j++){num1=num1〈<1 ;ds1=CY;shcp1=1;//上升沿发生移位// shcp1=0;}}void OUT_5951()//将移位寄存器内的数据锁存到输出寄存器并显示{stcp1=0;stcp1=1;//上升沿将数据送到输出锁存器stcp1=0;}void QR1_5952(uchar num2){uchar j;for (j=0;j<8;j++){num2=num2〈〈1 ;ds2=CY;shcp2=1;//上升沿发生移位// shcp2=0;}}void OUT_5952()//将移位寄存器内的数据锁存到输出寄存器并显示{stcp2=0;stcp2=1;//上升沿将数据送到输出锁存器stcp2=0;}void main(){uchar i;while(1){for(i=0;i<2;i++){QR0_5951(DAT[0]);OUT_5951();QR1_5952(wei[i]);OUT_5952();delay(1);}}}描述595是告诉的硅结构的CMOS器件,兼容低电压TTL电路,遵守JEDEC标准.595是具有8位移位寄存器和一个存储器,三态输出功能。

LED点阵实验报告.doc

LED点阵实验报告.doc

LED点阵实验报告.doc
一、实验原理
LED点阵是一种由LED灯组成的自发光点阵,将多个灯组合排列在一起,可以显示多
种字符、数字、图形等。

每个LED灯有两个引脚,一个接正极,一个接负极,灯的亮度和
颜色与流过它的电流有关。

因此,通过控制不同位置的电流大小,就可以实现点阵任意数
字或字符的显示。

二、实验器材
1、STM32F103C8T6单片机板
2、2个16pin DIP 74HC595N移位寄存器
3、1个常规电子元件组
4、300x3mm LED 点阵共阴(10x10)
三、实验过程
2. 然后按下当前电路连接 LED 点阵、74HC595 移位寄存器和 STM32 单片机板的方
法进行连接。

3. 编写程序,把字符的二进制代码转换成数字,然后发送到移位寄存器,以控制
LED 点阵显示字符。

4. 烧录程序到 STM32 单片机板上。

5. 连接电源以运行程序,控制LED点阵实现数字或字符的显示。

四、实验结果
LED 点阵成功实现了数字、大写和小写字母的显示。

在实验过程中,遇到了一些问题,例如通过微调电压来控制LED亮度的问题,以及在程序中输入字符的编码的问题。

但是,
通过多次尝试和修改,最终成功地解决了这些问题,得到了令人满意的结果。

LED点阵实验不仅可以增强学生对电子元件的了解,同时也可以提高学生的编程能力,使学生更好地理解并掌握单片机的相关知识。

在实验过程中,建议多做实验练习,不断探
索和尝试,更好地理解和掌握相关知识。

单片机74HC595程序应用(附原理图)

单片机74HC595程序应用(附原理图)
逻辑高电平移入移位寄存器状态0,包含所有的移位寄存器状态移入,例如,以前的状态6(内部Q6”)出现在串行输出位。
×

L
H
×
NC
QHale Waihona Puke ’移位寄存器的内容到达保持寄存器并从并口输出


L
H
×
Q6’
Qn’
移位寄存器内容移入,先前的移位寄存器的内容到达保持寄存器并输出。
H=高电平状态
L=低电平状态
↑=上升沿
↓=下降沿
stcp2=1;//上升沿将数据送到输出锁存器
stcp2=0;
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<2;i++)
{
QR0_5951(DAT[0]);
OUT_5951();
QR1_5952(wei[i]);
OUT_5952();
delay(1);
}
}
}
描述
595是告诉的硅结构的CMOS器件,
STCP
12
存储寄存器时钟输入
OE
13
输出有效(低电平)
DS
14
串行数据输入
VCC
16
电源
功能表
输入
输出
功能
SHCP
STCP
OE
MR
DS
Q7’
Qn
×
×
L

×
L
NC
MR为低电平时紧紧影响移位寄存器
×

L
L
×
L
L
空移位寄存器到输出寄存器
×

基于74hc595n的光立方

基于74hc595n的光立方

首先上595光立方的原理图:1.单片机部分:2.按键和ULN2803部分:3.74hc595n部分:8个的样子:4.灯座部分:64个的样子:与灯座相连的电阻,可根据自己的LED来选。

只要不超过LED的耐压值即可。

然后是参考的PCB图:芯片连接部分:先来讲解一下原理图:首先是51单片机的由晶振电路和复位电路组成的单片机的最小系统。

74hc595的8个输出脚与灯座相连,8个595的Ds、STcp、SHcp 接到一起,分别接到单片机的IO口。

8个595的MR直接接到VCC。

595的控制引脚OE分别与单片机IO口相连,控制595是否被选中,低电平有效。

然后介绍一下,如何焊接LED等的问题。

一种是长方体雾状的LED灯:焊接参考:/link?url=SXmoc9lSihpyBXd6qBQ0XsWZaoBV UykrQawWIJKRz4WmNMohW_Z1WrSQOGYdeIzNLNJdNcwueAAyzgiIE bPhQFBaMZJj-GwVZ79TZ1BVTQ7另一种是圆形灯:焊接参考:/view/fb02d823a8114431b90dd84d.html两种方式焊接都注意把灯的正极焊接到灯座上,灯座可以用圆形的排母或者普通的排针。

示例程序:#include "reg52.h"#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit stcp1=P3^6;sbit ds1=P3^5;sbit shcp1=P3^7;void delay(){int i,j;for(i=0;i<50;i++)for(j=0;j<1000;j++);}void QR0_5951(uchar num1){uchar j;for (j=0;j<8;j++){num1=num1<<1 ;ds1=CY;shcp1=1;//上升沿发生移位shcp1=0;}}void OUT_5951()//将移位寄存器内的数据锁存到输出寄存器并显示{stcp1=0;stcp1=1;//上升沿将数据送到输出锁存器stcp1=0;}void tuan1(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0xfe); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xfd); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xfb); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xf7); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xef); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xdf); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0xbf); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x7f); //yOUT_5951();delay();P2=0x00;}void tuan2(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0x01); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x02); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x04); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x08); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x10); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x20); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x40); //y OUT_5951();delay();P2=0xff; //z全部选中QR0_5951(0x80); //yOUT_5951();// delay();P2=0x00;}void tuan3(){P1=0x00; //x全部选中P2=0xff; //z全部选中QR0_5951(0x80); //y 高电平亮OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x40); //yOUT_5951();delay();P2=0xff; //z全部选中QR0_5951(0x20); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x10); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x08); //y OUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x04); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x02); //yOUT_5951();delay();P2=0x00;P2=0xff; //z全部选中QR0_5951(0x01); //yOUT_5951();delay();P2=0x00;}void tuan4(){P1=0x00; //x全部选中QR0_5951(0xff); //y全部选中OUT_5951();P2=0x01; //zdelay();P2=0x00;P2=0x02; //zdelay();// P2=0x00;P2=0x04; //zdelay();// P2=0x00;P2=0x08; //zdelay();/// P2=0x00;P2=0x10; //zdelay();// P2=0x00;P2=0x20; //zdelay();// P2=0x00;P2=0x40; //zdelay();// P2=0x00;P2=0x80; //z// delay();// P2=0x00;}void tuan5(){P1=0x00; //x全部选中QR0_5951(0xff); //y全部选中OUT_5951();P2=0x80; //zdelay();// P2=0x00;P2=0x40; //zdelay();// P2=0x00;P2=0x20; //zdelay();// P2=0x00;P2=0x10; //zdelay();/// P2=0x00;P2=0x08; //zdelay();// P2=0x00;P2=0x04; //zdelay();// P2=0x00;P2=0x02; //zdelay();// P2=0x00;P2=0x01; //zdelay();// P2=0x00;}void main(){P1=0x00; //xwhile(1){// tuan1();tuan2();tuan3();tuan4();tuan5();}}。

74ls595(含C程序)

74ls595(含C程序)
{ Buf[2*i] = ~Hz[word+32*i+Scan*2]; Buf[2*i+1] = ~Hz[word+32*i+1+Scan*2];
} } void SendOneLine() //写入数据到 595 { uchar i = 0; uchar inc; if(col<8) inc = 0; else inc = 1; for(i=0+inc;i<=7+inc;i++) //i<=2*要显示的字数-1
74LS595 外形图
______
QB--|1 16|--Vcc
QC--|2 15|--QA
QD--|3 14|--SI
QE--|4 13|--/G
QF--|5 12|--RCK
QG--|6 11|--SCK
QH--|7 10|--/SCLR
GND-|8
9|--QH'
|_____ |
74595 的数据端: QA--QH: 八位并行输出端,可以直接控制数码管的 8 个段。 QH': 级联输出端。我将它接下一个 595 的 SI 端。 SI: 串行数据输入端。
} } //********LED 显示数字,向 595 发送一个字节的数据,然后发送位选信号******* void wr7leds(void) { uchar i,wx; wx=0x01; //位选信号初始化 for(i=0;i<4;i++) //循环 4 次写 4 个数据 { wr595(LED_7SEG[i]); //传送显示数据 PORT_LED=~wx; //送位选信号 wx<<1; //位选信号左移,准备显示下一个数字 delay(50); //延时,(决定亮度和闪感) } } //**********主函数********** void mian() { while(1) { wr7leds();//向 74HC595 发送数据 } }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 引言
单片机应用系统中使用的显示器主要有LED和LCD两种。近年来也有用CRT显示的。前者价格低廉,
配置灵活,与单片机接口方便;后者可进行图形显示,但接口较复杂,成本也较高。LED(Ling Emiting Diode)
是发光二极管的缩写。实际应用非常普遍的是八段LED显示器。LED显示器在大型报时屏幕,银行利率显
示,城市霓虹灯建设中,得到广泛应用。在这些需要多位LED显示的场合,怎样实现系统稳定,价格低廉
的显示,成为决定其成本的关键所在。

2 74HC595实现LED静、动态显示基本原理
74HC595是美国国家半导体公司生产的通用移位寄存器芯片。并行输出端具有输出锁存功能。与单片
机连接简单方便,只须三个I/O口即可。而且通过芯片的Q7引脚和SER引脚,可以级联。而且价格低廉,
每片单价为1.5元左右.
2.1 静态显示

每位LED显示器段选线和74HC595的并行输出端相连,每一位可以独立显示(见图1)。在同一时间里,
每一位显示的字符可以各不相同(每一位由一个74HC595的并行输出口控制段选码)。
N位LED显示要求N个74HC595芯片及N+3条I/O口线,占用资源较多,而且成本较高。这对于多位LED
显示很不利。
2.2 动态显示
在多位LED显示时,为了简化电路,降低成本,节省系统资源,将所有的N位段选码并联在一起,由
一片74HC595控制(见图2)。由于所有LED的段选码皆由一个74HC595并行输出口控制,因此,在每一瞬
间,N位LED会显示相同的字符。想要每位显示不同的字符,就必须采用扫描的方法,即在每一瞬间只使
用一位显示字符。在此瞬间,74HC595并行输出口输出相应字符段选码,而位选则控制I/O口在该显示位
送入选通电平,以保证该位显示相应字符。如此轮流,使每位分时显示该位应显示字符。由于74HC595具
有锁存功能,而且串行输入段选码需要一定时间,因此,不需要延时,即可形成视觉暂留效果。
N位LED显示时,只需要一片74HC595即可完成,成本最低。但是,此种方法的最大弱点就是当LED的位
数大于12位时,出现闪烁现象,这是所有动态LED显示方式共同的弱点。

3 多位LED显示方法的实现
图3 多位LED动态显示驱动电路连线图
为实现24位或更多位LED显示,本文提出了一种全新的方法。此方法结合了动态和静态显示的优点,
可以说是两者的结合。连线图如图3所示。段选码由三片74HC595控制,段选数据由74HC595的SER引脚
串行输入,由于输出使能时钟RCLK并接在一起,因此,三片74HC595并行输出端同时输出。而三个LED位
选信号也并接在一起,因此,一次可以同时点亮三位LED。此过程类似于静态显示。每片74HC595并行输
出端并接8位LED,用于扫描输出,此过程类似于动态扫描过程。此方法运用3片74HC595,n条位选信号,
即可实现3n位LED显示。成本低廉,而且节省资源。此种方法实现多位LED显示程序框图为图4所示,MCU
为89S52。

示例程序如下(24位LED显示):
4 结论
实践证明,此多位LED显示方法性能稳定,如再级联一片74HC595,在不需要增加I/O口线的情况下,
即可实现32位LED显示。笔者做过48位LED显示,应稳定可靠。

相关文档
最新文档