前言
本教程基于B站江协科技课程进行个人学习整理,专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题,也助力新手快速掌握51单片机核心知识,实现从C语言理论到单片机实践应用的高效过渡 。
目录
1.知识储备
1.数码管介绍:
LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成的“8”字型的器件。实物如下图所示。
2.数码管引脚的定义:
共阴数码管:
下图大框标记的图像为共阴数码管原理图,其中上下两个小框标记的位置即为数码管的引脚,上方的为公共阴极引脚,下方的为段码引脚。公共阴极引脚接地,相当于低电平。
共阳数码管:
同理,大框标记图像为公共阳极数码管原理图,其中上下两个小框标记的位置即为数码管的引脚,上方的为公共阳极引脚,下方的为段码引脚。公共阳极引脚接电源,相当于高电平。
3.数码管引脚的连接方式:
根据下图右边的数码管原理图,数码管引脚的连接方式如下图左下角图所示。(LED和引脚的连接的规律:就近原则)
举例:
当你想要显示“6”时,段码如此编译即可,共阴阳两极数码管段码相反即可。
4.四位一体数码管:
其实,它的原理与独立的数码管一样,只是这四个独立的数码管共用一个段码引脚(导致一个问题:数码管不可能在同一时刻显示多个数字)。
5.74HC138译码器
实物如下图所示。
1.下方原理图左框中A、B和C为输入端,其中A为低位、B为中位,C为高位。右框中Y0到Y7为输出端。三个P2口通过A、B、C控制Y0到Y7八个端口,因此该译码器也叫“三八线译码器”。
2.下图标记位置为使能端,与电源和地面相连接,相当于一种开关,如果使能电平有效则可工作,无效则不能工作。
举例:
当输入端输入000时,输出端Y0输出;当输入端输入001时,输出端Y1输出。以此类推,三个P2口即可通过A、B、C控制Y0到Y7八个端口。
6.74HC245(双向数据缓冲器)
实物如图所示:
原理图为下图标记处。
1.下图左下角标记位置为使能端,连接VCC则不工作,连接GND则工作。这里始终连接着GND,
所以一直处于工作状态。
2.下图左下角标记的位置为"DIR",全称为“direction”,翻译为“方向”。DIR的作用就是控制数据流向。当其接高电平,数据在缓冲器中从左向右传输;当其接低电平时,数据在缓冲器中从右向左传输。显然,这里的DIR连接的是电源,也就是高电平,所以数据只能在缓冲器中从左向右的单向传输。
3.数据传输过程为下图所示。简单的想,就是你给P0口什么数据,它就原封不动地传输出去。
4.为什么要在实现数码管显示的电路中接入缓冲器?
当P0口直接连接到数码管时,单片机输出数据当作驱动的数据。
当P0口连接了缓冲器再连接数码管时,单片机输出数据作为控制信号,被缓冲器接收,缓冲器再从自己的电源汲取能量,使电流更大,驱动能力更强,最终将信号输出到数码管引脚上。
5.下图所示为8个独立电阻,作用:作为限流电阻,防止数码管电流过大。
小结:
数码管显示的实现过程:控制P2口——>选中Y0到Y7之间的某一个——再给P0口段码数据——缓冲器——公共段码端——数码管显示相应数据
2.操作流程
1.代码编译
1.打开Keil uVision5,左击屏幕左上角的“Project”。
2.左击如图所示的位置
3.找到你想要存入的文件夹,或者“Ctrl+Shift+N”新建一个文件夹,左击进入。
4.“Ctrl+Shift+N”新建一个文件夹(作者这里已经建好了),左击进入。
5.文件名命名完成,左击“OK”。
6.搜索“AT89C52”,选中并左击“OK”。
7.左击“否”。
8.左击“Target1”左边的符号,右击“Source Group 1”。
9.左击下图所示位置。
10.选择C语言,“Name”命名为“main”,左击“Add”。
11.实现静态数码管显示的代码如下图所示。
12.左击下图所示位置。
13.左击下图所示位置。
14.勾选下图所示选项,左击“OK”。
15..左击下图所示位置,运行代码。
16.下图所示为0错误,代码运行成功。
2.进行烧录
1.打开打开stc-isp,左击“打开程序文件”。
2.找到存储代码文件夹的位置,双击进入。
3..双击“Objects”。
4.双击选中下图所示位置。
5.在确保51单片机已经与电脑连接的状态下,左击“下载/编程”。
6.在确保51单片机已经与电脑连接的状态下,按下51单片机开关,等待操作界面显示“操作成功”的字样后,关闭51单片机再次启动即可。
7.操作结果如下图所示。
3.代码解析
1.这里定义了一个无符号字符型数组NixieTable,它存储了数码管显示 0 - F 以及熄灭状态所对应的段码。
2.函数参数:Location 代表数码管的位置(1 - 8),Number表示要显示的数字(0 - F)。
switch语句:依据Location的值来设置 P2 端口的 P2_4、P2_3 和 P2_2 引脚电平,以此来选择要点亮的数码管。
显示数字:把NixieTable数组中对应Number的段码赋值给 P0 端口,从而让选中的数码管显示相应数字。
3.while(1)
构建了一个无限循环,使程序一直运行,避免退出。
4.总结
这篇总结不仅凝结了我在跟随B站江协科技学习 51 单片机静态数码管显示中的所学所得,更是专门为新手打造的实用指南。尽管内容篇幅不短,但核心要点在于知识储备。当你吃透数码管显示的实现原理与操作流程,便掌握了本节课的精髓。有了这坚实基础,后续学习动态数码管显示自然会水到渠成、毫不费力。