74HC585串转并Proteus实例

该博客介绍了如何使用74HC595芯片通过三个IO口实现数码管的循环显示。74HC595作为一个移位寄存器,能够节省IO资源,通过SH_CP和ST_CP时钟控制输入以及DS串行口输入,实现数据的移位和存储。代码示例展示了如何控制数码管显示0~9、9~0的循环,并提供了Proteus仿真图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 HC595芯片介绍:

  74HC595可以节省IO口,实现串行转并行。注意传送数据的顺序,先传送的比特后移到移位寄存器的高位,所以要先传送数据的高位。

Q0~Q7并行输出口
Q7'串行数据出口引脚。当移位寄存器中的数据多于8bit时,会把已有的bit“挤出去”,就是从这里出去的。用于595的级联。
SH_CP(shift register)时钟控制输入,上升沿触发移位寄存器后移一位,接收新的比特
ST_CP (storage register)时钟控制,上升沿触发移位寄存器的数据转存到存储寄存器
MR低电平时清空移位寄存器的数据,一般用不上,接电源
OE低电平使能输出
DS (data serial)串行口输入

实例:

  利用74HC595实现只用三个IO口控制数码管循环显示0~9、9~0。

Proteus图:

 代码:

#include<reg51.h>
#include "intrins.h"
sbit STCP=P2^2;   //storage register
sbit SHCP=P2^0;  //shift register
sbit DS=P2^1;
//共阴极,依次显示0~9、9~0
unsigned char number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(unsigned int i)
{
	while(i--);	
}
void hc595(unsigned char dat)
{
  unsigned i;
	SHCP = 1;
	STCP = 1;
	for(i=0;i<8;i++)		 
	{
		DS = dat >> 7;		 
		dat <<= 1;
		SHCP = 0;			 
		_nop_();  //也可换成delay(1);
		_nop_();
		SHCP = 1;	
	}
	STCP = 0;
  _nop_();
	_nop_();
	STCP = 1;
}
int main()  
{
  unsigned char i;
  while(1)
  {
    for(i=0;i<10;i++)
    {
      hc595(number[i]);
      delay(50000);
    }
    for(i=8;i>0;i--)    //i是无符号类型,千万不能>=0,-1用无符号表示就是255
    {
      hc595(number[i]);
      delay(50000);
    }
    
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

small_planet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值