孟 星,夏海飛 ,徐曉秋
(1.四川大學 制造科學與工程學院,四川 成都 610065;2.昭通供電局 云南 昭通 657000)
按鍵接口一般可分為獨立式按鍵接口設計、矩陣式按鍵接口設計和專用芯片式按鍵接口設計[1-2]。獨立式按鍵的接口設計是各按鍵相互獨立的接通一條輸入數據線,每個鍵的工作不會影響其它的I/0口,這種鍵盤的優(yōu)點是電路簡單;缺點是當鍵數較多時,要占用較多的I/O線,造成資源浪費。因此,獨立式按鍵接口設計主要用于按鍵較少且對操作速度要求高的場合。矩陣式鍵盤較獨立式鍵盤節(jié)省I/O口。矩陣式鍵盤由行線和列線組成,按鍵位于行、列線的交叉點上。
專用按鍵處理芯片一般功能比較完善,芯片本身能完成對按鍵的編碼、掃描、消抖和重健等問題的處理,使得它的優(yōu)點很明顯,其可靠性高、接口簡單、使用方便,也適合處理按鍵較多的情況。基于計算機鍵盤中按鍵較多、可靠性要求較高等綜合情況考慮,選用專用芯片式按鍵接口設計。
BC7281具有64鍵鍵盤接口,內建去抖功能;具有兩種鍵盤工作模式,適應不同的應用需求;具有寄存器保護(抗干擾模式),可靠性高;鍵盤部分具有鍵值鎖存功能;具有兩線高速串行接口[3]。
BC7281最多可以連接64個按鍵,在此處需要用到40個按鍵,按8×5矩陣排列,矩陣的“行”連接到BC7281的位驅動DIG0—DIG7,矩陣的“列”連接到74HC164驅動移位寄存器的輸出,當使用BC7281的鍵盤功能時,DIG0—DIG7應加上100k的下拉電阻,且8根引腳必須都接入下拉電阻[4]。鍵盤接口設計如圖1所示。其中功能鍵G1、G2、G3、G4的“列”連接 Q4,“行”分別連接 DIG4、DIG5、DIG6、DIG7,鍵值分別為24H、25H、26H、27H;其余鍵值均小于 24H,其中 0—9鍵的鍵值為00H—09H,a—z鍵的鍵值為0AH—23H。
BC7281的14腳為電源引腳,為了獲得更好的抗干擾能力,在電源引腳與地之間串入了一個RC濾波電路,以濾除電源中的尖峰和毛刺;BC7281采用外接的RC振蕩電路為鍵盤掃描提供時鐘驅動,外接元件的典型參數為R=1.5k~3.3k,C=20 pF,當采用比較小的電阻值時,振蕩頻率較高,可以獲得更快的通訊速率和掃描頻率,使得占用CPU時間更少,故選用1.5k電阻;因為BC7281的內部有上電復位電路,因此在一般情況下不需要特殊的復位電路,只需將RST引腳直接連接到VCC端就可以了;BC7281與AT89S52單片機的接口共需要三根線,數據線DAT、時鐘線CLK和按鍵指示KEY,其中CLK和KEY引腳分別為輸入和輸出引腳,而DAT則為雙向口,其內部為漏極開路輸出結構,需要外接上拉電阻,以使其能可靠地輸出高電平[4]。BC7281在KMS=0模式時具有按鍵保存功能,在按鍵被讀走之前,KEY將一直維持低電平,因此對按鍵使用查詢方式即可,但在本設計中需要用到功能鍵,故把KEY接到了單片機AT89S52的INT1引腳上,以便用到中斷處理方式[5]。如圖2所示。

圖1 鍵盤接口設計Fig.1 The design of keyboard interface

圖2 BC7281接口電路設計Fig.2 The design of BC7281 interface circui
首先將BC7281初始化,為防止按鍵輸入產生誤動作,可在主程序中將BC7281芯片定義為二鍵互鎖狀態(tài) (當KMS=0時,為帶鎖存的互鎖模式,即有效按鍵發(fā)生后,KEY即為低電平,直至MCU讀取按鍵后KEY恢復高電平,這期間不響應任何新的按鍵),保證功能鍵和數據鍵的正確輸入,當有鍵按下就取出鍵值,并判斷是功能鍵還是數據鍵,且轉到相應的子程序中去處理。其中功能鍵的鍵值大于23H。

圖3 主程序流程圖Fig.3 Flow chart the main program
當有鍵按下時,BC7281芯片申請中斷,AT89S52響應中斷,進入中斷服務程序[6]。將鍵值代碼送入FIFO堆棧中,中斷服務程序流程圖如4所示。

圖4 中斷程序流程圖Fig.4 Flow chart the interrupt program
功能鍵處理:當檢測到輸入為功能鍵時,在AT89S52中置一個標志位,并把標志位傳給PC,然后再檢測下面的鍵,如果還是功能鍵又置一個標志位傳給PC,PC通過對功能鍵組合的識別,來做出相應的處理。
本設計采用的鍵盤控制芯片,能完成對按鍵的編碼、掃描、消抖和重健等問題的處理,可代替微處理器完成對鍵盤的控制,減輕主機負擔,而且硬件電路可靠。還可以通過中斷的方式來實現功能鍵的處理。
[1]胡漢才.單片機原理及其接口技術[M].北京:清華大學出版社,2010.
[2]韓俊峰,海濤,陳文輝,等.單片機原理及應用[M].北京:機械工業(yè)出版社,2010.
[3]方勇軍,王云景,魯毅鈞,等.BC7281和它的應用[J].儀表技術,2002(4):43-44.FANG Yong-jun,WANG Yun-jing,LU Yi-jun,et al.BC7281 and Its Application[J].Instrumentation Technology,2002(4):43-44.
[4]BC7281B Data Book[EB/OL].http://www.bitcoode.com.cn.
[5]郭文川.MCS-51單片機原理、接口及應用[M].北京:電子工業(yè)出版社,2013.
[6]安曉莉.AT89S51單片機開發(fā)板的設計[J].電子設計工程,2009(9):121-123.AN Xiao-li.Design of AT89S51single-chip development board[J].Electronic Design Engineering,2009(17):121-123.