韓曉燕,韓亞麗,劉秀敏
(中原工學院 信息商務學院電氣工程系,鄭州 451191)
?
矩陣鍵盤在實物與Proteus仿真中的不同與解決方法
韓曉燕,韓亞麗,劉秀敏
(中原工學院 信息商務學院電氣工程系,鄭州 451191)
摘要:針對矩陣鍵盤在Proteus仿真中出現(xiàn)的問題,闡述了實際電路與仿真的不同,找到了問題出現(xiàn)的原因,并給出了簡單有效的解決方法,實現(xiàn)了矩陣鍵盤在實際電路與Proteus仿真中的完美統(tǒng)一。矩陣鍵盤在實際電路與Proteus仿真中的不同說明,仿真軟件雖然直觀、節(jié)約成本、提高了單片機系統(tǒng)設計效率,但仿真軟件畢竟與實物有區(qū)別。
關(guān)鍵詞:矩陣鍵盤;實際電路;Proteus仿真
引言
Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件,它不僅具有其他EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,可以一鍵切換到PCB設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計,是將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,深受單片機愛好者、從事單片機教學的教師、致力于單片機開發(fā)應用的科技工作者的青睞[1]。在使用 Proteus進行系統(tǒng)仿真開發(fā)成功之后再實際制作,能極大提高單片機系統(tǒng)設計效率[2]。但仿真軟件畢竟不等同于實物,兩者之間存在差別,就導致了某些問題的產(chǎn)生,如數(shù)碼管顯示中送段碼和位碼的順序問題、矩陣鍵盤的檢測問題等。本文就矩陣鍵盤在實際電路與Proteus仿真中的不同進行簡單闡述,并提出了一種簡單有效的解決方案。
1矩陣鍵盤檢測原理
矩陣鍵盤又稱為行列式鍵盤,是指將單片機的I/O口分為行線和列線,按鍵跨接在行線和列線上,列線通過上拉電阻接正電源。當鍵盤上沒有鍵閉合時,所有的行線和列線斷開,列線呈高電平;當鍵盤上某一個鍵閉合時,該鍵所對應的列線與行線短路,此時列線的電平由相應行線的電位決定。和行線連接的單片機端口作為輸出,和列線連接的端口作為輸入。按鍵識別原理如下:
① 定時控制某根行線輸出低電平,且不斷循環(huán);
② 讀入所有列線,如果結(jié)果不全為1,則有按鍵按下;
③ 找到讀入為0的列,結(jié)合目前輸出為0的行,即可判斷出具體的按鍵位置。
以P3口接4×4鍵盤為例,如圖1所示,當某個鍵按下時,數(shù)碼管顯示按下鍵的鍵值。具體步驟如下:對鍵盤的行線進行掃描,P3口依次循環(huán)輸出0xfe、0xfd、0xfb和0xf7,相應地讀P3口,若高4位P3.7~P3.4全為1,則說明該行上沒有鍵閉合;如果這一行上有鍵閉合,且行線為0和列線為0的交叉鍵即為按下的鍵,將高4位和低4位合并即得到鍵碼值。

圖1 4×4矩陣鍵盤
參考程序如下:
#include
#define uint unsigned int
#define uchar unsigned char
uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x58,0x5e,0x79,0x71};//共陰
uchar key_val[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,

圖2 去掉上拉電阻的Proteus仿真
0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
uchar key_scan[]={0xfe,0xfd,0xfb,0xf7};
void main(){
unsigned char temp,i,j;
P2=0;
while(1){
for(i=0;i<4;i++){
P3=key_scan[i];
for(j=0;j<16;j++){
if(key_val[j]==P3)
P2=duan[j];
}
}
}
}
2Proteus仿真中出現(xiàn)的問題及解決方法
該程序在實際搭建的電路中能順利實現(xiàn)功能要求,但在Proteus仿真中卻遇到了問題,即無論哪個鍵按下,數(shù)碼管均不顯示,如按下按鍵5,數(shù)碼管并不顯示5,而是處于黑屏狀態(tài)。仔細觀察,發(fā)現(xiàn)5所在的列線P3.5引腳并未被行線輸出的低電平拉為低電平,反倒是該行線P3.1引腳始終輸出高電平,其他行則正常輪流輸出低電平。經(jīng)過多次仔細觀察和反復測試發(fā)現(xiàn),按下哪個鍵,哪個鍵所在的行線即被該鍵所在列線的上拉電阻拉為高電平,即在Proteus仿真中,高電平與低電平線進行“與”邏輯后并不輸出理論上的低電平,而是呈現(xiàn)出高電平,按照矩陣鍵盤的檢測原理編寫的程序,實物中正常顯示,在Proteus仿真中卻出現(xiàn)了問題。
為了保持實物與仿真的統(tǒng)一,經(jīng)過反復思考和測試,發(fā)現(xiàn)了一種簡單有效的解決方法,即在Proteus仿真中,將列線上的上拉電阻去掉即可正常顯示,如圖2所示。當去掉上拉電阻后,按下按鍵5,按鍵所在的列線P3.5引腳即被拉為低電平,成功實現(xiàn)了按鍵的檢測。
結(jié)語
本文給出的解決方案簡單實用,并且使實物與仿真實現(xiàn)了完美統(tǒng)一。同時,矩陣鍵盤在實際電路與Proteus仿真中的不同,說明了仿真軟件雖然直觀、節(jié)約成本、提高了單片機系統(tǒng)設計效率,但仿真軟件畢竟與實物有區(qū)別,遇到問題需要認真思考、反復查找,不斷提高發(fā)現(xiàn)問題和解決問題的能力。
參考文獻
[1] Proteus[EB/OL].[2015-09].http://baike.baidu.com/link?url=DD1I-qwjihms42Hckc0-QfXDr8SwNUA7rvjrSz Oy1lswnUPO_-z3471wlnrd8enIZDv-gBRLch73KoUCNj_wY_.
[2] Proteus軟件的優(yōu)點有哪些?[EB/OL].[2015-09].http://zhidao.baidu.com/link?url=6BxZiew_Zuhi-ZVQkgFfiuDlSnAzjhiL9WQVQ-ssD8WGxEaVeAiAQB_KaNET1DlOSV7 HV7l-hxdx0gLSc3WovK.
韓曉燕(講師),研究方向為電力系統(tǒng)在線檢測。
Difference and Solution Between Actual Circuit and Proteus Simulation of Matrix Keyboard
Han Xiaoyan,Han Yali,Liu Xiumin
(College of Information&Business,Zhongyuan University of Technology,Zhengzhou 451191,China)
Abstract:Aiming at the problem of matrix keyboard in the proteus simulation,the paper expounds the difference between the practical circuit and the proteus simulation,and finds out the reason.A simple and effective solution is given,which achieves the perfect unity of the matrix keyboard in the actual circuit and the proteus simulation.The difference also shows that the simulation software is intuitive,saves the cost and improves the efficiency of the microcontroller,but it is different from the real object.
Key words:matrix keyboard;actual circuit;Proteus simulation
收稿日期:(責任編輯:薛士然2015-09-06)
中圖分類號:TP211
文獻標識碼:A