74HC595D

  • 格式:docx
  • 大小:141.59 KB
  • 文档页数:7

74hc595d中文资料,74hc595d pdf

74HC595中文资料

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

特点

8位串行输入

8位串行或并行输出

存储状态寄存器,三种状态

输出寄存器可以直接清除

100MHz的移位频率

输出能力

并行输出,总线驱动

串行输出;标准

中等规模集成电路

应用

串行到并行的数据转换

Remote control holding register.

描述

595是告诉的硅结构的CMOS器件,

兼容低电压TTL电路,遵守JEDEC标准。

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

数据在SCHcp的上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。

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

74HC595参考数据

CPD决定动态的能耗,

PD=CPD×VCC×f1+∑(CL×VCC2×f0)

F1=输入频率,CL=输出电容 f0=输出频率(MHz) Vcc=电源电压

74HC595引脚说明

74HC595功能表

H=高电平状态

L=低电平状态

↑=上升沿

↓=下降沿

Z=高阻

NC=无变化

×=无效

当MR为高电平,OE为低电平时,数据在SHCP上升沿进入移位寄存器,在STCP上升沿输出到并行端口。

74hc595d的生产厂家有NXP Semiconductors和ON Semiconductor

最近闲来无事,想想好久没写点什么了。所以闲余时间就写了个小程序和大家学习交流。虽然通过仿真器调试过,但是由于没有做硬件,所以难免有疏漏之处,希望各位访客在发现后能指正。

硬件电路及程序原理描述:数码管采用8段共阴数码管。两块74HC595分别用来作为段码和片选,U1作为段码驱动(高电平有效),U2作为片选(低电平有效),程序中先发送高8位的片选码,然后发送低8位的段码,每发送一次只能显示以个数码管,通过延时防止闪烁,然后循环发送8次之后,正好8个数码管显示一遍。所以这是一个串行动态显示方式,要保持正常显示就必须定时调用显示程序。这个电路的优点就是占用端口少,因为是采用的模拟串行接口;缺点是占用CPU资源较多,比较费时。所以就要看情况而使用了。

/***************************************************

功能:8×8键盘扫描

芯片型号:HT46R47

设计者:蓝若天

来源:

掩膜选项

SysVolt:5v

SysFreq:4MHz

Package:18 DIP-A

Wake-up PA0-3:Non-Wake-up

Wake-up PA4-7:Non-Wake-up

Pull-high PA0-3:Pull-high

Pull-high PA4-7:Pull-high

Pull-high PB0-3:Pull-high

Pull-high PD:Pull-high

PWM:Disable

PA3 PFD:Disable

LVR:Disable

WDT:Disable

CLRWDT:One clear instruction

WDT clock source:T1(System clock/4)

OSC:Crystal ***************************************************/

#include

//************端口定义********************//

#define DATA _12_0 //数据(PA0)

#define SCK _12_1 //移位时钟(PA1)

#define RCK _12_2 //锁存时钟(PA2)

#define EN _12_3 //使能端,低电平有效,可以控制闪烁(PA3)

unsigned char buf_temp @ 64; //40H单元为片选码存储器,低位在前

unsigned char display_buf[8] @ 80; //50H单元为8个数码管段码缓存寄存器,低位在前

const unsigned char table[29]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, //(0~9)

0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef, //(0.~9.)

0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x80,0x73}; //(a~f、-、.、P)

unsigned char display[8]; //需要显示的数据经过拆分之后,具体存放每一个数码管需要显示的内容;低位在前

//**************显示子程序************************//

void display_595(void)

{

unsigned char i;

unsigned char j;

unsigned char x,y;

buf_temp=0x7f;

EN=0; //显示使能

RCK=0;

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

{

display_buf=table[display];

}

for(j=0;j<8;j++) //8次移位,实现8个数码管的串行动态显示

{

for(i=0;i<8;i++) //先移片选码;低位在前,高位在后。

{

SCK=0;

x=buf_temp<<1; //带C的移位,仅仅只是为了判断被移出的位 if (_c==0)

DATA=0;

else

DATA=1;

SCK=1; //上升沿时数据寄存器的数据移位

_rl(&buf_temp); //数据本身移位并保存,方便下一次循环移位

_delay(6000);

}

for(i=0;i<8;i++) //后移段码

{

SCK=0;

y=display_buf[j]<<1;

if (_c==0)

DATA=0;

else

DATA=1;

SCK=1;

_rl(&display_buf[j]);

_delay(6000);

}

RCK=1; //上升沿时移位寄存器的数据进入数据存储寄存器

}

}

void main(void)

{

unsigned char i;

while(1)

{

for(i=0;i<8;i++) //主程序这里只是将0~7通过循环方式存入显示缓冲区然后调用显示程序显示,

{ //目的是在现实之前要将显示的数据存入display,这里只是一个例子;要显示

display=i; //带小数点的数字需要将display再加十,按照table[]对应的第几个数据一次计算。

}

display_595(); }

}

74HC595的中文资料下载地址:

/self.aspx/.Public/%e8%b5%84%e6%96%99/PDF%e6%96%87%e6%a1%a3/74HC595.pdf