Proteus仿真实践:利用74HC164实现流水灯功能

实现目标

使用74HC164的并行输出引脚接8支发光二极管,利用它的串入并出功能,把发光二极管从左到右轮流点亮,并反复循环

Proteus仿真图

Proteus仿真:利用74HC164的串入并出功能实现流水灯_Proteus

C51代码

登录后复制

#include <REG52.H>      /* special function register declarations */#include <intrins.h>sbit CTRL_OUT = P3^4; /* =0,清0;=1,并行输出 */void time(unsigned int ucMs);//延时单位:ms/******** main 函数 *********/void main (void) {  uchar  i;  SCON=0x00;  /*串行口方式0工作*/  ES=0;     /*禁止串行中断*/  for (;;) {    for (i=0; i<8; i++) {      CTRL_OUT=1;             /*=1,允许并行输出*/      SBUF=_cror_(0x80,i);    /*循环右移i位,串行输出*/        while(!TI){}          /*状态查询*/            TI=0;                 /*清发送中断标志*/      time(588);          /*状态维持*/    }  }}/*********** 延时单位:ms *******************/void time(unsigned int ucMs)//延时单位:ms{  unsigned char j;    while(ucMs>0){    for(j=0;j<10;j++) delay_100us();    ucMs--;  }}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.

笔记

  1. sbit CTRL_OUT = P3^4表示CTRL_OUT 为P3的P3.4引脚,与74HC164的CR(-)引脚相接,用于清零
  2. 8个灯每次只亮一个灯,对应8位二进制数也就是有1位为0,7位为1(低电平有效),那么每次74HC164并行输出的8位数据也是这样的。而这样的8位数据,则需要利用AT89C52的串行口一位一位输入74HC164。大概可以理解为:首先AT89C52将一个8位数据利用串口,一位一位输入74HC164,待8位都输入完成后,74HC16使用自身的并口一块输出,驱动led灯。
  3. 首先,先允许并口输出【CTRL_OUT=1;】,再生成一个8位数据【SBUF=cror(0x80,i)】,使用查询方式查询这个8位数据传输完成没有【while(!TI){} 】,最后依次循环即可

运行结果

Proteus仿真:利用74HC164的串入并出功能实现流水灯_74HC164_02

Proteus仿真:利用74HC164的串入并出功能实现流水灯_引脚_03



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空