韓曉燕,韓亞麗,劉秀敏
(中原工學(xué)院 信息商務(wù)學(xué)院電氣工程系,鄭州 451191)
?
矩陣鍵盤在實(shí)物與Proteus仿真中的不同與解決方法
韓曉燕,韓亞麗,劉秀敏
(中原工學(xué)院 信息商務(wù)學(xué)院電氣工程系,鄭州 451191)
摘要:針對(duì)矩陣鍵盤在Proteus仿真中出現(xiàn)的問題,闡述了實(shí)際電路與仿真的不同,找到了問題出現(xiàn)的原因,并給出了簡單有效的解決方法,實(shí)現(xiàn)了矩陣鍵盤在實(shí)際電路與Proteus仿真中的完美統(tǒng)一。矩陣鍵盤在實(shí)際電路與Proteus仿真中的不同說明,仿真軟件雖然直觀、節(jié)約成本、提高了單片機(jī)系統(tǒng)設(shè)計(jì)效率,但仿真軟件畢竟與實(shí)物有區(qū)別。
關(guān)鍵詞:矩陣鍵盤;實(shí)際電路;Proteus仿真
引言
Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件,它不僅具有其他EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,可以一鍵切換到PCB設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì),是將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),深受單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞[1]。在使用 Proteus進(jìn)行系統(tǒng)仿真開發(fā)成功之后再實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率[2]。但仿真軟件畢竟不等同于實(shí)物,兩者之間存在差別,就導(dǎo)致了某些問題的產(chǎn)生,如數(shù)碼管顯示中送段碼和位碼的順序問題、矩陣鍵盤的檢測(cè)問題等。本文就矩陣鍵盤在實(shí)際電路與Proteus仿真中的不同進(jìn)行簡單闡述,并提出了一種簡單有效的解決方案。
1矩陣鍵盤檢測(cè)原理
矩陣鍵盤又稱為行列式鍵盤,是指將單片機(jī)的I/O口分為行線和列線,按鍵跨接在行線和列線上,列線通過上拉電阻接正電源。當(dāng)鍵盤上沒有鍵閉合時(shí),所有的行線和列線斷開,列線呈高電平;當(dāng)鍵盤上某一個(gè)鍵閉合時(shí),該鍵所對(duì)應(yīng)的列線與行線短路,此時(shí)列線的電平由相應(yīng)行線的電位決定。和行線連接的單片機(jī)端口作為輸出,和列線連接的端口作為輸入。按鍵識(shí)別原理如下:
① 定時(shí)控制某根行線輸出低電平,且不斷循環(huán);
② 讀入所有列線,如果結(jié)果不全為1,則有按鍵按下;
③ 找到讀入為0的列,結(jié)合目前輸出為0的行,即可判斷出具體的按鍵位置。
以P3口接4×4鍵盤為例,如圖1所示,當(dāng)某個(gè)鍵按下時(shí),數(shù)碼管顯示按下鍵的鍵值。具體步驟如下:對(duì)鍵盤的行線進(jìn)行掃描,P3口依次循環(huán)輸出0xfe、0xfd、0xfb和0xf7,相應(yīng)地讀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)的問題及解決方法
該程序在實(shí)際搭建的電路中能順利實(shí)現(xiàn)功能要求,但在Proteus仿真中卻遇到了問題,即無論哪個(gè)鍵按下,數(shù)碼管均不顯示,如按下按鍵5,數(shù)碼管并不顯示5,而是處于黑屏狀態(tài)。仔細(xì)觀察,發(fā)現(xiàn)5所在的列線P3.5引腳并未被行線輸出的低電平拉為低電平,反倒是該行線P3.1引腳始終輸出高電平,其他行則正常輪流輸出低電平。經(jīng)過多次仔細(xì)觀察和反復(fù)測(cè)試發(fā)現(xiàn),按下哪個(gè)鍵,哪個(gè)鍵所在的行線即被該鍵所在列線的上拉電阻拉為高電平,即在Proteus仿真中,高電平與低電平線進(jìn)行“與”邏輯后并不輸出理論上的低電平,而是呈現(xiàn)出高電平,按照矩陣鍵盤的檢測(cè)原理編寫的程序,實(shí)物中正常顯示,在Proteus仿真中卻出現(xiàn)了問題。
為了保持實(shí)物與仿真的統(tǒng)一,經(jīng)過反復(fù)思考和測(cè)試,發(fā)現(xiàn)了一種簡單有效的解決方法,即在Proteus仿真中,將列線上的上拉電阻去掉即可正常顯示,如圖2所示。當(dāng)去掉上拉電阻后,按下按鍵5,按鍵所在的列線P3.5引腳即被拉為低電平,成功實(shí)現(xiàn)了按鍵的檢測(cè)。
結(jié)語
本文給出的解決方案簡單實(shí)用,并且使實(shí)物與仿真實(shí)現(xiàn)了完美統(tǒng)一。同時(shí),矩陣鍵盤在實(shí)際電路與Proteus仿真中的不同,說明了仿真軟件雖然直觀、節(jié)約成本、提高了單片機(jī)系統(tǒng)設(shè)計(jì)效率,但仿真軟件畢竟與實(shí)物有區(qū)別,遇到問題需要認(rèn)真思考、反復(fù)查找,不斷提高發(fā)現(xiàn)問題和解決問題的能力。
參考文獻(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)點(diǎn)有哪些?[EB/OL].[2015-09].http://zhidao.baidu.com/link?url=6BxZiew_Zuhi-ZVQkgFfiuDlSnAzjhiL9WQVQ-ssD8WGxEaVeAiAQB_KaNET1DlOSV7 HV7l-hxdx0gLSc3WovK.
韓曉燕(講師),研究方向?yàn)殡娏ο到y(tǒng)在線檢測(cè)。
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
收稿日期:(責(zé)任編輯:薛士然2015-09-06)
中圖分類號(hào):TP211
文獻(xiàn)標(biāo)識(shí)碼:A