c语言循环移位寄存器,[转载]关于移位寄存器74HC164的使用
移位寄存器74HC164多用于扩展IO口,下面是我使用时的心得:
74HC164的几点说明:
1.74HC164是串行输入,并行输出的;
2.它的并行输出其实是有延时的,只是延时时间小,可以认为是并行输出;
74hc164封装和真值表:
真值表中文解释说明
H-高电平 L
-低电平 X -任意电平
↑-低到高电平跳变(上升沿有效)
QA0,QB0,QH0 -规定的稳态条件建立前的电平
QAn,QGn -时钟最近的↑前的电平
看真值表的第三条和第五条:就可以知道,在保持clear为 H,
clock为↑状态下,AB都为H时,移位寄存器移入H,而当移位寄存器移入L时,必须令B为L,而A不受约束。所以可以把AB断相连再接入单片机数据端口。还有一种是A脚直接接高电平,B脚连入单片机数据端(P2_7)
时序图:
1. 首先区分输入输出信号。这里CLEAR、A、B、CLOCK是输入信号,Qa~Qh是输出信号;
2. 拿尺子开始扫描……
2.1.
首先可以看到CLEAR的下降沿后输出全部置低电平。结合后面的一个CLEAR下降沿,可以得出结论:当CLEAR输入下降沿时,无论A、B、CLOCK状态为何,输出全部拉低;
2.2.
尺子向右移动……找到Qa的第一个上升沿,可以看到这个上升沿是与CLOCK的上升沿对齐的,可以得出结论:输出在逻辑上与上升沿同步。此时将会注意到在此之前已经有3个上升沿但输出始终为低电平,尺子移动分别比较这3个上升沿,其A、B输入分别为10、01,于是可以得出结论:Qa
= A · B。
2.3.
尺子继续向右移动……可以分别看出在随后的CLOCK上升沿处,Qa全部按照A与B进行输出,从而验证以上结论。此外Qb~Qh的波形为Qa波形依次移位得到。
使用它的通用驱动C语言源代码:
//在每一个上升沿输出脚SDO状态移一位,CLK为时钟输入脚,CLK为输入脚,
//一般同连一脚,保持相同电平状态,与运算之后仍为该状态
void ind_light_disp(uint ind_num)//点亮哪一位,就置1
{
uint i,j;
i = 0x80;
for(j=0; j<8; j++)
{
if((i&ind_num) == i)
{
CLK = 0; //此处与下面的CLK = 1结合产生一个上升沿
SDO = 0;
CLK = 1;
}
else
{
CLK = 0;
SDO = 1;
CLK = 1;
}
i >>= 1;
}
delay(10000);//此处延时很重要,不延时可能会出现闪烁现象
}
一个使用电路图(点亮一些灯):
c语言循环移位寄存器,[转载]关于移位寄存器74HC164的使用相关推荐
- 四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)
移位寄存器总结 一.前言 二.简单循环左移/右移/双向移位寄存器 2.1 简单循环左移/右移/双向移位寄存器 2.2 verilog代码 2.3 Testbench 2.4 仿真结果 三.逻辑移位与算 ...
- STM32 | C语言对寄存器的封装
说明:这里以GPIO外设为例,介绍C语言对寄存器的封装.以此类推其他外设同样可以用这种方法来封装.本文有两部分构成: 1.介绍宏定义. 2.使用结构体封装寄存器列表. 1.宏定义 以封装STM32 G ...
- 设计一个8位双向循环移位寄存器vhdl
设计一个8位双向循环移位寄存器vhdl 状态表如下: CLK RESET LOAD M 工作状态 × 0 × × 复位 ↑ 1 1 × 置数 ↑ 1 0 1 左移 ↑ 1 0 0 右移 (4)不考虑串 ...
- educode寄存器设计与应用之循环移位寄存器的设计、并行存取的移位寄存器的设计(在Logisim上实现)
欢迎来到数电专题
- 16道嵌入式C语言面试题(转载)
转自:http://blog.chinaunix.net/uid-26495963-id-3165021.html 预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常 ...
- 生信软件c语言,科学网—[转载]没有docker我真的不想动这样的生信软件 - 张成岗的博文...
没有docker我真的不想动这样的生信软件 2020-03-26阅读 2620 C语言源代码需要编译的软件 最开始开发者都是C语言流派, 所以标准的源代码安装三部曲即可,即使 configure+ma ...
- keil 4c语言读写寄存器,【STM32单片机学习】第四课:GPIO控制LED(用寄存器编程)
[朱老师课程总结] 第一部分.章节目录 第二部分.章节介绍 3.5.1.STM32的GPIO模块数据手册详解1 本节讲解STM32数据手册中GPIO模块相关的部分,主要是GPIO的各类模式及其配置方法 ...
- 51单片机c语言定义寄存器r,c51特殊功能寄存器定义及作用
单片机C51语言是由C语言继承而来的.和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台.C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件操作能力.对于具 ...
- GNU C 对标准C语言的扩展(转载 懵懵懂懂)
GNU C 对标准C语言的扩展 为了方便使用,GNU C在标准C语言的基础上进行了部分方便开发的扩展.这里讲解一些开发中可能会用到的,或者使用频率比较高的内容. 1 零长度数组和变量长度数组 GNU ...
最新文章
- 图像处理之基础---周末戏说卷积
- linux下创建新用户以及删除
- vue 打印出git提交信息_规范git项目提交并自动生成项目commit log
- hadoop(一) 基本介绍
- 教小学妹学算法:搜索算法解决迷宫问题
- vscode pyqt 环境搭建
- 为Java应用程序提供了空前的代码保护控件DashO-Pro
- c语言求区间内素数个数_C语言题目
- opta球员大数据预测胜负_大数据预测4个特征,10个典型行业
- 2019各个省会城市全新DNS大全一
- 图片与mat文件的转换
- 【SVAC1】SVAC1与H.264支持特性比较
- 如何了解舆情传播的平台及路径?
- DDLMS-DFE算法
- Android如何在账户设置中添加App的账户
- Docker基本管理:上篇(Docker理论概述和基础命令)
- 计算机如何安装无线网络适配器,无线网络适配器是什么,无线网络适配器如何设置...
- c语言实现二分查找法
- uniapp接入萤石云 webview
- ls 如何给文件名中数字排序
热门文章
- 基于Kinect体感器控制的机械臂项目记录
- Android开发读取通讯录信息
- future cancel失败一例
- 应用在hiapk安卓市场分类排行榜中不显示的原因
- 在南方读研和在北方读研有多大差异?
- 0324的学习笔记----里面最重要的就是一个tom猫的动画,和涉及到的内存问题(创建imageview的两种方式,imagenamed就会形成缓存,占用很多内
- mysql的时区_MySQL时区支持
- ncs java 成都 面试_成都java工程师面试一般都是哪些问题,基础难不难!
- 献给减肥族的四例菜谱
- 上海东华计算机分数线,2020年东华大学上海分专业录取分数线