51单片机入门教程——静态数码管显示(新手版)

前言

本教程基于B站江协科技课程进行个人学习整理,专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题,也助力新手快速掌握51单片机核心知识,实现从C语言理论到单片机实践应用的高效过渡 。

目录

前言

1.知识储备

1.数码管介绍:

2.数码管引脚的定义:

共阴数码管:

共阳数码管:

3.数码管引脚的连接方式:

举例:

4.四位一体数码管:

5.74HC138译码器

举例:

6.74HC245(双向数据缓冲器)

小结:

2.操作流程

1.代码编译

2.进行烧录

3.代码解析

4.总结


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 单片机静态数码管显示中的所学所得,更是专门为新手打造的实用指南。尽管内容篇幅不短,但核心要点在于知识储备。当你吃透数码管显示的实现原理与操作流程,便掌握了本节课的精髓。有了这坚实基础,后续学习动态数码管显示自然会水到渠成、毫不费力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值