基于單片機的電腦彈簧機按鍵板的設(shè)計與實現(xiàn)
引言
本文引用地址:http://m.butianyuan.cn/article/172190.htm電腦彈簧機是用來生產(chǎn)彈簧的專用設(shè)備。按鍵板,作為一個人機交互的操作界面,起著輸入操作命令,編輯彈簧加工程序及修改數(shù)據(jù)的功能,對電腦彈簧機的操作控制起著重要作用。在實際應(yīng)用中,為方便操作,需要將按鍵板的按鍵漢字化和直接化,這使得使用標(biāo)準(zhǔn)的PC鍵盤不太可能,所以開發(fā)一塊便宜且通用的按鍵板就很有現(xiàn)實意義。在PC機中,鍵盤和主機的通信采用的是PS/2協(xié)議。由于電腦彈簧機的控制器是一個標(biāo)準(zhǔn)的工控PC機控制器,具有標(biāo)準(zhǔn)的鍵盤接口,為了使設(shè)計簡單和通用,在這里使用這個標(biāo)準(zhǔn)的鍵盤接口,并采用PS/2協(xié)議來進行按鍵板和彈簧機的通信,設(shè)計時選用單片機AT89S51作為按鍵板的處理芯片進行按鍵的識別和數(shù)據(jù)的接收和發(fā)送。本文介紹的是設(shè)計并實現(xiàn)這個按鍵板的詳細方法。
一. 按鍵設(shè)計
按鍵板采用薄膜面板開關(guān)形式,薄膜面板開關(guān)設(shè)計簡單,操作方便,安放容易,直接貼在一表面就可使用,加上其防水防塵的性能,很適合工業(yè)控制的應(yīng)用場合。對一個彈簧機的按鍵板來說,其按鍵包括三類:數(shù)字鍵,功能鍵和編輯鍵。數(shù)字鍵實現(xiàn)的是數(shù)字的輸入;功能鍵對應(yīng)的是彈簧機的操作命令;編輯鍵用于對彈簧加工程序的編輯,如清除、保存等。一個設(shè)計合理的按鍵布局,與操作的方便性與可靠性直接關(guān)聯(lián),對于具體各個鍵的布置,應(yīng)綜合考慮操作的方便和布局的美觀,該設(shè)計完成后的7行×8列的按鍵布局圖見下:
圖1 按鍵布局圖
薄膜面板下面的行列陣電路采用單面柔性電路板(FPC)制作,電路起凸的形式保證了按鍵時的手感。它輸出的是鍵盤行列陣的行線和列線。
二.按鍵板的軟硬件設(shè)計
無論是按鍵板的硬件設(shè)計還是軟件設(shè)計,都必定會涉及到按鍵板和主機的通信協(xié)議。所以在進入到軟硬件設(shè)計之前,先對PS/2協(xié)議做一簡單介紹。
1. PS/2協(xié)議
PS/2協(xié)議是外設(shè)與主機之間通信的一種同步雙串行協(xié)議。在協(xié)議中主機端擁有較高的優(yōu)先級,在一定條件下它可中止外設(shè)正在進行的發(fā)送過程。該協(xié)議采用的短幀格式傳送數(shù)據(jù)的數(shù)據(jù)幀格式為:1位起始位(0),8位數(shù)據(jù)位,一位奇校驗位,一位停止位(1)。數(shù)據(jù)發(fā)送時低位在前,高位在后。外設(shè)每收到主機發(fā)來的一幀數(shù)據(jù),都要緊隨該幀的停止位發(fā)送一個握手位ACK(0)應(yīng)答主機,然后外設(shè)還要發(fā)1幀應(yīng)答數(shù)據(jù)(0xF0),表明已完整地接收到了主機的命令;而主機在接收外設(shè)數(shù)據(jù)后不用發(fā)握手信號ACK,也不需要另外發(fā)送應(yīng)答幀。無論是主機發(fā)還是外設(shè)發(fā)數(shù)據(jù),同步時鐘都是由外設(shè)產(chǎn)生的。
按照接收方和發(fā)送方的不同,該協(xié)議可分為兩部分,其一為外設(shè)發(fā)送主機接收的通信,這一過程發(fā)生在工作人員操作外設(shè)或外設(shè)應(yīng)答主機端發(fā)來的命令時,數(shù)據(jù)線和時鐘線處于空閑狀態(tài)下維持高電平狀態(tài);其二為主機發(fā)送外設(shè)接收的通信,該過程發(fā)生在主機上電自檢時,主機發(fā)送測試信號檢測外設(shè)是否存在并判斷是何種類型的外設(shè)時。這個上電檢測對外設(shè)來說很重要,其中一個檢測項目為基本保證測試(Basic Assure Test),當(dāng)主機發(fā)送該命令到外設(shè)時,外設(shè)必須回送相應(yīng)的應(yīng)答幀,否則主機就認(rèn)為該外設(shè)的開機自檢沒能通過,在DOS以上的系統(tǒng)中,外設(shè)將無法使用。主機上電自檢時,發(fā)送給外設(shè)的數(shù)據(jù)是一個命令集,針對每個命令,外設(shè)都要作出相應(yīng)的響應(yīng),這些響應(yīng)字也都是協(xié)議所規(guī)定好的,具體可參見文獻[1]。
2. 硬件設(shè)計
在這里采用AT89S51作為按鍵板的主處理芯片。AT89S51是一個低功耗、高性能的8位CMOS單片機,有32個I/O口可供使用,能滿足行列掃描口較多時的要求,并具有軟件看門狗。
與前面的按鍵布局相對應(yīng),采用7×8的矩陣行列結(jié)構(gòu)。行線用89S51的P2口,列線用P0口,由于P0口無內(nèi)部上拉電阻,因而列線須外接上拉電阻。AT89S51的電源都由主機的PS/2接口提供,采用頻率為12MHz外部晶振。用P3.6和P3.7作為數(shù)據(jù)線和時鐘線和主機進行通信,完成后的硬件原理示意圖如圖二所示。
圖2 硬件原理示意圖
按鍵板的行列陣示意圖如圖三所示,按鍵板的行列陣只需將其行線和列線分別引出接到圖二所示的行列線接口中即可。按鍵板和主機通過PS/2接口連接器相連,現(xiàn)在比較常用的PS/2接口連接器如圖四所示。
3. 軟件設(shè)計
軟件的設(shè)計是按鍵板實現(xiàn)的關(guān)鍵,采用單片機C語言編程。它通過主程序和一系列的子程序來實現(xiàn)。主程序用于系統(tǒng)的初始化,子程序的調(diào)用。子程序包括接收主機命令子程序,發(fā)送數(shù)據(jù)子程序,接收數(shù)據(jù)子程序,行列掃描子程序以及發(fā)送鍵碼子程序。
接收主機命令子程序用于面板接收主機的命令,并作出相應(yīng)的響應(yīng),這在DOS以上的系統(tǒng)中很重要,否則主機不承認(rèn)按鍵板的存在。發(fā)送數(shù)據(jù)子程序用于發(fā)送數(shù)據(jù)幀到主機,每一位數(shù)據(jù)的發(fā)送都是按PS/2協(xié)議的時序要求所編寫的。接收數(shù)據(jù)子程序用于接收主機發(fā)來的數(shù)據(jù)幀,每一位數(shù)據(jù)的接收也是由時序規(guī)定的。行列掃描子程序作用是對按鍵板上鍵的識別,并將該鍵對應(yīng)的碼發(fā)送到按鍵緩沖區(qū)暫存起來。PS/2協(xié)議中,當(dāng)一個鍵被按下或按住時就發(fā)送該鍵的通碼 (MAKE),被釋放時就發(fā)送斷碼(BREAK),每個按鍵都被分配了唯一的通碼和斷碼(協(xié)議中統(tǒng)稱為掃描碼),這樣主機通過掃描碼就可識別按鍵的類別。在彈簧機的按鍵板中,因為面板中的鍵不全是標(biāo)準(zhǔn)的,對于那些自定義的鍵,可將該鍵與一標(biāo)準(zhǔn)鍵的掃描碼對應(yīng)起來,例如可將面板中的“啟動”與標(biāo)準(zhǔn)鍵“A”對應(yīng),這樣當(dāng)“啟動”被按下時,發(fā)送給主機的就是字母“A”的掃描碼,通過重定義主機系統(tǒng)中的相關(guān)控制部分,就可實現(xiàn)啟動彈簧機的功能。發(fā)送鍵碼子程序用于發(fā)送按鍵緩沖區(qū)中的數(shù)據(jù)。而對于面板中的“鎖鍵”,實現(xiàn)的是面板的鎖死,在工控系統(tǒng)中,這個對于操作系統(tǒng)的可靠性是很有必要的,當(dāng)該鍵按下時,則不發(fā)送緩沖區(qū)中的數(shù)據(jù),同時清空緩沖區(qū),多按一下則可解鎖。為了防止死機現(xiàn)象的發(fā)生,在主程序的循環(huán)中加入軟件看門狗。軟件實現(xiàn)的流程圖見下圖:
圖5 軟件流程圖
三.結(jié)論
本文介紹的電腦彈簧機按鍵板具有結(jié)構(gòu)簡單,設(shè)計靈活,安全可靠的特點,可在DOS及WINDOWS的系統(tǒng)中使用。作為一彈簧機的按鍵板,其已在實際中得到成功的應(yīng)用。本設(shè)計也可廣泛運用于以PC機為主機的控制系統(tǒng)中,可以根據(jù)實際需要,改變按鍵的陣列以及按鍵的功能,因而應(yīng)用本設(shè)計可以實現(xiàn)豐富多彩的控制設(shè)備中所需的非標(biāo)準(zhǔn)的PC機鍵盤。
參考文獻:
[1] Adam Chapweske. PS/2技術(shù)參考. Roy Show 譯. 2002
[2] 何立民. MCS-51系列單片機應(yīng)用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù)[M]. 北京: 北京航空航天大學(xué)出版社. 1999.6
[3] 何立民. 單片機高級教程-應(yīng)用與設(shè)計[M]. 北京:北京航空航天大學(xué)出版社. 2000.8
[4] 趙亮,候國銳. 單片機C語言編程與實例[M]. 北京:人民郵電出版社. 2003.9
評論