《智能儀器》由會員分享,可在線閱讀,更多相關(guān)《智能儀器(35頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第三章 人機對話與數(shù)據(jù)通信,第一節(jié) 鍵盤,本節(jié)要點,1,按鍵的抖動干擾及其解決方法。,2,獨立式鍵盤的結(jié)構(gòu)原理及其接口電路。,3,矩陣式鍵盤的結(jié)構(gòu)原理及其行掃描法。,4,編碼器及其編碼鍵盤接口電路。,引言,在計算機控制系統(tǒng)中,除了與生產(chǎn)過程進行信息傳遞的過程輸入輸出設(shè)備以外,還有與操作人員進行信息交換的常規(guī)輸入設(shè)備和輸出設(shè)備。,鍵盤,是一種最常用的輸入設(shè)備,它是一組按鍵的集合,從功能上可分為數(shù)字鍵和功能鍵兩種,作用是輸入數(shù)據(jù)與命令,查詢和控制系統(tǒng)的工作狀態(tài),實現(xiàn)簡單的人機對話。,鍵盤接口電路,可分為編碼鍵
2、盤和非編碼鍵盤兩種類型。,編碼鍵盤,采用硬件編碼電路來實現(xiàn)鍵的編碼,每按下一個鍵,鍵盤便能自動產(chǎn)生按鍵代碼。編碼鍵盤主要有,BCD,碼鍵盤、,ASCII,碼鍵盤等類型。,非編碼鍵盤,僅提供按鍵的通或斷狀態(tài),按鍵代碼的產(chǎn)生與識別由軟件完成。,引言,編碼鍵盤,的特點是使用方便,鍵盤碼產(chǎn)生速度快,占用,CPU,時間少,但對按鍵的檢測與消除抖動干擾是靠硬件電路來完成的,因而硬件電路復(fù)雜、成本高。而,非編碼鍵盤,硬件電路簡單,成本低,但占用,CPU,的時間較長。,1,鍵盤輸入電路,主要知識點,:,1.1,鍵盤的抖動干擾,1.2,抖動干擾的消除,1.1,鍵盤的抖動干擾,由于機械觸點的彈性振動,,按鍵,在按
3、下時不會馬上穩(wěn)定地接通而在彈起時也不能一下子完全地斷開,因而在按鍵閉合和斷開的瞬間均會出現(xiàn)一連串的抖動,這稱為,按鍵的抖動干擾,,其產(chǎn)生的波形如,圖,1,所示,當按鍵按下時會產(chǎn)生,前沿抖動,,當按鍵彈起時會產(chǎn)生,后沿抖動,。這是所有機械觸點式按鍵在狀態(tài)輸出時的共性問題,抖動的時間長短取決于按鍵的機械特性與操作狀態(tài),一般為,10,100ms,,,此為鍵處理設(shè)計時要考慮的一個重要參數(shù)。,圖,1,按鍵的抖動干擾,(,彈跳波形),1.2,抖動干擾的消除,按鍵的抖動會造成按一次鍵產(chǎn)生的開關(guān)狀態(tài)被,CPU,誤讀幾次。為了使,CPU,能正確地讀取按鍵狀態(tài),必須在按鍵閉合或斷開時,消除產(chǎn)生的前沿或后沿抖動,去
4、抖動的方法有軟件方法,和硬件方法,兩種。,1,軟件方法,軟件方法是指編制一段時間大于,100ms,的延時程序,在第一次檢測到有鍵按下時,執(zhí)行這段延時子程序使鍵的前沿抖動消失后再檢測該鍵狀態(tài),如果該鍵仍保持閉合狀態(tài)電平,則確認為該鍵已穩(wěn)定按下,否則無鍵按下,從而消除了抖動的影響。同理,在檢測到按鍵釋放后,也同樣要延遲一段時間,以消除后沿抖動,然后轉(zhuǎn)入對該按鍵的處理。,2,硬件方法,硬件方法是設(shè)計一個,濾波延時電路,或,單,/,雙穩(wěn)態(tài)電路,等硬件電路來避開按鍵的抖動時間。,圖,2,濾波延時消抖電路,圖,2,是由,R,2,和,C,組成的濾波延時消抖電路,設(shè)置在按鍵,S,與,CPU,數(shù)據(jù)線,D,i,之
5、間。按鍵,S,未按下時,電容兩端電壓為,0,,即與非門輸入,V,i,為,0,,輸出,V,o,為,1,。當,S,按下時,由于,C,兩端電壓不能突變,充電電壓,V,i,在充電時間內(nèi)未達到與非門的開啟電壓,門的輸出,V,o,將不會改變,直到充電電壓,V,i,大于門的開啟電壓時,與非門的輸出,V,o,才變?yōu)?0,,這段充電延遲時間取決于,R,1,、,R,2,和,C,值的大小,電路設(shè)計時只要使之大于或等于,100ms,即可避開按鍵抖動的影響。同理,按鍵,S,斷開時,即使出現(xiàn)抖動,由于,C,的放電延遲過程,也會消除按鍵抖動的影響。,圖,3,雙穩(wěn)態(tài)消抖電路,1,2,圖,3,工作過程如下:按鍵未按下時,,a=
6、0,,,b=1,,,輸出,Q=1,。,按鍵按下時,因按鍵的機械彈性作用的影響,使按鍵產(chǎn)生抖動。當開關(guān)沒有穩(wěn)定到達,b,端時,因與非門,2,輸出為,0,反饋到與非門,1,的輸入端,封鎖了與非門,1,,雙穩(wěn)態(tài)電路的狀態(tài)不會改變,輸出保持為,1,,輸出,Q,不會產(chǎn)生抖動的波形。當開關(guān)穩(wěn)定到達,b,端時,因,a=1,,,b=0,,使,Q=0,,,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn)。當釋放按鍵時,在開關(guān)未穩(wěn)定到達,a,端時,因,Q=0,,,封鎖了與非門,2,,雙穩(wěn)態(tài)電路的狀態(tài)不變,輸出,Q,保持不變,消除了后沿的抖動波形。當開關(guān)穩(wěn)定到達,a,端時,因,a=0,,,b=0,,使,Q=1,,,雙穩(wěn)態(tài)電路狀態(tài)發(fā)生翻轉(zhuǎn),輸
7、出,Q,重新返回原狀態(tài)。由此可見,鍵盤輸出經(jīng)雙穩(wěn)態(tài)電路之后,輸出已變?yōu)橐?guī)范的矩形方波。,2,非編碼獨立式鍵盤,主要知識點,:,2.1,查詢法接口電路,2.2,中斷法接口電路,2.1,查詢法接口電路,現(xiàn)以,3,個按鍵為例,,圖,4,即為,獨立式鍵盤查詢法接口電路,。按鍵,S,0,、,S,1,、,S,2,分別通過上拉電阻與,CPU,的數(shù)據(jù)線,D,0,、,D,1,、,D,2,相連,當按鍵,S,i,閉合時,數(shù)據(jù)線直接接地,因而,CPU,讀入,D,i,=0,;,當按鍵,S,i,斷開時,數(shù)據(jù)線通過上拉電阻接到正電源,因而,CPU,讀入,D,i,=1,。,該接口電路實現(xiàn)的功能為:查詢檢測是否有鍵按下,如有鍵
8、閉合,則消除抖動,再判斷鍵號,然后轉(zhuǎn)入相應(yīng)的鍵處理。其程序流程如,圖,5,所示。,采用,查詢法,時,必須保證,CPU,每隔一定時間主動地去掃描按鍵一次,該掃描時間間隔應(yīng)小于兩次按鍵的時間間隔,否則會有按鍵不響應(yīng)的情形。顯然這種方式占用,CPU,時間比較多。,圖,4,獨立式鍵盤結(jié)構(gòu)原理,圖,5,獨立式鍵盤查詢法程序流程圖,2.2,中斷法接口電路,仍以,3,個按鍵為例,,圖,6,是一個爐溫控制系統(tǒng)的功能鍵分配圖,,S,0,、,S,1,、,S,2,分別代表自動,/,手動切換、爐溫參數(shù)顯示和爐溫參數(shù)打印功能。這是在上述查詢法接口電路的基礎(chǔ)上,再把按鍵,S,0,、,S,1,、,S,2,的數(shù)據(jù)輸出線經(jīng)過與
9、非門和反相器后與,8255A,的選通輸入信號,PC4,相連,,8255A,的,PC3,發(fā)出中斷請求信號經(jīng)中斷控制器,8259A,與,CPU,的中斷請求引腳相連,這是一種典型的,中斷法鍵盤接口電路,。,圖,6,獨立式鍵盤中斷法接口電路,工作過程如下:當,CPU,對,8255A,初始化(,8255A,的,A,口工作于方式,1,輸入)后,,CPU,即執(zhí)行主程序。當按下,S,0,鍵即表示要進入自動控制狀態(tài),此時與之相連的,I/O,口線呈現(xiàn)為低電平的同時,與非門輸出為高電平,經(jīng)反相器變?yōu)榈碗娖?,?8255A,端口,A,的選通輸入信號,PC4,有效,則,PA,0,PA,2,引腳接收并存入,3,個按鍵的“
10、,0”,或“,1”,狀態(tài);,8255A,的,PC3,發(fā)出,INTRa,中斷請求信號,經(jīng)中斷控制器,8259A,向,CPU,申請中斷,,CPU,響應(yīng)中斷后,即轉(zhuǎn)到中斷服務(wù)程序中。中斷服務(wù)程序依次查詢按鍵的通斷狀態(tài),當查詢到是自動,/,手動(即,S,0,=0,),時,則轉(zhuǎn)到自動,/,手動控制子程序的入口地址,從而使系統(tǒng)進入自動控制狀態(tài)。如果沒有鍵按下,則相應(yīng)的,I/O,口線均為高電平,也不會產(chǎn)生中斷信號,,CPU,繼續(xù)運行主程序。,鍵盤中斷服務(wù)子程序,與查詢方式相似,在保護現(xiàn)場后,首先調(diào)用,100mS,延時子程序去除抖動,然后依次查鍵號,并轉(zhuǎn)入鍵功能處理程序,最后恢復(fù)現(xiàn)場、中斷返回。顯然,查詢順序
11、代表了按鍵的排隊優(yōu)先級。,采用中斷法時,,CPU,對按鍵而言是被動方式,在無鍵按下時不占用,CPU,時間,因而,CPU,有更多的時間執(zhí)行其他程序。,上述分析說明:獨立式鍵盤接口電路簡單靈活,軟件結(jié)構(gòu)簡單,但每個按鍵必須占用一根,I/O,口線,在按鍵數(shù)量較多時,需要占用較多的,I/O,口線。比如,64,個按鍵,需要有,64,根線,不僅連線復(fù)雜,查詢按鍵的時間也較長。故這種鍵盤電路只適合于按鍵數(shù)量比較少的小型控制系統(tǒng)或智能控制儀表中。,3,非編碼矩陣式鍵盤,主要知識點,:,3.1,矩陣式鍵盤的結(jié)構(gòu)組成,3.2,矩陣式鍵盤的程序設(shè)計,3.1,矩陣式鍵盤的結(jié)構(gòu)組成,矩陣式鍵盤,又叫,行列式鍵盤,,是用
12、,I/O,口線組成的行、列矩陣結(jié)構(gòu),在每根行線與列線的交叉處,二線不直接相通而是通過一個按鍵跨接接通。采用這種矩陣結(jié)構(gòu)只需,M,根行輸出線和,N,根列輸入線,就可連接,MN,個按鍵。通過鍵盤掃描程序的行輸出與列輸入就可確認按鍵的狀態(tài),再通過鍵盤處理程序便可識別鍵值。,鍵盤與,CPU,的接口可采用并行端口,8255A,、,鎖存器或緩沖器一類。,圖,7,給出了一種,88,非編碼矩陣式鍵盤的接口電路。行輸出電路由行掃描鎖存器,74LS273,、,反相器與行線,X,0,X,7,連接組成,列輸入電路由三態(tài)緩沖器,74LS244,與列線,Y,0,Y,7,以及上拉電阻組成。,X,、,Y,線的每一個交叉處跨接
13、一個鍵,其鍵值分別是十進制數(shù)的,01,,,02,,,,,64,。該鍵盤的接口地址為,PORT,1,。,圖,7,矩陣式鍵盤接口電路,當鍵盤中無任何鍵按下時,所有的行線和列線被斷開且相互獨立,輸入線,Y,0,Y,7,列都為高電平;當有任意一鍵按下時,則該鍵所在的行線與列線接通,因此,該列線的電平取決于該鍵所在的行線。基于此,產(chǎn)生了,“行掃描法”,與,“線反轉(zhuǎn)法”,兩種識別方法。,行掃描法,又稱,逐行零掃描查詢法,,即逐行輸出行掃描信號“,0”,,使各行依次為低電平,然后分別讀入列數(shù)據(jù),檢查此(低電平)行中是否有鍵按下。如果讀得某列線為低電平,則表示此(低電平)行線與此列線的交叉處有鍵按下,再對該鍵
14、進行譯碼計算出鍵值,然后轉(zhuǎn)入該鍵的功能子程序入口地址;如果沒有任何一根列線為低電平,則說明此,(,低電平,),行沒有鍵按下。接著進行下一行的“,0”,行掃描與列讀入,直到,8,行全部查完為止,若無鍵按下則返回。,有時為了快速判斷鍵盤中是否有鍵按下,也可先將全部行線同時置為低電平,然后檢測列線的電平狀態(tài),若所有列線均為高電平,則說明鍵盤中無鍵按下,立即返回;若要有一列的電平為低,則表示鍵盤中有鍵被控下,然后再如上那樣進行逐行掃描。,線反轉(zhuǎn)法,并 行 接 口,1,1,0,1,0,0,0,0,+5V,+5V,并 行 接 口,1,1,0,1,1,0,1,1,+5V,+5V,3.2,矩陣式鍵盤的程序設(shè)計
15、,在計算機控制系統(tǒng)中,鍵盤掃描只是,CPU,工作的一部分。因此在設(shè)計鍵盤掃描程序時,必須要保證鍵盤操作的實時性,又不能占有,CPU,太多的時間,還要充分考慮到抖動干擾的消除。一般可根據(jù)情況選用,編程掃描,、,定時掃描,或,中斷掃描,中的一種方式。,下面來考慮,行掃描程序,的編寫與準備。逐行輸出行掃描信號“,0”,,即是,CPU,依次使行線,X,0,X,7,為低電平,其輸出數(shù)據(jù)代碼分別為,01H,(,X,0,線)、,02H,(,X,1,線)、,04H,(,X,2,線)、,08H,(,X,3,線)、,10H,(,X,4,線)、,20H,(,X,5,線)、,40H,(,X,6,線)、,80H,(,X
16、,7,線)。,為消除按鍵的抖動干擾,程序中需調(diào)用延時,100ms,的子程序,以便認定確有鍵按下再識別其鍵值。,求十進制鍵值的方法是分別設(shè)一個行值寄存器,CL,和列值寄存器,DL,。,接口電路中跨接在行列線上的,64,個鍵,由于同一列相鄰行之間相隔數(shù),8,,所以每進行一次“,0”,行掃描后,如果此行無鍵按下,則行寄存器,CL,應(yīng)加,08,再進行下一行的“,0”,行掃描;若有鍵按下則不加,08,而轉(zhuǎn)求列值,由于列值比鍵值,小,1,,如第一行第一列的鍵按下時列值,Y,0,(,即數(shù)據(jù)位,D,0,),0,比,01,鍵值,小,1,,所以列值寄存器,DL,應(yīng)先加,1,,然后將讀入的列值循環(huán)右移,判斷進位位,CF,是否等零即有否鍵按下,若無鍵按下,再繼續(xù)加,1,、右移、判斷,重復(fù)上述過程直到有鍵按下。最后把行值和列值相加并進行,DAA,修正,即可得到所求的十進制鍵值。,例如跨接在,X2,行與,Y1,列的,18,鍵按下,其鍵值計算方法如下:第一次,“,0,”,行掃描,X0,行,無鍵按下,,CL=00+08=08,,,接下來掃,X1,行,仍無鍵按下,加,08,并進行,DAA,修正,,CL=08+08=16