51单片机学习笔记——点亮数码管、模块化编程

  • 工作原理图

138译码器

G1、G2A、G2B为138译码器的使能端

P22、P23、P24为输入口控制Y0-Y7的动作,以二进制的算法

具体如下:

P22 P23 P24

0 0 0 Y0为1其余为0

0 0 1 Y1为1其余为0

0 1 0 Y2为1其余为0

0 1 1 Y3为1其余为0

那么138译码器有什么用呢?138译码器可以用来控制数码管显示的位数

如当Y0为1时第一个数码管亮,因此可以节省IO口.

数码管模块

74HC245为双向数据缓冲器,主要作用就是数据缓冲。

左边的P口就是用来给数码管传送段码控制亮的数码管内容的。

练习:让指定的位置输出指定的数字

P0=NumallNum的意思是时P0口等于Numall数组里第Num位的值

然后在主程序的直接调用xuan函数,函数的值(数码管的位置,要显示的数);

数码管要显示的值我们已经用数组全部列出了

动态数码管显示

如果想要多个数码管同时显示应该怎么做?

我们知道程序是在不断刷新的,当刷新的速度够快达到肉眼不可见的速度时,即可一同显示

关于消隐:由于上一位的数据提前来到下一位所以造成阴影,导致数码管显示不清晰,需要加一段延时即可。

模块化编程

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include"XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等。

.c文件:函数、变量的定义

可被外部调用的函数、变量的声明.h文件:

任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)使用到的自定义函数的.c文件必须添加到工程参与编译使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)

利用模块化的思路来做上面的程序

Main

Nixie


相关推荐
171320330计算机毕设编程14 分钟前
计算机毕业设计 基于springboot+vue的在线观鸟视频播放网站 LW PPT
java·大数据·vue.js·spring boot·算法·课程设计
kkkkkkkkkk_Z42 分钟前
新手自学嵌入式 | 学习日记:I2C总线协议、时序分析、读写流程与代码实现
学习
NetX行者1 小时前
Rust 初体验:一个全栈工程师的编译器“毒打“笔记
开发语言·笔记·rust
热爱生活的五柒2 小时前
zotero能导入已经下载好的pdf文件嘛,并且点击条目时,能直接看到下载的pdf文件嘛,我还希望能在里面做笔记
笔记·pdf
HRTOS2 小时前
HRTOS 4.0 中断嵌套注意事项:为什么不建议在嵌套中断中调用唤醒任务 API?
单片机·嵌入式硬件·51单片机
鬼手点金2 小时前
构建有效 Agent 的核心原则
java·人工智能·git·学习·自动化
姜九笙5613 小时前
python学习---归来仍是新人
java·python·学习
海绵宝宝转agent3 小时前
2026-10-19学习笔记
笔记·学习
金色光环3 小时前
【概率论详细笔记】泊松分布是怎么来的?应该怎么用?
笔记·概率论
又見山4 小时前
双向链接的本质:链接不是功能,是思考留下的痕迹
笔记·obsidian