要求:通过键盘任意输入8个数字,实时按照输入顺序依次从左到右在数码管上显示。
下面是我自己写的代码 #include <reg51.h> #define uint unsigned int #define uchar unsigned char uint i,button,temp,num,j=0,n; uchar code button_table[]={0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb}; uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar address[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void delay(n) { for(i=n;i>0;i--) ; } void delay2() {for(n=50000;n>0;n--) ; } /*****************************************************************/ void main() { while(1) { P3=0xf0; if(P3!=0xf0) { delay(10000); if(P3!=0xf0) { temp=P3; P3=0x0f; button=P3|temp; for(i=0;i<10;i++) { if(button==button_table[ i]) { num=i;break;} } P2=address[j]; P0=table[num]; delay2(); j++; if(j==8)
{j=0;} } } ; } }
但是这个只能实现显示当前按键所对应的数字,图上是我第三个按键按的6,用这种动态显示的数码管无法显示8个数啊,应该怎么办?求大佬解答一下,谢谢~
|