74HC166是一种能将并行数据输入转换为串行数据输出的IC,个人认为74HC166芯片没有74HC165功能强大,而且使用有点不方便。如果有条件的话还是用165比较好。
74HC166的引脚定义
74HC166共16根引脚,其中并行输入8根,串行输入1根,串行输出1根,电源2根,复位1根,时钟1根,时钟使能和并行读入使能各1根。如图:
74HC166
引脚名称引脚号说明连接方法
DS 1 串行输入,一般级联时使用不连,或连上级Q7脚
D0~D7 2,3,4,5,
10,11,12,14
并行输入脚可接键盘等输入设备
/CE 6 控制时钟使能,低电平有效实际中,接GND即可CP 7 时钟输入,正边缘触发可接单片机的TXD脚GND 8 电源地电源地
include中文/MR 9 主清除,低电平有效,此时IC将
清除并行输入锁存器的内容
实际中,接VCC即可
Q7 13 串行输出脚,串行数据由此输出可接单片机的RXD脚
/PE 15 并行输入锁存器使能,低电平有效,
此时IC将D0~D7口数据锁存
接单片机I/O脚以便控制
VCC 16 电源电源
74HC166的使用方法
1、获取并行数据
(1)开并行数据输入使能,令/PE=0,这个操作可以打开并行数据输入的通道。
(2)读取并行输入,令CP=0,而后CP=1,输入时钟的正边缘触发,使并行数据读入。
(3)关闭并行数据输入使能,令/PE=1,这时,并行数据已经锁存在锁存器中了。这里需要说明的是,最好在/PE=1前,给予适当的延迟,使操作更加可靠:【延迟】、PE=1
2、串行输出:启动时钟CP,即可实现数据的串行输出。
利用单片机的串行口实现74HC166并入串出程序举例
#include<reg52.h>
//并行数据输入使能
pe=P0^0;
sbit
//模拟时钟以便读取并行数据
sbit
cp=P3^1;
void main()
{
P2=0x55; //将P2口连接D0~D7,来模拟8位并行数据的输入
pe=0; //开并行数据输入使能
cp=0; //模拟正边缘触发
cp=1;
;;; //适当的延迟,以保证数据正确读入
pe=1; //关并行数据输入使能
//模式0,开始接收数据
SCON=
0x10;
while(1)
{
while(RI==0); //等待接收结束
P1=SBUF;  //输出结果
}
}