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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,為何protues仿真運算符號鍵均用不了

[復制鏈接]
跳轉到指定樓層
樓主
5黑幣
點第一個數后 點符號鍵 前一個數會清0


單片機源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uint num1,num2,result;
  5. uchar symbol1,symbol2,flag;
  6. uchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  7. void delayms(uint x) //延時函數
  8. {   
  9. uint i;   
  10. while(x--) for(i=0;i<120;i++);   
  11. }
  12. void CLR()//清零
  13. {  
  14. result=0;     
  15. num1=0;  
  16. num2=0;  
  17. symbol1=0;
  18. symbol2=0;
  19. flag=0;   
  20. }
  21. void display(uint result)  //顯示函數
  22. {
  23.        ucharqian,bai,shi,ge;
  24.        qian= result/1000;
  25.        bai= result%1000/100;
  26.        shi= result%100/10;
  27.        ge= result%10;
  28.        P0= 0;
  29.        P1= 0xfe;                     //千位
  30.        P0= table[qian];
  31.        delayms(3);
  32.        P1= 0xfd;                     //百位
  33.        P0= table[bai];
  34.        delayms(3);
  35.                                           
  36.        P1= 0xfb;                     //十位
  37.        P0= table[shi];
  38.        delayms(3);
  39.        P1= 0xf7;                     //個位
  40.        P0= table[ge];
  41.        delayms(3);
  42. }
  43. void keybord()                                           //反轉法
  44. { uchar firstnum,nextnum,keynum;
  45. flag = result = num1 = num2 = 0;
  46. while(1)
  47. {  P2=0x0f;
  48.        firstnum=P2;
  49.         P2=0xf0;
  50.         nextnum=P2;
  51.         keynum=nextnum|firstnum;
  52.         switch(keynum)
  53.         {
  54.         case 0xee: delayms(200);
  55.                             if(flag< 2)                  //1
  56.                             {
  57.                                   num1= num1*10 + 1;
  58.                                    result= num1;
  59.                                    flag++;
  60.                                    
  61.                             };break;
  62.         case 0xde:delayms(200);                                //2
  63.                          if(flag < 2)
  64.                             {
  65.                                   num1= num1*10 + 2;
  66.                                    result= num1;
  67.                                    flag++;
  68.                             };break;
  69.         case 0xbe: delayms(200);                            //3
  70.                          if(flag < 2)
  71.                             {
  72.                                   num1= num1*10 + 3;
  73.                                    result= num1;
  74.                                    flag++;
  75.                             };break;
  76.         case 0x7e: delayms(200);                     //4
  77.                          if(flag < 2)
  78.                             {
  79.                                   num1= num1*10 + 4;
  80.                                    result= num1;
  81.                                    flag++;
  82.                             };break;
  83.         case 0xed: delayms(200);                            //5
  84.                          if(flag < 2)
  85.                             {
  86.                                   num1= num1*10 + 5;
  87.                                    result= num1;
  88.                                    flag++;
  89.                             };break;
  90.         case 0xdd: delayms(200);                            //6
  91.                          if(flag < 2)
  92.                             {
  93.                                   num1= num1*10 + 6;
  94.                                    result= num1;
  95.                                    flag++;
  96.                             };break;
  97.         case 0xbd: delayms(200);                     //7
  98.                          if(flag < 2)
  99.                             {
  100.                                   num1= num1*10 + 7;
  101.                                    result= num1;
  102.                                    flag++;
  103.                             };break;
  104.         case 0x7d: delayms(200);                            //8
  105.                          if(flag < 2)
  106.                             {
  107.                                   num1= num1*10 + 8;
  108.                                    result= num1;
  109.                                    flag++;
  110.                             };break;
  111.         case 0xeb: delayms(200);                     //9
  112.                          if(flag < 2)
  113.                             {
  114.                                   num1= num1*10 + 9;
  115.                                    result= num1;
  116.                                    flag++;
  117.                             };break;
  118.         case 0xdb: delayms(200);            //0
  119.                          if(flag < 2)
  120.                             {
  121.                                   num1= num1*10 + 0;
  122.                                    result= num1;
  123.                                    flag++;
  124.                             };break;
  125.         case 0xbb: symbol1 = '+';                       //+
  126.                             symbol2= symbol1;
  127.                             result= num2 = num1;
  128.                             num1= 0;
  129.                             flag= 0;
  130.                             break;
  131.         case 0x7b: symbol1 = '-';                   //-
  132.                             symbol2= symbol1;
  133.                             result= num2 = num1;
  134.                             num1= 0;
  135.                             flag= 0;
  136.                             break;
  137.         case 0xe7: symbol1 = '*';                           //*
  138.                             symbol2= symbol1;
  139.                             result= num2 = num1;
  140.                             num1= 0;
  141.                             flag= 0;
  142.                             break;
  143.         case 0xd7: symbol1 = '/';                  //÷
  144.                             symbol2= symbol1;
  145.                             result= num2 = num1;
  146.                             num1= 0;
  147.                             flag= 0;
  148.                             break;
  149.         case 0xb7: CLR();break;
  150.         case 0x77: delayms(200);                     //=
  151.                           symbol1= '=';
  152.                             break;
  153.         
  154.               default:break;
  155.         }
  156.                                   if(symbol1=='=')
  157.                                   {switch(symbol2)
  158.                            {
  159.                              case '+':
  160.                                     result = num2 + num1;
  161.                                 break;
  162.                            
  163.                                 case '-':
  164.                                     result = num2 - num1;
  165.                                 break;     
  166.                            
  167.                                 case '*':
  168.                                     result = num2 * num1;
  169.                                break;     
  170.                            
  171.                                 case'/':
  172.                                     result = num2 / num1;
  173.                                 break;   }      
  174.                            }display(result);
  175.   }
  176.   
  177. }
  178. void main()
  179.   {
  180.       keybord();
  181.       
  182.   }
復制代碼



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

使用道具 舉報

沙發
ID:265478 發表于 2017-12-24 11:56 | 只看該作者
求大神 求別沉
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级做a毛片| 国产精品mv在线观看 | 狠狠色香婷婷久久亚洲精品 | 大香网伊人 | 欧美成人精品一区二区男人看 | 精品毛片视频 | 天天躁日日躁狠狠很躁 | 欧美一区二区另类 | 久久久久综合 | 国产精品美女久久久 | 久热国产精品 | 天天色av| 天天干天天干 | 在线播放中文 | 日韩精品一区二区三区免费观看 | 日韩在线视频免费观看 | 国产一级网站 | 亚洲精品女人久久久 | av天天干| 国产精品久久国产精品 | 久久在线看 | 欧美在线一区二区视频 | 精品网| 在线视频亚洲 | www.av在线 | av网站在线看 | 久久久高清| 欧州一区| 亚洲国产精品99久久久久久久久 | 久久亚洲精品久久国产一区二区 | 中文字幕欧美一区 | 亚洲精品久久久久中文字幕欢迎你 | 久久久久久久香蕉 | 日韩在线视频一区 | 一本大道久久a久久精二百 国产成人免费在线 | 性色的免费视频 | 亚洲社区在线 | 久久久久国产精品一区二区 | av第一页| 羞羞视频免费观看 | 国产一卡二卡三卡 |