专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

用单片机制作简单计算器的源程序

作者:佚名   来源:本站原创   点击数:  更新时间:2010年06月18日   【字体:
发一个用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();

   }

关闭窗口

相关文章