单片机IO口拓展—— 串转并
单片机IO 口的串转并是用 74HC595芯片来实现的
74HC595
可以实现三个IO口控制八个输出管脚,而且可以通过SER2(串型数据输出)来控制另一个74HC595芯片从而来控制更多的IO口输出。
原理图如下:
端口介绍:
- SER(14):串行数据输入端。
比方说串行数据是0x01(0000 0001),那么这个端口就是接收这个数据的,当然,一次只能接收一个,要分八次接收。(因为他就一个引脚,只能分辨高低) - SRCLK(11):上升的时候移位。也就是说我上升一次,就把SER口上的电平情况保存下来。
3.== RCLK==(12):上升的时候输出。就是当芯片内8个串行数据都接收到以后将数据输出。 - /SRCLK (10):低电平时重置芯片(数据清零)。一般都默认接高电平VCC。
- /OE(13):高电平时禁止输出。一般默认低电平。
(具体的74HC595芯片的使用方法在我的 “点阵” 那篇博客中有具体的写道,可以参考那篇的内容,在此就不再展开细说。)
实例:用74HC595控制流水灯,代码如下:
#include <reg51.h> //此文件中定义了单片机的一些特殊功能寄存器
#include <intrins.h>
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
u8 ledNum; //定义IO口
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
sbit LED=P0^7;
void delay(u16 i) //延时函数
{
while(i--