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