<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機100內(nèi)的加減乘除計算器C語言程序

          51單片機100內(nèi)的加減乘除計算器C語言程序

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
          #include //包含文件
          #define uchar unsigned char   #define uint  unsigned int   char b[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,   0xa1,0x86,0x8e,0x8c,0xc1,0xce,0x91,0x89,0xc7,0xff};    // 共陰極字符碼   //延時函數(shù),用于實現(xiàn)程序中的短暫延時,表示延時cnt個毫秒   void delay(unsigned int cnt)   {   unsigned char i;   while(cnt--)   {   for(i=220;i>0;i--)   ;   }   }   //鍵盤掃描程序   uchar keyboardscan(void)   {   uchar sccode,recode;   P1=0xf0;    //P1口附初值   if((P1&0xf0)!=0xf0)//如果P1口電平不等于0xf0,表示有按鍵按下   {   delay(20);    //延時20毫秒后再判斷,看是否還有按鍵按下,次步為軟件防抖   if((P1&0xf0)!=0xf0)//繼續(xù)判斷是否有按鍵按下   {   sccode=0xfe;  //進行逐行判斷   while((sccode&0x10)!=0)   {   P1=sccode;   if((P1&0xf0)!=0xf0)   {   recode=(P1&0xf0|0x0f);   switch((~sccode)+(~recode))   {   // 下面是鍵盤的編碼識別   case 0x11:    return(1);    break;   case 0x21:  return(2);    break;   case 0x41:    return(3);     break;   case 0x81:    return(11);  break;//返回對應的鍵值0~15   case 0x12:    return(4);    break;   case 0x22:  return(5);    break;   case 0x42:  return(6);    break;   case 0x82:    return(12);   break;   case 0x14:    return(7);    break;   case 0x24:  return(8);    break;   case 0x44:  return(9);   break;   case 0x84:    return(13);  break;   case 0x18:    return(10);   break;   case 0x28:    return(15);   break;   case 0x48:  return(16);   break;   case 0x88:    return(14);  break;   default:break;   }   }   else   sccode = (sccode<<1)|0x01;   }   }   }   return(0xff); //如果沒有按鍵按下,則返回0xff   }   void output(uchar number)   {   P0=b[number/10];   P2=b[number%10];   }   int yunsuan(uchar a,uchar b,uchar c)   {   switch(c)   {   case 1:return(a/b);break;   case 2:return(a*b);break;   case 3:return(a-b);break;   case 4:return(a+b);break;   }   }   void main(void)                 //主函數(shù)   {   unsigned char n1,n2,key,index,a;   n1=n2=index=0;   P0=P2=b[0];   while(1)   {   key = keyboardscan();//鍵盤掃描,看是否有按鍵按下   if(key != 0xff)//如果有按鍵按下,則key不再是0xff了,顯示該按鍵鍵值   {   if(key<10)   {   if(!index) n1=key%10;   else n2=key%10;   output(key%10);   }   else if(key==15)   {   n1=n2=index=0;   output(0);   }   else if(key==16)   {   if(!index) output(n1);   else   {   a=yunsuan(n1,n2,index);   a=a%100;   output(a);   n1=a;   n2=index=0;   }   }   else   {         if(index==0||n2==0) index=key-10;   else   {   a=yunsuan(n1,n2,index);   a=a%100;   output(a);   n1=a;   n2=0;   index=key-10;   }   }   }   }   }   


          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();