MCS51單片機(jī)的人機(jī)界面接口技術(shù).ppt_第1頁
MCS51單片機(jī)的人機(jī)界面接口技術(shù).ppt_第2頁
MCS51單片機(jī)的人機(jī)界面接口技術(shù).ppt_第3頁
MCS51單片機(jī)的人機(jī)界面接口技術(shù).ppt_第4頁
MCS51單片機(jī)的人機(jī)界面接口技術(shù).ppt_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

單片機(jī)應(yīng)用技術(shù),主講教師:蘇曉龍,全校公共選修課,計(jì)算機(jī)學(xué)院信息科學(xué)系,辦公室:計(jì)A315-1,答疑地點(diǎn):計(jì)A315-1,E-mail:,第八章 MCS-51單片機(jī)的人機(jī)界面接口技術(shù),8.1顯示器接口 8.2鍵盤及其接口 8.3 8255A可編程并行I/O接口擴(kuò)展 8.4 撥碼盤及語音接口,8.1 顯示器接口,8.1.1 LED顯示器接口 8.1.2 LCD顯示器接口 8.1.3 典型鍵盤/顯示器接口實(shí)例,返回本章首頁,8.1.1 LED顯示器接口,1LED顯示器結(jié)構(gòu)與原理,LED顯示塊是由發(fā)光二極管顯示字段的顯示器件。,在微機(jī)應(yīng)用系統(tǒng)中通常使用的是七段LED。這種顯示塊有共陰極與共陽極兩種,如圖8-1所示。七段顯示塊與微機(jī)接口非常容易。如表8-1所示。,8.1.1 LED顯示器接口,1LED顯示器結(jié)構(gòu)與原理,LED顯示塊是由發(fā)光二極管顯示字段的顯示器件。,(a)管腳配置 (b)共陰極 (c)共陽極 圖8-1 七段LED顯示塊,e,表8-1 七段LED的段選碼,8.1.1 LED顯示器接口,2LED顯示器與顯示方式,在微機(jī)應(yīng)用系統(tǒng)中使用LED顯示塊構(gòu)成N位LED顯示器。圖8-2是N位顯示器的構(gòu)成原理。,LED顯示器有兩種方式: (1)LED靜態(tài)顯示方式(如圖8-3所示) (2)LED動(dòng)態(tài)顯示方式(如圖8-4所示),圖8-2 N位LED顯示器,8.1.1 LED顯示器接口,1) 靜態(tài)顯示器接口,靜態(tài)顯示是指數(shù)碼管顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。就是在同一時(shí)刻只顯示1種字符,或者說被顯示的字符在同一時(shí)刻是穩(wěn)定不變的。,這種顯示方式的各位數(shù)碼管相互獨(dú)立,公共端恒定接地(共陰極)或接正電源(共陽極)。每個(gè)數(shù)碼管的8個(gè)字段分別與一個(gè)8位I/O接口相連,I/O端口只要有字形代碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到I/O端口輸出新的字形代碼。,采用靜態(tài)顯示方式,雖然具有較高的顯示亮度,占用CPU時(shí)間少,編程簡單等優(yōu)點(diǎn),但其占用的端口線多,硬件電路復(fù)雜,成本高,只適合于顯示位數(shù)較少的場合。,例1:圖8. 3是數(shù)碼管靜態(tài)顯示方式的一種典型應(yīng)用,用兩片74LS273驅(qū)動(dòng)2位靜態(tài)LED顯示器(共陰極數(shù)碼管)。P2.7=0時(shí)選通1#顯示器,其地址為7FFFH; P2.6=0時(shí)選通2#顯示器,其地址為BFFFH。用下列程序可在顯示器上顯示字符“1”和“2”:,8.1.1 LED顯示器接口,圖8.3 2位靜態(tài)LED顯示器,MOV DPTR,#7FFFH MOV A,#06H ; “1”的字形代碼 MOVX DPTR,A MOV DPTR,#0BFFFH MOV A,#5BH ; “2”的字形代碼 MOVX DPTR,A,8.1.1 LED顯示器接口,圖8-4 八位LED動(dòng)態(tài)顯示器電路,8.1.1 LED顯示器接口,2)動(dòng)態(tài)顯示接口,動(dòng)態(tài)顯示是一位一位地輪流點(diǎn)亮各位數(shù)碼管,這種逐位點(diǎn)亮顯示器的方式稱為動(dòng)態(tài)掃描。,通常,各位數(shù)碼管的段選線相應(yīng)并聯(lián)在一起,由一個(gè)8位的I/O端口控制;各位LED顯示器的位選線(COM端)由另外的I/O端口控制。動(dòng)態(tài)方式顯示時(shí),各數(shù)碼管分時(shí)輪流選通,要使其穩(wěn)定顯示,必須采用動(dòng)態(tài)掃描方式,即在某一時(shí)刻只選通一位數(shù)碼管,并送出相應(yīng)的字形代碼,在另一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的字形代碼。依此規(guī)律循環(huán),逐個(gè)循環(huán)點(diǎn)亮各位數(shù)碼管,每位顯示1 ms左右,即可使各位數(shù)碼管顯示要顯示的字符。雖然這些字符是在不同的時(shí)刻分別顯示的,但由于人眼存在視覺暫留效應(yīng),可以給人以同時(shí)顯示的感覺。,8.1.1 LED顯示器接口,采用動(dòng)態(tài)顯示方式節(jié)省I/O端口,硬件電路也較靜態(tài)顯示方式簡單,但其亮度不如靜態(tài)顯示方式,而且在顯示位數(shù)較多時(shí),CPU要依次掃描,仍占用CPU較多的時(shí)間。 用51系列單片機(jī)構(gòu)建數(shù)碼管動(dòng)態(tài)顯示系統(tǒng)時(shí),采用簡單的接口芯片即可進(jìn)行系統(tǒng)擴(kuò)展,其特點(diǎn)是接口電路簡單,編程方便,價(jià)格低廉。6位動(dòng)態(tài)LED顯示器如圖8.5所示。,2)動(dòng)態(tài)顯示接口,圖8.5 6位動(dòng)態(tài)LED顯示器,圖8.5中,數(shù)碼管采用共陰極LED,字形碼輸出口74LS273經(jīng)過8路同相驅(qū)動(dòng)電路7407后接至數(shù)碼管的各段,當(dāng)位線輸出“1”時(shí),驅(qū)動(dòng)數(shù)碼管發(fā)光。7407是集電極開路的同相驅(qū)動(dòng)器,能為發(fā)光段提供更大的導(dǎo)通電流,增強(qiáng)LED的發(fā)光亮度,其輸出端經(jīng)110 的限流電阻接至+5 V電源,改變電阻的大小即可調(diào)節(jié)發(fā)光亮度。用另一個(gè)輸出口74LS273作為LED的位選控制口,其輸出經(jīng)過6路反相驅(qū)動(dòng)器75452后接至數(shù)碼管的COM端。當(dāng)位選控制口的某位輸出“1”時(shí),75452反相器驅(qū)動(dòng)相應(yīng)的LED位發(fā)光。,2)動(dòng)態(tài)顯示接口,字形碼輸出口和位選控制口的地址分別為:,字形碼輸出口地址:DFFFH(地址不是惟一的); 位選控制口的地址:EFFFH(地址不是惟一的)。,在單片機(jī)應(yīng)用系統(tǒng)中,為了便于對(duì)LED 顯示器進(jìn)行管理,需要建立一個(gè)顯示緩沖區(qū)。顯示緩沖區(qū)DISBUF是片內(nèi)RAM的一個(gè)區(qū)域,它的作用是存放要顯示的字符,其長度與LED的位數(shù)相同。,3)動(dòng)態(tài)掃描程序,圖8.5 中的動(dòng)態(tài)顯示器,DISBUF為6個(gè)字節(jié),設(shè)DISBUF占用片內(nèi)RAM的70H75H單元。顯示緩沖區(qū)DISBUF中的內(nèi)容是由其他處理程序事先存入DISBUF中的,再由顯示程序進(jìn)行顯示。,設(shè)要顯示“P89C51,則“P89C51”在DISBUF中的存放形式見表6.3所示。數(shù)碼顯示器的低位(最右邊的位)顯示的是顯示緩沖區(qū)中的低地址單元中的數(shù),因此在顯示緩沖區(qū)中存放的次序?yàn)榈偷刂穯卧娴臀?,高地址單元存高位?表6.3 顯示緩沖區(qū),3)動(dòng)態(tài)掃描程序,要說明的是,顯示程序是利用查表方法來得到要顯示字符的字形代碼的。在顯示程序的字形代碼(顯示段碼)表中, 字形代碼存放的次序依次為“09”,“AF”,“空白”和“P”。其中,“P”的序號(hào)為18(即11H),故在DISBUF中的75H單元用11H代表“P”。,3)動(dòng)態(tài)掃描程序,顯示程序的任務(wù)是把顯示緩沖區(qū)中待顯示的字符送往LED顯示器顯示。在進(jìn)行動(dòng)態(tài)掃描顯示時(shí), 從DISBUF中依次取出待顯示的字符,采用查表的方法得到其對(duì)應(yīng)的字形代碼,逐個(gè)地循環(huán)點(diǎn)亮各位數(shù)碼管,每位顯示1 ms左右,即可使各位數(shù)碼管顯示要顯示的字符。,設(shè)DISBUF中的信息為“P89C51”,可由下列程序在顯示器上顯示“P89C51”:,3)動(dòng)態(tài)掃描程序,LOOP1: LCALL DISPLAY ;調(diào)用顯示子程序 LJMP LOOP1 ; 循環(huán) DISPLAY: MOV R0,#70H ;R0指向DISBUF首 ;地址 MOV R3,#01H ; 右起第1個(gè)LED ;的選擇字 NEXT: MOV A,#00H ; 取位選控制字為全滅 MOV DPTR,#0EFFFH ;取位選控制口 ;地址 MOVX DPTR,A ; 瞬時(shí)關(guān)顯示器 MOV A,R0 ;從DISBUF中取出字符,MOV DPTR,#DSEG ;取段碼表首地址 MOVC A,A+DPTR ;查表,取對(duì)應(yīng)的字形碼 MOV DPTR,#0DFFFH ;取字形碼輸出口地址 MOVX DPTR,A ;輸出字形碼 MOV DPTR,#0EFFFH ;取位選控制口地址 MOV A,R3 ;取當(dāng)前位選控制字 MOVX DPTR,A ; 點(diǎn)亮當(dāng)前LED顯示位,3)動(dòng)態(tài)掃描程序,LCALL DELAY ;延時(shí)1 ms INC R0 ;R0指向下一個(gè)字符 JB ACC.5,EXIT ;若當(dāng)前顯示位是第6位則 ;結(jié)束 RL A ; 下一個(gè)LED的選擇字 MOV R3,A SJMP NEXT,EXIT: RET ;返回段碼表 09,AF,空白, DSEG: DB 3FH,06H,5BH,4FH,66H, 6DH,7DH, DB 07H,7FH6FH,77H,7CH, 39H,5EH, DB 79H,71H,00H,73H DELAY:MOV R7,#02H ; 延時(shí)1 ms的子程序 DEL1: MOV R6,#0FFH DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET,例2針對(duì)圖8.5所示的電路,編一顯示程序, 調(diào)用動(dòng)態(tài)掃描顯示子程序DISPLAY,使數(shù)碼顯示器顯示“012345”共6個(gè)字符。,解: 參考程序如下: MOV A, 05H ; 取最右邊1位字符 MOV R0,70H ; 指向DISBUF首址(最低位) MOV R1,06H ; 共送入6個(gè)字符 LOP2: MOV R0,A ; 將字符送入DISBUF INC R0 ; 指向下一顯示單元 DEC A ; 下一個(gè)顯示字符 DJNZ R1,LOP2 ; 若6個(gè)數(shù)未送完,則重復(fù) LOP3:LCALL DISPLAY; 掃描顯示一遍 SJMP LOP3 ; 重復(fù)掃描,8.1.1 LED顯示器接口,3LED顯示器接口實(shí)例,從LED顯示器的原理可知,為了顯示字母與數(shù)字,必須最終轉(zhuǎn)換成相應(yīng)的段選碼。這種轉(zhuǎn)換可以通過硬件譯碼器或軟件進(jìn)行譯碼。,硬件譯碼器LED顯示器接口(如圖8-6所示) 軟件譯碼LED顯示器接口(如圖8-7 、8-8所示),圖8-6 利用硬件譯碼器的七段LED接口電路,圖8-7 通過8155擴(kuò)展I/O口控制的8位LED動(dòng)態(tài)顯示接口,圖8-8 動(dòng)態(tài)顯示子程序流程圖,返回本節(jié),8.2 鍵盤及其接口,1 按鍵的分類,鍵盤實(shí)際上是由排列成矩陣形式的一系列按鍵開關(guān)組成的,用戶通過鍵盤可向CPU輸入數(shù)據(jù)信息、地址信息和各種命令。鍵盤按照其接口原理可分為編碼鍵盤與非編碼鍵盤兩類,這兩類鍵盤的主要區(qū)別是識(shí)別鍵符及給出相應(yīng)鍵碼的方法不同。,編碼鍵盤主要是用硬件來實(shí)現(xiàn)對(duì)按鍵的識(shí)別,鍵盤接口電路能夠由硬件邏輯自動(dòng)提供與鍵對(duì)應(yīng)的編碼。此外,編碼鍵盤一般還具有去抖動(dòng)和多鍵、竄鍵保護(hù)電路。,這種鍵盤使用方便,但需要較多的硬件,價(jià)格較貴,一般的單片機(jī)應(yīng)用系統(tǒng)較少采用。,非編碼鍵盤的接口電路只是簡單地提供按鍵的行列矩陣,對(duì)按鍵的識(shí)別、編碼、去抖動(dòng)等工作均由軟件完成。由于其經(jīng)濟(jì)實(shí)用,因此常應(yīng)用于單片機(jī)系統(tǒng)中。下面將重點(diǎn)介紹非編碼鍵盤。,8.2 鍵盤及其接口,1 按鍵的分類,2. 矩陣鍵盤的結(jié)構(gòu)及原理,8.2 鍵盤及其接口,在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門的復(fù)位電路及專一的復(fù)位功能外,其他按鍵都是以開關(guān)狀態(tài)來設(shè)置控制功能或輸入數(shù)據(jù)的。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),單片機(jī)應(yīng)用系統(tǒng)完成該按鍵所設(shè)定的功能。,一組鍵或一個(gè)鍵盤,總有一個(gè)接口電路與CPU相連。當(dāng)按鍵較多時(shí)一般采用行列式結(jié)構(gòu)并按矩陣形式排列,如圖8.9所示。,圖8.9.1 矩陣鍵盤的結(jié)構(gòu),8.2 鍵盤及其接口,圖8.9.2 矩陣鍵盤在89C51單片機(jī)應(yīng)用實(shí)例之一,8.2 鍵盤及其接口,圖8.9給出了44行列式鍵盤的基本結(jié)構(gòu)示意圖。44表示有4根行線和4根列線,在每根行線和列線的交叉點(diǎn)上有1個(gè)按鍵,組成了一個(gè)有16個(gè)按鍵的矩陣鍵盤。 列線通過上拉電阻接到5 V上。當(dāng)無鍵按下時(shí),列線處于高電平狀態(tài); 當(dāng)有鍵按下時(shí),行、列線將導(dǎo)通,此時(shí),列線電平將由與此列線相連的行線電平?jīng)Q定,這是識(shí)別按鍵是否按下的關(guān)鍵。然而,矩陣鍵盤中的行線、列線和多個(gè)鍵相連,因此,必須將行線、列線信號(hào)配合起來作適當(dāng)處理,才能確定閉合鍵的位置。識(shí)別按鍵是否按下的方法很多,其中,最常見的方法是行掃描法。,8.2 鍵盤及其接口,3. 矩陣鍵盤的行掃描法,8.2 鍵盤及其接口,所謂行掃描法,就是通過行線逐行發(fā)出低電平信號(hào)。如果該行線所連接的鍵沒有按下,則列線的電平信號(hào)是全“1”; 如果有鍵按下的話,則列線得到的是非全“1”信號(hào),即根據(jù)列線的電平信號(hào)是否有“0”信號(hào)來判斷有無鍵按下。,在使用行掃描法時(shí),為了提高效率, 首先快速檢查整個(gè)鍵盤中是否有鍵按下。,若無鍵按下,則結(jié)束鍵盤掃描程序; 若有鍵按下,則再用逐行掃描的方法來確定閉合鍵的具體位置(按下的是哪一個(gè)鍵)。,具體方法是:,8.2 鍵盤及其接口,1)先掃描第0行,行輸出值為1110B(見圖8.9.1),第0行為 “0”,其余3行為“1”(通常,把行輸出值為0的行稱為當(dāng)前行),然后讀入列信號(hào),判斷是否為全“1”。 若列輸入值為全“1”,則當(dāng)前行無鍵按下。,2)若第0行無鍵按下,再掃描第1行。行輸出1101(第1行為“0”,其余3行為“1”), 再掃描下一行 依此規(guī)律逐行掃描,直到掃描某行時(shí),其列輸入值不為全“1”,則根據(jù)行輸出值和列輸入值中0的位置確定閉合鍵的具體位置,從而用計(jì)算法或查表法得到閉合鍵的鍵值。,例8. 3 為單片機(jī)設(shè)計(jì)一個(gè)84矩陣鍵盤,并編寫鍵盤掃描程序。,8.2 鍵盤及其接口,解: 接口電路如圖8.10所示。用74LS273作為行輸出口,輸出8位行掃描信號(hào)。 用74LS244作為列輸入口,輸入4位列輸入值。其口地址分別是: 行輸出口地址:F7FFH; 列輸入口地址:FBFFH。,圖8.10 一個(gè)84矩陣鍵盤電路,8.2 鍵盤及其接口,鍵盤采用行掃描法方式工作,鍵盤掃描子程序應(yīng)具有以下功能: (1) 判斷有無鍵按下。其方法為:行輸出口輸出全為0,讀列輸入口信息,若列輸入值為全1,則說明無鍵按下; 若不為全1,則說明有鍵按下。 (2) 消除按鍵的抖動(dòng)。 微機(jī)鍵盤通常使用機(jī)械觸點(diǎn)式按鍵開關(guān)。機(jī)械式按鍵在按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來。其抖動(dòng)過程如圖8.11所示,抖動(dòng)時(shí)間的長短與開關(guān)的機(jī)械特性有關(guān),一般為510 ms。 ,8.2 鍵盤及其接口,圖8.11 按鍵抖動(dòng)示意圖,8.2 鍵盤及其接口,在觸點(diǎn)抖動(dòng)期間檢測按鍵的通斷狀態(tài),可能導(dǎo)致判斷出錯(cuò),即一次按下按鍵被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服由于按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測誤判,必須采取消抖動(dòng)措施。 在此,使用軟件延時(shí)的方法消除按鍵的抖動(dòng)。當(dāng)檢測到有按鍵按下時(shí),調(diào)用兩次顯示子程序,每調(diào)用一次延時(shí)6 ms,共延時(shí)12 ms。這樣既實(shí)現(xiàn)了按鍵的消抖動(dòng),又可保持顯示器有穩(wěn)定的顯示。同樣,在檢測到閉合鍵釋放后,也采用軟件延時(shí)的方法消除按鍵的抖動(dòng)。,8.2 鍵盤及其接口,(3) 逐行掃描。若有鍵按下,則逐行掃描,以判別閉 合鍵的具體位置。 (4) 計(jì)算閉合鍵的鍵值。計(jì)算公式為 鍵值行號(hào)4列號(hào) (5) 判斷按鍵是否釋放。計(jì)算出閉合鍵的鍵值后, 再判斷按鍵是否釋放。若按鍵未釋放,則等 待; 若鍵已釋放,則再延時(shí)消抖。 (6) 命令處理。根據(jù)閉合鍵的鍵值,程序應(yīng)完成該 按鍵所設(shè)定的功能。若按下的是命令鍵,則 轉(zhuǎn)入命令鍵處理程序,完成命令鍵的功能; 若按下的是數(shù)字鍵,則轉(zhuǎn)入數(shù)字鍵處理程序, 進(jìn)行數(shù)字的存儲(chǔ)和顯示等操作。,8.2 鍵盤及其接口,鍵盤掃描程序如下: ; KEY 鍵盤掃描程序 ; 入口參數(shù): 無 ; 出口參數(shù): A為返回值 ; 若有鍵按下,則A為閉合鍵的鍵值031 ;若無鍵按下,則A為FFH ;占用寄存器:R3為行計(jì)數(shù)器,R2存放行掃 ;描值,R4、R5為暫存器 KEY: LCALL KS1 ;快速檢查整個(gè)鍵盤中是否 ;有鍵按下,8.2 鍵盤及其接口,JNZ LK1 ; A非0, 若有鍵按下, ;則轉(zhuǎn)至LK1 LJMP LK8 ; 若無鍵按下,則返回 LK1: LCALL DISPLAY ;若有鍵閉合,則調(diào)顯示 ;子程,延時(shí)12 ms LCALL DISPLAY ; 消抖動(dòng) LCALL KS1 ; 再次檢查有鍵閉合否 JNZ LK2 ;若有鍵閉合,則轉(zhuǎn)入逐行掃描 LJMP LK8 ; 若無鍵閉合,則返回 KL2:MOV R3,00H ; 行號(hào)初值送R3 MOV R2,0FEH; 行掃描初值送R2,8.2 鍵盤及其接口,LK3: MOV DPTR,0F7FFH ;行輸出口地 ;址,F(xiàn)7FFH MOV A,R2 ; 行掃描值送A MOVX DPTR,A ; 掃描當(dāng)前行 MOV DPTR,0FBFFH ;列輸入口地址, ;FBFFH MOVX A,DPTR ; 讀入列值 ANL A,0FH ; 保留低4位 MOV R4,A ; 暫存列值 CJNE A,0FH,LK4 ;列值非全“1”則轉(zhuǎn) MOV A,R2 ; 行掃描值送A,8.2 鍵盤及其接口,JNB ACC.7,LK8 ; 已掃到最后1行則返回 RL A ;若未掃完,則準(zhǔn)備掃下一行 MOV R2,A ; 行值存入R2中 INC R3 ; 行號(hào)加1 LJMP LK3 ; 轉(zhuǎn)至掃描下一行 LK4: MOV A,R3 ; 行號(hào)送入A ADD A,R3 ; 行號(hào)2 MOV R5,A ; 暫存 ADD A,R5 ; 行號(hào)4 MOV R5,A ; 存入R5中,8.2 鍵盤及其接口,MOV A,R4 ; 列值送入A LK5: RRC A ; 列值右移1位 JNC LK6 ; 該位為0則轉(zhuǎn) INC R5 ; 鍵值加1 SJMP LK5 ; 列號(hào)未判完繼續(xù) LK6: PUSH R5 ; 保護(hù)鍵值 LK7: LCALL DISPLAY ; 掃描一遍顯示器 LCALL KS1 ; 發(fā)全掃描信號(hào) JNZ LK7 ; 鍵未釋放則等待 LCALL DISPLAY ; 鍵已釋放 LCALL DISPLAY ; 延時(shí)12 ms,消抖 POP A ; 鍵值存入A中 KND: RET ; 返回,8.2 鍵盤及其接口,LK8: MOV A,0FFH ;無閉合鍵標(biāo)志,F(xiàn)FH存 ;入A中 RET ; 返回 KS1: MOV DPTR,0F7FFH ;行輸出口地址: ;F7FFH MOV A,00H ;取8行全掃描信號(hào) MOVX DPTR,A ; 同時(shí)掃描8行 MOV DPTR,0FBFFH ;列輸入口地址: ;FBFFH MOVX A,DPTR ; 列輸入 ANL A,0FH ; 保留低4位 ORL A,0F0H ; 高4位取“1” CPL A ;取反,若無鍵按下,則全0 RET ; 返回,8.2 鍵盤及其接口,8.3 8255A可編程并行I/O接口擴(kuò)展,所謂可編程的接口芯片,是指其功能可由微處理機(jī)的指令來加以改變的接口芯片,利用編程的方法,可以使一個(gè)接口芯片執(zhí)行不同的接口功能。目前,各生產(chǎn)廠家已提供了很多系列的可編程接口器件,51單片機(jī)常用的可編程接口芯片是Intel 8255A。,1. 8255A的內(nèi)部結(jié)構(gòu)與端口選擇,8.3 8255A可編程并行I/O接口擴(kuò)展,8255A是一種8位并行接口芯片,它為用戶提供了3個(gè)8位并行端口PA、PB和PC口,3個(gè)端口都可以和外設(shè)相連,分別傳送外設(shè)的輸入/輸出數(shù)據(jù)或控制信息,圖8.12給出了8255A的內(nèi)部結(jié)構(gòu)和引腳圖。3個(gè)端口在8255A內(nèi)部分成A、B兩組控制電路,這兩組控制電路根據(jù)CPU發(fā)出的方式選擇字來控制8255A的工作方式,每個(gè)控制組都接收來自讀/寫控制邏輯的“命令”和內(nèi)部數(shù)據(jù)總線的“控制字”,并向與其相連的端口發(fā)出適當(dāng)?shù)目刂菩盘?hào)。A組控制部件用來控制PA口和PC口高4位(PC7PC4), B組控制部件用來控制PB口和PC口低4位(PC3PC0)。,圖8.12 8255A的內(nèi)部結(jié)構(gòu)和引腳圖,8.3 8255A可編程并行I/O接口擴(kuò)展,讀/寫控制邏輯用來管理數(shù)據(jù)信息、控制字和狀態(tài)字的傳送,它接收來自CPU地址總線的A1、A0和控制總線有關(guān)信號(hào)(、RESET等),向8255A的A、B兩組控制部件發(fā)送命令,用于對(duì)8255的端口選擇及讀/寫控制,表8.4給出了8255A的端口選擇及讀/寫控制狀態(tài)表。,8.3 8255A可編程并行I/O接口擴(kuò)展,表8.4 8255A端口選擇及讀/寫控制狀態(tài)表,8.3 8255A可編程并行I/O接口擴(kuò)展,2. 8255A的控制字與工作方式,8255A有兩種控制命令字:一個(gè)是方式選擇控制字,另一個(gè)是C口按位置位/復(fù)位控制字,其控制字格式如圖8.13所示。初始化時(shí),CPU首先對(duì)8255A的控制寄存器寫入方式選擇控制字,選擇8255A的工作方式。在8255A工作期間,如果把一個(gè)置位/復(fù)位控制字送入8255A的控制寄存器,就能將C口的某一位置1或清0,而不影響其他位的狀態(tài),使C口具有位操作功能。,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.13 8255A控制字格式 (a) 方式選擇控制字格式; (b) C口置位/復(fù)位控制字格式,8.3 8255A可編程并行I/O接口擴(kuò)展,8255有3種工作方式:方式0、方式1和方式2。工作方式的選擇是通過上述寫控制字的方法來完成的。,8.3 8255A可編程并行I/O接口擴(kuò)展,(1) 方式0(基本輸入/輸出方式):A口、B口及C口高4位、低4位都可以設(shè)置為方式0輸入或輸出,不需要選通信號(hào)。單片機(jī)可以用8255A進(jìn)行數(shù)據(jù)的無條件傳送,數(shù)據(jù)在8255A的各端口能得到鎖存和緩沖。在方式0下,輸入口為緩沖輸入方式, 輸出口具有鎖存功能。,A口和B口為方式1輸入時(shí),C口的定義及握手信號(hào)的時(shí)序如圖8.14所示。其中,為選通信號(hào),低電平有效,當(dāng)外設(shè)送來信號(hào)時(shí),輸入的數(shù)據(jù)被裝入8255A的輸入鎖存器中; IBF是輸入緩沖器滿信號(hào),高電平有效。,(2) 方式1(選通輸入/輸出方式):A口和B口都可以獨(dú)立地設(shè)置為方式1,在這種方式下,8255A的A口和B口通常用于傳送和它們相連外設(shè)的數(shù)據(jù),C口作為A口和B口的握手聯(lián)絡(luò)線,以實(shí)現(xiàn)中斷方式傳送數(shù)據(jù)。,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.14 方式1輸入時(shí)的握手信號(hào)及時(shí)序,8.3 8255A可編程并行I/O接口擴(kuò)展,IBF是一個(gè)狀態(tài)信號(hào),當(dāng)其為高電平表示輸入口的數(shù)據(jù)尚未被CPU取走時(shí),外設(shè)暫時(shí)不能向輸入口送新的數(shù)據(jù); INTR是中斷請(qǐng)求信號(hào),高電平有效。當(dāng)IBF為高電平,且中斷允許信號(hào)INTE=1時(shí),INTR=1,向CPU請(qǐng)求中斷。CPU響應(yīng)中斷后,執(zhí)行輸入指令(產(chǎn)生讀信號(hào)為負(fù)脈沖),讀取輸入口的數(shù)據(jù),同時(shí)的下降沿清除中斷請(qǐng)求信號(hào),的上升沿使IBF=0。,8.3 8255A可編程并行I/O接口擴(kuò)展,INTE為中斷允許控制信號(hào)。A口由PC4位的置位/復(fù)位狀態(tài)進(jìn)行控制,B口由PC2位的置位/復(fù)位狀態(tài)進(jìn)行控制。只有PC4或 PC2置位時(shí),8255A的A口或B口才會(huì)產(chǎn)生中斷請(qǐng)求。若A口和B口為方式1輸入時(shí),PC7、PC6可以用作I/O線,即方式0下的輸入或輸出。 A口和B口為方式1輸出時(shí),C口的定義及握手信號(hào)的時(shí)序如圖8.15所示。其中,OBF是輸出緩沖器滿信號(hào),低電平有效。該信號(hào)為低電平表示CPU已將數(shù)據(jù)送到輸出端口,通知外設(shè)可將數(shù)據(jù)取走; 是外設(shè)產(chǎn)生的響應(yīng)信號(hào),若該信號(hào)有效表示數(shù)據(jù)被外設(shè)所接收。當(dāng)外設(shè)接收了輸出端口的數(shù)據(jù)后,INTR為高電平向CPU發(fā)出中斷請(qǐng)求,請(qǐng)求CPU輸出新的數(shù)據(jù)。,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.15 方式1輸出時(shí)的握手信號(hào)及時(shí)序,8.3 8255A可編程并行I/O接口擴(kuò)展,INTE為中斷允許控制信號(hào)。A口由PC6位的置位/復(fù)位狀態(tài)進(jìn)行控制,B口由PC2位的置位/復(fù)位狀態(tài)進(jìn)行控制。只有PC6或 PC2置位時(shí),8255A的A口或B口才會(huì)產(chǎn)生中斷請(qǐng)求。 若A口和B口為方式1輸入時(shí),PC5、PC4可以用作I/O線,即方式0下的輸入或輸出。,8.3 8255A可編程并行I/O接口擴(kuò)展,(3) 方式2(A口的雙向選通輸入輸出方式):只有A口可以設(shè)置為方式2,在這種方式下,既能輸入,又能輸出。無論是輸入或輸出都可以用中斷方式,也可以用查詢方式進(jìn)行數(shù)據(jù)交換。A口為方式2時(shí),C口的定義及握手信號(hào)的時(shí)序如圖8.16所示。 這時(shí),中斷允許控制信號(hào)INTE1由PC6位的置位/復(fù)位狀態(tài)進(jìn)行控制,INTE2由PC4位的置位/復(fù)位狀態(tài)進(jìn)行控制。其他握手信號(hào)的定義類似于方式1。 當(dāng)A口工作在方式2時(shí),B口既可工作在方式0下,又可工作在方式1下。,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.162 方式2的握手信號(hào)及時(shí)序,8.3 8255A可編程并行I/O接口擴(kuò)展,3. 8255A與系統(tǒng)的連接及應(yīng)用,8.3 8255A可編程并行I/O接口擴(kuò)展,由于8255A是Intel公司專為其主機(jī)配套設(shè)計(jì)制造的標(biāo)準(zhǔn)化外圍接口芯片,因此它與51單片機(jī)的連接是非常簡單的。圖8.17給出了一個(gè)8255A與系統(tǒng)的連接實(shí)例。,圖8.17 8255A與系統(tǒng)的連接,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.17中,P0口為地址/數(shù)據(jù)復(fù)用口,數(shù)據(jù)通過P0口直接傳送,地址的低8位通過74LS373鎖存。系統(tǒng)的讀/寫控制及復(fù)位信號(hào)與8255A的讀/寫及復(fù)位端對(duì)應(yīng)相連。系統(tǒng)地址總線的A1、A0直接與8255A的地址線A1、A0對(duì)應(yīng)相連。利用高8位地址線的P2.1作為選通信號(hào),直接與8255A的片選端相連,8255A各個(gè)端口的地址如下: A口地址:FD00H(地址不是惟一的,下同); B口地址:FD01H; C口地址:FD02H; 控制寄存器地址:FD03H。,8.3 8255A可編程并行I/O接口擴(kuò)展,例8.5 針對(duì)圖8.17所示的電路進(jìn)行編程,用位操作方式進(jìn)行控制,使8255A的PC5端向外輸出一個(gè)寬度為1 ms的正脈沖信號(hào)。 解:要從PC5端輸出一個(gè)正脈沖信號(hào),則可通過對(duì)PC5位的置位/復(fù)位控制來實(shí)現(xiàn)。 由于每送1個(gè)控制字,只能對(duì)1位作1次置位或復(fù)位操作,因此產(chǎn)生1個(gè)正脈沖要對(duì)PC5位先送置位控制字,經(jīng)過一定的延時(shí)后再送復(fù)位控制字即能實(shí)現(xiàn)。,8.3 8255A可編程并行I/O接口擴(kuò)展,程序如下: MOV DPTR,0FD03H ; 指向8255A的控制口 MOV A,#80H ; 方式字,A、B和C口均 ;為方式0 輸出 MOVX DPTR,A ; 8255A初始化 MOV A,OBH ; 置位/復(fù)位控制字,對(duì) ;PC5置1 MOVX DPTR,A LCALL DELAY1ms ; 調(diào)用延時(shí)子程序 ;DELAY1ms DEC A ; 對(duì)PC5置0 MOVX DPTR,A,8.3 8255A可編程并行I/O接口擴(kuò)展,例8.6 使用8255A芯片為單片機(jī)系統(tǒng)設(shè)計(jì)打印機(jī)接口電路,并編寫打印子程序。 解 打印機(jī)的主要信號(hào)及時(shí)序如圖8.18所示。其中, DB0DB7為數(shù)據(jù)線,向打印機(jī)提供數(shù)據(jù)。是數(shù)據(jù)選通信號(hào),利用的負(fù)脈沖將DB0DB7上的數(shù)據(jù)鎖存于打印機(jī)內(nèi)部,由打印機(jī)處理并打印該字符。在打印該字符期間BUSY為高電平,表示打印機(jī)處于“忙”狀態(tài)。一旦BUSY變?yōu)榈碗娖剑捅硎敬蛴C(jī)可以接收下一個(gè)數(shù)據(jù)。 打印機(jī)的接口電路如圖8.19所示。設(shè)8255A的地址為FD00HFD03H,8255A與系統(tǒng)的具體連接方法如圖8.17所示。,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.18 打印機(jī)的主要信號(hào)及時(shí)序圖,8.3 8255A可編程并行I/O接口擴(kuò)展,圖8.19 打印機(jī)的接口電路,8.3 8255A可編程并行I/O接口擴(kuò)展,打印子程序采用查詢方式傳送數(shù)據(jù),其功能是打印片內(nèi)RAM 30H單元中的ASCII碼字符。程序如下: ; 主程序 MOV DPTR,0FD03H ;指向8255A的命令口 MOV A,88H ;取方式字:A口輸出,C口 ;低出高入 MOVX DPTR,A ; 送入方式字,8255A初始化 MOV A,01H ; C口置位/復(fù)位命令字 ;(PC0=1) MOVX DPTR,A ; 置PC0初始狀態(tài)為1,8.3 8255A可編程并行I/O接口擴(kuò)展,LCALL PRINT ; 調(diào)打印子程序PRINT: MOV DPTR,0FD02H ; 指向C口 LOOP1: MOVX A,DPRT ; 讀入C口信息 JB A.7,LOOP1 ;若BUSY=1,則繼 ;續(xù)查詢 MOV DPTR,0FD00H ; 指向A口 MOV A,30H ; 取RAM數(shù)據(jù) MOVX DPTR,A ;數(shù)據(jù)輸出到A口,8.3 8255A可編程并行I/O接口擴(kuò)展,MOV DPTR,0FD03H ; 指向命令口 MOV A,00H ; C口置位/復(fù)位命令 ;字(PC0=0) MOVX DPTR,A ;產(chǎn)生STB的下降沿 NOP MOV A,01H ; 改變C口置位/復(fù)位命令字 ;(PC0=1) MOVX DPTR,A ; 產(chǎn)生STB的上升沿 RET ; 返回,8.3 8255A可編程并行I/O接口擴(kuò)展,8.4 撥碼盤及語音接口,8.4.1 撥碼盤接口及應(yīng)用實(shí)例 8.4.2 ISD1420語音接口芯片及其應(yīng)用,返回本章首頁,8.4.1 撥碼盤接口及應(yīng)用實(shí),1十線撥盤(如圖8-30所示) l 十線撥盤接口:多個(gè)撥盤輸入時(shí),接口如圖8-31所示。為節(jié)約I/O口,采用并聯(lián)連接,分時(shí)選通輸入的辦法。 l 讀數(shù)及自檢軟件十線撥碼盤便于實(shí)現(xiàn)自檢。在正常情況下,十線中只能有一個(gè)為低電平“0”。如果有一個(gè)以上的低電平“0”,則為短路故障;如全為高電平“1”,則為開路或接觸不良故障。圖8-32是讀數(shù)自檢子程序流程圖。,圖8-30 十線撥盤,8.4.1 撥碼盤接口及應(yīng)用實(shí),圖8-31 十線撥盤組接口,8.4.1 撥碼盤接口及應(yīng)用實(shí),圖8-32 十線撥盤讀數(shù)自檢程序流程圖,8.4.1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論