深圳市航顺芯片技术研发有限公司
登录
直播中
莫联雪
7年用户
1098经验值
私信
关注
[问答]
如何利用74HC595实现一个流水灯的效果?
开启该帖子的消息推送
74HC595
如何利用74HC595实现一个流水灯的效果?
回帖
(1)
李剑
2021-11-2 11:53:46
当 MR 为高电平,OE 为低电平时,数据在 SHCP 上升沿进入移位寄存器,在
STCP 上升沿输出到并行端口。
74595 的数据端:
QA–QH: 八位并行输出端,可以直接控制数码管的 8 个段。
QH’: 级联输出端。我将它接下一个 595 的 SI 端。
SI: 串行数据输入端
74HC595 是具有 8 位移位寄存器和一个存储器,三态输出功能。 移位寄存
器和存储器是分别的时钟。数据在 SCHcp 的上升沿输入,在 STcp 的上升沿进入
的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早
一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),
和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具备三态的总线输
出,当使能 OE 时(为低电平),存储寄存器的数据输出到总线。
74595 的控制端说明:
/SCLR(10 脚): 低点平时将移位寄存器的数据清零。通常我将它接 Vcc。
SCK(11 脚):上升沿时数据寄存器的数据移位
。QA–>QB–>QC–>…–>QH;下
降沿移位寄存器数据不变。(脉冲宽度:5V 时,大于几十纳秒就行了。)
RCK(12 脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄
存器数据不变
。通常我将 RCK 置为低点平,当移位结束后,在 RCK 端产生一
个正脉冲(
5V 时,大于几十纳秒就行了。我通常都选微秒级
),更新显示数据。
/G(13 脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引
脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。
下面的代码实现一个流水灯的效果
#include
#include “intrins.h”
typedef unsigned int u16;
typedef unsigned char u8;
***it sck=P3^6;//移位寄存器时钟信号
***it rck=P3^5;//存储寄存器时钟信号
***it ser=P3^4;//串行输入
void Delay10ms() //@12.000MHz
{
unsigned char i, j;
i = 117;j = 184;do{ while (--j);} while (--i); }
void delay(u8 i)
{
while(i–);
}
void Hc595(u8 sdata)
{
int i;
for(i=0;i<8;i++)
{
sck=1;
ser=sdata>>7;//取最高位
sdata<<=1;//将次高位移到最高位
sck=0;//先给一个下降沿
nop
();
nop
();
sck=1;//再给一个上升沿,让595移位一次
}rck=0;_nop_();_nop_();rck=1; }
void main()
{
u8 i;
i=1;
while(1)
{
Hc595(i);
i=
crol
(i,1);//循环左移一位
Delay10ms();
}
}
当 MR 为高电平,OE 为低电平时,数据在 SHCP 上升沿进入移位寄存器,在
STCP 上升沿输出到并行端口。
74595 的数据端:
QA–QH: 八位并行输出端,可以直接控制数码管的 8 个段。
QH’: 级联输出端。我将它接下一个 595 的 SI 端。
SI: 串行数据输入端
74HC595 是具有 8 位移位寄存器和一个存储器,三态输出功能。 移位寄存
器和存储器是分别的时钟。数据在 SCHcp 的上升沿输入,在 STcp 的上升沿进入
的存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早
一个脉冲。移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7’),
和一个异步的低电平复位,存储寄存器有一个并行 8 位的,具备三态的总线输
出,当使能 OE 时(为低电平),存储寄存器的数据输出到总线。
74595 的控制端说明:
/SCLR(10 脚): 低点平时将移位寄存器的数据清零。通常我将它接 Vcc。
SCK(11 脚):上升沿时数据寄存器的数据移位
。QA–>QB–>QC–>…–>QH;下
降沿移位寄存器数据不变。(脉冲宽度:5V 时,大于几十纳秒就行了。)
RCK(12 脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄
存器数据不变
。通常我将 RCK 置为低点平,当移位结束后,在 RCK 端产生一
个正脉冲(
5V 时,大于几十纳秒就行了。我通常都选微秒级
),更新显示数据。
/G(13 脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引
脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。
下面的代码实现一个流水灯的效果
#include
#include “intrins.h”
typedef unsigned int u16;
typedef unsigned char u8;
***it sck=P3^6;//移位寄存器时钟信号
***it rck=P3^5;//存储寄存器时钟信号
***it ser=P3^4;//串行输入
void Delay10ms() //@12.000MHz
{
unsigned char i, j;
i = 117;j = 184;do{ while (--j);} while (--i); }
void delay(u8 i)
{
while(i–);
}
void Hc595(u8 sdata)
{
int i;
for(i=0;i<8;i++)
{
sck=1;
ser=sdata>>7;//取最高位
sdata<<=1;//将次高位移到最高位
sck=0;//先给一个下降沿
nop
();
nop
();
sck=1;//再给一个上升沿,让595移位一次
}rck=0;_nop_();_nop_();rck=1; }
void main()
{
u8 i;
i=1;
while(1)
{
Hc595(i);
i=
crol
(i,1);//循环左移一位
Delay10ms();
}
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
74HC595
74HC595
是如何去驱动数码管的
2021-08-02
2300
我是单片机初学者,遇到了关于
74HC595
的问题。希望各位帮...
2013-03-18
2818
74HC595
芯片串转并该如何去
实现
呢
2021-11-03
1524
如何
利用
CC2530和
74HC595
实现
数码管动态显示数字的
效果
?
2022-01-25
1307
74HC595
级联问题
2016-10-22
6321
74HC595
是怎么提高芯片的驱动能力的呢
2021-10-25
2982
各位大大,怎么用较少的IO口控制8
个
LED?像
74HC595
这些要怎么用?
2017-03-29
5415
请问单片机是如何驱动
74hc595
的?
2021-08-30
1040
如何使用三片
74HC595
对
一
个
8X8双色点阵进行控制呢
2021-10-25
1492
写
一
个
74HC595
程序
2016-03-17
4364
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分