基于proteus的51单片机仿真实例六十九、串口转并口器件74HC164应用实例

1、74HC164是8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(DSA 或 DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
  时钟 (CP) 每次由低变高时,数据右移一位,输入到 Q0, Q0 是两个数据输入端(DSA 和 DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
  主复位 (MR) 输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
 
2、在keil c51中新建工程ex57,编写如下程序代码,编译并生成ex57.hex文件
//8位串行输入/并行输出器件74hc164演示实例
#include <reg51.h>   // 包含头文件
sbit HC164_data = P2^4;  // 端口引脚定义。,数据输出端,
sbit HC164_CLK = P2^1;  //时钟输出端
// 延时函数
void delay(void)
{
  unsigned int i,j;
 for(i=0;i<1000;i++)
 {
   for(j = 0;j < 500;j++);
 }
}
// 主函数
void main(void)
{
 unsigned char i;
 P2 = 0x00;
 for(i = 0;i < 8;i++)   //
 {
    HC164_data = 1 << i;    // 数据串行输出,一次移动一位
    HC164_CLK = 1;     //  数据在上升沿期间输出
    HC164_CLK = 0;     //
    delay();
 }
 while(1)
 {
 }
}
 
3、在proteus中新建仿真文件ex57.dsn,电路原理图如下所示
基于proteus的51单片机仿真实例六十九、串口转并口器件74HC164应用实例

4、将ex57.hex文件载入at89c51中,启动仿真,观察运行结果。下图是某一时刻程序运行结果。
基于proteus的51单片机仿真实例六十九、串口转并口器件74HC164应用实例