自己的计算器.docx

上传人:b****6 文档编号:8887494 上传时间:2023-02-02 格式:DOCX 页数:9 大小:15.07KB
下载 相关 举报
自己的计算器.docx_第1页
第1页 / 共9页
自己的计算器.docx_第2页
第2页 / 共9页
自己的计算器.docx_第3页
第3页 / 共9页
自己的计算器.docx_第4页
第4页 / 共9页
自己的计算器.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

自己的计算器.docx

《自己的计算器.docx》由会员分享,可在线阅读,更多相关《自己的计算器.docx(9页珍藏版)》请在冰豆网上搜索。

自己的计算器.docx

自己的计算器

voidkeyscan()//键盘扫描程序

{

P3=0xfe;

if(P3!

=0xfe)

{

  delay(20);延迟20ms

  if(P3!

=0xfe)

  {

   temp=P3&0xf0;

   switch(temp)

   {

    case0xe0:

num=0;

      break;

    case0xd0:

num=1;

      break;

    case0xb0:

num=2;

      break;

    case0x70:

num=3;

      break;

   }

  }

  while(P3!

=0xfe);

  if(num==0||num==1||num==2)//如果按下的是'7','8'或'9

  {

      if(j!

=0)

       {

         write_com(0x01);

         j=0;

        }

      if(flag==0)//没有按过符号键

   {

    a=a*10+table[num];

   }

   else//如果按过符号键

   {

    b=b*10+table[num];

   }

  }

  else//如果按下的是'/'

  {

   flag=1;

   fuhao=4;//4表示除号已按

  }

  i=table1[num];

  write_date(0x30+i);

}

P3=0xfd;

if(P3!

=0xfd)

{

  delay(5);

  if(P3!

=0xfd)

  {

   temp=P3&0xf0;

   switch(temp)

   {

    case0xe0:

num=4;

        break;

      

    case0xd0:

num=5;

        break;

      

    case0xb0:

num=6;

        break;

      

    case0x70:

num=7;

        break;

   }

  }

  while(P3!

=0xfd);

  if(num==4||num==5||num==6&&num!

=7)//如果按下的是'4','5'或'6'

  {

   if(j!

=0)

       {

         write_com(0x01);

         j=0;

        }

      if(flag==0)//没有按过符号键

   {

    a=a*10+table[num];

   }

   else//如果按过符号键

   {

    b=b*10+table[num];

   }

  }

  else//如果按下的是'/'

  {

   flag=1;

   fuhao=3;//3表示乘号已按

  }

  i=table1[num];

  write_date(0x30+i);

}

P3=0xfb;

if(P3!

=0xfb)

{

  delay(5);

  if(P3!

=0xfb)

  {

   temp=P3&0xf0;

   switch(temp)

   {

    case0xe0:

num=8;

        break;

      

    case0xd0:

num=9;

        break;

      

    case0xb0:

num=10;

        break;

      

    case0x70:

num=11;

        break;

   }

  }

  while(P3!

=0xfb);

  if(num==8||num==9||num==10)//如果按下的是'1','2'或'3'

  {

   if(j!

=0)

       {

         write_com(0x01);

         j=0;

        }

     if(flag==0)//没有按过符号键

   {

    a=a*10+table[num];

   }

   else//如果按过符号键

   {

    b=b*10+table[num];

   }

  }

  elseif(num==11)//如果按下的是'-'

  {

   flag=1;

   fuhao=2;//2表示减号已按

  }

  i=table1[num];

  write_date(0x30+i);

}

P3=0xf7;

if(P3!

=0xf7)

{

  delay(5);

  if(P3!

=0xf7)

  {

   temp=P3&0xf0;

   switch(temp)

   {

    case0xe0:

num=12;

        break;

      

    case0xd0:

num=13;

        break;

      

    case0xb0:

num=14;

        break;

      

    case0x70:

num=15;

        break;

   }

  }

  while(P3!

=0xf7);

  switch(num)

  {

   case12:

{write_com(0x01);a=0;b=0;flag=0;fuhao=0;}//按下的是"清零"

    break;

   case13:

{              //按下的是"0"

      if(flag==0)//没有按过符号键

      {

       a=a*10;

       write_date(0x30);

       P1=0;

      }

      elseif(flag==1)//如果按过符号键

      {

       b=b*10;

       write_date(0x30);

       }

     }

    break;

   case14:

{j=1;

          if(fuhao==1){write_com(0x80+0x4f);//按下等于键,光标前进至第二行最后一个显示处

          write_com(0x04);   //设置从后住前写数据,每写完一个数据,光标后退一格

          c=a+b;

          while(c!

=0)

          {

            write_date(0x30+c%10);

            c=c/10;

          }

          write_date(0x3d);   //再写"="

          a=0;b=0;flag=0;fuhao=0;

          }

     elseif(fuhao==2){write_com(0x80+0x4f);//光标前进至第二行最后一个显示处

           write_com(0x04);   //设置从后住前写数据,每写完一个数据,光标后退一格(这个照理说顺序不对,可显示和上段一样)

          if(a-b>0)

            c=a-b;

          else

            c=b-a;

          while(c!

=0)

          {

            write_date(0x30+c%10);

            c=c/10;

          }

          if(a-b<0)

            write_date(0x2d);

          write_date(0x3d);   //再写"="           

          a=0;b=0;flag=0;fuhao=0;

         }

     elseif(fuhao==3){write_com(0x80+0x4f);

           write_com(0x04);

            c=a*b;

            while(c!

=0)

            {

            write_date(0x30+c%10);

            c=c/10;

            }

            write_date(0x3d);     

         a=0;b=0;flag=0;fuhao=0;

            }

     elseif(fuhao==4){write_com(0x80+0x4f);

           write_com(0x04);

           i=0;

           c=(long)(((float)a/b)*1000);

           while(c!

=0)

            {

              write_date(0x30+c%10);

              c=c/10;

          i++;

          if(i==3)

              write_date(0x2e);

            }

           if(a/b<=0)

             write_date(0x30);

           write_date(0x3d);                             

           a=0;b=0;flag=0;fuhao=0;

                   }

     }

    break;

    case15:

{write_date(0x30+table1[num]);flag=1;fuhao=1;}

    break;

  }

}

}

main()

{

init();

while

(1)

{

  keyscan();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1