藍橋杯微控制器國賽 長按和短按

2021-10-17 03:16:13 字數 2590 閱讀 7944

第九屆藍橋杯微控制器設計與開發專案決賽有這一部分:

「s7 :定義為引數"設定"按鍵,按下此按鍵,進入電壓閾值引數設定介面(圖6), 在閾值設定介面下,s6"回顯"按鍵定義為閾值調整功能(備註:非閾值設定介面下,s6按鍵為回顯功能),每次按下s6,電壓閾值增加0.1v,長按0.8秒以上,可實現快速增加功能(備註:電壓閾值設定範圍:0.1v~5.0v),閾值調整完成後,再次按下s7按鍵,退出"設定"介面(圖6),返回資料顯示介面。」

如何利用定時器區分長按和短按?

設定兩類變數

1.檢測當前狀態變數 (如flag_key_1,count_t)

他們會隨著按鍵的狀態隨時發生變化

2.記錄當前狀態變數 (如flag_key_2,time_dat)

用於記錄第一種變化,便於後續的資料處理

短按s7點亮l1,短按s7點亮l2,短按s6點亮l3,短按s6點亮l4

衡量長按短按的時間自擬

(硬體平台:北京國信長天科技ct107d 微控制器綜合實訓平台)

按鍵處理函式:

void

scanf_key()

while

(s6 ==0)

if((s7 !=0)

||(s6 !=0)

)}

定時器中斷服務函式:

void

time_ser

()interrupt 3

else count_t =0;

}

資料處理函式(此處是點亮led):

void

led_show()

else

if(time_dat >=10)

break

;case2:

if((time_dat <=10)

&&(time_dat >=1)

)else

if(time_dat >=10)

break

;}

xbyte[

0x8000

]= led_dat;

flag_key_2 =0;

//處理完畢之後flag_key_2要清零

}

#include

#include

"absacc.h"

unsigned

char code nixietube_date=

;unsigned

char led_dat =

0xff;

sbit s7 = p3^0;

sbit s6 = p3^1;

unsigned

int count_t =

0,time_dat=0;

void

nixietube_show()

;void

delay

(unsigned

int t)

;unsigned

char flag_key_1 =

0,flag_key_2 =0;

void

nixietube_byte_show

(unsigned

char pos,

unsigned

char value)

void

delay

(unsigned

int t)

void

system_init()

void

time_init()

//定時器1初始化

/*******************************==

這裡的變數有2類

1.檢測當前狀態變數 (如flag_key_1,count_t)

他們會隨著按鍵的狀態隨時發生變化

2.記錄當前狀態變數 (如flag_key_2,time_dat)

用於記錄第一種變化

******************************==*/

void

nixietube_show()

//可以用這個函式看按鍵的狀態

void

time_ser

()interrupt 3

else count_t =0;

}void

scanf_key()

while

(s6 ==0)

if((s7 !=0)

&&(s6 !=0)

)}void

led_show()

else

if(time_dat >=10)

break

;case2:

if((time_dat <=10)

&&(time_dat >=1)

)else

if(time_dat >=10)

break

;}

xbyte[

0x8000

]= led_dat;

flag_key_2 =0;

//處理完畢之後flag_key_2要清零

}void

main()

}

微控制器 按鍵定時器檢測 短按 長按

通過使用定時器計數的方法來分辨按鍵的 短按 長按 檢測到引腳被拉低 按鍵按下為低電平,沒有按下為高電平 延時10毫秒 濾波 引腳還是被拉低 確定按鍵被按下 設定按鍵按下標誌 開啟定時器,開始計數 定時器中有乙個全域性變數用於記錄計數值 直到引腳被拉高 按鍵被釋放將為高電平 關閉定時器 檢測按鍵按下標...

2020藍橋杯省賽微控制器2

xbye寫法由於暫時不了解其內部工作原理,在國信長天2020版本的51板子上 p42 p44與按鍵相連。如果用xbyte數碼管顯示雖然方便但如果在中斷中有矩陣鍵盤寫法的按鍵掃瞄,使p42 p44強制拉低或拉高 會出現亂七八糟的的不可預判的bug,如數碼管不可顯示 矩陣鍵盤失效。推薦直接用p埠寫法,在...

藍橋杯微控制器第三屆國賽 門禁系統

1.不要把超聲波程式寫在中斷裡面。如果把超聲波程式寫在中斷裡面的話,可能就不會及時的檢測到溢位標誌,在我開始驗證 的時候出現的現象是最後乙個數碼管閃爍,然後把超聲波寫在主函式裡面就解決了問題。2.程式裡面經常呼叫的 寫在函式裡面,會大大減少 量和重複 並且利於檢查以及 美觀。如寫eeprom和讀ee...