發一個用51單片機做的簡單計算器的程序. /**********************按鍵處理*******************/ void KeyDeal(unsigned char Key) { //unsigned char n,p; if(Key!=0) //判斷 有無按鍵按下。 { switch(Key) { //以下定義0~9的數字鍵。 case 0x11: K=0; break; case 0x21: K=1; break; case 0x41: K=2; break; case 0x81: K=3; break; case 0x12: K=4; break; case 0x22: K=5; break; case 0x42: K=6; break; case 0x82: K=7; break; case 0x14: K=8; break; case 0x24: K=9; break; //以下+。-,*,/ 鍵 case 0x44: K=10; break; //加 case 0x84: K=11; break; //減 case 0x18: K=12; break; //乘 case 0x28: K=13; break; //除 case 0x48: K=14; break; //等于 case 0x88: K=15; break; //清除 default: break; } if(K<10) //數字鍵 { d[2]=d[1]; d[1]=d[0]; d[0]=K; c[2]=c[1]; c[1]=c[0]; c[0]=b[K]; //以上數組數據賦值是保證數字按鍵入順序移位。 } if(K==10) //加 { m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=1; c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0; } if(K==11)//減 { m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=2; c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;} if(K==12)//乘 { m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=3; c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;} if(K==13)//除 { m=d[2]*100+d[1]*10+d[0],d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0;p=4; c[0]=0xc0, c[1]=0xc0, c[2]=0xc0, c[3]=0xc0, c[4]=0xc0;} if(K==14) //此處是按 =鍵 { n=d[2]*100+d[1]*10+d[0]; if (p==1) shu=m+n; if (p==2) shu=m-n; if (p==3) shu=m*n; if (p==4) shu=m/n; c[4]=b[shu/10000]; c[3]=b[shu%10000/1000]; c[2]=b[shu%1000/100]; c[1]=b[shu%100/10]; c[0]=b[shu%10]; //C[]存的是 計算結果 。 } if(K==15) // 此處是按 清除鍵 {d[0]=0,d[1]=0,d[2]=0,d[3]=0,d[4]=0; shu=0; c[4]=b[shu/10000]; c[3]=b[shu%10000/1000]; c[2]=b[shu%1000/100]; c[1]=b[shu%100/10]; c[0]=b[shu%10]; } } } void main() { while(1) { Key = Keycan();//鍵盤掃描獲取一次按鍵的編碼0x11-0x88 KeyDeal(Key); //對掃描到的鍵盤編碼進行轉換處理,變成數據鍵盤0- display(); }