74HC595和74hc164一样是在单片机系统中常用的芯片之一他的作用就是把串行的信号转为并行的信号,常用在各种数码管以及点阵屏的驱动芯片, 使用74HC595可以节约单片机mcu的io口资源,用3个io就可以控制8个数码管的引脚,他还具有一定的驱动能力,可以免掉三极管等放大电路,所以这块芯片是驱动数码管的神器.应用非常广泛,点这里可以下载完整的74HC595中文资料: http://www.51hei.com/f/74HC595中文资料.pdf
74HC595引脚图
74HC595管脚功能
下面我来介绍一下 74HC595工作原理:
74HC595的数据端:
QA--QH: 八位并行输出端,可以直接控制数码管的8个段。
QH': 级联输出端。我将它接下一个595的SI端。
SI: 串行数据输入端。
74hc595的控制端说明:
/SCLR(10脚): 低电平时将移位寄存器的数据清零。通常我将它接Vcc。
SCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)
控制移位寄存器
SCK 上升沿 数据 移位 SCK 下降沿 数据 保持
RCK(12脚):上升沿时移位寄存器的数据进入存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。
控制存储寄存器
RCK 上升沿 移位寄存器 的 数据进入 存储寄存器 RCK 下降沿 存储寄存器数据不变
/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。
注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。
74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。
与74hc164只有数据清零端相比,74hc595还多有输出端时能/禁止控制端oe,可以使输出为高阻态。所以是用这块芯片会更方便
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SHcp(见时序图)的上升沿输入,在STcp(见时序图)的上升沿进入的存储寄存器中去。如果两个时钟连在一起,则移位
寄存器总是比存储寄存器早一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出
(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使
能 OE时(为低电平),存储寄存器的数据输出到总线。
这里有单片机驱动74hc595的方法: http://www.51hei.com/chip/1799.html
74HC595真值表
74hc595最高电压和最低电压
74HC595时序图
74HC595逻辑图
74HC595和74HC164的区别主要有:
1、74HC595有锁存器,所以在移位过程中输出可以保持不变;而74HC164没有锁存器,所以每产生一个移位时钟输出就改变一次。这是二者的最大区别
2、74HC595使用专门的Q7'引脚实现多片级联;74HC164直接使用输出引脚Q7级联
3、74HC595有使能OE,OE无效时输出引脚为高阻态;而74HC164没有使能引脚
4、74HC595的复位是针对移位寄存器的,想要复位LATCH寄存器还须ST_CP上升沿将移位寄存器内容加载到锁存寄存器;也就是说:74HC595的复位是同步的,74HC164的复位是异步的,所以74HC164的复位更简单
5、74HC164有对应的74HC165并转串芯片
74HC595.c
------------------------------------------------------------------------------------------------------------------------------------------------------
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_gpio.h"
#include "74HC595.h"
/* 延时模块82615468 sp-320-12
* */
static void delay(u32 t)
{
u32 i;
while(t--)
for (i = 0; i < 1; i++);
}
void HC595Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(HC595_CLK_GPIO_CLK | HC595_DATA_GPIO_CLK | HC595_CS_GPIO_CLK, ENABLE);
GPIO_InitStructure.GPIO_Pin = HC595_CLK_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HC595_CLK_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = HC595_DATA_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HC595_DATA_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = HC595_CS_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(HC595_CS_GPIO, &GPIO_InitStructure);
HC595_CLK_H();
HC595_DATA_H();
HC595_CS_H();
}
void HC595Send(u8 data)
{
u8 j;
for (j = 8; j > 0; j--)
{
if(data & 0x80)
HC595_DATA_H();
else
HC595_DATA_L();
HC595_CLK_L(); //上升沿发生移位
delay(1);
data <<= 1;
HC595_CLK_H();
delay(1);
}
//HC595Load();
}
void HC595Load(void)
{
HC595_CS_L();
HC595_CS_H();
}
/*
void LedRowOn(u8 Row7_0, u8 Row15_8, u8 Row16_23,u8 Row31_24)
{
HC595Send(Row15_8);
HC595Send(Row7_0);
HC595Send(Row31_24);
HC595Send(Row16_23);
HC595Load();
}
*/
void LedRowOut(u32 Data)
{
HC595Send(Data >> 24);
HC595Send(Data >> 16);
HC595Send(Data >> 8);
HC595Send(Data >> 0);
HC595Load();
}
//end of file
74HC595.h
#ifndef __74HC595_H__
#define __74HC595_H__
#define HC595_CLK_PIN GPIO_Pin_6
#define HC595_CLK_GPIO GPIOA
#define HC595_CLK_GPIO_CLK RCC_APB2Periph_GPIOA
#define HC595_CLK_H() GPIOA->BSRR = HC595_CLK_PIN
#define HC595_CLK_L() GPIOA->BRR = HC595_CLK_PIN
#define HC595_CS_PIN GPIO_Pin_7
#define HC595_CS_GPIO GPIOA
#define HC595_CS_GPIO_CLK RCC_APB2Periph_GPIOA
#define HC595_CS_H() GPIOA->BSRR = HC595_CS_PIN
#define HC595_CS_L() GPIOA->BRR = HC595_CS_PIN
#define HC595_DATA_PIN GPIO_Pin_10
#define HC595_DATA_GPIO GPIOE
#define HC595_DATA_GPIO_CLK RCC_APB2Periph_GPIOE
#define HC595_DATA_H() GPIOE->BSRR = HC595_DATA_PIN
#define HC595_DATA_L() GPIOE->BRR = HC595_DATA_PIN
void HC595Send(u8 data);
void HC595Init(void);
void HC595Load(void);
void LedRowOn(u8 Row7_0, u8 Row15_8, u8 Row16_23,u8 Row31_24);
void LedRowOut(u32 Data);
#endif
上一篇: STM32篇:74HC595的使用和注意
下一篇: stm32 PB3 PB4 PA15引脚作为普通IO口使用指南
推荐阅读最新更新时间:2024-03-16 16:03
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。
最能打国产芯
TI 培训
Qorvo 电源技术站
Vicor技术站
玻璃钢生产厂家兰州玻璃钢雕塑咨询辽宁玻璃钢动物雕塑厂家蒙自市玻璃钢雕塑批发厂家玻璃钢仿铜人物雕塑品牌贵港玻璃钢泡沫雕塑厂家唐山玻璃钢雕塑设计绍兴玻璃钢人物雕塑多少钱圆形玻璃钢花盆模具焦作火烈鸟玻璃钢雕塑安装辽阳玻璃钢马雕塑玻璃钢茶杯雕塑锻铜玻璃钢卡通雕塑生产安宁加工玻璃钢雕塑精准推荐玻璃钢雕塑修复裂痕盐湖玻璃钢花盆花器涧西玻璃钢雕塑设计玻璃钢雕塑冬奥会玻璃钢led灯发光雕塑玻璃钢浮雕雕塑哪家好玻璃钢雕塑 骨架陇南玻璃钢雕塑供应青岛景区玻璃钢雕塑公司基督教玻璃钢雕塑施工天津商场主题创意商业美陈定制哪里有玻璃钢雕塑定做南京拉丝玻璃钢雕塑诚信企业河北玻璃钢玻璃钢雕塑厂家梅州主题玻璃钢雕塑供应父亲节商场美陈布置新乡肖像玻璃钢雕塑公司香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万