嵌入式进阶——数码管

🎬 秋野酱:《个人主页》
🔥 个人专栏:《Java专栏》《Python专栏》

⛺️心若有所向往,何惧道阻且长

文章目录

    • 数码管结构
    • 移位寄存器
    • 原理图
    • 移位寄存器数据流程
    • 移位寄存器控制流程
    • 移位寄存器串联
    • 实现数码管显示

数码管结构

共阴与共阳
共阳数码管是指将所有发光二极管的阳极接到一起,形成公共阳极(COM)的数码管,共阳数码管在应用的时候,应该将 COM 端口接到正极,当某一段发光二极管的阴极为低电平的时候,相对应的段就点亮,当某一字段的阴极为高电平的时候,相对应段就不亮。
1位数码管
在这里插入图片描述
在这里插入图片描述
2位数码管
在这里插入图片描述
在这里插入图片描述
4位数码管
在这里插入图片描述
在这里插入图片描述

移位寄存器

74HC595 是一款 8 位 CMOS 移位寄存器。8 位并行输出端口为可控的三态输出,一 个串行输入端口,可以实现多级芯片串行控制,组成 8n 位(n 为芯片数量)并行输出 。
优点:通过逻辑操作来控制LED的状态,少量的引脚控制更多的状态。
在这里插入图片描述

原理图

在这里插入图片描述

移位寄存器数据流程

移位寄存器的引脚:

  1. LATCH_CLOCK: 锁存时钟
  2. SHIFT_CLOCK: 移位时钟
  3. A: 数据输入信号管脚
  4. QA~QH: 将二进制数据信号转化为高低电平输出给数码管
  5. SQH: 串行数据输出管脚
    在这里插入图片描述
    上图帮我们认识了几个管脚的作用:
    ● A:数据信号输入
    ● QA~QH: 高低电平输出
    同时再次加深了我们对74HC595功能的理解:将二进制数据转换为高低电平的一个工具。

移位寄存器控制流程

数量流程中,数据变成高低电平过程清楚了。但是数据是给到芯片的,给这个过程是比较讲究的。
也就是我们传统说法,要按照规矩来传递数据。数据传递是要通过协议的。
我们通过 数据输入信号管脚(原理图上标记为A)来输入数据。我们必须清楚的知道,一个引脚给数据,其实就是给高低电平信号,一个高低电平信号只能表示一个bit,而我们又8给输出口,理论上需要给8次高低电平才能满足8个端口的输出要求。但是如何去界定8给高低电平呢,就需要用时间去界定。提供了两个引脚:

  1. LATCH_CLOCK: 锁存时钟引脚
  2. SHIFT_CLOCK: 移位时钟引脚
    在这里插入图片描述
    移位:由低电平变为高电平,表示记录一个位的电平。
    锁存:由低电平变为高电平,表示将记录的数据应用到电路中。

移位寄存器串联

在这里插入图片描述

本案例中是有两个移位寄存器U1和U2的。分别关注两个移位寄存器的A和SQH.
在这里插入图片描述
通过流程我们可以明确以下结论:

  1. 移位寄存器通过A输入数据
  2. 移位寄存器通过SQH输出数据
  3. 两个移位寄存器通过将一个的SQH输出到另外一个的输入A口,两个移位寄存器就串联了
  4. 末端的移位寄存器输出口悬空表示不输出
  5. 数据会传递到末端,也就是数据会先填充的是末端。
    串联后控制流程需要有所改变,改变如下:
    在这里插入图片描述

实现数码管显示

#include "Config.h"
#include "GPIO.h"
#include "Delay.h"#define	NIXIE_DI	P44	// 数据输入
#define	NIXIE_SCK	P42	// 移位寄存器
#define	NIXIE_RCK	P43	// 锁存寄存器void GPIO_config(void) {GPIO_InitTypeDef	GPIO_InitStructure;		//结构定义GPIO_InitStructure.Pin  = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;		//指定要初始化的IO,GPIO_InitStructure.Mode = GPIO_PullUp;	//指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PPGPIO_Inilize(GPIO_P4, &GPIO_InitStructure);//初始化
}#define GET_BIT_VAL(byte, pos)	(byte & (1 << pos))int main() {char i;u8 a_dat = 0x12;	// 0001 0010	字母位 5.//&1000	0000u8 b_idx = 0x1F;	// 0001 1111	数字位 GPIO_config();// 显示 7.// 0111 1000// 先发字母位 (控制显示的内容)// 8bit,先发出去的会作为高位for(i = 7; i >= 0; i--){ // 0点亮NIXIE_DI = GET_BIT_VAL(a_dat, i);// 寄存器的移位操作NIXIE_SCK = 0;NOP2();NIXIE_SCK = 1;NOP2();}// 再发数字位 (控制显示哪几个)// 1111 1011// 7.7.空7. 7.7.7.7.  -------------------与二级制是反向for(i = 7; i >= 0; i--){ // 只要不是0,就是高电平NIXIE_DI = GET_BIT_VAL(b_idx, i);// 寄存器的移位操作NIXIE_SCK = 0;NOP2();NIXIE_SCK = 1;NOP2();}// 锁存操作NIXIE_RCK = 0;NOP2();NIXIE_RCK = 1;NOP2();while(1) {}
}

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

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

相关文章

linux centos循环ping网段ip

循环ping&#xff0c;检测ip是否可用&#xff0c;ping通为正在使用yes&#xff0c;no为不通 vim test.sh#!/bin/bash ip"192.168.1."echo "ping log:" > ./ping.txt for i in {1..128} doping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl" &&a…

Android跨进程通信--Binder机制及AIDL是什么?

文章目录 Binder机制Binder是什么&#xff1f;Binder相对于其他几种跨进程通信方式&#xff0c;有什么区别&#xff1f;谈一下 Binder IPC 通信过程&#xff1a;具体的通讯过程是什么&#xff1f;Binder如何处理发送请求与接收请求?Binder是通过什么方式来进行内存映射的&…

linux入门到精通-第十九章-libevent(开源高性能事件通知库)

目录 参考什么是libevent应用核心实现libevent的地基event_base等待事件产生&#xff0c;循环监听event_loop退出循环监听event_base_loopexit创建事件工作流程 安装一&#xff08;源码安装&#xff0c;推荐&#xff09;现在源码配置编译安装验证安装 安装二&#xff08;可能因…

KingbaseES数据库merge语法

数据库版本&#xff1a;KingbaseES V008R006C008B0014 简介 MERGE 语句是一种用于数据操作的 SQL 语句&#xff0c;它能够根据指定的条件将 INSERT、UPDATE 和 DELETE 操作结合到单个语句中。其主要作用是在目标表和源表之间进行数据比较和同步&#xff0c;根据条件的匹配情况来…

RAG概述(二):Advanced RAG 高级RAG

目录 概述 Advanced RAG Pre-Retrieval预检索 优化索引 增强数据粒度 粗粒度 细粒度 展开说说 优化索引 Chunk策略 Small2Big方法 元数据 引入假设性问题 对齐优化 混合检索 查询优化 查询扩展 查询转换 Post-Retrieval后检索 参考 概述 Native RAG&#…

springboot vue 开源 会员收银系统 (4) 门店模块开发

前言 完整版演示 前面我们对会员系统 springboot vue 开源 会员收银系统 (3) 会员管理的开发 实现了简单的会员添加 下面我们将从会员模块进行延伸 门店模块的开发 首先我们先分析一下常见门店的管理模式 常见的管理形式为总公司 - 区域管理&#xff08;若干个门店&#xff…

C语言 | Leetcode C语言题解之第113题路径总和II

题目&#xff1a; 题解&#xff1a; int** ret; int retSize; int* retColSize;int* path; int pathSize;typedef struct {struct TreeNode* key;struct TreeNode* val;UT_hash_handle hh; } hashTable;hashTable* parent;void insertHashTable(struct TreeNode* x, struct Tr…

C++干货 --类和对象(二)

前言&#xff1a; 上文中&#xff0c;我们介绍了类这一重要知识点&#xff0c;包括为什么要有类、类的使用方法、封装、以及对象实例化。详情可以去看我的文章&#xff1a;写文章-CSDN创作中心C干货 --类和对象(一)-CSDN博客写文章-CSDN创作中心 这篇文章&#xff0c;我们简单…

我学会了用插件来辅助PostgreSQL,可拷,很刑!

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复&#xff0c; 安装迁移&#xff0c;性能优化、故障…

【蓝桥杯省赛真题44】python计算N+N的值 中小学青少年组蓝桥杯比赛 算法思维python编程省赛真题解析

目录 python计算NN的值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python计算NN的值 第十四届蓝桥杯青少年组python省赛真题 一、题目要求…

【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)

背景需求&#xff1a; 【教学类-58-04】黑白三角拼图04&#xff08;2-10宫格&#xff0c;每个宫格随机1张-6张&#xff0c;带空格纸&#xff0c;1页6张黑白&#xff0c;1张6张白卡&#xff09;-CSDN博客文章浏览阅读582次&#xff0c;点赞16次&#xff0c;收藏3次。【教学类-58…

Mac安装pytorch

先下载 Anaconda | The Operating System for AI 网速慢&#xff0c;用中国大陆镜像&#xff1a;NJU Mirror 之前装python3时用的是pip3&#xff0c;这里说一下这pip与conda的区别 Conda和pip都是Python包管理工具&#xff0c;用于安装和管理Python包 包管理范围&#xff1a…

汽车数据应用构想(一)

自从电动汽车GB/T32960标准颁布&#xff0c;要求所有电动汽车必须上传数据开始&#xff0c;各车厂就开始花费大量的人力物力&#xff0c;用于数据的上传与存储。同时随着智能化、网联化的趋势&#xff0c;不断丰富上传数据的内容与数量。数据已成为车厂的重要资产&#xff0c;但…

微服务:eureka的搭建,以及服务注册、服务发现、负载均衡

eureka 搭建 新建一个Module,maven项目&#xff0c;导入依赖。 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><…

24年湖南教资认定即将开始,别被照片卡审!

24年湖南教资认定即将开始&#xff0c;别被照片卡审&#xff01;

Jenkins 流水线(Pipeline)详解

大家好&#xff0c;Jenkins 流水线&#xff08;Pipeline&#xff09;是一种可编排的持续集成和交付&#xff08;CI/CD&#xff09;方法&#xff0c;它以代码的方式定义整个软件开发过程中的构建、测试和部署流程。接下来就跟大家分享一下Jenkins 流水线&#xff08;Pipeline&am…

2024年5月26日 (周日) 叶子游戏新闻

资深开发者&#xff1a;3A游戏当前处于一种尴尬的中间地带游戏行业整体&#xff0c;尤其是3A游戏正处于艰难时期。尽管2023年3A游戏佳作频出&#xff0c;广受好评&#xff0c;但居高不下的游戏开发成本&#xff08;传闻《漫威蜘蛛侠2》的制作成本高达3亿美元&#xff09;正严重…

【机器学习结合AI绘画工具】——开启艺术创作的新纪元

目录 一、AI绘画工具的发展历程 二、AI绘画工具的技术原理 实例说明 三、AI绘画工具在艺术创作中的应用 实例网站 四、AI绘画工具的影响与未来展望 结论 机器学习和人工智能&#xff08;AI&#xff09;在过去的十年里取得了显著的进展。特别是在艺术创作领域&#xff0c…

excel表格写存神器--xlwt

原文链接&#xff1a;http://www.juzicode.com/python-tutorial-xlwt-excel 在 Python进阶教程m2d–xlrd读excel 中我们介绍了Excel表格的读取模块xlrd&#xff0c;今天这篇文章带大家了解Excel表格写存模块xlwt。他俩名字相近都以Excel的简写xl开头&#xff0c;rd是read的简写…

Java顺序表

Java顺序表 前言一、线性表介绍常见线性表总结图解 二、顺序表概念顺序表的分类顺序表的实现throw具体代码 三、顺序表会出现的问题 前言 推荐一个网站给想要了解或者学习人工智能知识的读者&#xff0c;这个网站里内容讲解通俗易懂且风趣幽默&#xff0c;对我帮助很大。我想与…