1.静态数码管显示
对数码管所在管口输入,然后根据二进制计算出6的二进制对应输入101,数码管中输入引脚是7D,这里需要有数码管的显示位置的管口参照,不同单片机可能不同
#include void main() { P2_4=1; P2_3=0; P2_2=1; P0=0x7D;//显示数字6 while(1) { } } 由于引脚冲突,led也会亮 然后设置函数。用Switch来定义所有的输入 #include void Num(unsigned char Location,Number) { switch(Location) { case 1:P2_4=1;P2_3=1;P2_2=1;break; case 2:P2_4=1;P2_3=1;P2_2=0;break; case 3:P2_4=1;P2_3=0;P2_2=1;break; case 4:P2_4=1;P2_3=0;P2_2=0;break; case 5:P2_4=0;P2_3=1;P2_2=1;break; case 6:P2_4=0;P2_3=1;P2_2=0;break; case 7:P2_4=0;P2_3=0;P2_2=1;break; case 8:P2_4=0;P2_3=0;P2_2=0;break; } P0=0x7D; } void main() { Num(6); while(1) { } } 也可以对数字进行设置,在上面的代码中,number没有定义,所以还是显示6 可以用数组的形式,对每个数字的显示形式放在数组中,在函数中调用 #include char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F}; void Num(unsigned char Location,Number) { switch(Location) { case 1:P2_4=1;P2_3=1;P2_2=1;break; case 2:P2_4=1;P2_3=1;P2_2=0;break; case 3:P2_4=1;P2_3=0;P2_2=1;break; case 4:P2_4=1;P2_3=0;P2_2=0;break; case 5:P2_4=0;P2_3=1;P2_2=1;break; case 6:P2_4=0;P2_3=1;P2_2=0;break; case 7:P2_4=0;P2_3=0;P2_2=1;break; case 8:P2_4=0;P2_3=0;P2_2=0;break; } P0=NumTable[Number]; } void main() { while(1) {Num(4,2); } } 2.动态数码管显示 加入延迟函数,不然的话在显示上会有重影,对应位置的显示,也可以用循环语句 #include void Delay(unsigned int xms) { unsigned char i, j; while(xms--) {i = 12; j = 169; do { while (--j); } while (--i);} } char NumTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x07,0x7F}; void Num(unsigned char Location,Number) { switch(Location) { case 1:P2_4=1;P2_3=1;P2_2=1;break; case 2:P2_4=1;P2_3=1;P2_2=0;break; case 3:P2_4=1;P2_3=0;P2_2=1;break; case 4:P2_4=1;P2_3=0;P2_2=0;break; case 5:P2_4=0;P2_3=1;P2_2=1;break; case 6:P2_4=0;P2_3=1;P2_2=0;break; case 7:P2_4=0;P2_3=0;P2_2=1;break; case 8:P2_4=0;P2_3=0;P2_2=0;break; } P0=NumTable[Number]; } void main() { while(1) { Num(1,1); Delay(200); Num(2,2); Delay(200); Num(3,3); Delay(200); } }