#include<reg51.h> #define unchar unsigned char const unchar code LED_TAB[]= { //0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90 //共阴 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f //共阳 }; //数码管数字码表 根据实际情况选择共阴还是共阳 unchar LED_BUF[4]; //使能键 //1为关,0为开 sbit LED_A=P1^3; sbit LED_B=P1^2; sbit LED_C=P1^1; sbit LED_D=P1^0; /************************************************* LedStore(unchar first,second,third,fourth) 此函数用来装载LED_BUF[4]缓存,有四个入口参数。 四个入口参数分别为数码管的1,2,3,4位 *************************************************/ //四个入口参数分别为数码管的1,2,3,4位 void LedStore(unchar first,unchar second,unchar third,unchar fourth) { LED_BUF[0]=first; LED_BUF[1]=second; LED_BUF[2]=third; LED_BUF[3]=fourth; } //**************************************************** void LedScan() { static unchar a=0; //控制LED动态显示 switch(a) { case 0: //显示第一个 LED_D=1; LED_A=0; break; case 1: //显示第二个 LED_A=1; LED_B=0; break; case 2: //显示第三个 LED_B=1; LED_C=0; break; case 3: //显示第四个 LED_C=1; LED_D=0; break; } P0=LED_TAB[LED_BUF[a]]; ++a; if(a>3) a=0; }