導航:首頁 > 操作系統 > 單片機按鍵代碼

單片機按鍵代碼

發布時間:2024-09-02 06:21:36

『壹』 單片機編程 四個按鍵 K1=p1.1 K2=p1.2 k3=p1.3 k4=p1.4 p5 p6輸出(k1 k3 控制p5,k2k4控制p6)

#include"reg51.h" // 試試

sbitk1=P1^0;//按鍵1

sbitk2=P1^1;//按鍵2

sbitk3=P1^2;//按鍵3

sbitk4=P1^3;//按鍵4

sbitp5=P1^5;//輸出1

sbitp6=P1^6;//輸出2

bit t1,t2;

voidmain(void)

{

while(1)

{

if(k1==0&&t1==0){t1=1;p5=1;}

if(k2==0&&t1==0){t1=1;p5=0;}

if(k1==1&&k2==1){t1=0;}

if(k3==0&&t2==0){t2=1;p6=1;}

if(k4==0&&t2==0){t2=1;p6=0;}

if(k3==1&&k4==1){t2=0;}

}}

『貳』 請問單片機怎麼用獨立按鍵按一下實現一個功能,按另一個按鍵實現另一個功能 這個代碼要怎麼寫啊

如果這兩個功能都是一個死循環,可以考慮用中斷,這樣就不必在兩個獨立的功能中插入按鍵檢測了
while(1)
{
while(flag==1){死循環1}
while(flag==2){死循環2}
}
如果這兩個功能不是死循環,就 簡單了
while(1)
{
if(key1==0) {延時消抖 功能1}
if(key2==0) {延時消抖 功能2}
}

『叄』 單片機按下按鍵1,燈亮,按下按鍵2,燈滅,按下按鍵3,燈閃爍,求代碼

主要程序如下:
flag是用來記憶按鍵狀態,按下key3,flag置1,程序中檢測到flag是1才閃爍,鬆手後LED仍然閃爍,同時下一輪還可以檢測另外兩個按鍵
while(1)
{
if(key1==0)//判斷按鍵是否按下
{
Delay1ms(10);//延時消抖
if(key1==0)
{
while(key1==0);//等待按鍵抬起
LED=1;
flag=0;
}
}
if(key2==0)//判斷按鍵是否按下
{
Delay1ms(10);//延時消抖
if(key2==0)
{
while(key2==0);//等待按鍵抬起
LED=0;
flag=0;
}
}
if(key3==0)//判斷按鍵是否按下及是否在走時
{
Delay1ms(10);//延時消抖
if(key3==0)
{
while(key3==0);//等待按鍵抬起
flag=1;
}
if(flag==1)
{
LED=!LED;
Delay1ms(200);
}
}

『肆』 單片機c51的按鍵0~f的代碼

#include <reg52.h>

#include <intrins.h>


#define uchar unsigned char

#define uint unsigned int



uchar key;


unsigned char code disp_code[]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


unsigned char code key_code[]={

0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,

0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77 };


/**********************************************************


延時子函數


**********************************************************/

void delayms(uint ms)

{

uchar t;

while(ms--)

{

for(t = 0; t < 120; t++);

}

}



/**********************************************************


鍵盤掃描子函數


**********************************************************/

uchar keyscan()

{

uchar scan1,scan2,keycode,j;


P3=0xf0;

scan1=P3;

if((scan1&0xf0)!=0xf0) //判鍵是否按下

{

delayms(30); //延時30ms

scan1=P3;

if((scan1&0xf0)!=0xf0) //二次判鍵是否按下

{

P3=0x0f;

scan2=P3;

keycode=scan1|scan2; //組合成鍵編碼


for(j=0;j<=15;j++)

{

if(keycode== key_code[j]) //查表得鍵值

{

key=j;

return(key);

}

}

}

}

else P3=0xff;


return (16);

}


/**********************************************************


判鍵是否按下子函數


**********************************************************/

void keydown()

{

P3=0x0f;

if((P3&0x0f)!=0x0f)

{

keyscan();

P0=disp_code[key];

beep();

}

}


/**********************************************************


主函數


**********************************************************/

main()

{

P0 = 0xbf;

P2 = 0x7f; //數碼管顯示"-"

P3 = 0xff;

while(1)

{

keydown();

}

}

『伍』 51單片機按鍵調節參數值並保存的程序代碼

uchar a=50;//假設a的可調范圍是1到100;
uint time=0;
eepromEraseSector (0X2800);//擦除EPROM一個扇區
while(time<5000)//不足5s
{
if(s1==0)//S1按下
{ delay_ms(20);
if(s1==0){ while(s1==0);a-- ; time=0; if(a==0)a=100;}
}
if(s2==0)//S2按下

{ delay_ms(20);
if(s2==0){ while(s2==0);a++; time=0; if(a>100)a=0; };
//一旦按鍵按下,time就清0
}
delay_ms(100);
time+=100;
}
eepromWrite(0x2800, a);//寫入 EPROM

閱讀全文

與單片機按鍵代碼相關的資料

熱點內容
程序員架構師的工作 瀏覽:145
優摩手環用的什麼app 瀏覽:703
安卓點點怎麼關閉 瀏覽:183
公考培訓系統源碼 瀏覽:629
梅州離東莞源碼 瀏覽:382
09年加密軟體排行榜 瀏覽:687
javakey值 瀏覽:613
PDF政府報告2016 瀏覽:1000
國內小孩編程加盟前景 瀏覽:959
stc單片機安全 瀏覽:537
雲郵箱伺服器埠 瀏覽:489
文選編譯與經典重構 瀏覽:591
精靈部落伺服器地址 瀏覽:962
mc伺服器和房間有什麼分別 瀏覽:878
db伺服器什麼系統 瀏覽:606
分時漲停密碼源碼用法 瀏覽:897
安卓卸載命令 瀏覽:286
認證的app對自己有什麼影響 瀏覽:391
如何利用cmd訪問國外伺服器 瀏覽:956
浪潮伺服器bmc默認地址 瀏覽:834