Proteus仿真:利用74HC164的串入并出功能实现流水灯
实现目标
使用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--;}
}
笔记
sbit CTRL_OUT = P3^4表示CTRL_OUT 为P3的P3.4引脚,与74HC164的CR(-)引脚相接,用于清零
8个灯每次只亮一个灯,对应8位二进制数也就是有1位为0,7位为1(低电平有效),那么每次74HC164并行输出的8位数据也是这样的。而这样的8位数据,则需要利用AT89C52的串行口一位一位输入74HC164。大概可以理解为:首先AT89C52将一个8位数据利用串口,一位一位输入74HC164,待8位都输入完成后,74HC16使用自身的并口一块输出,驱动led灯。
首先,先允许并口输出【CTRL_OUT=1;】,再生成一个8位数据【SBUF=cror(0x80,i)】,使用查询方式查询这个8位数据传输完成没有【while(!TI){} 】,最后依次循环即可
运行结果
本文Proteus仿真图及源程序获取见:
说明
参考课本:单片机原理与嵌入式系统设计
Proteus仿真:利用74HC164的串入并出功能实现流水灯相关推荐
- verilog数字系统设计——串入并出移位寄存器
一.串入并出移位寄存器 1.1.概念 串入并出移位寄存器:串行数据,经过几个时钟周期, 在移位寄存器中,最终输出并行的数据. 2.1.串入并出设计图 端口解释: a) i_clk:串口时钟 b) i_ ...
- 【Proteus仿真8086】简单IO接口实验——读取开关状态控制灯的亮灭
本次实验内容来自于何宏老师<微机原理与接口技术 基于Proteus仿真的8086微机系统设计及应用>的12.1节基本I/O口应用,略有改动 用245读取开关状态,然后用373控制开关的亮灭 ...
- 单片机 利用 二进制左移的符号来实现心型流水灯的闪亮灭 的仿真
1.protues 电路设计 2.Keil c51 设计 #include<reg51.h> void det(int m) {int i,j;for(i=100;i>0;i--)f ...
- 16QAM学习(一)串入并出的具体实现
16QAM:正交幅度调制 在正交调制中需要将二进制基带码元序列分成两路, 这时就需要用到寄存器来实现:
- 利用定时器0工作方式1——独立按键控制流水灯模式
目录 1.前言 1.1 项目资源 1.2 实验现象 2.定时器/计数器 2.1定时器/计数器0&1的相关寄存器 2.2定时器的工作方式(总结) 3.中断系统 3.1中断概念 3.2中断流程: ...
- 51单片机入门源码部分(流水灯,蜂鸣器,LED)
1. 流水灯实验 1.1 流水灯(位输出) /*********************************************** * 实验名:流水灯 * 实验效果:流水灯(位输出) *** ...
- 【Proteus仿真】51单片机74LS164+74LS165扩展 I/O示例
[Proteus仿真]51单片机74LS164+74LS165扩展 I/O示例 Proteus仿真 74LS164 8位串入.并出移位寄存器. 逻辑图 引脚图 引脚功能说明 74LS165:8位并入. ...
- 4、Proteus仿真STM32串口通信,发送数据控制LED流水灯的启动和停止
一.实验说明 本次实验建立在第三个实验基础上,稍加修改,通过串口调试助手发送数据到Proteus来实现对流水灯的启动和停止,所以实验采用2个通信串口,实验原理非常简单,只要熟悉第三次实验的过程,就非常 ...
- Arduino UNO 利用74HC164循环显示(0-F)
Arduino UNO 利用74HC164循环显示(0-F) 74hc164工作原理即等同于移位寄存器74HC595. Proteus仿真 74HC164简介 74hc164是一款数字芯片,内部是高速 ...
最新文章
- SpringBoot之集成swagger2
- Mysql索引命中问题
- 数据恢复软件哪个好用比特数据恢复当仁不让
- 知道接口地址 如何传数据_如何选显示器连接线?四种主流接口要知道
- 阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon
- 这件装备让你排位上分有如神助,vivo X20王者荣耀限量版图评
- 使用PowerDesinger 正向工程
- mac osx 下gcc升级导致sac101.6a编译失败解决办法
- 分布式系统关注点(3)——过去这几十年,分布式系统的「数据一致性」精华都在这了!...
- C#实现在FastReport报表中添加电子图章
- 基础笔记(三):网络协议之Tcp、Http
- ArcGIS的.prj文件生成proj4格式的字符串
- kvm linux重置密码,超微主板使用ipmicfg重置IPMI密码
- linux音响会产生pulse文件,Linux声音系统和PulseAudio简介
- 小程序在政务服务平台建设中如何发挥价值
- QCC3040---peer UI module
- 应急响应之windows进程排查
- 蘑菇街面经(自己的第一次秋招面试)
- 凤凰系统运行linux,在Deepin操作系统中安装凤凰系统(Phoenix OS)的方法
- 笨办法学python 粗略笔记(learn python the hard way)