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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5475|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

矩陣鍵盤+液晶 制作的簡易單片機(jī)計算器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:213292 發(fā)表于 2017-6-22 14:25 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機(jī)計算器仿真圖:

源代碼:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit leden=P2^7;
  5. sbit rs=P2^5;
  6. sbit wr=P2^6;
  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. void write_data(uint q)
  43. {

  44.    wr=0;
  45.    leden=0;
  46.    P0=q;
  47.    leden=1;
  48.      delay(10);
  49.    leden=0;

  50. }
  51. void init()
  52. {
  53.           num=1;
  54.    leden=1;
  55.    write(0x38);
  56.    write(0x08);
  57.    write(0x01);
  58.    write(0x06);
  59.    write(0x0f);
  60.    num_1=0;
  61.    i=0;j=0;a=0;b=0;c=0;flag=0;fuhao=0;

  62. }

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

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

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

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



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

  220.                                 else if(fuhao==2)
  221.                                 {write(0x80+0x4b);write(0x04);
  222.                                   if(a-b>0)
  223.                                      {c=a-b;}
  224.                                   else { c=b-a;        }
  225.                                   while(c!=0)
  226.                                  {
  227.                                          write_data(0x30+c%10);
  228.                                          c=c/10;
  229.                                          }
  230.                                   if(a-b<0)
  231.                                  write_data(0x2d);write_data(0x3d);a=0;b=1;flag=0;fuhao=0;}

  232.                                  else if(fuhao==3)
  233.                                  {write(0x80+0x4f);write(0x04);c=a*b;
  234.                                   while(c!=0)
  235.                                  {
  236.                                          write_data(0x30+c%10);
  237.                                          c=c/10;
  238.                                          }
  239.                                  write_data(0x3d);a=0;b=0;flag=0;fuhao=0;}

  240.                                  else if(fuhao==4)
  241.                                  {
  242.                                   write(0x80+0x4f);write(0x04);        i=0;
  243.                                   c=a/b/c;        
  244.                                   while(c!=0)
  245.                                  {
  246.                                          write_data(0x30+c%10);
  247.                                          c=c/10;
  248.                                           i++;
  249.                                           if(i==3)
  250.                                              write(0x2e);
  251.                                          }

  252.                                   if(a/b<=0)
  253.                                  write_data(0x30);write_data(0x3d);a=0;b=0;flag=0;fuhao=0;
  254.                                  }                  
  255.                                  } break;
  256.         case 15:{write_data(0x30+table1[num]);flag=1;fuhao=1;}        break;
  257.    }
  258.    }
  259.    P1=0xf0;
  260. }

  261. void main()
  262. {
  263.   init();


  264.   while(1)
  265.   {
  266.     keyscan()
  267.   }
  268. }


復(fù)制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:304041 發(fā)表于 2018-4-13 19:45 | 只看該作者
怎么顯示不對啊?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲理论在线观看电影 | 天天草天天爱 | 欧美一级电影免费观看 | 欧美一区在线看 | 久久尤物免费一区二区三区 | xxxxxx国产 | 91福利在线观看 | 久草网站 | 久久九精品 | 精品一区二区三区中文字幕 | 欧美高清视频 | 亚洲h在线观看 | 午夜免费观看网站 | 在线视频一区二区 | 成人av片在线观看 | 999视频| 欧美国产中文字幕 | 人人操日日干 | 综合自拍 | 天天射影院 | 久久久网| 日韩精品在线免费观看 | 2一3sex性hd | 久久国产精品无码网站 | 国产伦精品一区二区三区高清 | 精品美女久久久 | 亚洲有码转帖 | 欧美一区二区三区,视频 | 国产精久久久久久 | 日韩欧美一区二区三区 | 国产又色又爽又黄又免费 | 一级做a爰片性色毛片视频停止 | 精品一区二区视频 | 激情av | 夜夜久久 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久无码av | 国产日韩一区二区三免费高清 | 一级毛片色一级 | 91秦先生艺校小琴 | 中文字幕视频在线观看 |