單片機雙擊長按c語言,51單片機按鍵檢測源程序(實現(xiàn)單擊、雙擊、長按等功能)_第1頁
單片機雙擊長按c語言,51單片機按鍵檢測源程序(實現(xiàn)單擊、雙擊、長按等功能)_第2頁
單片機雙擊長按c語言,51單片機按鍵檢測源程序(實現(xiàn)單擊、雙擊、長按等功能)_第3頁
單片機雙擊長按c語言,51單片機按鍵檢測源程序(實現(xiàn)單擊、雙擊、長按等功能)_第4頁
單片機雙擊長按c語言,51單片機按鍵檢測源程序(實現(xiàn)單擊、雙擊、長按等功能)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單?機雙擊長按c語?,51單?機按鍵檢測源程序(實現(xiàn)單擊、雙擊、長按等功能)...原理:將按鍵這?事件的過程劃分成如下?個狀態(tài)://stata函數(shù)運?狀態(tài)//0:初始狀態(tài)//1:第?洗按鍵按下//2:第?次長按抬起//3:第?次短按抬起//4:第?次按鍵按下//5:第?次按鍵抬起利?定時器記錄系統(tǒng)運?時間,根據(jù)系統(tǒng)運?時間來確定按鍵時間間隔,根據(jù)不同的時間間隔來判斷當前按鍵事件處于哪?過程以及是否結(jié)束該事件。主函數(shù)中應(yīng)循環(huán)調(diào)?按鍵檢測函數(shù),調(diào)?間隔不超過100ms,此函數(shù)不會阻塞程序運?。版本說明:............................................................版本號Beta0.0本驅(qū)動?具包主要包含以下驅(qū)動(xxx.c?件和xxx.h?件共同使?,下?不再寫后綴)1“define.h”----包含了類型定義與開發(fā)板屬性的設(shè)置(如晶振頻率等)2“delay”----定義了兩個延時函數(shù),?持STC?多數(shù)芯?(除15H系列..)【提?】本函數(shù)庫中驅(qū)動多數(shù)依賴于"delay.c""delay.h"和"define.h"?件3“digital_display”----數(shù)碼管顯?驅(qū)動(硬件是基于兩個373鎖存器分別?作段數(shù)據(jù)和位數(shù)據(jù))4“digital_to_string”----包含了浮點數(shù)轉(zhuǎn)換成字符串的函數(shù)5“DS18B20”----溫度傳感器驅(qū)動6“DS1302”----時鐘芯?驅(qū)動7“I2C”----軟件模擬I2C總線驅(qū)動8“Keyboard”----矩陣鍵盤驅(qū)動9“LCD_1602_display”----1602液晶屏驅(qū)動(并?)10“LCD_12864_display”----12864液晶屏驅(qū)動(并?帶中?字庫)(只是顯??字,不包含畫圖)11“NEC_IR_coding”----??個紅外LED實現(xiàn)紅外編碼發(fā)射的驅(qū)動12“NEC_IR_decoding”----紅外解碼驅(qū)動13“NRF24L01”----2.4G?線通訊模塊驅(qū)動14“Uart”----串?驅(qū)動相關(guān)函數(shù)未完待續(xù)...............................................................

............................................................版本號Beta0.1修復了數(shù)碼管有關(guān)殘影的bug取消了矩陣鍵盤的松?檢測,檢測不到鍵按下時返回0代替未完待續(xù)...........................................................................................................................版本號Beta0.2加?了獨?按鍵的檢測,兼容矩陣按鍵,修復了矩陣鍵盤關(guān)于不同開發(fā)板兼容性的bug增加了串?不同波特率的初始化程序未完待續(xù)...........................................................................................................................版本號Beta0.3調(diào)整了數(shù)碼管顯?驅(qū)動的結(jié)構(gòu)代碼,?便不同開發(fā)板移植調(diào)整了紅外解碼閾值,提?解碼效率未完待續(xù)...........................................................................................................................版本號Beta0.41602液晶驅(qū)動的代碼更改為區(qū)域刷新,字符串長度不夠顯?空格,避免出現(xiàn)顯?殘留調(diào)整了若?驅(qū)動?件名字修復了數(shù)字轉(zhuǎn)字符串函數(shù)在顯?0時有負號的bug添加了QMC5883地磁場傳感器驅(qū)動未完待續(xù)...............................................................核?代碼如下:/*按鍵檢測返回值:0?結(jié)果1短按2長按3雙擊*/

u8key_scan(){//stata函數(shù)運?狀態(tài)//0:初始狀態(tài)//1:第?洗按鍵按下//2:第?次長按抬起//3:第?次短按抬起//4:第?次按鍵按下//5:第?次按鍵抬起u8res=0;staticu8key_sta,stata=0;staticu32time=0,time1=0,time2=0;if(key==0)//按下消抖{delay_10ms(1);if(key==0)key_sta=0;elsereturn0;}else//松開消抖{delay_10ms(1);if(key==1)key_sta=1;elsereturn0;}if(stata==0)//0:初始狀態(tài){if(key_sta==0){stata=1;time=system_time;

}return0;}elseif(stata==1)//1:第?洗按鍵按下{time1=system_time;time2=time1-time;if(time2>60){stata=2;}elseif(key_sta==1){time=system_time;stata=3;}return0;}elseif(stata==2)//2:第?次長按抬起{if(key_sta==1){stata=0;return2;}return0;}elseif(stata==3)//3:第?次短按抬起{time1=system_time;time2=time1-time;if(time2>30){stata=0;

return1;}elseif(key_sta==0){stata=4;}return0;}elseif(stata==4)//4:第?次按鍵按下{if(key_sta==1)//5:第?次按鍵抬起{stata=0;return3;}return0;}elsereturn0;}voidtime0_irq()interrupt1using1//系統(tǒng)時間定時器10ms+1{TL0=0x00;TH0=0xDC;system_time++;}//設(shè)置定時初值//設(shè)置定時初值說明:該?程使?了STC頭?件,請在STC-ISP軟件中將頭?

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論