亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        單片機矩陣按鍵掃描程序設計

        2013-12-31 00:00:00譚艷
        數字化用戶 2013年9期

        【摘 要】單片機矩陣鍵盤是常用的人機對話輸入設備,本文提出一種新的矩陣鍵盤掃描程序設計,可以大大李節(jié)省系統資源,提高效率。

        【關鍵詞】單片機 矩陣鍵盤 掃描程序

        鍵盤是微型計算機系統中最常用的人機對話輸入設備。在單片機應用系統中,為了控制系統的工作狀態(tài),以及向系統輸入數據,應用系統需要單獨設計專用的小鍵盤。矩陣按鍵掃描程序是一種節(jié)省系統資源的方法,按鍵數目越多節(jié)省的系統資源就越可觀,本程序的思路:先判斷某一列(行)是否有按鍵按下,再判斷該行(列)是那一只鍵按下。但是,在程序的寫法上,采用了最簡單的方法,使得程序效率最高。

        一、設計理念

        本程序中,如果檢測到某鍵按下了,就不再檢測其它的按鍵,這完全能滿足絕大多數需要,又能節(jié)省大量的CPU時間。另外,鍵盤用延時程序來消除抖動,完全是浪費時間。試想,如果不用中斷執(zhí)行(用中斷執(zhí)行需要更多的硬件資源)的方法來掃描鍵盤,每秒鐘掃描20-100次,每次都要延時10-20MS的話,單片機還有多少時間做正事呢?其實,延時的這段時間,CPU可以做其它的事務。所以,本鍵盤掃描程序的前面后面都可以加入一些代碼,既可以達到完美的消抖動效果,又可以擴展其它的功能(例如按鍵封鎖、按鍵長按等按鍵功能復用)。

        二、設計程序

        本鍵盤掃描子程序名叫key,每次要掃描時用call key調用即可。以下子程序內容:

        key:mov p0,#00001111b; 上四位和下四位分別為行和列,所以送出高低電壓檢查有沒有按鍵按下

        jmp k10; 跳到K10處開始掃描,這里可以改成其它條件轉移指令來決定本次掃描是否要繼續(xù),例如減1為0轉移或者位為1或0才轉移,這主要用來增加功能,確認上一按鍵功能是否完成?是否相當于經過了延時?是否要封鎖鍵盤?

        goend:jmp kend; 如果上面判斷本次不執(zhí)行鍵盤掃描程序,則立即轉到程序尾部,不要浪費CPU的時間

        k10:jb p0.0,k20; 掃描正式開始,先檢查列1四個鍵是否有鍵按下,如果沒有,則跳到K20檢查列2

        k11:mov p0,#11101111b; 列1有鍵按下時,P0.0變低,到底是那一個鍵按下?現在分別輸出各行低電平

        jb p0.0,k12; 該行的鍵不按下時,p0.0為高電平,跳到到K12,檢查其它的行

        mov r1,#1; 如果正好是這行的鍵按下,將寄存器R0寫下1,表示1號鍵按下了

        k12:mov p0,#11011111b

        jb p0.0,k13

        mov r1,#2;如果正好是這行的鍵按下,將寄存器R0寫下2,表示2號鍵按下了

        k13:mov p0,#10111111b

        jb p0.0,k14

        mov r1,#3;如果正好是這行的鍵按下,將寄存器R0寫下3,表示3號鍵按下了

        k14:mov p0,#01111111b

        jb p0.0,kend;如果現在四個鍵都沒有按下,可能按鍵松開或干擾,退出掃描(以后相同)

        mov r1,#4如果正好是這行的鍵按下,將寄存器R0寫下4,表示4號鍵按下了

        jmp kend;已經找到按下的鍵,跳到結尾。

        k20:jb p0.1,k30;列2檢查為高電平再檢查列3、4

        k21:mov p0,#11101111b;列2有健按下時,P0.0會變低,到底是那一行的鍵按下呢?分別輸出行的低電平。

        jb p0.1,k22;該行的鍵不按下時p0.0為高電平,跳到到K22,檢查另外三行。

        mov r1,#5;如果正好是這行的鍵按下,將寄存器R0寫下5,表示5號鍵按下了(以后相同,不再重復了)。

        k22:mov p0,#11011111b jb p0.1,k23 mov r1,#6

        k23:mov p0,#10111111b jb p0.1,k24 mov r1,#7

        k24:mov p0,#01111111b jb p0.1,kend mov r1,#8

        jmp kend;已經找到按下的鍵,跳到結尾(以后相同,注釋不再重復)

        k30:jb p0.2,k40

        k31:mov p0,#11101111b jb p0.2,k32 mov r1,#9

        k32:mov p0,#11011111b jb p0.2,k33 mov r1,#10

        k33:mov p0,#10111111b jb p0.2,k34 mov r1,#11

        k34:mov p0,#01111111b jb p0.2,kend mov r1,#12

        jmp kend k40:jb p0.3,kend

        k41:mov p0,#11101111b jb p0.3,k42 mov r1,#13

        k42:mov p0,#11011111b jb p0.3,k43 mov r1,#14

        k43:mov p0,#10111111b jb p0.3,k44 mov r1,#15

        k44:mov p0,#01111111b jb p0.3,kend mov r1,#16

        kend: ret

        鍵盤掃描結束了,寄存器R1的值就直接表示了是那個鍵按下的,根據不同的鍵值去執(zhí)行不同的程序,從而實現了十六個矩陣鍵盤掃描,同樣原理,最多可以識別255個按鍵的矩陣掃描??梢悦看捂I盤掃描開始時檢查R0的值是否為0,只有在為0才掃描鍵盤,不為0就證明剛剛掃描過鍵值,相應的按鍵工作還沒有完成。但是必須記得,每個按鍵命令執(zhí)行完成后,要給R0寫上0,表示可以掃描鍵盤。

        三、小結

        本鍵盤掃描程序的優(yōu)點在于:不用專門的按鍵延時程序,提高了CPU效率,也不用中斷來掃描鍵盤,節(jié)省了硬件資源。另外,本鍵盤掃描程序,每次掃描占用CPU時最短,不論有鍵按下或者無鍵按下都可以在很短的時間完成一次掃描。

        參考文獻:

        [1]李伍元.淺談單片機非編碼鍵盤工作原理及設計方法[J]. 科技情報開發(fā)與經濟. 2009(02).

        [2]鄭敏,楊坤濤.用AT89C2051自身接口實現溫度檢測數碼管動態(tài)顯示和鍵盤掃描[J].安徽科技學院學報. 2006(01)

        [3]杜道山,白榮華,田秀英,李從心.伺服控制系統鍵盤掃描程序的處理[J]. 機床與液壓. 2005(01)

        作者簡介:

        譚艷(1984.04-),女,漢,研究生,助理講師,研究方向:電子工程。

        国产黄污网站在线观看| 欧美日韩国产亚洲一区二区三区| 中文字幕日韩三级片| 边啃奶头边躁狠狠躁| 久久久日韩精品一区二区三区 | 91日本在线精品高清观看| 国产精品国产三级国产在线观| 亚洲av成人久久精品| 色视频不卡一区二区三区| 丰满熟妇乱又伦精品| 久久精品人人做人人爽| 东京热加勒比在线观看| 国产av麻豆精品第一页| 人妻熟妇乱又伦精品hd| 丰满老熟妇好大bbbbb| 日韩亚洲欧美中文高清在线| 亚洲中文字幕乱码免费| 日韩亚洲一区二区三区在线| 久久久久九九精品影院| 亚洲av伊人久久综合密臀性色 | 天码av无码一区二区三区四区| 午夜无码熟熟妇丰满人妻| 新久久国产色av免费看| 亚洲av日韩av激情亚洲| 人人妻一区二区三区| 亚洲天堂在线播放| 99JK无码免费| 人妻尤物娇呻雪白丰挺| 国产三a级三级日产三级野外 | 四虎永久在线精品免费网址| 野花社区视频www官网| 国产精品黑色丝袜在线播放| 乳乱中文字幕熟女熟妇| 把女的下面扒开添视频| a级毛片在线观看| 91精品国产91久久久无码色戒| av天堂一区二区三区精品 | 日韩亚洲精选一区二区三区| 在线观看 国产一区二区三区| 亚洲另类欧美综合久久图片区| 精品无码久久久九九九AV|