找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3536|回复: 4
收起左侧

单片机计算器Proteus仿真程序 两位数以内加减法

[复制链接]
ID:554148 发表于 2019-11-18 18:54 | 显示全部楼层 |阅读模式
两位数以内加减法,比较适合初学者
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

按键

按键


单片机源程序如下:
  1. #include<reg51.h>
  2. unsigned int k=0,k1,k2,k3,k4,z=0;
  3. unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  4. void delay(unsigned char x)
  5. {
  6.   unsigned char y;
  7.   for(;x>0;x--)
  8.   for(y=110;y>0;y--);
  9. }
  10. unsigned char key()
  11. {
  12. unsigned char row,col,m=0xff;
  13. P2=0xf0;
  14. if(P2==0xf0)
  15.   return m;
  16. delay(20);
  17. if(P2==0xff)
  18.   return m;
  19. for(row=0;row<4;row++)
  20.   {
  21.    P2=~(1<<row);
  22.    if((P2&0xf0)!=0xf0)
  23.     break;
  24.   }
  25. for(col=0;col<4;col++)
  26.   {
  27.    P2=~(1<<(col+4));
  28.    if((P2&0x0f)!=0x0f)
  29.     break;
  30.   }
  31.   if(row<4&&col<4)
  32.    m=row*4+col;
  33.   P2=0xf0;
  34.   while((P2&0xf0)!=0xf0);
  35.   z++;
  36.   return m;
  37. }
  38. void display(unsigned char a)
  39. {
  40. unsigned shi,ge;
  41. shi=a/10;
  42. ge=a%10;
  43. if(shi==0)
  44.         P0=0xff;
  45. else
  46.         P0=tab[shi];
  47. P1=0x01;
  48. delay(5);
  49. P0=0xff;
  50. P0=tab[ge];
  51. P1=0x02;
  52. delay(5);
  53. P0=0xff;
  54. }
  55. void main()
  56. {
  57. while(1)
  58. {
  59.   k=key();
  60.   if(k>=0&&k<=9&&z==1&&k!=0xff)
  61.    {
  62.     k1=k;
  63.         k3=k1;
  64.    }
  65.    delay(20);
  66.   if(k>=0&&k<=9&&z==2&&k!=0xff)
  67.    {
  68.         k2=k;
  69.         k1=k3*10+k2;
  70.    }
  71.   if(k==10)
  72.    {
  73.         k4=k1;
  74.            z=0;
  75.    }
  76.   if(k==11)
  77.    {
  78.            k1=k1+k4;
  79.    }
  80.    display(k1);
  81.    }
  82. }
复制代码
51hei.png
所有资料51hei提供下载:
两位数以内加减法.zip (17.58 KB, 下载次数: 54)
回复

使用道具 举报

ID:470332 发表于 2019-11-20 17:16 | 显示全部楼层
感谢分享,很详细
回复

使用道具 举报

ID:648959 发表于 2019-11-27 09:03 | 显示全部楼层
很好,正是我需要的。
回复

使用道具 举报

ID:752579 发表于 2020-5-15 14:57 | 显示全部楼层
这个是四位共阳极数码管和矩阵键盘实现的两位数加减法吗?
回复

使用道具 举报

ID:1044175 发表于 2022-9-15 11:49 | 显示全部楼层
不懂就问,减在哪里
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表