欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

电子点阵设计课程的课堂记录与笔记

最编程 2024-08-05 07:05:56
...

一、8*8点阵显示图形所用主要器件

1.1 8*8点阵

(1)内部结构

点阵存在两种不同的类型:

①左图为(行)共阳;

②右图为(行)共阴。

工艺和使用上二者无差别,需要在使用前进行测试确认其属性。

在后续取子模时,如果行接的是二极管的阳极,列接的是二极管的阴极,则采用行扫描时列取模方式即为阳码,采用列扫描时行的取模方式即为阴码。对应的若行接二极管阴极,列接二极管阳极,则采用行扫描时取模方式为阴码,采用列扫描时取模方式为阳码。

 

 

 

 

(2)8*8点阵工作原理及控制

8*8点阵显示图形实质上是利用行列分别输入的01信号,选通某一确定节点上的发光二极管,进行发光。

以行共阳LED点阵为例,只要其对应的RO、CO轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则只需ROW(1)= 1,COL(1)= 0,即9脚给高电平、13脚给低电平。

图中POS1-8对应8*8点阵的8的阳极接口,NEG1-8对应8*8点阵的8的阴极接口。

阳极由时钟电路给入扫描信号,阴极连接74HC595输出的8位信号,在每一扫描周期内进行选通。

 

(3)8*8LED点阵扩展为16*16LED点阵

显然,需要4片8*8点阵屏进行拼装。

同一列2片8*8点阵屏,阴极并联;同一行2片8*8点阵屏,阳极并联。

 

1.2 74LS138

1)概述

74LS138 为3线-8线译码器,共有74LS138D74LS138N两种线路结构型式。74LS138D为军用,74LS138N为民用。

2)功能简介

当一个选通端(E1)为高电平,另两个选通端(/E2)和(/E3)为低电平时,可将地址端(A0、A1、A2)的二进制编码Y0至Y7对应的输出端以低电平译出。(即输出为Y0至Y7的非)比如:A2A1A0=110时,则Y6输出端输出低电平信号

利用 E1、/E2和/E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。

若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器

可用在8086的译码电路中,扩展内存

3)基本参数

 

 

 

 

 

 

(4)引脚说明

A0~A2:地址输入端

E1:选通端

/E2、/E3:选通端(低电平有效)

Y0~Y7:输出端(低电平有效)

VCC:电源正

GND:地

A0~A2对应Y0——Y7:A0,A1,A2以二进制形式输入,然后转换成十进制,对应相应Y的序号输出低电平,其他均为高电平。

5)真值表

输入

输出

E1

/E2

/E3

A2

A1

A0

/Y0

/Y1

/Y2

/Y3

/Y4

/Y5

/Y6

/Y7

×

1

×

×

×

×

1

1

1

1

1

1

1

1

×

×

1

×

×

×

1

1

1

1

1

1

1

1

0

×

×

×

×

×

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

1

1

0

1

1

1

1

1

1

1

0

0

0

1

0

1

1

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

1

1

1

1

1

0

0

1

0

0

1

1

1

1

0

1

1

1

1

0

0

1

0

1

1

1

1

1

1

0

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

1

0

0

1

1

1

1

1

1

1

1

1

1

0

 

1.3 74LS161

1)概述

4HC161和74LS161都是常用的四位二进制可预置的同步加法计数器,74HC161是CMOS型,74LS161是TTL型。它可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。

2)功能简介

⑧ 异步清零功能:当/CLR=0时,不论有无时钟脉冲CLK和其他信号输入,计数器被清零,即QD~QA=0000。

⑨ 同步并行置数功能:当/CLR=1,/LD=0时,在输入时钟脉冲CLK上升沿的作用下,并行输入的数据dcba被置入计数器,即QD~QA=DBCA。

⑩ 计数功能:当/LD=/CLR=ENP=ENT=1,当CLK端输入计数脉冲时,计数器进行二进制加法计数

⑪ 保持功能:当/LD=/CLR=1时,且ENP和ENT中有“0”时,则计数器保持原来状态不变。

3)基本参数

 

4)引脚说明

A~D并行输入

ENP计数启用并行输入

ENT计数启用涓流输入

CLK时钟输入

/LD为同步置数控制端

/CLR异步清零控制端

QA~QD:并行输出

RCO:进位输出输出

(5)真值表

/CLR

/LD

ENT

ENP

工作模式

L

X

X

X

清零

H

L

X

X

置数

H

H

H

H

计数

H

H

L

X

保持(不变)

H

H

X

L

保持(不变)

 

1.4 AT28C64B高性能EEPROM

1)概述

AT28C64B是一个高性能的电可擦除和可编程只读只读存储器( EEPROM)中。它的内存64K是由8位,8,192字。与Atmel先进的非易失性CMOS技术,该器件还提供制造访问时间为150 ns的只有220毫瓦的功耗。当该装置是取消选择,在CMOS待机电流小于100微安。

2)特点及参数

快速读取访问时间:150纳秒

l 自动页写操作

- 内部地址和数据锁存为64字节

l 快速写周期时间

- 页写周期时间: 10 ms最大(标准),2 ms最大(选项)

- 1到64字节页写操作

l 低功耗

- 40毫安工作电流

- 100 μA CMOS待机电流

l 硬件和软件数据保护

l 数据轮询和切换位写检测结束

高可靠性的CMOS技术

- 耐力: 100,000次

- 数据保存:10年单5V±10%供应

l CMOS和TTL兼容输入和输出

l JEDEC批准字节宽引脚

l 工业温度范围

绿色(无铅/无卤化物)的包装选项

3)引脚结构

 

AO- A12:地址

CE:芯片使能

OE:输出使能

WE:写使能

I/00- I/07:数据输入输出

NC:无连接

DC:不连接

1.5 Max7219多位LED显示驱动器

1)概述

MAX7219 是美国MAXIM 公司推出的多位LED 显示驱动器,采用3 线串行接口传送数据,可直接与单片机接口连接,用户能方便修改其内部参数,以实现多位LED 显示。它内含硬件动态扫描电路、BCD译码器、段驱动器和位驱动器。此外,其内部还含有8X8 位静态RAM,用于存放8 个数字的显示数据。显然,它可直接驱动64 段LED点阵显示器。当多片MAX7219 级联时,可控制更多的LED 点阵显示器。显示的数据通过单片机数据处理后,送给MAX7219 显示。

2)功能简介

一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微处理器相连,只需一个外接电阻即可设置所有LED的段电流。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选通线)控制更多的数码管显示。

3)关键特性

l 10MHz串行接口

独立的LED段控制

译码/非译码位选择

l 150µA低功耗关断(数据保持)

l 数字和模拟亮度控制

l 上电时处于全灭状态

驱动共阴极LED显示器

段驱动器的摆率限制功能有助于降低EMI (MAX7221)

l SPI、QSPI、MICROWIRE串行接口(MAX7221)

l 24引脚DIP和SO封装

4)外部引脚分配和功能及内部结构

① 外部引脚分配

 

DIN:串行数据输入端

DOUT:串行数据输出端,用于级连扩展

LOAD/CS:数据装载信号输入

CLK:移位时钟脉冲输入

DIG0~DIG7:8位LED位选线,从共阴极LED中吸入电流

SEGA~SEGG:7段驱动

SEG DP:小数点驱动

ISET:硬件亮度调节端

V+:正电源

GND:接地

② 内部结构

5)串行数据格式

16位地址/数据移位寄存器接收串行数据,实现串/并变换。16位数据含义如下:

D7~D0:写入内部RAM和功能寄存器的数据。
D8~D11:内部RAM和功能寄存器地址。
D12~D15:无定义。
地址译码器是一个4~16线译码器,用于选择数据存放单元,在LOAD端口信号作用下,将接收数据送入指定单元;

8字节双端口静态存储器存放接收数据和提供动态显示数据;

B译码和不译码电路对RAM数据进行BCD译码或直接送显示;

段码电流参考电路、亮度脉冲产生调制器实现对显示器的亮度控制,段码电流参考电路由硬件调节显示器亮度;动态扫描控制器实现由硬件控制动态扫描显示。

LED段/位驱动器提供显示器的1段和1位点亮时的电流。

(6)可寻址的数据寄存器和控制寄存器

内部RAM地址01 ~ 08H分别对应于DIGO一DIG7。

译码方式寄存器(地址09H):该寄存器的8位二进制数的各位分别控制8个LED显示器的译码方式。当高电平时,选择BCD-B译码模式,当低电平时选择不译码模式(即送来数据为字型码)。

扫描界限寄存器(地址0BH):该寄存器中DO ~ D3位数据设定值为0 ~ 7H,设定值表示显示器动态扫描个数位1 ~ 8。

④ 亮度控制寄存器(0AH):共有16级可选择,用于设置LED的显示亮度,从0xX0~0xXF

停机寄存器(地址0CH):D0=0时,MAX721 处于停机状态;当D0=1时,MAX7219处于正常工作状态。

显示测试寄存器(地址0FH):当D0=0时,MAX7219 按设定模式正常工作;D0=1时,MAX7219处于测试状态。在该状态下,不管MAX7219处于什么模式,全部LED将按最大亮度显示。

(7)读写时序

MAX7129是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。

MAX7129的控制字格式如下:

D15

D14

D13

D12

D11

D10

D9

D8

D7

(MSB)

D6

D5

D4

D3

D2

D1

D0

(LSB)

X

X

X

X

地址Address

数据Data

如图,工作时,MAX7219规定一次接收16位数据,在接收的16位数据中:D15~D12可以与操作无关,可以任意写入,D11~D8决定所选通的内部寄存器地址,D7~D0为待显示数据或是初始化控制字。在CLK脉冲作用下,DIN的数据以串行方式依次移入内部16位寄存器,然后在一个LOAD上升沿作用下,锁存到内部的寄存器中。注意在接收时,先接收最高位D16,最后是D0,因此,在程序发送时必须先送高位数据,在循环移位。工作时序图见下图:

由于51是8位单片机故需要分两次来送数据。

二、8*8点阵显示爱心原理

2.1LED点阵扫描显示方式

LED一般采用扫描式显示,主要分为三种方式:点扫描、行扫描、列扫描。

充分利用人眼的暂留效应,实现动画效果,同时扫描时应注意亮灯留存时间,即扫描的间隔,一般控制于0.05至0.2秒水平。

详细实现如下:

(1)点扫描

逐点进行信号输入,效率低,不常用。

(2)行扫描

行扫描即是先让第一行全部置于有效位,再送对应亮灯位置所需的列码。随后按按一定扫描间隔,用同样的方法依次显示所有行,8行显示完成即完成一次完整的行扫描。

(3)列扫描

列扫描即是先让第一列全部置于有效位,再送对应亮灯位置所需的列码。随后按按一定扫描间隔,用同样的方法依次显示所有列,8列显示完成即完成一次完整的列扫描。

2.2使用MAX7219驱动LED点阵接线方式电路原理图

 

行扫描模式

2.3使用74LS13874LS161AT28C64驱动LED点阵接线方式电路原理图

ROM从IO0-IO7输出8位二进制码,到8*8点阵的NEGDP、NEG A-NEG G,驱动点阵阳极。3-8译码器输出,进行逐行给二极管阴极0电平的行扫描模式。

三、8*8点阵显示爱心项目实施

3.1使用MAX7219驱动LED点阵

(1)接线方式

 

 

 

(2)程序实现流程图

 

 

 

(3)项目代码

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

 

//定义MAX7219端口

sbit Max7219_pinCLK = P2^2;

sbit Max7219_pinCS = P2^1;

sbit Max7219_pinDIN = P2^0;

uchar code disp1[8]={0x66,0x99,0x81,0x81,0x42,0x24,0x18,0x00};//爱心

 

//设定延迟时间,单位毫秒

void Delay_xms(uint x)

{

uint i,j;

for(i=0;i<x;i++) //两层空循环

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

;

 

 

}

 

//向Max7219(U3)写入字节

void Write_Max7219_byte(uchar DATA)

{

uchar i;

Max7219_pinCS = 0; //LOAD/CS引脚低电平,数据写入使能

for(i=8;i>=1;i--)

{

Max7219_pinCLK = 0; //移位时钟低电平输入

Max7219_pinDIN = DATA&0X80; //数据输入与80相与,取最高位

DATA = DATA<<1;

Max7219_pinCLK = 1; //移位时钟脉冲高电平输入,将数据写入内部存储器

}

}

 

//向Max7219写入数据

void Write_Max7219(uchar address,uchar dat)

{

Max7219_pinCS = 0; //LOAD/CS引脚低电平,数据写入使能

Write_Max7219_byte(address);//写入地址

Write_Max7219_byte(dat); //写入数据

Max7219_pinCS = 1; //LOAD/CS引脚高电平,数据装载使能

}

 

//初始化Max7219

void Init_Max7219(void)

{

Write_Max7219(0x09,0x00); //初始化译码寄存器,低电平选择不译码模式

Write_Max7219(0x0a,0x03); //初始化亮度控制寄存器,选择03档亮度(0-16档可选)

Write_Max7219(0x0b,0x07); //初始化扫描界限寄存器,输入07表示动态扫描个数为8

Write_Max7219(0x0c,0x01); //初始化停机寄存器,输入01,MAX7219处于正常工作状态

Write_Max7219(0x0f,0x00); //初始化显示测试寄存器,输入0,按设定模式正常工作

}

 

//主函数

void main(void)

{

uchar i;

Delay_xms(50); //延迟50ms

Init_Max7219(); //初始化Max7219

for(i=1;i<9;i++) //循环扫描显示

Write_Max7219(i,disp1[i-1]); //在i行输入存储爱心点阵对应行的数据

(4)实验结果

 

 

 

3.2使用74LS13874LS161AT27C64等驱动点阵的基础电路Proteus仿真结果

 

 

 

3.3使用74LS13874LS161AT28C64驱动LED点阵

1)接线方式

 

 

 

2)程序实现流程图

 

 

 

3)项目代码

ROM模拟部分进行图形的二进制数组定义

...

code byte memory[8] = { 0x66,0x99,0x81,0x81,0x42,0x24,0x18,0x00 };

 

定义写字节函数,并调用模拟ROM函数实现像物理载体MAX7219写数据

//向Max7219写入字节

void Write_Max7219_byte(byte DATA)

{

byte i;

Max7219_CS = 0;

for(i=8;i>=1;i--)

{

Max7219_CLK = 0;

Max7219_DIN = DATA&0X80;

DATA = DATA<<1;

Max7219_CLK = 1;

}

}

 

//向Max7219写入数据 地址限制在了8位 读者可自行调整

void Write_Max7219(byte address, byte dat)

{

Max7219_CS = 0;

Write_Max7219_byte(address);

Write_Max7219_byte(dat);

Max7219_CS = 1;

}

void Init_Max7219(void) //初始化Max7219芯片

{

Write_Max7219(0x09,0x00);

Write_Max7219(0x0a,0x03);

Write_Max7219(0x0b,0x07);

Write_Max7219(0x0c,0x01);

Write_Max7219(0x0f,0x00);

}

 

③ 主函数实现输出图形

void main(void)

{

byte i;

Delay(50);

Init_Max7219();

for(i=1;i<9;i++) //这里的示例语句将向点阵输出一次显示 如果想要一直显示则应该将其放入真循环

{

Write_Max7219(i,GetRomData(i - 1));

}

}

4)实验结果

 

四.用单片机模拟ROM的方法

4.1简介 

ROM芯片,是数字电路的重要组成成分之一。想要在电路中读取储存好的数据,就必须要用到相应的ROM芯片。ROM芯片的规格和型号极其繁多,再加上有些ROM芯片难以获取,甚至于某些芯片早已停产,无论是测试还是使用时都很不方便。因此可以采取使用单片机代替ROM芯片的办法,一是因为常见的单片机,例如C51,C52等系列产量很大,容易获取;二是仅需要修改程序就可适用于各种场景;三是可以在无储存器芯片的情况下进行预先的电路测试,方便调试等。下面将会以C52系列的STC89C52单片机模拟AT28C64EEROM芯片为例,讲述如何使用单片机进行ROM芯片的模拟和替代。

4.2模拟ROM方法

(1) 原理简介

单片机模拟ROM芯片的原理是,使得ROM芯片的引脚输入与单片机对应的引脚一致时,储存的数据一致,输出的数据相一致。但单片机的内部的RAM通常仅用于存储程序运行时的数据,通常规格较小。因此用于模拟ROM芯片所用到的单片机的储存空间,其实是单片机的ROM部分。本质上来讲,这里使用单片机来模拟的是一块连续的储存空间,而不是ROM芯片的各种物理特性,例如擦除方式等,单片机的ROM部分在生产时实际上使用的是Flash器件。

注意ROM芯片的控制位对输出数据的影响。注意ROM芯片OE等控制位发生作用的电平高低,以及这些控制位之间决定芯片当前状态的优先级。这一点需要在程序中写入相应的控制流。另外当ROM芯片的引脚处于高阻态时,应当不能向引脚内输入数据。

关于ROM芯片所附带的其他各种功能,例如保证数据安全性的检测,防止数据信号波动等功能,不在本题目的讨论范围内,因此不加赘述。

(2) 模拟方法

在这里我们使用C52系列的单片机,具体型号为STC89C52,模拟AT28C64 EEROM芯片储存数据。利用程序(见后文)使得单片机的功能与ROM芯片相一致。将所需的程序和数据写入单片机内。当单片机工作时,按照映射的引脚,读取CE,OE等控制位的信号,当处于相应的状态时,单片机将读取地址引脚上的数据,然后将将其在程序预留的空间中对应地址的数据读出,将其输出到I/O引脚上。这里的程序将AT28C64芯片的地址接口和控制位映射到了STC89C52单片机的P0,P2端口上;将AT28C64芯片的输入输出接口映射到了单片机的P1端口上。程序启动之后,单片机将会持续地读入控制位的信号。

当单片机的P2:5引脚,即模拟的CE引脚接入高电平时,P1端口,即模拟的I/O端口将处于高阻态,无法输入输出数据;当P2:6即模拟OE处于低电平,或者P2:7模拟WE处于高电平时,单片机将会向P1即模拟的I/O端口输出数据,输出的数据来自于模拟地址引脚上信号决定的储存位置。至此,完成了对ROM芯片数据存储功能的模拟。

实际操作中有一些地方需要注意。首先,未接入的端口是无法确定其电平的高低的,所以不用的端口应该统一接到低电平处,否则可能产生错误。例如,在不使用高地址位时,如果不将其接到低电平处,会使得程序读取到错误的地址,从而输出错误的数据。

其次,单片机模拟的ROM,是处于不断刷新的状态之中的。每次循环程序所用的时间决定了刷新的频率,这一频率与读取ROM的单片机不尽相同,从而使得信号不同步,某些时候需要进行延时的调整。所以对ROM的这一模拟并不能精确地反映ROM工作的状态。一般情况下单片机调用自身的ROM即可。

五.AT28C64芯片

5.1基本原理

AT28C64是一种高性能的,可电擦除的编程只读储存器,即EEROM芯片。它总储存空间为64Kbit,按照8K字,每个字8bit的方式进行组织。该芯片可提供150ns内的高速存取,工作功率低至220mW。当片选信号为高电位,芯片待机时的电流小于100uA。

该芯片有13根地址线,数据宽度为8bit,读取方式类似于静态随机存取储存器,即SROM,不需要任何外加的元器件,在写入前自动擦除。当CE和OE为低电平,WE为高电平时,由地址引脚上数据决定的储存单元中的数据被读出。无论CE或OE哪一个控制位为高电平时,输出引脚上都呈现为高阻状态。这种双信号控制机制给设计者防止总线冲突带来灵活性。

CE信号为芯片选择信号,实际上也作为电源控制信号。当其为高电平时,储存器芯片进入低功耗待机状态,这时储存器芯片呈现出高阻状态,并与OE信号无关。

为了确保数据的完整性与安全性,特别是在上电和掉电过程中,AT28C64采用了以下方法实现数据保护:

利用内部检测电路对电源电压Vcc进行检测。当芯片检测到的电压低于规定的阈值时,芯片将禁止内部非易失性程序初始化。芯片内部有一个信号滤波电路,可以防止信号波动。

在上电和掉电期间都可以通过保持WE或者CE为高电平,或者OE为低电平来*字节写入周期。

此外,AT28C64EEROM芯片还有识别查询数据位完成写入周期的功能,芯片识别功能,全片擦除功能等,但这些功能与本文的目标关系不大,因此不赘述。

5.2  AT28C64引脚图

 

 

 

5.3引脚功能说明

引脚

功能

A0-A12

地址线

CE

片选信号,低电平有效

OE

输出信号,低电平有效

WE

写入信号,低电平有效

I/O0- I/O7

输入输出线

VCC

接电源

GND

接地

NC

无连接

 

六.程序代码

6.1 ROM模拟部分

#include<stdio.h>

#include<reg52.h>

#define byte unsigned char

#define uint unsigned int

 

sbit A0=P0^0; //定义地址线

sbit A1=P0^1;

sbit A2=P0^2;

sbit A3=P0^3;

sbit A4=P0^4;

sbit A5=P0^5;

sbit A6=P0^6;

sbit A7=P0^7;

sbit A8=P2^0;

sbit A9=P2^1;

sbit A10=P2^2;

sbit A11=P2^3;

sbit A12=P2^4;

 

sbit _CE = P2^5; //定义片选信号

sbit _OE = P2^6; //定义输出信号

sbit _WE = P2^7; //定义写入信号

 

sbit D0=P1^0; //定义数据线

sbit D1=P1^1;

sbit D2=P1^2;

sbit D3=P1^3;

sbit D4=P1^4;

sbit D5=P1^5;

sbit D6=P1^6;

sbit D7=P1^7;

 

code byte memory[8] = { 0x66,0x99,0x81,0x81,0x42,0x24,0x18,0x00 }; //在程序中定义ROM需要写入的内容 //注意写入内容的长度,读取时注意读取数组的界限以防越界

//这里的示例用8个字节长度的内容

 

uint GetAddress() //从地址线上读取地址

{

uint A = P0; //这里的示例因为内容的长度较短,只使用低8位的地址

/*

uint A = P0;

uint t = P2;

t <<= 3; //高位地址只取5位

t >>= 3;

A += t;*/ //读者可以自行根据需要用到的地址线长度,重写程序和用到的引脚来改变读取的地址长度

return A;

}

 

void Refresh()

{

uint A = GetAddress();

if(_CE) //片选信号为高电平时不输出内容

{

return;

}

if(!_OE || _WE) //OE信号为高电平时,向数据端口输出数据

{

 P1 = memory[A];

}

}

 

void main()

{

while(1) //单片机不断刷新以更新数据状态

{

Refresh();

}

}

 

6.2时序与逻辑

 

 

 

 

时序图以地址0-5的数据为例:

由于单片机模拟ROM的刷新频率远高于电路中地址段的时钟信号频率,因此可以认为数据的输出变化是即时的。

当地址端口数据发生变化时,只有当CEOE信号同时处于低电平时,模拟ROM才会接受地址端口上的数据。

随即模拟ROM将会读取地址线上的数据,将其作为地址,单片机程序将会读取代码中写入储存空间相应地址的数据然后将其输出到数据端口。

 

七.74HC595芯片介绍

7.1基本原理

74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。

7.2 74HC595芯片引脚图

如图7.1所示为74HC595芯片的引脚图。

 

 

 

7.3 74HC595引脚功能说明

符号

引脚

描述

Q0-Q7

第15脚,第1-7脚

8位并行数据输出

GND

第8脚

Q7’

第9脚

串行数据输出

/MR

第10脚

主复位(低电平有效)

SH_CP

第11脚

数据输入时钟线

ST_CP

第12脚

输出存储器锁存时钟线

/OE

第13脚

输出有效(低电平有效)

DS

第14脚

串行数据输入

VCC

第16脚

电源

 

 

7.4 74HC595芯片时序图

如图7.2所示为74HC595芯片时序图。

 

 

 

7.5 74HC595芯片内部电路图

如图7.3所示为74HC595芯片内部电路图。

 

 

 

7.6 74HC595芯片真值表

 

输入管脚

输出管脚

SER

SRCLK

/SRCLR

RCLK

/OE

X

X

X

X

H

QA-QH输出高阻

X

X

X

X

L

QA-QH输出有效值

X

X

L

X

X

移位寄存器清零

L

上升沿

H

X

X

移位寄存器存储L

H

上升沿

H

X

X

移位寄存器存储H

X

上升沿

H

X

X

移位寄存器状态保持

X

X

X

上升沿

X

移位寄存器锁存状态值

X

X

X

下降沿

X

移位寄存器状态保持

 

 

7.7芯片的使用方法

74HC595的数据端:

Q0--Q7: 八位并行输出端,可以直接控制数码管的8个段。

Q7': 级联输出端。将它接下一个595DS端。

DS: 串行数据输入端,级联的话接上一级的Q7'

74HC595的控制端说明:

/MR(10): 低电平时将移位寄存器的数据清零。通常接到VCC防止数据清零。

SH_CP(11):上升沿时数据寄存器的数据移位。Q0->Q1->Q2-->Q3-->...-->Q7;下降沿移位寄存器数据不变。

ST_CP(12):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将ST_CP置为低电平,当移位结束后,在ST_CP端产生一个正脉冲,更新显示数据。

/OE(13): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。

具体工作方式

第一步:目的:将要准备输入的位数据移入74HC595数据输入端上。

方法:送位数据到74HC595

第二步:目的:将位数据逐位移入74HC595,即数据串入。

方法:SH_CP产生一上升沿,将DS上的数据移入74HC595移位寄存器中,先送低位,后送高位。

第三步:目的:并行输出数据。即数据并出

方法:ST_CP产生一上升沿,将由DS

上一篇: 搞定Verilog时序逻辑硬件建模设计:深入理解同步与异步复位

下一篇: 必备!硬件工程师笔试题目汇总

推荐阅读