新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用單片機(jī)制作簡單計(jì)算器的源程序

用單片機(jī)制作簡單計(jì)算器的源程序

作者: 時(shí)間:2012-10-20 來源:網(wǎng)絡(luò) 收藏
發(fā)一個(gè)用51做的簡單的程序./**********************按鍵處理*******************/void KeyDeal(unsigned char Key){  //unsigned char n,p;if(Key!=0)     //判斷 有無按鍵按下。{switch(Key){  //以下定義0~9的數(shù)字鍵。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(K10)  //數(shù)字鍵{           d[2]=d[1];d[1]=d[0];d[0]=K;c[2]=c[1];c[1]=c[0];c[0]=b[K];//以上數(shù)組數(shù)據(jù)賦值是保證數(shù)字按鍵入順序移位。}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)//乘{(lán) 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[]存的是  計(jì)算結(jié)果  。}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-0x88KeyDeal(Key);  //對掃描到的鍵盤編碼進(jìn)行轉(zhuǎn)換處理,變成數(shù)據(jù)鍵盤0-display();}


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉