導航:首頁 > 操作系統 > 2個按鍵控制51單片機

2個按鍵控制51單片機

發布時間:2022-11-01 16:12:35

1. 誰能幫我寫一個51單片機的C程序。兩個按鍵控制一個LED。

void
main(void)
{
led=1;
//不亮
while(1)
{
if(key1==0
&&
key2==1)//按鍵1按下,按鍵2沒按
{
led=0;
//亮
}
else
if(key1==1
)
//按鍵1釋放或未按時,燈滅
{
led=1;
//滅
}
if(key2==0
&&
key1==1)
//按鍵2按下,按鍵1沒按
{
led=0;
//先亮
delay_1s(30);
//等30秒
led
=1
;
//30秒後滅
}
}
}

2. 求程序:51單片機兩個按鍵做模式控制led亮滅1;交替亮2;同亮同暗

用I/O口的兩個引腳讀取按鍵的狀態,採用循環掃描工作方式,按鍵按下為1,沒按為0,則按鍵狀態為01時,讓LED交替量,數據口輸出對應的高低電平即可;按鍵狀態為10時,數據口輸出同亮同滅數據

3. 單片機程序編程(用C51) 2個按鍵控制2位七段LED顯示,每按下一次「+

main()
{
while(1)
{
key=KEY_Scan(0);
if(key=="+")
{
value++;

}
if(key=="-")
{
value--;
}

}

}
u8 KEY_Scan(char mode)
{
static u8 key_up=1;
if(mode)key_up=1;
if(key_up&&(KEYADD==0||KEYRED==0|))
{
delay_ms(10);//去斗
key_up=0;
if(KEY0==0)return 1;
else if(KEY1==0)return 2;
}else if(KEYADD==1&&KEYRED==1)key_up=1;
return 0;
}
value為顯示值,KEYADD、KEYRED為加減的兩個鍵,底層要你自己實現

4. 51單片機,用兩個按鍵分別控制兩個led,一個亮/滅,另一個閃爍/滅,為什麼我按下了第二個燈不閃呢

你的led1=~led1;這個語句沒有循環,所以只會反轉一次。要麼加循環,要麼再寫一個閃爍函數。

voidled_filcker(usignedcharx)

{

while(x)

{

led1=~led1;

x--:

}

}

如果你是想,按一下,松開也會閃爍,再按一下熄滅。你得定義一個變數來表示按鍵的按下。

#include<reg52.h>

#define uchar unsigned char

bit stop=1;

sbit k5=P1^4;

void delay(uchar xms)

{

while(xms--);

}

void main()

{

if(k5==0)

{

delay(1000);

if(k5==0)

{

while(k5==0)

{

if(stop)

<<<<<<<<<<<<<<<此處執行你的語句

else

stop=~stop:

}

}

}
}


5. 51單片機兩個鍵分別控制p2.0口延時10秒和p2.1口延時30分鍾.c語言,定時器,89c52

#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitp20=P2^0;
sbitp21=P2^1;
ucharcnt,sec,min;
voidt0isr()interrrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
if(cnt>=0)
{
cnt=0;
sec++;
if(sec>=10)p20=1;
if(sec>=60)
{
sec=0;
min++;
if(min>=30)p21=1;
}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
p20=0;
p21=1;
whiile(1);
}

6. 51單片機怎樣用兩個以上按鍵同時控制相應程序的執行

按鍵按下,給一標志位,子函數 通過識別 標志位,判斷是否 執行流水。

猜測:又一個受 郭大俠荼毒的孩子!

7. 用兩按鍵控制51單片機的2個外部中斷怎麼編

按鍵控制中斷你這里的描述是不規范的,我想應該是兩個按鍵接外部中斷吧。

#include<reg51.h>
#defineucharunsignedchar
uchardat;
voidext0()interrupt0
{
dat++;
P0=dat;
}
voidext1()interrupt2
{
dat--;
P0=dat;
}
main()
{
EX0=1;
EX1=1;
IT0=1;
IT1=1;
EA=1;
while(1);
}

8. 51單片機兩個鍵分別控制P2.1口延時10秒和P2.0口延時30秒

下面這個程序裡面有你要的東西,自己找找。 #include"reg51.h" void delay(int n); sbit K1=P3^3; //LED左移按鍵 sbit K2=P3^5; //LED右移按鍵 sbit K3=P3^6; //開啟手動按鍵 sbit K4=P3^7; //開啟自動按鍵 bit mark1=0; bit mark2=0; unsigned char a,b,c,d; int x; void pulse(void); void main() { a=0xfe;b=0xff; c=0x7f;d=0xff; while(K4) {P2=a; P0=b; if(!K1&!mark1) //如果K1按下且mark1=0 {delay(10); //延時 if(!K1) //檢查K1還是按下 { mark1=1; //mark1=1 if((a&0x80)&&(a!=0xff)) //如果a=1*******("*"號為0或者1(最高位為1))並且a不等於0xff { a=(a<<1)|0x01;pulse();} //讓a向左移後邊會拉出0,然後與00000001相與(最後一位補1) else if(a==0x7f) {a=0xff;b=0xfe;pulse();} else if((b&0x80)&&(b!=0xff)) {b=(b<<1)|0x01;pulse();} else if(b==0x7f) {a=0xfe;b=0xff;pulse();} // {a</a左移一位讓P2^7的值跳到P2^0上 } } else if(K1) {mark1=0;} if(!K2&!mark2) { delay(10); if(!K2) { mark2=1; if((a!=0xff)&&(a!=0xfe)) { if(a&0x01) { a=(a>>1)|0x80;pulse();} } else if(a==0xfe) {a=0xff;b=0x7f;pulse();} if((b!=0xff)&&(b!=0xfe)) { if(b&0x01) { b=(b>>1)|0x80;pulse();} } else if(b==0xfe) {a=0x7f;b=0xff;pulse();} } } else if(K2) mark2=0; } while(K3) { if(!K1&!mark1) {delay(10); if(!K1) {mark1=1; for(x=0;x<=16;x++) { P0=a;P2=b; delay(100); if((a&0x80)&&(a!=0xff)) {a=(a<<1)|0x01;} else if(a==0x7f) {a=0xff;b=0xfe;} else if((b&0x80)&&(b!=0xff)) {b=(b<<1)|0x01;} else if(b==0x7f) {b=0xff;a=0xff;} } } } else if(K1) {mark1=0;} if(!K2&!mark2) {delay(10); if(!K2) {mark2=1; for(x=0;x>1)|0x80;} else if(c==0xfe) {c=0xff;d=0x7f;} else if((d&0x01)&&(d!=0xff)) {d=(d>>1)|0x80;} else if(d==0xfe) {d=0xff;c=0xff;} } } } else if(K2) {mark2=0;} } } void delay(int n) { int i,j; for(i=0;i<=n;i++) for(j=0;j<=320;j++); } void pulse(void) { P1=0xfe; delay(100); P1=0xfd; delay(100); P1=0xfb; delay(100); P1=0xf7; delay(100); P1=0xff; }

9. c51單片機:兩個獨立按鍵控制一個led,k1按下松開led閃爍,k2按下松開led滅


#include"reg52.h"
typedefunsignedintu16;
typedefunsignedcharu8;
sbitled=P2^0;//把所要控制的led燈定義為p2.0這個口
sbitk1=P2^1;
sbitk2=P2^2;

voiddelay(u16i)
{
while(i--);
}//一個延時程序
voidmain()
{
if(k1==1)
while(1)
{
led=1;
delay(50000);//大約延時450ms
led=0;
if(k2==1)
break;
}
led=0;
}

思路很簡單,就是用檢測的方法去掃描相應的按鍵是否被觸發,然後執行相應的子程序。

閱讀全文

與2個按鍵控制51單片機相關的資料

熱點內容
匯編程序員待遇 瀏覽:357
怎麼批量有順序的命名文件夾 瀏覽:209
杭州程序員健身 瀏覽:17
dvd光碟存儲漢子演算法 瀏覽:758
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:383
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362