51单片机——74HC595的应用(SPI实践)

news2024/11/24 9:14:31

目录

SPI总线

SPI总线概述

 SPI总线分类

SPI 优点及缺点

SPI接口硬件原理

SPI四种工作模式 

74HC595应用

74HC595芯片概述

74HC595封装及管脚功能

74HC595工作原理 ​编辑

 74HC595串行转并行点亮LED灯

 程序实现 

 Proteus运行结构示意图


 

SPI总线

SPI总线概述

  •  SPI(Serial Peripheral interface):串行外围设备接口
  •  用途:用来在微控制器与外围设备芯片之间实现数据交换
  •  特点:高速、全双工、同步

 SPI总线分类

四线制 全双工SPI(同时收发)

MISO      主机输入/从机输出

MOSI      主机输出/从机输入

SCLK     串行时钟

CS或SS 外设片选或从机选择

三线制 半双工SPI(分时收发)

SCLK      串行时钟

CS或SS  外设片选或从机选择

DIO         数据线 输入与输出共用

SPI 优点及缺点

  • 优点:全双工(输入/输出独立)、物理结构简单、操作简单、数据传输速率高
  • 缺点:需要占用较多IO口、只支持单主机、没有指定的流控制、没有应答确认机制

注:SPI每有一个从器件就会多占用主器件的一个IO口,故比较浪费资源

SPI接口硬件原理

SPI工作原理:

  • 两个移位寄存器的数据交换,传输的数据为8位,
  • 在主器件产生的从器件使能信号和移位脉冲信号下按位传输

SPI四种工作模式 

极性(CPOL)和相位(CPHL)

CPOL(极性)作用
0空闲时SCLK为低电平
1空闲时SCLK为高电平
CPHA(相位)作用
0每个周期第一个时钟沿采样
1每个周期第二个时钟沿采样

  • 注:工作模式由从机芯片决定,需要查阅从机芯片手册,让单片机去适应从机芯片时序
  • 注:如第一个时钟沿采样则第二个时钟沿输出,反之亦然 输出即发数据,采样即读数据

74HC595应用

74HC595芯片概述

芯片功能:

  • 74HC595 是一款8位 CMOS 移位寄存器
  • 一个串行输入端口,八位并行输出端口为可控的三态输出
  • 一个串行输出端口可实现多级芯片串行控制,组成8n位并行输出

主要用途:LED数码管驱动、自动化工程等(主要用来实现 串转并 节省IO口)

74HC595封装及管脚功能

74HC595工作原理 

 注:SCK时钟及SER数据输入,其本质为 CPOL(极性)=0 CPHA(相位)=1 的SPI总线

 74HC595串行转并行点亮LED灯

 程序实现 

#include<reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit ST=P0^2; //存储寄存器时钟
sbit DS=P0^1; //串行输入数据线
sbit SH=P0^0; //移位寄存器时钟

uint num[8] = {0,0,1,0,1,0,1,1};//暂时存储点

void HC595(uint num)//移位寄存器
{ 
	SH=0;
	ST=0;
	DS=num;
	SH=0;//产生上升沿,将数据写入移位寄存器
	SH=1;
}

main()
{
	uint i=0;
	while(1)
	{
		SH=0;
		ST=0;
		for(i=0;i<8;i++)
		{
			HC595(num[i]);
		}
		ST=0;//产生上升沿将数据写入存储寄存器
		ST=1;
	}
}

 Proteus运行结构示意图

 

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

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

相关文章

【FiddlerScript】利用Fiddler中的FiddlerScript解除7K7K小游戏的防沉迷

本文仅供技术探讨&#xff0c;切勿用于非法用途案例网站:http://www.7k7k.com/准备的工具:配置好的Fiddler一个Fiddler官方英文版配置教程:https://www.bilibili.com/video/BV1rP4y1t7ZLFiddler中文版配重教程:https://www.bilibili.com/video/BV1CP4y1t7DR开始教程来到Fiddler…

10 个最难理解的 Python 概念

文章目录技术提升面向对象编程 (OOP)装饰器生成器多线程异常处理正则表达式异步/等待函数式编程元编程网络编程大家好&#xff0c;与其他编程语言相比&#xff0c;Python 是一门相对简单的编程语言&#xff0c;如果你想真正学透这门语言&#xff0c;其实可能并不容易。 今天我…

彻底弄懂HTTP缓存机制及原理(二)

强制缓存 从上文我们得知&#xff0c;强制缓存&#xff0c;在缓存数据未失效的情况下&#xff0c;可以直接使用缓存数据&#xff0c;那么浏览器是如何判断缓存数据是否失效呢&#xff1f; 我们知道&#xff0c;在没有缓存数据的时候&#xff0c;浏览器向服务器请求数据时&…

Linux(十一)生产者与消费者模型

引言 一、实现一个网关来过滤流经网关的数据 二、农忙时节收割麦子 生产者与消费者模型 模型实现 完整源码&#xff1a; 引言 阐述这个模型之前先引入俩个例子&#xff1a; 一、实现一个网关来过滤流经网关的数据 网关会捕捉大量的数据然后进行分析处理&#xff0c;之后…

VHDL语言基础-状态机设计-时序电路与状态机的关系

目录 时序电路的概念&#xff1a; 下面以一个简单的三位计数器为例&#xff0c;说明时序电路的结构&#xff1a; 三位计数器的结构&#xff1a; 次态逻辑关系的推导&#xff1b;画出卡诺图如下&#xff1a; 电路图&#xff1a; 时序电路与状态机的关系&#xff1a; 状态机…

PyTorch学习笔记:nn.Tanh——Tanh激活函数

PyTorch学习笔记&#xff1a;nn.Tanh——Tanh激活函数 torch.nn.Tanh()功能&#xff1a;逐元素应用Tanh函数&#xff08;双曲正切&#xff09;对数据进行激活&#xff0c;将元素调整到区间(-1,1)内 函数方程&#xff1a; Tanh(x)tanh(x)ex−e−xexe−x\text{Tanh}(x)\text{ta…

每天10个前端小知识 【Day 11】

前端面试基础知识题 1. 浏览器的垃圾回收机制有哪些&#xff1f; JS会在创建变量时自动分配内存&#xff0c;在不使用的时候会自动周期性的释放内存&#xff0c;释放的过程就叫 “垃圾回收”。 一方面自动分配内存减轻了开发者的负担&#xff0c;开发者不用过多的去关注内存…

单链表--C语言版(从0开始,超详细解析,小白一看就会)

目录 一、前言 &#x1f34e; 为什么要学习链表 &#x1f4a6;顺序表有缺陷 &#x1f4a6; 优化方案&#xff1a;链表 二、链表详解 &#x1f350;链表的概念 &#x1f349;链表的结构组成&#xff1a;节点 &#x1f353;链表节点的连接&#xff08;逻辑结构与物理结构的区…

java spring注解方式 实现基本类型属性注入

之前 我们看了几个注入属性的注解 但他们都是注入对象类型的 那么 下面我们就看一个 给基本属性注入值的注解 value 我们直接代码快速演示一下 创建一个项目 然后引入 spring 所需要的依赖 然后在src下创建包 Bean 在 Bean目录下创建一个包 叫 UserData 然后在src下创建 bean…

leaflet 上传geojson文件,在地图上显示图形(示例代码053)

第053个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet示例中上传geojson文件,通过L.geojson解析,在地图上显示图形。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共97行)相关API参考:专栏目标…

微服务项目【mybatis-plus与微服务注册】

Mybatis与微服务注册 一、SpringBoot整合MybatisPlus 创建自动生成代码子模块 基于maven方式创建子模块zmall-generator&#xff0c;用于结合mybatis-plus生成代码。 在公共模块zmall-common中注释掉mybatis的依赖引入&#xff0c;改换成mybatis-plus依赖引入 <!-- myba…

【大数据Hadoop】Hadoop 3.x 新特性总览

Hadoop 3.x 新特性剖析系列11. 概述2. 内容2.1 JDK2.2 EC技术2.3 YARN的时间线V.2服务2.3.1 伸缩性2.3.2 可用性2.3.3 架构体系2.4 优化Hadoop Shell脚本2.5 重构Hadoop Client Jar包2.6 支持等待容器和分布式调度2.7 支持多个NameNode节点2.8 默认的服务端口被修改2.9 支持文件…

MAC Pro 安装 VS Code 配置 C/C++ 开发环境

目录 文章目录目录安装 VS Code配置 C/C 开发环境Hello World1、创建项目和源码2、编译运行3、调试C/C configuration安装 VS Code 下载安装包&#xff1a;https://code.visualstudio.com/Download解压并将文件放入 “应用程序"。 配置 C/C 开发环境 官方文档&#xff1…

linux 服务器线上问题故障排查

一 线上故障排查概述 1.1 概述 线上故障排查一般从cpu,磁盘,内存,网络这4个方面入手; 二 磁盘的排查 2.1 磁盘排查 1.使用 df -hl 命令来查看磁盘使用情况 2.从读写性能排查:iostat -d -k -x命令来进行分析 最后一列%util可以看到每块磁盘写入的程度,而rrqpm/s以及…

C语言 | 预处理知识详解 #预处理指令有哪些?他们如何使用?宏和函数有哪些区别?...#

文章目录前言预定义符号介绍预处理指令#define#define替换规则预处理指令 #undef宏和函数的对比宏和函数的对比图命名约定命令行定义条件编译预处理指令 #include嵌套文件包含其他预处理指令写在最后前言 上篇文章介绍了一个程序运行的 编译与链接 &#xff0c;其中编译阶段有个…

python+django在线教学网上授课系统vue

随着科技的进步&#xff0c;互联网已经开始慢慢渗透到我们的生活和学习中&#xff0c;并且在各个领域占据着越来越重要的部分&#xff0c;很多传统的行业都将面临着巨大的挑战&#xff0c;包括学习也不例外。现在学习竞争越来越激烈&#xff0c;人才的需求量越来越大&#xff0…

Java高级-集合-Collection部分

本篇讲解java集合 集合 集合框架的概述 集合、数组都是对多个数据进行存储操作的结构&#xff0c;简称Java容器。 说明&#xff1a;此时的存储&#xff0c;主要指的是内存层面的存储&#xff0c;不涉及到持久化的存储&#xff08;.txt,.jpg,.avi&#xff0c;数据库中&#xf…

Java面试——MyBatis相关知识

目录 1.什么是MyBatis 2.MyBatis优缺点 3.MyBatis工作原理 4.MyBatis缓存模式 5.MyBatis代码相关问题 6.MyBatis和hibernate区别 1.什么是MyBatis MyBatis是一个半ORM持久层框架&#xff08;对象关系映射&#xff09;&#xff0c;基于JDBC进行封装&#xff0c;使得开发者…

【Python实战案例】Python3网络爬虫:“可惜你不看火影,也不明白这个视频的分量......”m3u8视频下载,那些事儿~

前言 哈喽&#xff01;上午好嘞&#xff0c;各位小可爱们&#xff01;有没有等着急了呀~ 由于最近一直在学习新的内容&#xff0c;所以耽搁了一下下&#xff0c;抱歉.jpg 双手合十。 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移…

蓝海创意云获苏州电信2022年度“云业务优秀合作方”表彰

2月8日&#xff0c;中国电信苏州分公司召开产业数字化生态合作峰会&#xff0c;围绕“力量源于团结 奋斗创造奇迹”主题&#xff0c;凝聚合作伙伴合力&#xff0c;构建共生共赢的产业生态&#xff0c;蓝海创意云作为合作企业代表应邀出席峰会。会上&#xff0c;蓝海创意云荣获峰…