(十三) 串转并

本节主要是假如GPIO的数量太少,达不到我们希望的要求,那么我们可以使用74hc595芯片,通过这个芯片可以使得我们使用少数gpio就能扩展出大量的gpio,完成我们的功能,本节我们使用这个芯片来完成一列led点阵的流水灯的效果。

1 硬件

由硬件原理图我们也能大概分析出来我们通过配置P3^4,P3^5,P3^6这三个引脚来控制右边的8个引脚,74HC596内部含有1个8位的移位寄存器和一个存储器,数据在SRCLK的上升沿输入,输入到移位寄存器里面,然后在RCLK的上升沿由移位寄存器输出到存储器中,然后由存储器一次直接输出到右边的8个引脚。

        我们可以通过和P0的接口一起配合使用来使得LED点阵按照我们希望的输出。

2软件

我们先写出74hc595配置的代码:

#include "reg52.h"
#include "intrins.h"
sbit RCK = P3^5;
sbit SCK = P3^6;
sbit SER = P3^4;
sbit led = P0^7;

void delay(int n){
	while(n--);
}

void hc595_write(unsigned char dat){
	int i;
	led = 0;
	RCK = 1;
	SCK = 1;
	_nop_();
	for(i = 0;i < 8;i++){
		SER = dat >> 7;
		dat <<= 1;
		SCK = 0;
		_nop_();
		_nop_();
		SCK = 1;
	}
	RCK = 0;
	_nop_();
	_nop_();
	RCK = 1;
}

然后我们写出调用这个代码的内容:

#include "74hc595.h"

void main(){
	unsigned char lednum;
	
	lednum = 0x01;
	while(1){
		if(lednum == 0){
			lednum = 0x1;
		}
		lednum <<= 1;
		hc595_write(lednum);
		delay(5);
	} 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值