| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> RT-Thread与cubemx|74HC595驱动数码管详解 -> 正文阅读 |
|
[嵌入式]RT-Thread与cubemx|74HC595驱动数码管详解 |
Part1 74HC595简介74HC595是一个8位串行输入、并行输出的位移缓存器:并行输出为三态输出。在SCK 的上升沿,串行数据由SDL输入到内部的8位位移缓存器,并由Q7'输出,而并行输出则是在LCK的上升沿将在8位位移缓存器的数据存入到8位并行输出缓存器。当串行数据输入端OE的控制信号为低使能时,并行输出端的输出值等于并行输出缓存器所存储的值。 74HC595是具有三态输出功能(即具有高电平、低电平和高阻抗三种输出状态)的门电路。输出寄存器可以直接清除。具有100MHz的移位频率。 引脚介绍
原理介绍此部分不复杂,介绍千篇一律,直接摘录了网上比较好的一个:
595的数据来源只有这一个口,一次只能输入一个位,那么连续输入8次,就可以积攒为一个字节了。假如,我们要将二进制数据0111 1111 输入到595的移位寄存器中,下面来上一张动态图,模拟了前2个位输入的情景。 0111 1111 这个数据完全输入后是这样的 那么数据是怎么一个一个的进入移位寄存器的呢,这里是由单片机时钟脉冲控制的,就好像是钟表一样,秒针隔一秒就走一下,74HC595数据的移动是通过MCU输出时钟脉冲信号,接收到信号之后,移动数据,腾出位置为接收下一个数据做准备,即通过MCU向11引脚发送脉冲信号,HC595接收到上升沿之后,移动数据。 数据接收完成之后,如何将移位寄存器的数据转移到存储寄存器,存储寄存器是直接和8个输出引脚相通的,将移位寄存器的数据转移到存储寄存器后,Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 就可以接受带到我们开始输入的一个字节的数据。所谓存储寄存器,就是数据可以存在这个寄存器中,并不会随着一次输出就消失,只要595不断电,也没有新的数据从移位寄存器中过来,数据就一直不变且有效。新的数据过来后,存储寄存器中的数据就会被覆盖更新。
数据从位移寄存器转移到存储寄存器,也是需要时钟脉冲驱动的,这就是12脚的作用。它也是上升沿有效。 Part2 代码实现上面对原理进行了介绍,非常的简单,接下来,来看看代码如何实现。本次代码依然是基于falling-star board,小伙伴们可以自行在自己的板子上实现,跟着做,没问题的,同时呢,本次使用的是RT-Thread平台。 新建RT_Thread工程文件->新建->RT_Thread项目
cubemx配置喜欢用cubemx的小伙伴,用了rt-thread并不是意味着要放弃cubemx了,rt-thread与cubemx的完美结合,让开发变得更加轻松,接下来,且看如何结合~ 选中cubemx settings,double click即可打开cubemx,慢慢等待~ 打开之后可能会发现封装不太对,一个方式是不用改,MCU资源和操作完全一样的,不会影响,另一个办法是改了他,据小伙伴说,cubemx文件可以用记事本打开,哦呵,真的是打开之后,一大堆配置项,长见识了,修改一下就可以了。 接下来就是cubemx配置的问题了~老生常谈了,各位看官麻烦移步:cubemx的正确打开方式 从最上面的原理分析,我们可以知道,需要控制的引脚有3个,DATA、SCLK、RCLK,上图,实际上小飞哥买的是4位的,8位的多了个级联,且来看看4位的如何驱动 硬件连接为
串口1配置 时钟树图 配置完,关闭cubemx即可,可以看到,配置代码已经同步更新进来 串口配置代码 GPIO配置代码 Part3代码编写先在工程中添加一个新文件夹,迎来存放HC595的驱动代码,建立.c.h文件 先来对用到的IO做个简单的宏定义
GPIO初始化,为了方便更改IO,对GPIO分组及GPIO_PIN作为参数传入初始化
数码管编码
单字节数据写入函数
数码管显示函数,这里封装的比较简单,数据输入,显示不同位,共4位
Part4效果演示Part5资料获取关注公众号,后台回复“74HC595”,节课获取本次实验源码,欢迎添加小飞哥微信,进群交流~ |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:52:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |