接着上一篇,上一篇我们讲了点亮LED,通过编写程序,让LED亮起来,而且还能让LED流动起来,设计出不同的花样。那么本篇我们来讲数码管。
首先,我们先来看一下数码管的显示原理。 
数码管的实质就是八个LED,与上一篇差不多。我们开发板上的数码管是共阴极的,如上图(b)所示。让数码管显示数字,只要让相应的LED亮起来就行。如:要让它显示“1”,只要让bc段的LED亮起来就行了(见图a)。 那么,我们来看数码管是怎样跟单片机连接的。如下图所示。
 

★从图中可以看出数码管是先与DM7406连接,再与单片机连接。我们可以先不用管DM7406,那么数码管的a、b、c、d、e、f、g、Dp引脚分别连接单片机的P00~P07脚,而数码管的负极则接到电源负极,但在与电源负极连接时,先接一个三极管起到开关的作用。三极管有一个引脚连接到单片机的P34引脚,这样我们就可以通过单片机控制三极管导通。 ★

这是效果图。接下来来看一下代码:
#include<reg51.h> sbit WE=P3^4; void main() { WE=0; P0=0x06; }
解释一下代码,WE=0是给出低电平让三极管导通,P0=0x06,十六进制的0x06等于二进制的0000 0110,0000 0110从右往左对应的是P00到P07,即数码管的a到Dp,我们给b、c高电平,b、c段自然就亮了。让数码管显示其他数字也是同样的道理,给P0口赋相应的值就可以了。显示{0,1,2,3,4,5,6,7,8,9}对应的十六进制数是{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。这就是数码管的静态显示。接下来讲一下数码管的动态显示。动态显示是什么?四个数码管是一个一个显示的,不是同时显示,只是变化的太快我们肉眼无法看到。为什么要动态显示,让它们同时显示不行吗?同时显示可以,但是太浪费资源。一个数码管有八个脚要与单片机相连,那么四个数码管就要与单片机的32个引脚相连,这就很浪费了,所以我们要动态显示。 要怎么样实现数码管动态显示?我们看一段代码: 

这是效果图。 
可以看到,每开一个数码管都要延时一会,但是不能太长。如果太长的话,就会看到数码管一个一个的显示。你们可以试试看。 这就是数码管的动静态显示。
若本文有任何问题和错误请大家批评指正,信工科技部将每期给您带来 更多精彩内容,敬请关注!
|