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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4530|回復: 4
打印 上一主題 下一主題
收起左側

基于89C51的兩位數計算器設計 完整程序及proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主

完整程序及proteus仿真,并且硬件電路調試過
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit leden=P2^7;
  5. sbit rs=P2^6;
  6. sbit wr=P2^5;
  7. //sbit busy=P0^7;
  8. uchar i,j,num,num_1,temp;
  9. long a,b, c;
  10. float a_c,b_c;
  11. uchar flag,fuhao;
  12. uchar code table[]={7,8,9,0,
  13.                     4,5,6,0,
  14.                                         1,2,3,0};
  15. uchar code table1[]={7,8,9,0x2f-0x30,
  16.                      4,5,6,0x2a-0x30,
  17.                                          1,2,3,0x2d-0x30,
  18.                                          0x01-0x30,0,0x3d-0x30,0x2b-0x30};
  19. void delay(uchar n)
  20. {
  21. uchar i,j;
  22. for(i=n;i>0;i--)
  23.     for(j=200;j>0;j--) ;
  24. }
  25. /*
  26. void check()
  27. {
  28. do{P0=0xff;
  29.     rs=0;wr=1;leden=0;delay(5);leden=1;}while(busy==1);

  30. }
  31. */
  32. void write(uint w)
  33. {
  34.    rs=0;
  35.    wr=0;
  36.    leden=0;
  37.    P0=w;
  38.    leden=1;
  39.    delay(10);//check();
  40.    leden=0;
  41.    
  42. }
  43. void write_data(uint q)
  44. {
  45.    rs=1;
  46.    wr=0;
  47.    leden=0;
  48.    P0=q;
  49.    leden=1;
  50.      delay(10);
  51.    leden=0;
  52.    
  53. }
  54. void init()
  55. {
  56.           num=1;
  57.    leden=1;
  58.    write(0x38);
  59.    write(0x08);
  60.    write(0x01);
  61.    write(0x06);
  62.    write(0x0f);
  63.    num_1=0;
  64.    i=0;j=0;a=0;b=0;c=0;flag=0;fuhao=0;

  65. }

  66. void keyscan()
  67. {
  68.    P1=0Xfe;
  69.    if(P1!=0xfe)
  70.    {
  71.     delay(10);
  72.         if(P1!=0xfe)
  73.         {
  74.           temp=P1&0xf0;
  75.           switch(temp)
  76.             {
  77.                 case 0xe0:num=0;break;
  78.                 case 0xd0:num=1;break;
  79.                 case 0xb0:num=2;break;
  80.                 case 0x70:num=3;break;
  81.                 }
  82.          }
  83.         while(P1!=0xfe);
  84.         if(num==0||num==2||num==1)         
  85.         {
  86.           if(j!=0)
  87.           {
  88.             write(0x01);
  89.                 j=0;
  90.           }
  91.           if(flag==0)
  92.           {
  93.             a=a*10+table[num];
  94.           }
  95.           else
  96.            {
  97.              b=b*10+table[num];
  98.            }
  99.          }
  100.          else
  101.          {
  102.            flag=1;
  103.            fuhao=4;//除號以按;
  104.          }
  105.          i=table1[num];
  106.          write_data(0x30+i);
  107.         }

  108.           P1=0xfd;
  109.    if(P1!=0xfd)
  110.    {
  111.     delay(10);
  112.         if(P1!=0xfd)
  113.         {
  114.           temp=P1&0xf0;
  115.           switch(temp)
  116.             {
  117.                 case 0xe0:num=4;break;
  118.                 case 0xd0:num=5;break;
  119.                 case 0xb0:num=6;break;
  120.                 case 0x70:num=7;break;
  121.                 }
  122.          }
  123.         while(P1!=0xfd);
  124.         if(num==4||num==5||num==6)
  125.         {
  126.          if(j!=0)
  127.           {
  128.             write(0x01);
  129.                 j=0;
  130.           }
  131.           if(flag==0)
  132.           {
  133.             a=a*10+table[num];
  134.           }
  135.           else
  136.            {
  137.              b=b*10+table[num];
  138.            }
  139.          }
  140.          else
  141.          {
  142.            flag=1;
  143.            fuhao=3;//乘號以按;
  144.          }
  145.          i=table1[num];
  146.          write_data(0x30+i);
  147.    }

  148.    P1=0xfb;
  149.   if(P1!=0xfb)
  150.    {
  151.     delay(10);
  152.         if(P1!=0xfb)
  153.         {
  154.           temp=P1&0xf0;
  155.           switch(temp)
  156.             {
  157.                 case 0xe0:num=8;break;
  158.                 case 0xd0:num=9;break;
  159.                 case 0xb0:num=10;break;
  160.                 case 0x70:num=11;break;
  161.                 }
  162.          }
  163.         while(P1!=0xfb);
  164.         if(num==8||num==9||num==10)
  165.         {
  166.          if(j!=0)
  167.           {
  168.             write(0x01);
  169.                 j=0;
  170.           }
  171.           if(flag==0)
  172.           {
  173.             a=a*10+table[num];
  174.           }
  175.           else
  176.            {
  177.              b=b*10+table[num];
  178.            }
  179.          }
  180.          else if(num==11)
  181.           {
  182.            flag=1;
  183.            fuhao=2;//jian號以按;
  184.            }
  185.          i=table1[num];
  186.          write_data(0x30+i);
  187.    }

  188.         P1=0xf7;
  189.     if(P1!=0xf7)
  190.    {
  191.     delay(10);
  192.         if(P1!=0xf7)
  193.         {
  194.           temp=P1&0xf0;
  195.           switch(temp)
  196.             {
  197.                 case 0xe0:num=12;break;
  198.                 case 0xd0:num=13;break;
  199.                 case 0xb0:num=14;break;
  200.                 case 0x70:num=15;break;
  201.                 }
  202.          }
  203.         while(P1!=0xf7);
  204.         


  205.    switch(num)
  206.    {
  207.      case 12:{write(0x01);a=0;b=0;flag=0;fuhao=0;}break;
  208.          case 13:
  209.                 {
  210.                            if(flag==0)
  211.                              {a=a*10;write_data(0x30);}
  212.                            else if(flag==1)
  213.                              {b=b*10;write_data(0x30);}
  214.                         } break;
  215.          case 14: {j=1;
  216.                     if(fuhao==1)
  217.                                 {write(0x80+0x4f);write(0x04);c=a+b;
  218.                                   while(c!=0)
  219.                                  {
  220.                                          write_data(0x30+c%10);
  221.                                          c=c/10;
  222.                                          }
  223.                                  write_data(0x3d);a=0;b=0;flag=0;fuhao=0;}

  224.                                 else if(fuhao==2)
  225.                                 {write(0x80+0x4f);write(0x04);
  226.                                   if(a-b>0)
  227.                                      {c=a-b;}
  228.                                   else { c=b-a;        }
  229.                                   while(c!=0)
  230.                                  {
  231.                                          write_data(0x30+c%10);
  232.                                          c=c/10;
  233.                                          }
  234.                                   if(a-b<0)
  235.                                  write_data(0x2d);write_data(0x3d);a=0;b=0;flag=0;fuhao=0;}
  236.                                  
  237.                                  else if(fuhao==3)
  238.                                  {write(0x80+0x4f);write(0x04);c=a*b;
  239.                                   while(c!=0)
  240.                                  {
  241.                                          write_data(0x30+c%10);
  242.                                          c=c/10;
  243.                                          }
  244.                                  write_data(0x3d);a=0;b=0;flag=0;fuhao=0;}
  245.                                  
  246.                                  else if(fuhao==4)
  247.                                  {
  248.                                   write(0x80+0x4f);write(0x04);        i=0;
  249.                                   c=a/b;        
  250.                                   while(c!=0)
  251.                                  {
  252.                                          write_data(0x30+c%10);
  253.                                          c=c/10;
  254.                                           i++;
  255.                                           if(i==3)
  256.                                              write(0x2e);
  257.                                          }
  258.                                          
  259.                                   if(a/b<=0)
  260.                                  write_data(0x30);write_data(0x3d);a=0;b=0;flag=0;fuhao=0;
  261.                                  }                  
  262.                                  } break;
  263.         case 15:{write_data(0x30+table1[num]);flag=1;fuhao=1;}        break;
  264.    }
  265.    }
  266.    P1=0xf0;
  267. }

  268. void main()
  269. {
  270.   init();
  271.   
  272.   
  273.   while(1)
  274.   {
  275.     keyscan();
  276.   }
  277. }


  278.          
復制代碼

全部資料打包下載:
jsq.rar (37.84 KB, 下載次數: 47)

評分

參與人數 3黑幣 +56 收起 理由
lqh123456789 + 5 很給力!
5664645345 + 1 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:172927 發表于 2017-4-12 21:23 | 只看該作者
謝謝分享,下載學習
回復

使用道具 舉報

板凳
ID:202352 發表于 2017-5-18 22:09 | 只看該作者
學習學習
回復

使用道具 舉報

地板
ID:53539 發表于 2017-12-13 10:27 | 只看該作者
學習學習學習
回復

使用道具 舉報

5#
ID:1138264 發表于 2024-12-2 09:07 | 只看該作者
很棒,加油,贊一個
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 五月婷婷激情网 | 91综合在线视频 | 国产日韩精品在线 | 成人性视频在线 | 亚洲精品免费看 | 国产精品成人一区二区三区 | 精品久久久久久久久久久久久久 | 欧美日韩国产精品一区 | 久久久久久久国产 | 欧美日韩国产精品 | 日本精品视频 | 国户精品久久久久久久久久久不卡 | 91在线看网站| 国产高清在线精品 | 国产欧美日韩二区 | 一级毛片中国 | 亚洲风情在线观看 | 国产农村一级片 | 亚洲成人动漫在线观看 | 一区二区三区国产在线观看 | 蜜桃特黄a∨片免费观看 | 丝袜毛片| 久久99久久98精品免观看软件 | 国产免费拔擦拔擦8x高清 | 午夜免费在线 | 成人国产一区二区三区精品麻豆 | 蜜桃视频在线观看免费视频网站www | 亚洲精品第一 | 欧美精品在线观看 | 黄色网址在线免费观看 | 久久99网| 欧美一区二区三区视频在线观看 | 中文字幕二区三区 | 91五月婷蜜桃综合 | 欧美一区二区三区在线观看 | 国产一区二区av | 秋霞电影一区二区三区 | 久久亚洲一区二区三区四区 | 精品亚洲一区二区三区四区五区 | 一区二区三区在线免费观看 | 国产成人免费在线观看 |