//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--); } }