蓝桥杯单片机学习计划之点亮数码管
前言
上一节我们学习了点亮LED灯,成功编写程序将竞赛板上的八个LED灯点亮了,那么今天我们一起来学习点亮数码管。
一、数码管介绍
数码管是一种显示器件,在平时生活中应该是比较常见的,比如有些热水器就是使用数码管来显示水温的。每个数码管的内部其实都是由8个LED灯组成的,只是对其进行了排列然后进行了封装。根据数码管内部连接方式的不同,分为共阳数码管和共阴数码管。竞赛板上使用了两个四位的共阳数码管,原理图如下:
从上图可以看到,每个四位的数码管都有12个管脚,其中com1——com4分别是每一位数码管的公共级,板子上的数码管是共阳的,所以它们的公共级就是阳极;剩下八个管脚分别对应数码管的a——dp段,dp是小数点。如果想要使数码管显示数字1,则只需要让对应的d段和c段点亮,其他熄灭即可,对应十六进的0xF9。0-9数码管段码表如下:
二、原理图
那么板子上数码管和单片机是如何连接的呢?和上一节一样,我们一起顺藤摸瓜寻找一下:
首先从上图可以看到,板子上分别使用两个74H573锁存器控制两个数码管,关于锁存器上一节点亮LED灯的时候已经使用过了,这边就不再介绍了。上面那个锁存器(U7)控制的是数码管的八个段,下面那个锁存器(U8)控制的是八个数码管的位,而两个锁存器的八个输入端都是由P0控制的,另外两个锁存使能端Y7C和Y6C连接如下:
分别连接到了译码器的Y6和Y7,对应真值表:
那么到此为止引脚的连接关系就都找完了。下面开始写程序将数码管点亮。
三、数码管静态显示
那么我们想要将数码管点亮,思路就是:首先选通控制控制位的锁存器,使P0端口输出0xFF(共阳),然后关闭位锁存器,再选通控制端的锁存器,使P0端口输出0x00,那么八个数码管就都点亮了,程序如下:
#include <STC15F2K60S2.H>
void main()
{
P2 = (P2&0x1f) | 0xC0;//位选
P0=0xFF;//打开所有位
P2 &= 0x1f;//锁存
P2 = (P2&0x1f) | 0xE0;//段选
P0