標(biāo)題:
請教大神幫忙寫一個程序,一個按鍵切換三種模式,
[打印本頁]
作者:
Alvin_Nie
時間:
2017-12-1 14:23
標(biāo)題:
請教大神幫忙寫一個程序,一個按鍵切換三種模式,
模式1,燈珠亮1秒滅一秒 模式2 燈珠亮2秒 滅2秒
模式3 燈珠亮3秒 滅3秒
默認(rèn)上電模式1 ,按鍵按一次就切換一次模式
請高手賜教,不勝感激!
作者:
大道明德
時間:
2017-12-1 16:24
這個不是 挺簡單的嘛。 按鍵掃描,if判斷計數(shù),IO口狀態(tài)延時翻轉(zhuǎn),然后。。然后就沒了
作者:
Alvin_Nie
時間:
2017-12-1 17:09
呵呵,初學(xué)的就感到不容易,麻煩你幫我寫個參考程序,謝謝!
作者:
999333
時間:
2017-12-1 17:39
用delay還是要用定時器
作者:
Alvin_Nie
時間:
2017-12-1 18:10
只要程序能用即可
作者:
Alvin_Nie
時間:
2017-12-1 18:10
delay容易懂點(diǎn)
作者:
q6516819
時間:
2017-12-1 19:37
我也是 新手 一起學(xué)習(xí)
作者:
大道明德
時間:
2017-12-4 13:22
#include <reg51.h>
sbit Led = P1^1;
sbit Button = P2^1;
void delay_ms(unsigned int x)
{
unsigned int i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
int ScanButton()
{
unsigned int i = 0;
if(Button == 1 && i == 0)
{
delay_ms(1);
if(Button == 1)
{
i = 1;
}
}
else if(Button == 1 && i == 1)
{
delay_ms(1);
if(Button == 1)
{
i = 2;
}
}
else if(Button == 1 && i == 2)
{
delay_ms(1);
if(Button == 1)
{
i = 3;
}
}
else
{
i = 0;
}
return i;
}
void mian()
{
unsigned char k = 0;
Led = 0; // 0 滅 1 亮
k = ScanButton();
while(1)
{
switch(k)
{
case 0:
{
Led = 1;
delay_ms(1000);
Led = 0;
delay_ms(1000);
}
break;
case 1:
{
Led = 1;
delay_ms(1000);
Led = 0;
delay_ms(1000);
}
break;
case 2:
{
Led = 1;
delay_ms(2000);
Led = 0;
delay_ms(2000);
}
break;
case 3:
{
Led = 1;
delay_ms(3000);
Led = 0;
delay_ms(3000);
}
break;
default: ; break;
}
}
}
復(fù)制代碼
隨手寫的,邏輯應(yīng)該是對的,具體的定義,你可以自己搞搞
作者:
ZOUQI11
時間:
2017-12-4 14:58
可以通過保存按鍵的按鍵次數(shù)來做,//--------------------按鍵檢測,狀態(tài)機(jī)模式
void key()
{
static u8 key_1;
switch(key_1)
{
case(0):{
if(KEY1==0)
{
key_1=1; //代替延時
break;
}
}
case(1):{
if(KEY1==0)
{
key_1=2;
key_10=1;//確定按鍵按下
break;
}
else
{
key_1=0; //消除毛刺
break;
}
}
case(2):{
if(KEY1==1) //判斷按鍵是否松開,由中斷延時給變量相加
{
key_1=0;
break;
}
}
default: break;
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1