久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

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

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年11月06日   【字體:
#include <reg52.h>                   //包含文件   
#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í)函數(shù),用于實(shí)現(xiàn)程序中的短暫延時(shí),表示延時(shí)cnt個(gè)毫秒   
void delay(unsigned int cnt)   
{   
    unsigned char i;   
    while(cnt--)   
    {   
        for(i=220;i>0;i--)   
        ;   
    }   
}   

//鍵盤(pán)掃描程序   
uchar keyboardscan(void)   
{   
      uchar sccode,recode;   
      P1=0xf0;    //P1口附初值   
      if((P1&0xf0)!=0xf0)//如果P1口電平不等于0xf0,表示有按鍵按下   
      {   
          delay(20);    //延時(shí)20毫秒后再判斷,看是否還有按鍵按下,次步為軟件防抖   
          if((P1&0xf0)!=0xf0)//繼續(xù)判斷是否有按鍵按下   
         {   
              sccode=0xfe;  //進(jìn)行逐行判斷   
              while((sccode&0x10)!=0)   
             {   
                  P1=sccode;   
                  if((P1&0xf0)!=0xf0)   
                  {   
                      recode=(P1&0xf0|0x0f);   
                      switch((~sccode)+(~recode))   
                      {   // 下面是鍵盤(pán)的編碼識(shí)別   
                          case 0x11:    return(1);    break;   
                          case 0x21:  return(2);    break;   
                          case 0x41:    return(3);     break;   
                          case 0x81:    return(11);  break;//返回對(duì)應(yīng)的鍵值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); //如果沒(méi)有按鍵按下,則返回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();//鍵盤(pán)掃描,看是否有按鍵按下   
        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;   
                }   
            }   
        }   
    }   
}   
關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 伊人精品视频 | 一区二区三区精品视频 | 久久精品国产一区 | 一区二区三区亚洲精品国 | 免费精品 | 青草久久免费视频 | www日日日 | 国产乱码久久久久久一区二区 | 久久久久久免费毛片精品 | 欧美日韩一区在线 | 久久大陆| 久久精品99| 观看av | 国产成人精品久久二区二区 | 国产精品一区二区视频 | 欧美一区不卡 | 欧美理论 | 国产精品久久久久久久 | 日韩 欧美 二区 | 91精品国产综合久久久久久丝袜 | 精品一区二区久久 | 国产黄色麻豆视频 | 色婷婷综合在线观看 | 99久久精品视频免费 | 亚洲 欧美 日韩在线 | 九九伊人sl水蜜桃色推荐 | 国产精品高清一区二区 | 成人乱人乱一区二区三区软件 | 一区二区av | 国产成人精品免费视频大全最热 | 97精品超碰一区二区三区 | av黄色网| 精品自拍视频 | 一级高清视频 | 亚洲一二三在线 | 日本一区二区三区四区 | 毛片一区二区三区 | 超碰一区二区 | 亚洲精品一区二区网址 | 国产精品一区久久久久 | 狠狠综合久久av一区二区老牛 |