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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡易計算機數碼管顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:410126 發表于 2018-11-16 13:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 sxx1 于 2018-11-16 18:12 編輯


按鍵說明
                                S6--S15  數字0--9的輸入                S16        清零
                                S17        等于                        S18--S21加減乘除
程序功能:        本程序為簡易計算器。可以算整數且正數類型的運算。
                        但是暫時沒有實現其連算功能,故在每次運算之后,請按下清零鍵。



  1. #include<reg52.h>

  2. #define uchar unsigned char

  3. uchar a0=16,b0=16,c0=16,d0=16,e0=16,f0=16,wei,temp,key,i,j,k;
  4. uchar jia,jian,cheng,chu,dengyu,jia0,jian0,cheng0,chu0,qingling;
  5. uchar s0,s1,s2,s3,s4,s5
  6. unsigned long qian,hou
  7. sbit dula=P2^6;
  8. sbit wela=P2^7;
  9. sbit beep=P2^3;

  10. unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
  11.                         0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};

  12. void delay(uchar i)
  13. {
  14.         for(j=i;j>0;j--)
  15.         for(k=125;k>0;k--);
  16. }
  17. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  18. {

  19.    dula=0;
  20.    P0=table[a];
  21.    dula=1;
  22.    dula=0;

  23.    wela=0;
  24.    P0=0xfe;
  25.    wela=1;
  26.    wela=0;
  27.    delay(5);

  28.    P0=table[b];
  29.    dula=1;
  30.    dula=0;

  31.    P0=0xfd;
  32.    wela=1;
  33.    wela=0;
  34.    delay(5);

  35.    P0=table[c];
  36.    dula=1;
  37.    dula=0;

  38.    P0=0xfb;
  39.    wela=1;
  40.    wela=0;
  41.    delay(5);

  42.    P0=table[d];
  43.    dula=1;
  44.    dula=0;

  45.    P0=0xf7;
  46.    wela=1;
  47.    wela=0;
  48.    delay(5);

  49.    P0=table[e];
  50.    dula=1;
  51.    dula=0;

  52.    P0=0xef;
  53.    wela=1;
  54.    wela=0;
  55.    delay(5);

  56.    P0=table[f];
  57.    dula=1;
  58.    dula=0;

  59.    P0=0xdf;
  60.    wela=1;
  61.    wela=0;
  62.    delay(5);
  63. }

  64. void keyscan()
  65. {
  66.   {        
  67.     P3=0xfe;
  68.     temp=P3;
  69.     temp=temp&0xf0;
  70.     if(temp!=0xf0)
  71.     {
  72.       delay(10);
  73.       if(temp!=0xf0)
  74.       {        
  75.         temp=P3;
  76.         switch(temp)
  77.         {
  78.           case 0xee:
  79.                key=0;
  80.                            wei++;
  81.                break;

  82.           case 0xde:
  83.                key=1;
  84.                            wei++;
  85.                break;

  86.           case 0xbe:
  87.                key=2;
  88.                            wei++;
  89.                break;

  90.           case 0x7e:
  91.                key=3;
  92.                            wei++;
  93.                break;
  94.          }
  95.          while(temp!=0xf0)
  96.         {
  97.            temp=P3;
  98.            temp=temp&0xf0;
  99.            beep=0;
  100.          }
  101.          beep=1;
  102.       }
  103.     }
  104.     P3=0xfd;
  105.     temp=P3;
  106.     temp=temp&0xf0;
  107.     if(temp!=0xf0)
  108.     {
  109.       delay(10);
  110.       if(temp!=0xf0)
  111.       {
  112.         temp=P3;
  113.         switch(temp)
  114.         {
  115.           case 0xed:
  116.                key=4;
  117.                            wei++;
  118.                break;

  119.           case 0xdd:
  120.                key=5;
  121.                            wei++;
  122.                break;

  123.           case 0xbd:
  124.                key=6;
  125.                            wei++;
  126.                break;

  127.           case 0x7d:
  128.                key=7;
  129.                            wei++;
  130.                break;
  131.          }
  132.          while(temp!=0xf0)
  133.          {
  134.            temp=P3;
  135.            temp=temp&0xf0;
  136.            beep=0;
  137.          }
  138.          beep=1;
  139.       }
  140.       }
  141.     P3=0xfb;
  142.     temp=P3;
  143.     temp=temp&0xf0;
  144.     if(temp!=0xf0)
  145.     {
  146.       delay(10);
  147.       if(temp!=0xf0)
  148.       {
  149.         temp=P3;
  150.         switch(temp)
  151.         {
  152.           case 0xeb:
  153.                key=8;
  154.                            wei++;
  155.                break;

  156.           case 0xdb:
  157.                key=9;
  158.                            wei++;
  159.                break;
  160.                            
  161.           case 0xbb:
  162.                qingling=1;
  163.                            //key=10;
  164.                            //wei++;
  165.                break;

  166.           case 0x7b:
  167.                dengyu=1;
  168.                            //key=11;
  169.                            //wei++;
  170.                break;
  171.          }
  172.         while(temp!=0xf0)
  173.          {
  174.            temp=P3;
  175.            temp=temp&0xf0;
  176.            beep=0;
  177.          }
  178.          beep=1;
  179.       }
  180.       }
  181.               P3=0xf7;
  182.     temp=P3;
  183.     temp=temp&0xf0;
  184.     if(temp!=0xf0)
  185.     {
  186.       delay(10);
  187.       if(temp!=0xf0)
  188.       {
  189.         temp=P3;
  190.         switch(temp)
  191.         {
  192.           case 0xe7:
  193.                              jia=1;
  194.                //key=12;
  195.                           // wei++;
  196.                break;

  197.           case 0xd7:
  198.                jian=1;
  199.                break;

  200.           case 0xb7:
  201.                cheng=1;
  202.                break;

  203.           case 0x77:
  204.                chu=1;
  205.                break;
  206.          }
  207.          while(temp!=0xf0)
  208.          {
  209.            temp=P3;
  210.            temp=temp&0xf0;
  211.            beep=0;
  212.          }
  213.          beep=1;
  214.       }
  215.     }
  216. }
  217. }

  218. void display0()
  219. {
  220.         if(key!=20)
  221.         {
  222.         switch(wei)
  223.                 {
  224.                         case 1: a0=key;
  225.                                         b0=16;
  226.                                         c0=16;
  227.                                         d0=16;
  228.                                         e0=16;
  229.                                         f0=16;
  230.                                         break;
  231.                         case 2: b0=key;
  232.                                         c0=16;
  233.                                         d0=16;
  234.                                         e0=16;
  235.                                         f0=16;
  236.                                         break;
  237.                         case 3: c0=key;
  238.                                         d0=16;
  239.                                         e0=16;
  240.                                         f0=16;
  241.                                         break;
  242.                         case 4: d0=key;
  243.                                         e0=16;
  244.                                         f0=16;
  245.                                         break;
  246.                         case 5: e0=key;
  247.                                         f0=16;
  248.                                         break;
  249.                         case 6: f0=key;
  250.                                         //wei=0;
  251.                                         break;
  252.         }
  253.         key=20;
  254.         }
  255.         display(a0,b0,c0,d0,e0,f0);
  256.         if(a0!=16) s5=a0;
  257.         if(b0!=16) s4=b0;
  258.         if(c0!=16) s3=c0;
  259.         if(d0!=16) s2=d0;
  260.         if(e0!=16) s1=e0;
  261.         if(f0!=16) s0=f0;
  262. }


  263. void main()
  264. {        uchar gongneng,yunsuan;
  265.           while(1)
  266.         {
  267.                   keyscan();
  268.                 gongneng=jia|jian|cheng|chu|dengyu|qingling;
  269.                 if(gongneng==0)
  270.                 {
  271.                         display0();        
  272.                 }
  273.                 else
  274.                 {          yunsuan=jia|jian|cheng|chu;
  275.                         if(yunsuan)
  276.                         {        
  277.         
  278.                                 a0=16;
  279.                                 b0=16;
  280.                                 c0=16;
  281.                                 d0=16;
  282.                                 e0=16;
  283.                                 f0=16;
  284.                                 //wei=0;
  285.                                 if(jia)
  286.                                 {jia=0;        jia0=1;jian0=0;cheng0=0;chu0=0;}
  287.                                 if(jian)
  288.                                 {jian=0;jia0=0;jian0=1;cheng0=0;chu0=0;}
  289.                                 if(cheng)
  290.                                 {cheng=0;jia0=0;jian0=0;cheng0=1;chu0=0;}
  291.                                 if(chu)
  292.                                 {chu=0;        jia0=0;jian0=0;cheng0=0;chu0=1;}
  293.                                 switch(wei)
  294.                                 {
  295.                                         case 6:
  296.                                         qian=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
  297.                                         case 5:
  298.                                         qian=s5*10000+s4*1000+s3*100+s2*10+s1;break;
  299.                                         case 4:
  300.                                         qian=s5*1000+s4*100+s3*10+s2;break;
  301.                                         case 3:
  302.                                         qian=s5*100+s4*10+s3;break;
  303.                                         case 2:
  304.                                         qian=s5*10+s4;break;
  305.                                         case 1:
  306.                                         qian=s5;break;
  307.                                 }
  308.                                 wei=0;
  309.                                 s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
  310.                                 display(a0,b0,c0,d0,e0,f0);
  311.                                 //P1=0x55;
  312.                         }
  313.                         if(dengyu)
  314.                         {
  315.                                  dengyu=0;
  316.                                  //display(16,16,16,16,16,16);
  317.                                  switch(wei)
  318.                                 {
  319.                                         case 6:
  320.                                         hou=s5*100000+s4*10000+s3*1000+s2*100+s1*10+s0;break;
  321.                                         case 5:
  322.                                         hou=s5*10000+s4*1000+s3*100+s2*10+s1;break;
  323.                                         case 4:
  324.                                         hou=s5*1000+s4*100+s3*10+s2;break;
  325.                                         case 3:
  326.                                         hou=s5*100+s4*10+s3;break;
  327.                                         case 2:
  328.                                         hou=s5*10+s4;break;
  329.                                         case 1:
  330.                                         hou=s5;break;
  331.                                 }
  332.                                 wei=0;
  333.                                 s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
  334.                                  if(jia0)
  335.                                  {jia0=0;        hou=qian+hou;}
  336.                                  if(jian0)
  337.                                  {jian0=0;        hou=qian-hou;}
  338.                                  if(cheng0)
  339.                                  {cheng0=0;        hou=qian*hou;}
  340.                                  if(chu0)
  341.                                  {chu0=0;        hou=qian/hou;}
  342.                                  if(hou<10)
  343.                                  {
  344.                                          a0=hou;b0=16;c0=16;d0=16;e0=16;f0=16;
  345.                                  }
  346.                                  else
  347.                                  {
  348.                                          if(hou<100)
  349.                                         {a0=hou/10;b0=hou%10;c0=16;d0=16;e0=16;f0=16;}
  350.                                         else
  351.                                         {
  352.                                                 if(hou<1000)
  353.                                                 {a0=hou/100;b0=hou%100/10;c0=hou%10;d0=16;e0=16;f0=16;}
  354.                                                 else
  355.                                                 {
  356.                                                         if(hou<10000)
  357.                                                         {a0=hou/1000;b0=hou%1000/100;c0=hou%100/10;d0=hou%10;e0=16;f0=16;}
  358.                                                         else
  359.                                                         {
  360.                                                                 if(hou<100000)
  361.                                                                 {a0=hou/10000;b0=hou%10000/1000;c0=hou%1000/100;d0=hou%100/10;e0=hou%10;f0=16;}
  362.                                                                 else
  363.                                                                 {
  364.                                                                         if(hou<1000000)
  365.                                                                         {a0=hou/100000;b0=hou%100000/10000;c0=hou%10000/1000;d0=hou%1000/100;e0=hou%100/10;f0=hou%10;}
  366.                                                                 }
  367.                                                         }
  368.                                                 }
  369.                                         }
  370.                                  }
  371.                                  display(a0,b0,c0,d0,e0,f0);
  372.                                  P1=hou;
  373.         
  374.                         }
  375.                         if(qingling)
  376.                         {
  377.                                 a0=16;b0=16;c0=16;d0=16;e0=16;f0=16;
  378.                                 s0=0;s1=0;s2=0;s3=0;s4=0;s5=0;
  379.                                 jia=0;jian=0;cheng=0;chu=0;
  380.                                 jia0=0;jian0=0;cheng0=0;chu0=0;
  381.                                 qingling=0;dengyu=0;
  382.                                 qian=0;hou=0;
  383.                                 display(a0,b0,c0,d0,e0,f0);
  384.                         }
  385.                         
  386.                 }

  387.         }
  388. }
復制代碼

簡易計算器數碼管顯示.zip

29.23 KB, 下載次數: 29, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:642936 發表于 2019-12-1 11:47 | 只看該作者
有原理圖嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美综合一区二区 | 欧美日韩一区二区三区四区 | 日韩欧美在线一区 | 精品视频国产 | 大象视频一区二区 | 亚洲超碰在线观看 | 国产精品永久免费视频 | 国产精品久久久久久久 | 一级黄a视频 | 国产精品自拍一区 | 欧美性video| 91精品国产综合久久婷婷香蕉 | 天堂资源| 欧美亚洲在线 | aaaa网站| 天天干在线播放 | 日韩精品一区二区三区四区 | 成人免费在线视频 | 国产精品久久久久久久久久免费 | 97精品国产 | 欧美亚洲综合久久 | 日日想夜夜操 | 国产三级国产精品 | 亚洲一区综合 | 国产一区二区电影 | 国产视频一二三区 | www国产成人免费观看视频,深夜成人网 | av久久| 欧美日韩在线一区二区 | 久久久久久久久国产成人免费 | 久久精品国产一区老色匹 | 亚洲视频在线一区 | 精品在线观看一区 | 久久久久免费观看 | 男女视频在线观看 | 日韩欧美在线免费 | 成人黄色av | 午夜久久久久久久久久一区二区 | 视频一区二区在线观看 | 久久久久久久久久久久久9999 | 超碰在线人人干 |