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


相关推荐
且从容.39 分钟前
VUE3学习笔记(根据黑马教程总结)
笔记·学习
蒸蒸yyyyzwd2 小时前
关于 AI 开发相关的一些面经。
笔记·学习
2603_969694853 小时前
JDBC 基础学习笔记:API 核心原理解析与 CRUD 代码实操
数据库·笔记·mysql·学习方法·database·sql注入
迪康coolmu4 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
无咎.lsy7 小时前
《机器学习》笔记
笔记·机器学习
坤坤子吖9 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
蒸蒸yyyyzwd10 小时前
后端相关学习笔记。
笔记·学习
旖旎夜光11 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
Oll Correct12 小时前
Adobe illustrator 案例十二:视频播放(Media & Video)图标绘制
笔记·ui·adobe·illustrator
橙橙笔记13 小时前
QT的学习第四部分
linux·qt·学习·音视频