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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機數碼管只顯示0,按鍵無反應,求幫忙

[復制鏈接]
跳轉到指定樓層
樓主
ID:447891 發表于 2019-5-30 09:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
5黑幣
  1. #include"math.h"
  2. #include "reg51.h"
  3. #define uchar unsigned char
  4. uchar key_temp,key=0,i,j,k,t=0;
  5. uchar a=0,b=0,c=0,d=0;
  6. unsigned long qian,hou;
  7. uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  8. static unsigned char state_key=0;
  9. static unsigned char state_dis=0;


  10. void keyscan()
  11. {
  12.         switch(state_key)
  13. {
  14.         case 0:
  15.          key_temp=(P1&0x0f);
  16.          if(key_temp!=0x0f)
  17.          t=0;
  18.          state_key=1;
  19.    break;
  20.         case 1:
  21.                 if(t>=10)
  22.                 {
  23.                 t=0;
  24.                 if(key_temp==(P1&0x0f))
  25.                 {
  26.                   if(P1^0==0)
  27.                                 key=1;
  28.                         if(P1^1==0)
  29.                                 key=2;
  30.                         if(P1^2==0)
  31.                                 key=3;
  32.                         if(P1^3==0)
  33.                                 key=4;
  34.                 }
  35.                 state_key=2;
  36.                 }
  37.                   
  38.                   else
  39.                         state_key=0;
  40.                         break;        
  41.                
  42.         case 2:
  43.                 if(P1&0x0f==0x0f)
  44.                 {
  45.                 state_key=0;
  46.                 break;
  47.                 }
  48.                 key=0;//default:break;
  49. }

  50. }

  51. void keyaction()
  52. {
  53. switch(key)
  54. {
  55.         case 1:break;
  56.         case 2:i=0;
  57.                      i++;
  58.                if(i>9)
  59.                break;
  60.         case 3:j=0;
  61.                                  if(j<=3)
  62.                                         j++;
  63.                                  switch(j)
  64.                                          {
  65.                                                  case 0:P3=0xfe;i++;break;
  66.                                                  case 1:P3=0xfd;i++;break;
  67.                                                  case 2:P3=0xfb;i++;break;
  68.                                                  case 3:P3=0xf7;i++;break;
  69.                                          }
  70.                                          break;
  71.         case 4: k=0;
  72.                       k++;
  73.                                         if(k==1)
  74.                                         hou=hou+qian;
  75.           qian=0;
  76.           if(k==2)
  77.           hou=hou+qian;
  78.           qian=0;
  79.           k=0;
  80.                                         break;                                       
  81. }
  82. }
  83. void display()
  84. {
  85. switch(j)
  86. {
  87.         case 0:P2=table[a];break;
  88.         case 1:P2=table[b];break;
  89.         case 2:P2=table[c];break;
  90.         case 3:P2=table[d];break;
  91. }
  92. }


  93. void display0()
  94. {

  95.         switch(state_dis)
  96. {
  97.         case 0:a=i;b=0;c=0;d=0;break;
  98.         case 1:b=i;c=0;d=0;break;
  99.         case 2:c=i;d=0;break;
  100.         case 3:d=i;break;
  101. }
  102. display();
  103. }



  104. void time0init()
  105. {
  106. TMOD=0x01;
  107.         TH0=-50000/256;
  108.          TL0=-50000%256;
  109.           EA=1;
  110.            ET0=1;
  111.             TR0=1;
  112. }



  113. void time0()interrupt 1
  114. {
  115. TH0=-50000/256;
  116. TL0=-50000%256;
  117. t++;
  118.                 if(state_dis<=3)
  119.                         state_dis++;
  120.                 else
  121.                   state_dis=0;
  122. if(t<10)
  123. t++;
  124. }




  125. void main()
  126. {
  127.         time0init();
  128.   while(1)
  129.         {
  130.          keyscan();
  131.          keyaction();
  132.          display0();
  133.          switch(j)
  134.          {
  135.                  case 0:qian=a;break;
  136.                  case 1:qian=a+b*10;break;
  137.                  case 2:qian=a+b*10+c*100;break;
  138.                  case 3:qian=a+b*10+c*100+d*1000;break;
  139.          }
  140.         a=0;
  141.         b=0;
  142.         c=0;
  143.         d=0;

  144.         }
復制代碼

數碼管只顯示0,按鍵無反應,求幫忙

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

使用道具 舉報

沙發
ID:542241 發表于 2019-5-30 11:30 | 只看該作者
原理圖得提供啊,至少框圖有吧,怎么接線的
回復

使用道具 舉報

板凳
ID:517466 發表于 2019-5-30 14:35 | 只看該作者
求助之前,自己先別急,靜下心來,仔細檢查代碼有沒有錯誤;程序處理邏輯有沒有問題。必要的話,各變量隨著處理流程的值變化,列成清單。如果程序是你寫的,對于if判斷后的處理代碼,是不是忘了{}而導致處理流程出問題,一定要檢查仔細。我看你的代碼,沒有注釋,不敢肯定有沒有問題,但是case中初始化為0,再判斷范圍,然后加1,這樣的處理邏輯很不正常,會導致每次都從0開始計數,if判斷后加1.每次都這樣,永遠不會有2以上的值。
回復

使用道具 舉報

地板
ID:80221 發表于 2019-5-30 19:46 | 只看該作者
不要這么用全局變量去傳遞參數,用函數返回值或者指針。這么寫自己看不亂么?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三区在线观看 | 久久精品免费看 | 色眯眯视频在线观看 | 日韩欧美一区二区三区四区 | 国产精品中文字幕一区二区三区 | 超碰在线免费 | 精品国产免费一区二区三区五区 | 国产精品亚洲精品久久 | 国产成人99久久亚洲综合精品 | 日韩一区精品 | 欧美成人一区二区三区片免费 | 国产精品久久精品 | 成人在线免费视频观看 | 一区二区三区视频在线观看 | 国产精品一区在线 | 国产一区二区三区视频免费观看 | 亚洲一区二区三区在线 | 日韩一区二区在线视频 | 日韩精品免费 | 成人影院在线视频 | 欧美电影在线观看网站 | 久久欧美精品 | 亚洲综合一区二区三区 | 男人天堂免费在线 | 一级毛片免费视频观看 | 日韩精品成人一区二区三区视频 | 精品国产18久久久久久二百 | 美女人人操 | 欧美视频免费在线 | 成人在线小视频 | 国产精品一区二区三区在线 | 99视频在线播放 | 99re在线 | 日韩午夜精品 | 视频一区二区在线观看 | 青青久在线视频 | 日本色婷婷| 中文字幕在线人 | 久草成人网 | 亚洲精品视频导航 | 91毛片在线看 |