两种方式实现
/*用定时器以间隔500MS在6位数码管上
依次显示0、1、2、3….C、D、E、F,重复。*//*轮流在每一位数码管上显示*/
-----------------------------------------------------①---------------------------------------------------------------------
/*利用一个定时器实现数码管从左到右每位依次显示数字,且数字由0变到F再变到0,循环。*/
#include<reg52.h>
#define ui unsigned int
#define uc unsigned char
void init();
sbit we=P2^7;
sbit du=P2^6;
/*数码管段码表*/
uc code tabledu[]= //段码表
{
/*0 1 2 3*/
0x3f,0x06,0x5b,0x4f,
/*4 5 6 7*/
0x66,0x6d,0x7d,0x07,
/*8 9 A B*/
0x7f,0x6f,0x77,0x7c,
/*C D E F 不显示*/
0x39,0x5e,0x79,0x71,0
};
/*数码管位码表*/
uc code tablewe[]= //位码表(从高位到低位)
{
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
};
ui i;
uc numdu=0;
uc numwe=0;
uc flag=0;
void main()
{
init(); //初始化定时器0
i=0;
we=1;
P0=tablewe[0]; //显示第一位数码管;
we=0;
du=1;
P0=tabledu[0];
du=0;
while(1)
{
if(i==20)
{
i=0;
numdu++;
numwe++;
if(numdu==16)