接上篇的数码管静态显示,以下是接上篇介绍到的动态显示的原理。
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示
。
1. 数码管简单动态显示
按照上面提到的原理,可以设计得到如下代码:
#include <reg52.h>
#include <intrins.h>
#define unit unsigned int
#define uchar unsigned char
sbit DU = P2^6; //数码管段选
sbit WE = P2^7; //数码管位选
//毫秒级延时函数定义
void delay(uint z)
{
uint x,y;
for(x = z; x>0;x--)
for(y=114;y>0;y--);
}
void main() //main函数自身就会循环
{
//动态扫描就需要循环显示,因此需要写到循环中
while(1)
{
//第一位数码管
P0 = 0xFF; //清楚断码
WE = 1