查詢方式按鍵

查詢方式按鍵

ID:40849109

大小:134.50 KB

頁數(shù):5頁

時間:2019-08-08

查詢方式按鍵_第1頁
查詢方式按鍵_第2頁
查詢方式按鍵_第3頁
查詢方式按鍵_第4頁
查詢方式按鍵_第5頁
資源描述:

《查詢方式按鍵》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、【013】查詢方式按鍵?[51]點擊數(shù):684????發(fā)布日期:2006-6-250:57:00??【收藏】?【評論】?【打印】?【編程愛好者論壇】?【關(guān)閉】?實驗參考:笨笨工作室-實驗六、查詢方式按鍵。(查看)實驗板:??FB51A。(查看)實驗?zāi)康?<1>掌握讀取外部按鍵時候應(yīng)該注意的事項,掌握查詢方式響應(yīng)按鍵的方法?!    ?2>掌握讀取按鍵去抖動的方法。    ?<3>掌握判直接尋址位轉(zhuǎn)移指令jb,jnb的用法。實驗現(xiàn)象:最右面的數(shù)碼管初始顯示0,每次按下外部按鍵K1執(zhí)行加一,計數(shù)到9時重新回0。單片機響應(yīng)外部按鍵的方式有兩種,一種是查詢方式,一種是中斷方式。查詢

2、方式:單片機不斷的查詢是否有按鍵按下,如果有按鍵按下的話,就執(zhí)行相應(yīng)的程序,否則繼續(xù)查詢。中斷方式:單片機處理自己的工作,如果有按鍵按下,向單片機發(fā)出中斷請求。單片機停下現(xiàn)在正在處理的工作,轉(zhuǎn)去執(zhí)行中斷程序,執(zhí)行之后回來繼續(xù)剛才的工作。本實驗是用查詢方式完成,只用到一個鍵K1,每次按下,使第一位數(shù)碼管加1顯示,計數(shù)到9里重新回0。顯示部分電路及查表顯示方法參考:【005】數(shù)碼管顯示數(shù)字?和【006】多位數(shù)碼管動態(tài)顯示。本來想重畫個電路圖,在原來顯示部分的基礎(chǔ)上再把按鍵部分加上,但一來放在Blog上寬度有問題,再者還是不想畫了,所以偷個懶,鍵盤部分單獨拿出來吧。顯示部分:按鍵

3、部分:由原理圖知:當按鍵k1按下的時候,對應(yīng)P1.0輸入低電平。因此,我們要查詢k1是否按下,只要檢測到p1.0是低電平即可。在查詢鍵是否按下時,要注意按鍵的去抖動問題,關(guān)于鍵的消抖,見【012】按鍵消抖。按上述方法編寫程序:???????org??0000hstart:?mov??p0,#48h??????;段碼-顯示0???????mov??p2,#01h??????;位碼-選通第一位數(shù)碼管main:??mov??r7,#0ffh?????;查表時偏移量,用來實現(xiàn)由0到9循環(huán)顯示key:???jb???p1.0,key?????;如果P1.0為高電平,則繼續(xù)執(zhí)行此句查詢

4、。???????call?del10ms???????;否則調(diào)用延時程序?qū)崿F(xiàn)軟件去抖???????jb???p1.0,key?????;再次查詢P1.0,如果是高電平,表示是抖動,繼續(xù)查詢???????dis:????????????????????????;確定按鍵按下,開始執(zhí)行顯示程序???????inc??r7????????????;偏移量自加(第一次值為0)???????mov??a,r7???????mov??dptr,#tab????;取表首址???????movc?a,@a+dptr????;用查表指令獲取要顯示的數(shù)字???????mov??p0,a????

5、?????;得到該字段碼送入P0口顯示???????cjne?a,#48h,key??;未顯示到最后一個數(shù),繼續(xù)查詢按鍵狀態(tài)???????ljmp?main??????????;顯示到最后一個數(shù)字則重新開始???????tab:???db???0ebh,52h,62h,0e1h,64h,44h,0eah,40h,60h,48h;段碼表del10ms:????????????????????;10ms延時子程序(12M)????????mov?r6,#20???????;2機器周期temp:???mov?r5,#248??????;2機器周期????????djnzr5,$?

6、????????;2機器周期2+2×248=498????????djnzr6,temp??????;2機器周期2×20=40????????ret????????????????;2+20×498+40=10002即10msend★將該程序下載到板上驗證發(fā)現(xiàn)很不穩(wěn)定,按一次鍵時顯示可能會變幾次,如果按住鍵不放,將會顯示“8”,且不停在閃爍,用Porteus仿真了一下也是這個問題。這是由于顯示了一個數(shù)字之后,單片機會返回重新查詢P1.0的狀態(tài),如果按下的時間很長,就會導致單片機又檢測到低電平,所以就繼續(xù)顯示下一個數(shù)字,常按住的話就會循環(huán)此過程,所以看到的閃爍的“8”實際上是

7、快速動態(tài)顯示“0”到“9”時人眼的視覺暫留產(chǎn)生的。那如何使按下一次按鍵,無論時間長短,只作一次按鍵處理呢?可以在顯示完一個數(shù)字后即檢測P1.0是否回到高電平(鍵放開),若是,表示按鍵一次,繼續(xù)執(zhí)行顯示下一個數(shù);若不是則原地等待直到P1.0返回高電平。按此思路在程序中將一個段碼送入P0口顯示之后,加一判斷語句(紅色):???????org??0000hstart:?mov??p0,#48h??????;段碼-顯示0???????mov??p2,#01h??????;位碼-選通第一位數(shù)碼管main:??mov??r7,

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。