前面的实例中我们已经多次使用发光二极管LED作为单片机输出控制的演示器件,LED作为简单的指示,尤其是刚开始学习单片机的初学者来说,是能够很方便的指示电路和程序运行是否正确的最直观的演示器件,但是LED只能有点亮和熄灭两种状态,不能够指示更多状态了,如果我们想要使用51单片机做一个秒表,需要显示“1,2,3......”这些数字,该怎么办呢?本实例中,我们就来学习一下可以显示数字的数码管的电路和编程实现。
1.1. 实验目的
本实例的电路图如图1所示。
图1 一位数码管显示电路
本实例中,我们将要实现使一位数码管显示0~9的数字。了解数码管的特性和原理,掌握数码管驱动电路的设计以及程序编写。
1.2. 设计思路
数码管的实质是一组发光二极管LED的组合,所以其驱动电路和LED的驱动电路原理是一样的,区别只是LED数量的多少。因为数码管包含多个LED,所以51单片机驱动数码管电路要用到多个I/O端口,电路会复杂一些,因为用到了更多的I/O口,程序的编写也会复杂一些。
1.3. 基础知识
本实例中我们用到的基础知识主要是数码管的结构和原理,以及单片机如何控制I/O端口实现数字的显示。
1.3.1. 数码管的原理
一位数码管的实物如图如图2所示。
图2 一位数码管实物图
通俗的说,数码管是LED数码管的简称,从称呼上就可以看出数码管与LED的关系,数码管显示数字的原理与用火柴棒拼写数字很相似,用多个发光二极管也可以拼成各种数字符号,只不过数码管里面的LED不是圆圆的小点形状,而是长条状的。
图3所示是LED数码管的结构。
图3 数码管的结构
从数码管的结构可以很清晰的看出,数码管就是由LED组成的,从最简单的分析来看,如果想要组成一个数字,最少需要7个长条状的LED,如果再加上小数点,则需要8个LED,只不过小数点所用的LED不能是长条状的,而是点状的。所以叫做8段(不带小数点的则是7段)LED数码管,当然也有14段数码管、16段数码管,如图4、图5所示,其原理与8段数码管一样,只不过将数字段分得更细,以便能显示更多的字符。