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