实现目标

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

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. 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仿真图及源程序获取见:

说明

参考课本:单片机原理与嵌入式系统设计

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

  1. verilog数字系统设计——串入并出移位寄存器

    一.串入并出移位寄存器 1.1.概念 串入并出移位寄存器:串行数据,经过几个时钟周期, 在移位寄存器中,最终输出并行的数据. 2.1.串入并出设计图 端口解释: a) i_clk:串口时钟 b) i_ ...

  2. 【Proteus仿真8086】简单IO接口实验——读取开关状态控制灯的亮灭

    本次实验内容来自于何宏老师<微机原理与接口技术 基于Proteus仿真的8086微机系统设计及应用>的12.1节基本I/O口应用,略有改动 用245读取开关状态,然后用373控制开关的亮灭 ...

  3. 单片机 利用 二进制左移的符号来实现心型流水灯的闪亮灭 的仿真

    1.protues 电路设计 2.Keil c51 设计 #include<reg51.h> void det(int m) {int i,j;for(i=100;i>0;i--)f ...

  4. 16QAM学习(一)串入并出的具体实现

    16QAM:正交幅度调制 在正交调制中需要将二进制基带码元序列分成两路, 这时就需要用到寄存器来实现:

  5. 利用定时器0工作方式1——独立按键控制流水灯模式

    目录 1.前言 1.1 项目资源 1.2 实验现象 2.定时器/计数器 2.1定时器/计数器0&1的相关寄存器 2.2定时器的工作方式(总结) 3.中断系统 3.1中断概念 3.2中断流程: ...

  6. 51单片机入门源码部分(流水灯,蜂鸣器,LED)

    1. 流水灯实验 1.1 流水灯(位输出) /*********************************************** * 实验名:流水灯 * 实验效果:流水灯(位输出) *** ...

  7. 【Proteus仿真】51单片机74LS164+74LS165扩展 I/O示例

    [Proteus仿真]51单片机74LS164+74LS165扩展 I/O示例 Proteus仿真 74LS164 8位串入.并出移位寄存器. 逻辑图 引脚图 引脚功能说明 74LS165:8位并入. ...

  8. 4、Proteus仿真STM32串口通信,发送数据控制LED流水灯的启动和停止

    一.实验说明 本次实验建立在第三个实验基础上,稍加修改,通过串口调试助手发送数据到Proteus来实现对流水灯的启动和停止,所以实验采用2个通信串口,实验原理非常简单,只要熟悉第三次实验的过程,就非常 ...

  9. Arduino UNO 利用74HC164循环显示(0-F)

    Arduino UNO 利用74HC164循环显示(0-F) 74hc164工作原理即等同于移位寄存器74HC595. Proteus仿真 74HC164简介 74hc164是一款数字芯片,内部是高速 ...

最新文章

  1. SpringBoot之集成swagger2
  2. Mysql索引命中问题
  3. 数据恢复软件哪个好用比特数据恢复当仁不让
  4. 知道接口地址 如何传数据_如何选显示器连接线?四种主流接口要知道
  5. 阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon
  6. 这件装备让你排位上分有如神助,vivo X20王者荣耀限量版图评
  7. 使用PowerDesinger 正向工程
  8. mac osx 下gcc升级导致sac101.6a编译失败解决办法
  9. 分布式系统关注点(3)——过去这几十年,分布式系统的「数据一致性」精华都在这了!...
  10. C#实现在FastReport报表中添加电子图章
  11. 基础笔记(三):网络协议之Tcp、Http
  12. ArcGIS的.prj文件生成proj4格式的字符串
  13. kvm linux重置密码,超微主板使用ipmicfg重置IPMI密码
  14. linux音响会产生pulse文件,Linux声音系统和PulseAudio简介
  15. 小程序在政务服务平台建设中如何发挥价值
  16. QCC3040---peer UI module
  17. 应急响应之windows进程排查
  18. 蘑菇街面经(自己的第一次秋招面试)
  19. 凤凰系统运行linux,在Deepin操作系统中安装凤凰系统(Phoenix OS)的方法
  20. 笨办法学python 粗略笔记(learn python the hard way)

热门文章

  1. C语言Windows程序设计 - 【第一个属于自己的窗口】!
  2. Java将文件夹生成压缩包.zip文件【已解决】
  3. [大学物理]质点运动学重难点题型总结
  4. SQL 常用语句书写格式以及示例
  5. cubeMX+STM32+Freertos 向队列写结构体
  6. Android Studio 汉化教程
  7. Hash的Md5算法
  8. 【苹果家庭群发推送】软件安装网站下线时代更新了证书生成机制
  9. 单片机菜鸟哥的大学四年以及工作七年,献给迷茫的电子物联网类的师弟师妹,绝对干货
  10. xss-labs/level4