旋鈕式鍵盤及其與AT89C52的接口技術(shù)
引 言
如今單片機技術(shù)發(fā)展迅速,單片機系統(tǒng)已被廣泛地應(yīng)用于國民經(jīng)濟的各個領(lǐng)域。很多單片機應(yīng)用系統(tǒng)需要輸入設(shè)備,典型的輸入設(shè)備要數(shù)鍵盤了。目前使用的鍵盤主要有兩類:按鍵式鍵盤和旋鈕式鍵盤。手機按鍵、微機鍵盤都屬于按鍵式鍵盤。本文介紹的是旋鈕式鍵盤的實現(xiàn)方法。
1 旋鈕式鍵盤結(jié)構(gòu)及特性
61525-1型旋鈕式鍵盤結(jié)構(gòu)非常簡單,外形只有4個引腳,如圖1所示。
當(dāng)按鍵按下時(稱為確認(rèn),下同),鍵盤的引腳1和引腳3相通;松開確認(rèn)時,鍵盤有兩種穩(wěn)定狀態(tài),特性如表1所列。
2 硬件電路及工作原理
硬件電路如圖2所示。這里為了簡化電路,直接將鍵盤的引腳接到AT89C52的I/O引腳上。電路中,RS是系統(tǒng)復(fù)位信號,P1.2用來控制軟件清除外部中斷1,并通過鎖存器來實現(xiàn)。
此種鍵盤只有三種操作,即順時針旋轉(zhuǎn)、逆時針旋轉(zhuǎn)和確認(rèn)。電路加電后,用示波器分別觀察鍵盤在旋轉(zhuǎn)過程中PIN2、PIN4的波形,得到圖3所示的波形。
此鍵盤的工作原理是,根據(jù)三種操作表現(xiàn)出來的不同特性來確定相應(yīng)的應(yīng)用。應(yīng)用中,通過讀取AT89C52的P1.0和P1.1兩引腳的值就可以判斷旋轉(zhuǎn)的方向。鍵盤的確認(rèn)可以產(chǎn)生外部中斷1。
3 軟件實現(xiàn)
3.1 抖動的消除
旋鈕在旋轉(zhuǎn)過程中,所產(chǎn)生的波形并不如圖3那樣光滑,在上升沿/下降沿位置會出現(xiàn)因抖動而產(chǎn)生的毛刺。程序?qū)崿F(xiàn)過程中,只有多次讀的狀態(tài)相同才認(rèn)定是穩(wěn)定的,否則繼續(xù)讀,直到達(dá)到穩(wěn)定狀態(tài)。這樣既可以防止電路毛刺引起的讀鍵盤狀態(tài)出錯,也可以防止因毛刺存在而將一次旋轉(zhuǎn)旋鈕操作錯誤判斷成多次旋轉(zhuǎn)(即多次計數(shù))。實現(xiàn)的流程如圖4所示(流程圖中P2_OK、P4_OK分別表示 P1.0、P1.1值)。
3.2 實現(xiàn)計數(shù)
由圖3可以看出,順時針轉(zhuǎn)動時,PIN2先跳變;逆時針轉(zhuǎn)動時,PIN4先跳變,且都有00、01、10、11四個穩(wěn)定狀態(tài)。順時針轉(zhuǎn)動時狀態(tài)變化為00→10→11,或者11→01→00;逆時針轉(zhuǎn)動時狀態(tài)變化為00→01→11,或者11→10→00,且01、10的狀態(tài)是暫時性的(稱為中間狀態(tài))。所以,可以通過初始狀態(tài)和中間狀態(tài)的狀態(tài)變化判斷旋鈕的旋轉(zhuǎn)方向,實現(xiàn)流程如圖5所示。
只要我們定義鍵盤順時針旋轉(zhuǎn)進(jìn)行加1操作,逆時針旋轉(zhuǎn)則減1操作,這樣就可以實現(xiàn)計數(shù)了。源程序見本刊網(wǎng)絡(luò)補充版(http://www.dpj.com.cn)。
3.3 實現(xiàn)編輯
在編輯過程中,鍵盤有三種操作:順時針旋轉(zhuǎn)、逆時針旋轉(zhuǎn)和確認(rèn)。其中順時針旋轉(zhuǎn)時,顯示給定字符集中的下一個字符;逆時針旋轉(zhuǎn)時,顯示給定字符集中的上一個字符;確認(rèn)鍵用來產(chǎn)生外部中斷1,進(jìn)入外部中斷處理程序。本例中是對給定的字符集進(jìn)行編輯,并指定最大可編輯長度,處理時在字符集的后面加了特定的特殊字符,以控制編輯過程的退出,且將字符集看作是一個循環(huán)結(jié)構(gòu),即第一個字符和所加的取消控制字符構(gòu)成循環(huán)。
程序中有三種退出編輯命令的方法:一是選中取消鍵,二是選中確認(rèn)鍵,三是輸入的字符長度達(dá)到最大值。退出編輯命令是在外部中斷服務(wù)程序中實現(xiàn)的。
實現(xiàn)編輯的流程如圖6所示,外部中斷服務(wù)程序流程如圖7所示。
說明:在外部中斷服務(wù)程序中,還要考慮換行顯示和換屏顯示的問題,在這里不作敘述。源程序略。
結(jié) 語
旋鈕式鍵盤占用面積小,應(yīng)用既方便又美觀,實現(xiàn)起來也很方便。本文結(jié)合自己工作實踐,對旋鈕式鍵盤基于AT89C52的應(yīng)用進(jìn)行了闡述。實際應(yīng)用中,利用旋鈕式鍵盤的計數(shù)特性,還可以實現(xiàn)菜單的顯示、選擇控制等,本文沒有一一敘述。對于鍵抖動問題,還可以采用硬件電路來消除,這里也不作敘述。