標題:
用DW0.1.2.3.4.5。空檔和 1.2.3.4.5檔 麻煩大神看下哪里出了問題
[打印本頁]
作者:
新手,請賜教
時間:
2017-6-28 21:59
標題:
用DW0.1.2.3.4.5?諜n和 1.2.3.4.5檔 麻煩大神看下哪里出了問題
QQ圖片20170628212909.png
(55.02 KB, 下載次數(shù): 81)
下載附件
2017-6-28 21:33 上傳
設(shè)計目標是:用DW0.1.2.3.4.5?諜n和 1.2.3.4.5檔。在DW1——DW2——DW3——DW4——DW5時,按加檔或者減檔鍵,檔位正常加減。 在,一檔DW1亮時按(加檔)鍵,和,二擋DW2時按(減檔)鍵,就會歸為空檔DW0亮。在空擋DW0時,按加檔鍵應(yīng)該DW2亮為2檔;按減檔鍵則DW1亮為1檔。實際情況是:有時候按一下加檔鍵會加兩個檔位,按一下降檔鍵會減兩下檔位。主要的是1和2檔到空檔 有時候需要按很多次對應(yīng)按鍵他才變化,還有就是空檔到1一般正常 ,但是到2檔這里總會出現(xiàn)問題,有時直接跳的三擋,或者一檔。。。跟預(yù)想的完全不一樣。
/************************************************************
控制名稱:檔位檢測與顯示
控制要求:1、用數(shù)碼管顯示各個檔位。
2、利用4個接近傳感器。
輸入信號:脈沖信號(離散)。
檢測方式:檢測動作,來區(qū)分不同的檔位。
*************************************************************/
#include<reg52.h>
sbit key=P3^4;//右
sbit key1=P3^7;//左
sbit key2=P3^5;//中右
sbit key3=P3^6;//中左
sbit key4=P3^0;//檔位歸空
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
sbit k4=P2^3;
sbit k5=P2^4;
sbit k6=P2^5;
void delay3(unsigned char a)
{
unsigned char b,c;
for(a;a>0;a--)
for(b=100;b>0;b--)
for(c=100;c>0;c--);
}
void delay(unsigned char a)
{
unsigned char b,c;
for(a;a>0;a--)
for(b=100;b>0;b--)
for(c=100;c>0;c--);
}
void main()
{
unsigned char i,a=1,d=0,r,num;
P3=0xff;
P2=0x01;
P1=0x00;
while(1)
{
if(key4==0){delay(10);k6=0;}
else
{
if(key==0){delay(10);if(a<5)a=a+1;else a=5;}else a=a;
//if(key1==0)delay(10);
if(key1==0){delay(10);if(a>1)a=a-1;else a=1;}else a=a;
//if(key2==0)delay(10);
if(key2==0)delay(10);
if(key2==0){delay(10);if(a==1)d=1;else d=0;}
if(key3==0)delay(10);
if(key3==0){delay(10);if(a==2)d=1;else d=0;}
if(a==1)k1=0;else k1=1;
if(a==2)k2=0;else k2=1;
if(a==3)k3=0;else k3=1;
if(a==4)k4=0;else k4=1;
if(a==5)k5=0;else k5=1;
if(a==r){k6=0;}else k6=1;
if(d==1){delay(10);{if(key==0){a=2;d=0;} else if(key1==0){a=1;d=0;}else {a=r;}}}
//if(d==1){delay(10);for(i=100;i>0;i--){if(key1==0){a=1;d=0;} else{a=r;}}}
}
}
}
復(fù)制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1