找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

用DW0.1.2.3.4.5?諜n和 1.2.3.4.5檔 麻煩大神看下哪里出了問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

設(shè)計(jì)目標(biāo)是:用DW0.1.2.3.4.5?諜n和 1.2.3.4.5檔。在DW1——DW2——DW3——DW4——DW5時(shí),按加檔或者減檔鍵,檔位正常加減。  在,一檔DW1亮?xí)r按(加檔)鍵,和,二擋DW2時(shí)按(減檔)鍵,就會(huì)歸為空檔DW0亮。在空擋DW0時(shí),按加檔鍵應(yīng)該DW2亮為2檔;按減檔鍵則DW1亮為1檔。實(shí)際情況是:有時(shí)候按一下加檔鍵會(huì)加兩個(gè)檔位,按一下降檔鍵會(huì)減兩下檔位。主要的是1和2檔到空檔 有時(shí)候需要按很多次對(duì)應(yīng)按鍵他才變化,還有就是空檔到1一般正常 ,但是到2檔這里總會(huì)出現(xiàn)問(wèn)題,有時(shí)直接跳的三擋,或者一檔。。。跟預(yù)想的完全不一樣。
/************************************************************
控制名稱:檔位檢測(cè)與顯示
控制要求:1、用數(shù)碼管顯示各個(gè)檔位。
          2、利用4個(gè)接近傳感器。
輸入信號(hào):脈沖信號(hào)(離散)。
檢測(cè)方式:檢測(cè)動(dòng)作,來(lái)區(qū)分不同的檔位。
*************************************************************/
  1. #include<reg52.h>
  2. sbit key=P3^4;//右
  3. sbit key1=P3^7;//左
  4. sbit key2=P3^5;//中右
  5. sbit key3=P3^6;//中左
  6. sbit key4=P3^0;//檔位歸空
  7. sbit k1=P2^0;
  8. sbit k2=P2^1;
  9. sbit k3=P2^2;
  10. sbit k4=P2^3;
  11. sbit k5=P2^4;
  12. sbit k6=P2^5;
  13. void delay3(unsigned char a)
  14. {
  15. unsigned char b,c;
  16. for(a;a>0;a--)
  17. for(b=100;b>0;b--)
  18. for(c=100;c>0;c--);
  19. }
  20. void delay(unsigned char a)
  21. {
  22. unsigned char b,c;
  23. for(a;a>0;a--)
  24. for(b=100;b>0;b--)
  25. for(c=100;c>0;c--);
  26. }

  27. void main()
  28. {
  29. unsigned char i,a=1,d=0,r,num;
  30. P3=0xff;
  31. P2=0x01;
  32. P1=0x00;
  33. while(1)
  34. {
  35. if(key4==0){delay(10);k6=0;}
  36. else
  37. {
  38. if(key==0){delay(10);if(a<5)a=a+1;else a=5;}else a=a;
  39. //if(key1==0)delay(10);
  40. if(key1==0){delay(10);if(a>1)a=a-1;else a=1;}else a=a;
  41. //if(key2==0)delay(10);
  42. if(key2==0)delay(10);
  43. if(key2==0){delay(10);if(a==1)d=1;else d=0;}
  44. if(key3==0)delay(10);
  45. if(key3==0){delay(10);if(a==2)d=1;else d=0;}
  46. if(a==1)k1=0;else k1=1;
  47. if(a==2)k2=0;else k2=1;
  48. if(a==3)k3=0;else k3=1;
  49. if(a==4)k4=0;else k4=1;
  50. if(a==5)k5=0;else k5=1;
  51. if(a==r){k6=0;}else k6=1;
  52. if(d==1){delay(10);{if(key==0){a=2;d=0;} else if(key1==0){a=1;d=0;}else {a=r;}}}
  53. //if(d==1){delay(10);for(i=100;i>0;i--){if(key1==0){a=1;d=0;} else{a=r;}}}
  54. }
  55. }
  56. }
復(fù)制代碼




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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表