當前位置:首頁 » 編程軟體 » 單片機按鍵編程

單片機按鍵編程

發布時間: 2022-06-18 01:54:54

『壹』 關於C51單片機 按鍵 編程的問題

#include<reg51.h>
uchar key_scan(); //按鍵掃描子程序
void delay10ms(); //延時程序
uchar key_free(); //等待按鍵釋放程序
void key_deal();
sysem_initial(); //初始化程序
void main()
{
sysem_initial();
while(1)
{
key_scan();
uchar key_free();
key_deal();
}
}
void sysem_initial()
{
PCON=0x00;
SCON=0x18; //選擇串列工作方式0
ES=0; //禁止串列口中斷
}
uchar key_scan()
{
unsigned char key,Rankcode;
int i,j;
SBUF=0x00; //使掃描鍵盤的74LS164輸出為00H,所有列線低電平
while(TI!=1); //串列輸出完否
TI=0; //清零
P1=0x03; //所有行線為高電平
if(P1&0x03!=1) //如果有鍵按下
{
delay10ms();
for(i=0;i<8;i++)
{
if(P1&0x03!=1) //確實有鍵按下
{
Rankcode=0xFE; //掃描第一列
SBUF=Rankcode; //輸出列值
while(TI!=1);
TI=0;
if(P1&0x03==0x01) //如果第一行有鍵閉合
{
j=0;
}
else if(P1&0x03==0x02) //如果第二行有鍵閉合
{
j=1;
}
key=j*8+i;
}
if(j==0||j==1) //掃描按鍵
break; //退出
Rankcode=(Rankcode<<1)|0x01; //否則,開始掃描下一列
}
}
return(key); //返回鍵值
}
uchar key_free()
{
key=key_scan();
SBUF=0x00;
P1=0x03;
while(TI!=1);
TI=0;
while(P1&0x03!=0x03); //如果仍有鍵按下,等待按鍵釋放
return(key);
}
void delay10ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<120;j++);//你的問題出在這里{}之間需要;,可以不要直接加;
}
//還有你上面所有等待的while() 後面都需要;這才是空等待,否則是帶後面的語句指令一起執行

『貳』 現實單片機按鍵編程

是否要實現在線編程ISP?
有ISP功能的MCU編程可以看做兩部分,好像:電腦的BIOS與硬碟程序,你設置好BIOS以處理你要實現的編程功能,那麼硬碟程序就交給用戶去實現了!

也就是說,你要寫好2k~8k的ISP引導碼即可!

『叄』 51單片機獨立式按鍵程序

#include<reg52.h>
unsignedcharID;
sbitk1=P3^7;//定義按鍵埠
voiddelay()
{
TMOD=0x10;//定時器的工作方式
TH1=0xd8;
TL1=0xf0;
TR1=1;
while(!TF1);//這里錯了,是定時器1
TF1=0;
}
voidmain()
{
while(1)
{
if(k1==0)
{
delay();//去抖動
if(k1==0)//檢測按鍵確實按下,進行按鍵處理
{
ID++;
if(ID==0)
{
ID=0;
}
while(!k1);//這里錯了,多餘的加了==0
}
}
switch(ID)
{
case0:P1=0x3f;break;
case1:P1=0x06;break;
case2:P1=0x5b;break;
case3:P1=0x4f;break;
case4:P1=0x66;break;
case5:P1=0x6d;break;
case6:P1=0x7d;break;
case7:P1=0x07;break;
case8:P1=0x7f;break;
case9:P1=0x6f;break;
default:break;
}
}
}

『肆』 51單片機C語言編程如何實現長按按鍵實現數值的累加

這個可以用定時器來做,比如檢查某鍵,按鍵時間超過2秒後一個變數開始累加知道鍵釋放為止。實現方法如下:
#include<reg51.h>
#define
uint
unsigned
int
#define
uchar
unsigned
char
uint
v=0,time=0;
sbit
key=P1^0;
void
t0isr()
interrupt
1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if((key==0)&&(time>40)v++;
//如果按鍵時間超過2秒且鍵未釋放,變數+1
if(key==1)time=0;
//如果鍵釋放,時間復位
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

『伍』 51單片機匯編語言按鍵如何編程

編程時,要把整個程序,分解成一個一個模塊。
一個模塊,只包括一個功能。
那麼,KEY 模塊:
讀出按鍵、消除抖動、讀取鍵值,返回鍵值。
鍵值包括:00H、08H... 20H,FFH(無鍵)。
這個 KEY 模塊,到這就完了。
按鍵如何處理,則是另外的模塊。
樓主流程圖,包羅萬象,好像是個主程序。不好弄。

『陸』 單片機按鍵編程去抖動!

看你的要求了,
一般軟體去抖就可以了,
原理:
判斷按鍵是否按下,
延時一小段時間,
判斷按鍵是否仍然是按下狀態,
是的話進入按鍵按下流程,
否則。。。

『柒』 在單片機中當按鍵做為最開始條件時應怎樣編程

voidmain(){while(1){if(KEY==Dn)//每次循環都檢查按鍵是不是按下{//所有要運行的程序}}}

『捌』 51單片機按鍵編程求救!!

補充 P2口和P3^0是輸出,P0^0是輸入跟你要的功能無關,P2口只有再讀取鍵值的時候才作為輸入的,讀取完成後仍是輸出所以不影響顯示之類的。

sbit com=P3^0;
unsigned char temp;
unsigned char key=0;
unsigned seg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
void main()
{
while(1)
{
com=1;
P2=0xff;
P0&=0xfe;
temp=P2;
switch (temp)
{
case 0x7f : key=1;
break;
case 0xbf : key=2;
break;
case 0xdf : key=3;
break;
case 0xef : key=4;
break;
case 0xf7 : key=5;
break;
case 0xfb : key=6;
break;
case 0xfd : key=7;
break;
case 0xfe : key=8;
break;
default:
break;
}
P2=seg[key];
com=0;;
delay(1ms);
}
}

『玖』 51單片機獨立按鍵部分編程問題

你好:

程序是這么運行的:
先在心中想像獨立按鍵的結構,沒按下時,P3外接上拉電阻,所以輸入總是1,按鍵按下時,倒地,對應按鍵的IO輸入為0.
然後,先置IO為輸入,沒按下時讀出全是1,0xff,當有按鍵按下時,讀入為0了,所以用if(KeyPort!=0xff)來判斷是否有輸入,然後消抖一下,繼而繼續判斷是否還在輸入,如果還在輸入說明不是抖動引起而是認為引起,之後讀取P3口的低5為數據(估計是你的獨立按鍵的介面吧),並賦值給keyvalue;while((KeyPort & 0x1f)!=0x1f)這句的意思是如果一直按著,P3輸入的數據肯定不變,那麼條件為真,死循環,如果松開,P3全為1了,此時是等於0x1f的,所以結束循環,進行按鍵處理。

最後,是按鍵的核心,當P3.0按下,那麼對應值是11111110,那麼keyvalue的值是11110=0x1e,如果P3.1按下,那麼對應值是11111101,那麼keyvalue的值是11101=0x1d,以此類推,5個按鍵對應你題目中5個值。

不懂回復。
希望我的回答能幫助到你。

『拾』 單片機按鍵編程的時候怎麼才能夠讓彈起的時候才讀數

if(kk==0)--------------------判斷按鍵是否被按下
{
delay(10);-----------延時去抖

if(kk==0)-------------再次判斷按鍵狀態

{

while(!kk);--------等待按鍵松開

a=0;---------------執行相關語句

}

}

需要按鍵按下就執行,只需把要執行的語句放在等待按鍵松開的前面

如果需要松開按鍵後執行,那麼就把要執行的語句放在等待按鍵松開的後面

哈哈,就是這么簡單

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:645
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:936
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:632
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:821
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:731
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1066
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:299
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:160
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:852
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:763