//object: 动态显示数码管,从1显示到9
//writer:mike
//time: 2020,11,14
#include<reg52.h>
sbit wei = P2^7;
sbit du = P2^6;
//数组的类型指的是每一个元素的类型, code则指定存储在代码区 ,而非code 指存户在内存中。
unsigned int code data1[10] = {
0x3F,//0
0x06,//1
0x5B,//2
0x4F,//3
0x66,//4
0x6D,//5
0x7D,//6
0x07,//7
0x7F,//8
0x6F//9
};
void delay(unsigned int);
void main()
{
while(1)
{
//首先打开位选
wei = 1;
P0 = 0xfe; //让第一位显示
//关闭位选
wei = 0;
//打开段选
du = 1;
//显示数字1
P0 = data1[1];
//关闭段选
du = 0;
//点亮第一位之后,延时一段时间
delay(1);
//针对第二位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0xfd;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[2];
//关闭段选
du = 0;
delay(1);
//针对第三位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0xfb;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[3];
//关闭段选
du = 0;
delay(1);
//针对第四位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0xf7;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[4];
//关闭段选
du = 0;
delay(1);
//针对第五位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0xef;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[5];
//关闭段选
du = 0;
delay(1);
//针对第六位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0xdf;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[6];
//关闭段选
du = 0;
delay(1);
//针对第七位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0xbf;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[7];
//关闭段选
du = 0;
delay(1);
//针对第八位数码管
//打开位选
wei = 1;
//设置位选
P0 = 0x7f;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
P0 = data1[8];
//关闭段选
du = 0;
delay(1);
/* //针对第九位数码管
//打开位选
wei = 1;
//设置位选
wei = 0xff;
//关闭位选
wei = 0;
//打开段选
du = 1;
//设置段选
du = data1[9];
//关闭段选
du = 0;
*/
}
}
void delay(unsigned int x)
{
unsigned a, b;
for(a=x;a>0;a--)
{
for(b=120;b>0;b--);
}
}