2020-12-31 学习74HC595真值表与时序图

news2024/11/19 1:47:06

考资料教你74hc595时序图怎么看知识详解 - 电子常识 - 电子发烧友网

74HC595是串行输入并行/串行输出的移位锁存器。SHCP是移位脉冲,前沿(上升沿)有效,STCP是锁存脉冲,前沿有效,DS是输入信号,MR(低电平有效)清零,OE(低电平有效)输出使能,Q0-Q7并行输出,Q7S串行输出。

  在移位脉冲SHCP的上升沿作用下,输入信号DS在芯片内部进行八次移位,STCP负责锁存,把移位信号保持在芯片内部,OE低电平时,移位后的信号从Q0-Q7八个脚并行输出,同时这八个脚上的信号也以串行的方式从Q7S脚依次输出。该脚输出的信号可作为下一个595的输入信号,理论上讲,可实现无限级联。

下图第一条竖线表示清零,第二三四竖线表示锁存与输出,第五至十竖线表示移位、锁存、输出,第十一竖线表示清零。

 下图是2片595串联运行时的时序,由例子程序运行所得,数据脉冲,前八个移位脉冲与后八个移位脉冲,锁存脉冲:

下图单独写一个驱动595函数,数据为1时的时序:

 下图为添加清零时序图:

 搭建一个简单的595仿真,写一个简单的测试程序之后把程序仿真一下:

#include<reg52.h>//头文件

sbit shcp=P1^2;//数据输入时钟线 595的11脚
sbit stcp=P1^1;//输出存储器锁存时钟线 595的12脚
sbit ds=P1^0;//数据线  595的14脚
sbit mr=P1^3;//数据清零

void QuDong595(unsigned char sj)
{
	char aa=8;
	mr=0;//595清零
	mr=1;
//	sj=255-sj;//十进制取反
	sj=(127+sj)/sj;//八位对应位移
	while(aa--)
	{
		ds=sj%2;//数据发送
        shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。
        shcp=0;
		sj/=2;
	}
	stcp=0;      
    stcp=1;//上升沿将数据送到输出锁存器   
    stcp=0;
}
void main()         //主函数
{
    unsigned char aa=0;
	unsigned int i=0;

	while(1)
	{
		if(++i==0)QuDong595(++aa);
	}
}

可见正确地仿真从1到255之间的变化,假如把代码mr=1;注释掉再仿真即可看到仿真的变化,从而证实时序图中标示的变化了,其他雷同,都可以变化代码进行仿真来学时序图表示的内容;对应第也可对照真值表一一对应起来看;当然了,为了能验证时序图之间的关系,还可以把OE引脚接到IO进行仿真观察,自然要观察Q0-7的输出在程序里面是无法做到的,只有对照仿真能体现出来,当固定一个值时,放慢循环可观察到如主函数内那样延时八个循环。修改代码控制使能,如下:

sbit oe=P1^4;//锁存使能

void QuDong595(unsigned char sj)
{
	char aa=8;
	mr=0;
	mr=1;
	while(aa--)
	{
		ds=sj%2;//数据发送
        shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。
        shcp=0;
		sj/=2;
	}
	stcp=0;      
    stcp=1;//上升沿将数据送到输出锁存器   
    stcp=0;
	oe=1;//锁存使能
	oe=0;
}

 之下是发送4这个值的时序图:其实看这样的时序图更容易明白,不像找到的时序图对得太整齐了,有时还真分别不出对齐的部分到底是看成低电平还是高电平;从下图的时序可明显清晰地看出发送给595一个4这个值所处的高低电平00100000,当然如果使用十六进制数据和移位函数发送看到的也是一样的时序。

配合仿真图可看到Q0-Q7的输出:
.

程序运行的时序图与网络上找到的时序图不同的地方是发送八位后锁存输出与发送1位就锁存输出的区别.
兼顾回复请问C51单片机串转并74HC595的串行输入引脚的电平是怎么输入的? - 24小时必答区
数据电平由移位脉冲存储到芯片内这在芯片说明书上都是有文字描述和时序图示意的,送一个电平移入再送一个电平移入进行八次所以才是串口不是并行,至于数据是要移动7位或1位看电路需求而定,电路可以顺序或逆序连接。
兼顾回复https://ask.csdn.net/questions/7397729 只有启动后停止才生效
 

#include<reg52.h>//头文件

sbit shcp=P1^2;//数据输入时钟线 595的11脚
sbit stcp=P1^1;//输出存储器锁存时钟线 595的12脚
sbit ds=P1^0;//数据线  595的14脚
sbit mr=P1^3;//数据清零
sbit oe=P1^4;//锁存使能
sbit k1=P3^0;//
sbit k2=P3^1;//

unsigned char alt;//数据移动定时时间

void QuDong595(unsigned char sj)
{
	char aa=8;
//	mr=0;
	mr=1;
//	sj=255-sj;//取反
//	sj=(127+sj)/sj;//八位对应位移
	while(aa--)
	{
		ds=sj%2;//数据发送
    shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。
    shcp=0;
		sj/=2;
	}
	stcp=0;      
  stcp=1;//上升沿将数据送到输出锁存器   
  stcp=0;
//	oe=1;
	oe=0;
}
void zdsz()
{
//	      TMOD=0x01;//定时器0  模式1  16位定时模式
//        TH0=(65536-10000)/256;//定时10.000ms
//        TL0=(65536-10000)%256;
//        ET0=1;//使能定时器0
//        EA=1;//开启总中断
//        TR0=1;//开始计数
}
void main()         //主函数
{
  unsigned char aa=0,xd=0;
	unsigned int i=0;
	bit k=0;
//	zdsz();
	while(1)
	{
		if(!k&&++xd==0&&k1==0)k=1;
		if(k&&++xd==0&&k2==0)k=0;
		if(k&&++i==0)
			QuDong595(aa++);
	}
}
void timer0() interrupt 1
{
        TH0=(65536-10000)/256;//10.000ms   进入一次中断
        TL0=(65536-10000)%256;
        alt++;
}

按键不等待释放的例子,兼顾解决关于单片机驱动独立按键的几个问题,求分析 - 24小时必答区 问题

发送2次8位数据,可看到下面的数据往上移动. 单片机+两个74hc595驱动LED程序实在搞不懂了 求大神帮忙 - 24小时必答区

unsigned int QY(unsigned char sj, unsigned char jz)
{
	return (sj-sj/jz*jz);
}
void QuDong595(unsigned char sj)
{
	unsigned char aa=8, er[8];
	while(aa--){er[aa]=QY(sj,2);sj/=2;}
	while(++aa<8)
	{
		ds=er[aa];
//		ds=sj&0x80;sj<<=1;//十六进制数据高位发送
//		ds=QY(sj,2);sj/=2;//十进制数据低位发送
    shcp=1;//上升沿发生移位 上升沿时数据寄存器的数据锁存。
    shcp=0;
	}
	stcp=0;      
  stcp=1;//上升沿将数据送到输出锁存器   
  stcp=0;
}



		QuDong595(ShuMa[j%10]%256);QuDong595(7);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划算法刷题笔记【线性dp】

递推 斐波那契(Fibonacii)数列的递推公式&#xff1a;F(n) F(n -1) F(n - 2) 错排问题&#xff1a;F(n) (n-1) * [F(n-1)F(n-2)] 解释 例题 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 10 级的台阶总共有多少种跳法 思路 要想跳到第…

代码随想录算法训练营第4天 24.两两交换链表中的节点、19. 删除链表的倒数第N个节点、160.链表相交

代码随想录算法训练营第4天 24.两两交换链表中的节点、19. 删除链表的倒数第N个节点、160.链表相交 两两交换链表中的节点 力扣题目链接(opens new window) 给定一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后的链表。 你不能只是单纯的改变节点内部…

C++中的多态

目录 多态的定义及实现 多态的构成条件 虚函数 虚函数重写 虚函数重写的两个例外&#xff1a; override 和 final(C11) 重载、覆盖(重写)、隐藏(重定义)的对比 抽象类 多态的原理 虚函数表 多态的概念&#xff1a;字面的意思就是多种形态&#xff0c;完成某个行为&…

利用MDK的FLM文件生成通用flash驱动

文章目录前言一、FLM文件是什么&#xff1f;二、FLM文件结构1.FlashPrg.c2.FlashPrg.c三、解析FLM文件1.解析flm文件四、设计flash驱动抽象层五、快速使用前言 在进行Flash操作时&#xff0c;一般我们需要设计一套Flash抽象层&#xff0c;至少要包括flash的init&#xff0c;re…

C++STL之stack容器和优先级队列底层详解

一&#xff1a;stack容器1.1&#xff1a;容器适配器概念&#xff1a;容器适配器是用特定类封装作为其底层的容器&#xff0c;并提供一组特定的成员函数来访问元素&#xff0c;stack的底层容器可以是任意的类模板&#xff0c;或者一些其他的容器类&#xff0c;这些容器类应该支持…

JavaScript详解

目录 1.JavaScript基础知识 1.1 JavaScript概述 1.1.1 JavaScript历史 1.1.2 JavaScript是什么 1.1.3 JavaScript的作用 1.1.4 HTML/CSS/JS的关系 1.1.5 基本特点 1.1.6 浏览器执行JS简介 1.1.7 JavaScript脚本语言的组成 1.2 JavaScript使用方法 1.3 JavaScript输…

论文创新及观点2

题目 Zero-Shot Visual Recognition using Semantics-Preserving Adversarial Embedding Networks 摘要 基于visual-semantic embedding&#xff0c;的ZSL方法存在信息损失(semantic loss),的问题&#xff0c;在训练过程中&#xff0c;如果某些语义信息对分类的区分性不大&a…

「项目管理」如何做好研发FO角色?

角色定位 FO &#xff08;Feature Owner&#xff09;&#xff0c;项目某一阶段/版本迭代生命周期的总负责人。基于从需求发起、研发接入、上线等项目过程阶段&#xff0c;可以根据职责本位不同来推荐具体项目成员、干系人担任FO角色&#xff0c;前端、 客户端 、服务端、测试、…

Spring事务和事务传播机制

⭐️前言⭐️ 事务是作为一名后端程序员&#xff0c;必须去要了解清楚的东西&#xff0c;因为它决定了程序的正常运行以及与程序运行效率之间的权衡&#xff0c;这篇文章我们就来了解一下Spring事务和事务传播机制。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &am…

【阶段三】Python机器学习08篇:机器学习项目实战:决策树分类模型

本篇的思维导图: 决策树模型简介 决策树模型的基本原理是通过对一系列问题进行if/else的推导,最终实现相关决策。 下图所示为一个典型的决策树模型——员工离职预测模型的简单演示。该决策树首先判断员工满意度是否小于5,若答案为“是”,则认为该员工会离…

07、ThingsBoard本地打镜像上传到harbor

1、Harbor是什么? Harbor是为企业用户设计的容器镜像仓库开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。 2、安装Harbor 2.1、下载地址 Tags g…

【看表情包学Linux】探讨项目构建问题 | Makefile | 依赖关系与依赖方法 | 伪目标 PHONY

&#x1f923; 爆笑教程 &#x1f449; 《看表情包学Linux》&#x1f448; 猛戳订阅 &#x1f525; &#x1f4ad; 写在前面&#xff1a;本章我们要学习的是 makefile。会不会写 makefile&#xff0c;从一个侧面说明一个人是否具备完成大型工程的能力。一个工程中的源文件不计…

学计算机专业的你后悔了吗?

先说结论&#xff1a;不后悔。当年高考的时候&#xff0c;老师和我们说&#xff0c;将来环境、船舶、园林专业肯定特别吃香&#xff0c;填志愿的时候记得都选上。现在来看&#xff0c;这几个专业妥妥的天坑专业&#xff0c;前段时候还认识一个船舶专业的博士报培训班转计算机&a…

【GNN】图基本知识代码、nxworkx包的基本使用

一个写得很好的博客&#xff1a; 图或网络中的中心性&#xff1a;点度中心性、中介中心性、接近中心性、特征向量中心性、PageRank 特征向量中心性&#xff08;eigenvector centrality&#xff09; 特征向量中心性的基本思想是&#xff0c;一个节点的中心性是相邻节点中心性的函…

Kali Linux渗透测试小实践——Metasploit与后门木马

一、环境和工具准备 1.Metasploit Metasploit是一款开源的安全漏洞检测工具&#xff0c;可以帮助安全和IT专业人士识别安全性问题&#xff0c;验证漏洞的缓解措施&#xff0c;并管理专家驱动的安全性进行评估&#xff0c;提供真正的安全风险情报。这些功能包括智能开发&#…

MySQL常用基础 - 小白必看

MySQL数据库基本操作 一、DDL 概念&#xff1a;是一个数据定义语言 该语言部分包括&#xff1a; 1、对数据库的常用操作 创建数据库&#xff1a; 1、create database 数据库名 (直接删除) 2、create database if not exists 数据库名 &#xff08;判断数据库是否存在&…

Allegro174版本新功能介绍之去掉拷贝自动偏移功能

Allegro174版本新功能介绍之去掉拷贝自动偏移功能 Allegro升级到了174版本的时候,在用拷贝功能的时候,不管怎么拷贝都会出现偏差,即便是拷贝坐标的方式,如下图 那是因为174新增了一个自动粘贴的功能,按照下面的步骤可以去除自动粘贴的功能,具体操作如下 选择Setup选择Use…

1.《计算机组成原理》之初识计算机系统

一、基本内容&#xff1a;基本部件的结构和组织方式。基本运算的操作原理。基本部件和单元的设计思想。二、特色&#xff1a;计算机组成的一般原理&#xff0c;不以具体机型为依托。采用自顶向下的方式、层层细化。三、补充&#xff1a;一、基本内容&#xff1a;1.这门课讲什么…

【JavaScript】JavaScript中的时间函数

JavaScript中的时间函数 关于JavaScript里面时间的函数&#xff1a; 方法描述Date()返回当日的日期和时间。getDate()从Date对象返回一个月中的某一天&#xff08;1 ~ 31&#xff09;。getDay()从Date对象返回一周中的某一天&#xff08;0 ~ 6&#xff09;。getMonth()从Date…

LeetCode 热题HOT100-两数之和(C语言)

LeetCode 热题HOT100-两数之和&#xff08;C语言&#xff09; 作为一名程序语言的学习者&#xff0c;刷力扣我想是必要经历的一条路&#xff0c;所以我也在这里分享刷题后所得知识&#xff0c;也可以帮助更多人理解题意。 给定一个整数数组 nums 和一个整数目标值 target&#…