好,今天我们来讲解一下如何在使用数码管来显示自己想要显示的数。这里讲解共阴数码管,共阳数码管的原理跟共阴差不多,只是段码变一下以及位选码变了。
首先,这里用一个例子来介绍,要求如下:
Proteus 仿真要求:在最左边 2 位 LED 共阴极数码管显示变量 num 的十进制数
值
因为这里采用的是八位数码管,所以其有8根位选线,而段选线的话无论是几位数码管都是八根线,分别控制数码管八段,也就是大家熟知的七段数码管上的那七段加一个小数点。所以你需要用八个IO口去控制数码管的段选线,而用多少个IO口则取决于你要用到几个数码管了,这里八个全用上了,所以依然用八个IO口控制。可以从下图中看出!
到这里很多朋友会有疑问,这样不是很浪费IO口嘛,是的但是相对于动态扫描,静态显示你需要更多IO口,这里我们采用动态扫描,后面代码会讲解到什么是动态扫描及其使用。另外想减少IO口的占用,你可以用译码器来实现,这里不多说。
!!!这里注意P2(数码管从左向右分别与 P2.7-P2.0 相连),如果修改了,相应连接和代码需要修改。
电路图:
从电路图中我们可以看到这里我用P0口连接数码管的段选,用P2口控制数码管的位选。
这里我们采用动态扫描来实现两位数字的同时显示,因为这里51单片机不能同时去处理两个任务,所以它只能一个一个数字显示过来,但是我们可以利用人眼视觉暂留来快速显示轮流显示数字,这样人眼看过去就会感觉是同时在显示的,所以我们要先使数码管全熄灭然后再给P2口送位选码同时将段码选赋值给P0口,最后延时然后选中下一个数码管重复上述过程即可实现数码管的显示。
代码如下:
//Proteus 仿真要求:在最左边 2 位 LED 共阴极数码管显示变量 num 的十进制数
//P2(数码管从左向右分别与 P2.7-P