第7章單片機(jī)的io擴(kuò)展及應(yīng)用_第1頁(yè)
第7章單片機(jī)的io擴(kuò)展及應(yīng)用_第2頁(yè)
第7章單片機(jī)的io擴(kuò)展及應(yīng)用_第3頁(yè)
第7章單片機(jī)的io擴(kuò)展及應(yīng)用_第4頁(yè)
第7章單片機(jī)的io擴(kuò)展及應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩133頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本章重點(diǎn)

單片機(jī)的簡(jiǎn)單I/O擴(kuò)展

8255A可編程并口芯片

8279可編程鍵盤(pán)/顯示器接口芯片單片機(jī)鍵盤(pán)接口技術(shù)單片機(jī)顯示器接口技術(shù)單片機(jī)打印機(jī)接口技術(shù)課時(shí)安排:7個(gè)課時(shí)本章難點(diǎn)8255A可編程并口芯片的應(yīng)用

8279可編程鍵盤(pán)/顯示器接口芯片的應(yīng)用,對(duì)8279的程序編程,準(zhǔn)確使用8279的控制字、狀態(tài)字準(zhǔn)確理解8279連接鍵盤(pán)和顯示器時(shí)從該芯片的數(shù)據(jù)口、控制口輸入及輸出的分別是什么類別的信號(hào)。第7章單片機(jī)I/O擴(kuò)展及應(yīng)用7.1單片機(jī)為什么需要I/O擴(kuò)展7.2單片機(jī)簡(jiǎn)單I/O擴(kuò)展7.38255A可編程通用并行接口芯片7.48155帶RAM和定時(shí)器/計(jì)數(shù)器的可編程并行

接口芯片7.58279可編程鍵盤(pán)/顯示器接口芯片7.6MCS-51單片機(jī)鍵盤(pán)接口技術(shù)7.7MCS-51單片機(jī)顯示器接口技術(shù)7.8MCS-51單片機(jī)打印機(jī)接口技術(shù)思考題7.1單片機(jī)為什么需要I/O擴(kuò)展7.1.1I/O口的直接使用7.1.2為什么要擴(kuò)展I/O接口7.1.3I/O擴(kuò)展的相關(guān)技術(shù)7.1.4單片機(jī)I/O控制方式7.1.1I/O口的直接使用1.無(wú)條件傳送

P1.0~P1.3輸入開(kāi)關(guān)狀態(tài),經(jīng)P1.4~P1.7驅(qū)動(dòng)發(fā)光二極管,使發(fā)光二極管顯示開(kāi)關(guān)的狀態(tài)。P1.0P1.3P1.4P1.7~~開(kāi)關(guān)發(fā)光二極管K0K1K2K3L3L2L1L0圖7-1簡(jiǎn)單I/O應(yīng)用電路連接2.中斷方式數(shù)據(jù)傳送

中斷方式實(shí)現(xiàn)上述同樣的功能。由開(kāi)關(guān)K在INT0端口處產(chǎn)生外部中斷請(qǐng)求0,脈沖邊沿觸發(fā)。只要撥動(dòng)開(kāi)關(guān)K,就讀取K0~K3的狀態(tài),驅(qū)動(dòng)L0~L3的亮滅。P1.0P1.3P1.4P1.7~~開(kāi)關(guān)K0K1K2K3發(fā)光二極管L3L2L1L0INT0+5VK圖7-2中斷方式的簡(jiǎn)單I/O電路連接 ORG8000HSTART:AJMPMAIN ORG8003H AJMPEXTR ORG8030HMAIN:SETBIT0 SETBEX0 SETBEAHERE:AJMPHEREORG8200H P1EQU90HEXTR:MOVA,#0FH MOVP1,A MOVA,P1 CPLA ANLA,#0FH SWAPA MOVP1,A RETI7.1.2為什么要擴(kuò)展I/O接口1.單片機(jī)本身接口功能有限

2.單片機(jī)控制應(yīng)用中的復(fù)雜接口要求

例如速度差異大、設(shè)備種類繁多、數(shù)據(jù)信號(hào)形式多種多樣。3.擴(kuò)展I/O接口電路的功能

例如速度協(xié)調(diào)、輸出數(shù)據(jù)鎖存、輸入數(shù)據(jù)三態(tài)緩沖、數(shù)據(jù)轉(zhuǎn)換。7.1.3I/O擴(kuò)展的相關(guān)技術(shù)1.接口與端口

接口——是指計(jì)算機(jī)與外設(shè)之間在數(shù)據(jù)傳送方面的聯(lián)系,因?yàn)槠涔δ苁峭ㄟ^(guò)電路實(shí)現(xiàn)的,因此稱為接口電路。

在接口電路中,通常包含有數(shù)據(jù)寄存器、狀態(tài)寄存器、命令寄存器等,使得接口電路實(shí)現(xiàn)數(shù)據(jù)I/O傳送過(guò)程中的界面功能。

端口——通常把接口電路中那些可編址并能進(jìn)行讀或?qū)懖僮鞯募拇嫫鞣Q為端口(Port)。2.數(shù)據(jù)總線隔離技術(shù)

數(shù)據(jù)總線連接著多個(gè)數(shù)據(jù)輸入設(shè)備和多個(gè)數(shù)據(jù)輸出設(shè)備,但是在任一時(shí)刻,只能進(jìn)行一個(gè)源和負(fù)載的數(shù)據(jù)傳送,其它不參與的設(shè)備在電性能上必須同數(shù)據(jù)總線隔開(kāi),這就需要解決數(shù)據(jù)總線的隔離問(wèn)題。

對(duì)于輸出設(shè)備的接口電路:要提供鎖存器,當(dāng)允許接收輸出數(shù)據(jù)時(shí)閂鎖打開(kāi),當(dāng)不允許接收輸出數(shù)據(jù)時(shí)閂鎖關(guān)閉。

對(duì)于輸入設(shè)備的接口電路:要使用三態(tài)(高電平、低電平、高阻抗)緩沖電路,當(dāng)三態(tài)緩沖器的輸出為高或低電平時(shí),就是對(duì)數(shù)據(jù)總線的驅(qū)動(dòng)狀態(tài);當(dāng)三態(tài)緩沖器的輸出為高阻抗時(shí),就是對(duì)總線的隔離狀態(tài)。在隔離狀態(tài)下,緩沖器對(duì)數(shù)據(jù)總線不產(chǎn)生影響。3.單片機(jī)I/O編址技術(shù)

在計(jì)算機(jī)中,凡是需要進(jìn)行讀/寫(xiě)操作的設(shè)備都存在編址問(wèn)題。在單片機(jī)中,有兩個(gè)需要編址的子系統(tǒng)——即存儲(chǔ)器和接口電路。常用的編址方式有兩種:獨(dú)立編址、統(tǒng)一編址。

獨(dú)立編址:即把I/O和存儲(chǔ)器分開(kāi)進(jìn)行編址。這樣在一個(gè)單片機(jī)系統(tǒng)中就形成了兩個(gè)獨(dú)立的地址空間(存儲(chǔ)器空間和I/O地址空間),從而使存儲(chǔ)器讀/寫(xiě)操作和I/O操作是針對(duì)兩個(gè)不同的存儲(chǔ)空間的數(shù)據(jù)操作。

統(tǒng)一編址:即把I/O接口中的寄存器和存儲(chǔ)器中的存儲(chǔ)單元同等對(duì)待。即統(tǒng)一的地址空間既供存儲(chǔ)器使用,又供I/O使用。MCS-51單片機(jī)使用的就是統(tǒng)一編址方式。7.1.4單片機(jī)I/O控制方式

一個(gè)計(jì)算機(jī)系統(tǒng)的組成,除了CPU、存儲(chǔ)器外,還必須有外部設(shè)備。計(jì)算機(jī)通過(guò)輸入/輸出設(shè)備和外界進(jìn)行通信。計(jì)算機(jī)所用的數(shù)據(jù)以及現(xiàn)場(chǎng)采集的各種信息都要通過(guò)輸入設(shè)備送到計(jì)算機(jī);而計(jì)算的結(jié)果和計(jì)算機(jī)產(chǎn)生的各種控制信號(hào)又需通過(guò)輸出設(shè)備輸出到外部設(shè)備。

1.無(wú)條件傳送又稱同步傳送,CPU和外設(shè)之間沒(méi)有控制聯(lián)絡(luò),傳送比較簡(jiǎn)單,但可靠性差。當(dāng)外設(shè)任何時(shí)候都處于“準(zhǔn)備好”狀態(tài)時(shí)就可以采用這種傳送方式。公共汽車方式

2.查詢式傳送又稱異步傳送,CPU不斷查詢外設(shè),得到“準(zhǔn)備好”的信息再進(jìn)行數(shù)據(jù)傳送,否則就等待。優(yōu)點(diǎn)是可以很好地解決CPU和外設(shè)地速度匹配問(wèn)題。專車方式

3.中斷傳送利用CPU的中斷功能,外設(shè)可以通過(guò)I/O端口提出中斷請(qǐng)求,得到響應(yīng)后在中斷服務(wù)子程序中完成與CPU的數(shù)據(jù)交換。中斷方式可以使CPU和多個(gè)外設(shè)各自并行工作,避免了CPU不必要的等待和查詢,大大提高了CPU的工作效率。且該方式的實(shí)時(shí)性較好,適合于實(shí)時(shí)控制系統(tǒng)。TAXI方式

4.DMA傳送

DMA的含義是直接存儲(chǔ)器存取,是以數(shù)據(jù)塊為單位進(jìn)行數(shù)據(jù)傳送,數(shù)據(jù)傳送過(guò)程由DMA控制器控制完成,CPU不進(jìn)行干預(yù),并且此時(shí)CPU讓出三總線,當(dāng)數(shù)據(jù)傳送完成后,CPU再接管三總線。專列方式7.2單片機(jī)簡(jiǎn)單I/O擴(kuò)展1.簡(jiǎn)單輸入口擴(kuò)展

簡(jiǎn)單輸入口擴(kuò)展功能單一,只用于解決數(shù)據(jù)輸入的緩沖問(wèn)題,實(shí)際就是一個(gè)三態(tài)緩沖器,以達(dá)到當(dāng)輸入設(shè)備被選通時(shí),使數(shù)據(jù)源能與數(shù)據(jù)總線直接連通;而當(dāng)輸入設(shè)備處于非選通狀態(tài)時(shí),則把數(shù)據(jù)源與數(shù)據(jù)總線隔離,緩沖器輸出呈高阻抗?fàn)顟B(tài)。

通常使用芯片如74LS244來(lái)實(shí)現(xiàn)對(duì)輸入數(shù)據(jù)的三態(tài)緩沖。74LS244內(nèi)部有2個(gè)4位的三態(tài)緩沖器,因此一片74LS244可以擴(kuò)展一個(gè)8位輸入口(教材P175圖7.9)。2.簡(jiǎn)單輸出口擴(kuò)展

輸出口的主要功能是進(jìn)行數(shù)據(jù)保持,或者說(shuō)是數(shù)據(jù)鎖存。所以簡(jiǎn)單輸出口擴(kuò)展應(yīng)使用鎖存器芯片實(shí)現(xiàn)。

通常使用芯片74LS377,該芯片是一個(gè)具有“使能”控制端的8D鎖存器(教材P177圖7.13)。7.38255A可編程通用并行接口芯片7.3.18255A的內(nèi)部結(jié)構(gòu)與引腳7.3.28255A的工作方式7.3.38255A的控制字及初始化7.3.48255A與系統(tǒng)的連接7.3.58255A應(yīng)用舉例思考題7.3.18255A的內(nèi)部結(jié)構(gòu)與引腳8255A可編程并行輸入/輸出接口芯片是Intel公司生產(chǎn)的標(biāo)準(zhǔn)外圍接口電路。具有40條引腳,采用雙列直插式封裝。它有A、B、C三個(gè)端口,可以通過(guò)編程的方法來(lái)設(shè)定端口的各種I/O功能。由于它功能強(qiáng),又能方便地與各種微機(jī)系統(tǒng)相接,而且在連接外部設(shè)備時(shí),通常不需要再附加外部電路,所以得到了廣泛的應(yīng)用。1)數(shù)據(jù)端口A、B、C:這是3個(gè)8位數(shù)據(jù)端口,編程人員可以通過(guò)軟件將它們分別作為輸入端口或輸出端口,不過(guò)這3個(gè)端口在不同的工作方式下有不同的功能及特點(diǎn)(如表7-2)。1.8255A的內(nèi)部結(jié)構(gòu)(如圖7-15)

2)A組和B組控制電路:這是兩組根據(jù)CPU的命令字控制8255A工作方式的電路。分別決定兩組的工作方式,也可根據(jù)CPU的命令字對(duì)端口C的每1位實(shí)現(xiàn)按位“復(fù)位”或“置位”。

A組控制電路控制端口A和端口C的高半字節(jié)(PC7~PC4)。

B組控制電路控制端口B和端口C的低半字節(jié)(PC3~PC0)。圖7-158255A的內(nèi)部結(jié)構(gòu)圖表7-28255A端口功能表

2.8255A的芯片引腳(如圖7-16)

(1)與外設(shè)相連接的有:PA7~PA0:A口數(shù)據(jù)線

PB7~PB0:B口數(shù)據(jù)線

PC7~PC0:C口數(shù)據(jù)線(2)與CPU相連接的有:D7~D0:8255A的數(shù)據(jù)線

RESET:復(fù)位信號(hào):片選信號(hào):讀信號(hào):寫(xiě)信號(hào)CSRDWRA1、A0:端口選擇信號(hào)(表7-3)圖7-168255A的芯片引腳圖表7-38255A端口選擇表

7.3.28255A的工作方式

圖7-178255A的3種工作方式(a)方式0;(b)方式1;(c)方式2

這種工作方式不需要任何選通信號(hào),A口、B口及C口的高4位和低4位都可以設(shè)定為輸入或輸出。1.方式0(基本輸入/輸出方式)

在這種方式下,A、B、C三個(gè)口將分為兩組。A組包括A口和C口的高4位,A口可由編程設(shè)定為輸入口或輸出口,C口的高4位則用來(lái)作為輸入/輸出操作的控制和同步信號(hào);B組包括B口和C口的低4位,B口可由編程設(shè)定為輸入口或輸出口,C口的低4位則用來(lái)作為輸入/輸出操作的控制和同步信號(hào)。2.方式1(選通輸入/輸出方式)

圖7-18方式1下的信號(hào)定義(a)A口、B口均為輸入時(shí);(b)A口、B口均為輸出時(shí)①STB(Strobe):選通信號(hào)外設(shè)發(fā)出,送給8255A。作用是將外設(shè)送來(lái)的數(shù)據(jù)鎖存到8255A的輸入端口。②IBF(InputBufferFull):輸入緩沖器滿信號(hào)8255A發(fā)出,送給單片機(jī)。當(dāng)外設(shè)送來(lái)的數(shù)據(jù)送入輸入端口后,8255A自動(dòng)發(fā)出IBF,通知單片機(jī)可以來(lái)讀取數(shù)據(jù)了。③INTR(InterruptRequest):中斷請(qǐng)求信號(hào)8255A發(fā)出,送給單片機(jī)。用來(lái)向CPU發(fā)出中斷申請(qǐng)。⑤ACK:外設(shè)響應(yīng)信號(hào)外設(shè)發(fā)出,送給8255A。作用是通知8255A,輸出端口的數(shù)據(jù)已被外設(shè)取走,可以傳送下一個(gè)數(shù)據(jù)。8255A發(fā)出,送給外設(shè)。表示CPU送來(lái)的數(shù)據(jù)已進(jìn)入8255A輸出端口,可用來(lái)通知外設(shè)把數(shù)據(jù)取走。④OBF(OutputBufferFull):輸出緩沖器滿信號(hào)

這種工作方式下,A口為8位雙向數(shù)據(jù)口,C口的PC3~PC7用來(lái)作為輸入/輸出的控制同步信號(hào)。如下圖所示,3.方式2(雙向數(shù)據(jù)傳送方式)圖

5

|19方式

2下的信號(hào)定義

1)工作方式控制字:用于確定各口的工作方式及數(shù)據(jù)傳送方向,其格式如圖7-20(a)所示。7.3.38255A的控制字及初始化1.8255A的控制字

2)

C口置位/復(fù)位控制字:可以很方便地使C口8位中的任一位清0或置1,該控制字的格式如圖7-20(b)所示。D7位為該控制字的標(biāo)志位,D7=0為C口置位/復(fù)位控制字。

圖7-208255A控制字格式(a)工作方式控制字;(b)C口置位/復(fù)位控制字8255A初始化的內(nèi)容就是向控制寄存器寫(xiě)入工作方式控制字或C口置位/復(fù)位控制字。這兩個(gè)控制字可按同一地址寫(xiě)入且不受先后順序限制。由于兩個(gè)控制字因標(biāo)志位的狀態(tài)不同,因此8255A能加以區(qū)分。2.8255A的初始化

例:設(shè)置8255A的A口為方式0輸入,B口為方式0輸出,C口高位部分為輸出、低位部分為輸入,設(shè)控制寄存器的地址為03FFH。試編程對(duì)8255A進(jìn)行初始化。解:根據(jù)題意有,D0=1:C口低半部輸入;

D1=0:B口輸出;

D2=0:B口方式0;

D3=0:C口高半部輸出;

D4=1:A口輸入;

D6D5=00:A口方式0;

因此8255A的工作方式控制字為10010001B即91H。初始化程序段為:

MOVDPTR,#03FFHMOVA,#91HMOVX@DPTR,A8255A是Intel公司專為其主機(jī)配套設(shè)計(jì)制造的標(biāo)準(zhǔn)化外圍接口芯片,它與MCS-51單片機(jī)的連接是比較簡(jiǎn)單方便的。圖7-21所示為采用線選法在8031單片機(jī)外圍擴(kuò)展8255A。7.3.48255A與系統(tǒng)的連接圖7-218031與8255A的連接

上圖中,P0口為地址/數(shù)據(jù)復(fù)用口。數(shù)據(jù)通過(guò)P0口直接傳送,地址的低8位通過(guò)鎖存器74LS373得到,地址的高8位則由P2口傳送。現(xiàn)采用線選法,地址線P2.7作為線選信號(hào),直接與8255A的片選端相連,而A1、A0則與地址的最末2位相連。于是可得到8255A各個(gè)端口的地址如下表所示,CS表7-48255A各端口的地址

例1:圖7-21中,8255A的PA口接一組開(kāi)關(guān)、PB口接一組指示燈,如果要將開(kāi)關(guān)狀態(tài)讀入8031的累加器A,并送指示燈顯示,試寫(xiě)出8255A的初始化和輸入輸出程序。7.3.58255A應(yīng)用舉例

分析:由圖可知,8255A的PA口、PB口、PC口、控制口的地址分別為0000H、0001H、0002H、0003H(或7FFCH、7FFDH、7FFEH、7FFFH)。PA口選擇方式0,輸入。PB口選擇方式0,輸出。PC口沒(méi)有作特別限制,故8255A的方式控制字為:10010000B,即98H。MOVDPTR,#7FFFHMOVA,#98HMOVX@DPTR,AMOVDPTR,#7FFCHMOVXA,@DPTRMOVDPTR,#7FFDHMOVX@DPTR,A;指向8255A控制字的地址;把方式控制字寫(xiě)到累加器A中;給8255A送方式控制字;指向8255A的PA口地址;從PA口讀入開(kāi)關(guān)的狀態(tài);指向8255A的PB口地址;把開(kāi)關(guān)的狀態(tài)從PB口輸出,給;指示燈顯示

例2:8255A作為連接打印機(jī)的接口。要求編制打印50個(gè)字符的程序,該數(shù)據(jù)存于片內(nèi)RAM從20H開(kāi)始的50個(gè)連續(xù)單元中。

分析:圖7-22是通過(guò)8255A連接打印機(jī)的接口電路,數(shù)據(jù)傳送采用查詢方式。8255A的地址譯碼采用線選法,將P0.7直接與8255A的端相連(通過(guò)地址鎖存器)。CS

8255A的端口地址:A口為7CH,B口為7DH,C口為7EH,控制口為7FH(對(duì)懸空的地址線取“1”)。

由于A口輸出;C口低字節(jié)輸出、高字節(jié)輸入;B口沒(méi)有使用。A口選擇方式0。故控制字為:10001000B,即88H。圖7-228255A連接打印機(jī)的接口電路8255A解:根據(jù)題意,編制程序如下:

MOVR0,#7FH;指向8255A的控制口

MOVA,#88H;

A口輸出,C口低出高入

MOVX@R0,A;送入方式字

MOVR1,#20H;R1指向數(shù)據(jù)區(qū)首址

MOVR2,#32H;送數(shù)據(jù)塊長(zhǎng)度

LP1:MOVR0,#7EH;指向C口

注:打印機(jī)各信號(hào)線

DB0~DB7:數(shù)據(jù)線,單向傳輸,由單片機(jī)輸入給打印機(jī)。

STB(STROBE):數(shù)據(jù)選通信號(hào)。在該信號(hào)的上升沿,數(shù)據(jù)線上的8位并行數(shù)據(jù)被打印機(jī)讀入機(jī)內(nèi)瑣存。

BUSY:打印機(jī)忙狀態(tài)信號(hào)。當(dāng)BUSY=1時(shí),表示打印機(jī)正忙于處理數(shù)據(jù),此時(shí),打印機(jī)不得使STB=0。LP2:MOVXA,@R0;讀入C口信息

JBACC.7,LP2;若BUSY=1,繼續(xù)查詢

MOVR0,#7CH;指向A口

MOVA,@R1;取RAM數(shù)據(jù)(片內(nèi)到片外的數(shù)據(jù)傳送)

MOVX@R0,A;數(shù)據(jù)輸出到A口

INCR1;數(shù)據(jù)指針加1MOVR0,#7FH;指向控制口

MOVA,#00H;C口置位/復(fù)位命令字(PC0=0)MOVX@R0,A;在STB引腳產(chǎn)生低電平

MOVA,#01H;改變C口置位/復(fù)位命令字(PC0=1)MOVX@R0,A;在STB引腳產(chǎn)生高電平

DJNZR2,LP1;未完,則反復(fù)

7.48155帶RAM和定時(shí)器/計(jì)數(shù)器

的可編程并行接口芯片Intel公司研制的8155不僅具有兩個(gè)8位的I/O端口(A口、B口)和一個(gè)6位的I/O端口(C口),而且還可以提供256?B的靜態(tài)RAM存儲(chǔ)器和一個(gè)14位的定時(shí)/計(jì)數(shù)器。8155和單片機(jī)的接口非常簡(jiǎn)單,目前被廣泛應(yīng)用。

1.8155的結(jié)構(gòu)和引腳

8155有40個(gè)引腳,采用雙列直插封裝。圖7-98155的引腳圖和結(jié)構(gòu)框圖

我們對(duì)8155的引腳分類說(shuō)明如下:(1)地址/數(shù)據(jù)線AD0~AD7(8條):是低8位地址線和數(shù)據(jù)線的共用輸入總線,常和51單片機(jī)的P0口相連,用于分時(shí)傳送地址數(shù)據(jù)信息,當(dāng)ALE=1時(shí),傳送的是地址。(2)I/O口總線(22條):PA0~PA7、PB0~PB7分別為A、B口線,用于和外設(shè)之間傳遞數(shù)據(jù);PC0~PC5為C端口線,既可與外設(shè)傳送數(shù)據(jù),也可以作為A、B口的控制聯(lián)絡(luò)線。(3)控制總線(8條)

RESET:復(fù)位線,通常與單片機(jī)的復(fù)位端相連,復(fù)位后,8155的3個(gè)端口都為輸入方式。

IO/M:RAM或I/O口的選擇線。當(dāng)=0時(shí),選中8155的256BRAM;當(dāng)=1時(shí),選中8155片內(nèi)3個(gè)I/O端口以及命令/狀態(tài)寄存器和定時(shí)/計(jì)數(shù)器。

CE

:片選線,低電平有效。

RD,WR

:讀/寫(xiě)線,控制8155的讀、寫(xiě)操作。

ALE:地址鎖存線,高電平有效。它常和單片機(jī)的ALE端相連,在ALE的下降沿將單片機(jī)P0口輸出的低8位地址信息鎖存到8155內(nèi)部的地址鎖存器中。因此,單片機(jī)的P0口和8155連接時(shí),無(wú)需外接鎖存器。

TIMERIN、TIMEROUT:定時(shí)/計(jì)數(shù)器的脈沖輸入、輸出線。TIMERIN是脈沖輸入線,其輸入脈沖對(duì)8155內(nèi)部的14位定時(shí)/計(jì)數(shù)器減1;為輸出線,當(dāng)計(jì)數(shù)器計(jì)滿回0時(shí),8155從該線輸出脈沖或方波,波形形狀由計(jì)數(shù)器的工作方式?jīng)Q定。

2.作片外RAM使用

當(dāng)CE=0,IO/M=0時(shí),8155只能做片外RAM使用,共256B。其尋址范圍由AD0~AD7的接法決定,這和前面講到的片外RAM擴(kuò)展時(shí)討論的完全相同。當(dāng)系統(tǒng)同時(shí)擴(kuò)展片外RAM芯片時(shí),要注意二者的統(tǒng)一編址。對(duì)這256BRAM的操作使用片外RAM的讀/寫(xiě)指令“MOVX”。

3.作擴(kuò)展I/O口使用

當(dāng)CE=0,IO/M=1時(shí),此時(shí)可以對(duì)8155片內(nèi)3個(gè)I/O端口以及命令/狀態(tài)寄存器和定時(shí)/計(jì)數(shù)器進(jìn)行操作。與I/O端口和計(jì)數(shù)器使用有關(guān)的內(nèi)部寄存器共有6個(gè),需要三位地址來(lái)區(qū)分,表7-5為地址分配情況。表7-56個(gè)內(nèi)部寄存器的地址分配表

AD7~AD0選中寄存器A7A6A5A4A3A2A1A0×××××000×××××001×××××010×××××011×××××100×××××101內(nèi)部命令/狀態(tài)寄存器PA口PB口PC口定時(shí)/計(jì)數(shù)器低8位寄存器定時(shí)/計(jì)數(shù)器高8位寄存器

(1)命令寄存器

和接口芯片8255一樣,芯片8155I/O口的工作方式的確定也是通過(guò)對(duì)8155的命令寄存器寫(xiě)入控制字來(lái)實(shí)現(xiàn)的。8155控制字的格式如圖7-10所示。命令寄存器只能寫(xiě)入不能讀出,也就是說(shuō),控制字只能通過(guò)指令MOVX@DPTR,A或MOVX@Ri,A寫(xiě)入命令寄存器。

圖7-108155的控制字

(2)狀態(tài)寄存器:狀態(tài)寄存器中存放有狀態(tài)字,狀態(tài)字反映了8155的工作情況,狀態(tài)字的各位定義如圖7-11所示.圖7-118155的狀態(tài)字

4.I/O口的工作方式

當(dāng)使用8155的三個(gè)I/O端口時(shí),它們可以工作于不同的方式,工作方式的選擇取決于寫(xiě)入的控制字,如圖7-10所示。其中,A、B口可以工作于基本I/O方式或選通I/O方式,C口可工作于基本I/O方式,也可以作為A、B選通方式時(shí)的控制聯(lián)絡(luò)線。

方式1、2時(shí),A、B、C口都工作于基本I/O方式,可以直接和外設(shè)相連,采用“MOVX”類的指令進(jìn)行輸入/輸出操作。

方式3時(shí),A口為選通I/O方式,由C口的低三位作聯(lián)絡(luò)線,其余位作I/O線;B口為基本I/O方式。

方式4時(shí),A、B口均為選通I/O方式,C口作為A、B口的聯(lián)絡(luò)線。其邏輯組態(tài)如圖7-12所示。圖7-128155方式4時(shí)的邏輯結(jié)構(gòu)

C口的工作方式和各位的關(guān)系見(jiàn)表7-6。

方式1方式2方式3方式4PC0PC1PC2PC3PC4PC5全部為輸入全部為輸出A口中斷請(qǐng)求A口緩沖器滿A口選通輸出輸出輸出A口中斷請(qǐng)求A口緩沖器滿A口選通B口中斷請(qǐng)求B口緩沖器滿B口選通表7-6C口的工作方式8155的可編程定時(shí)/計(jì)數(shù)器是一個(gè)14位的減法計(jì)數(shù)器,在TIMERIN端輸入計(jì)數(shù)脈沖,計(jì)滿時(shí)由

輸出脈沖或方波,輸出方式由定時(shí)器高8位寄存器中的M2、M1兩位來(lái)決定。當(dāng)TIMERIN接外脈沖時(shí)為計(jì)數(shù)方式,接系統(tǒng)時(shí)鐘時(shí)為定時(shí)方式,實(shí)際使用時(shí)一定要注意芯片允許的最高計(jì)數(shù)頻率!

5.作定時(shí)/計(jì)數(shù)器使用

定時(shí)/計(jì)數(shù)器的初始值和輸出方式由高、低8位寄存器的內(nèi)容決定,初始值14位,其余兩位定義輸出方式。其中,低8位寄存器存放計(jì)數(shù)初始值的低8位,高8位寄存器的格式如下:輸出方式計(jì)數(shù)初始值高6位M2M1

1)定時(shí)/計(jì)數(shù)器的輸出方式

定時(shí)器的輸出方式見(jiàn)表7-7。

表7-7定時(shí)器的輸出方式M2M1方式波形00011011在一個(gè)計(jì)數(shù)周期輸出單次方波連續(xù)方波在計(jì)滿回0后輸出的單個(gè)脈沖連續(xù)脈沖

2)定時(shí)/計(jì)數(shù)器的工作

8155對(duì)內(nèi)部定時(shí)器的控制是由8155控制字的D7、D6位決定的(見(jiàn)圖7-11),現(xiàn)總結(jié)如表7-8所示。表7-8定時(shí)/計(jì)數(shù)器的工作情況8155的控制字定時(shí)/計(jì)數(shù)器工作情況D7D600無(wú)操作,即不影響定時(shí)器的工作0110立即停止定時(shí)器的計(jì)數(shù)定時(shí)器計(jì)滿回0后停止計(jì)數(shù)11若定時(shí)器不工作,則開(kāi)始計(jì)數(shù);若定時(shí)器正在計(jì)數(shù),則計(jì)滿回0后按新輸入的長(zhǎng)度值開(kāi)始計(jì)數(shù)【例7-1】編寫(xiě)8155定時(shí)器作100分頻器的程序。設(shè)8155命令寄存器的地址為0000H,定時(shí)器低字節(jié)寄存器的地址為0004H,定時(shí)器高字節(jié)寄存器的地址為0005H。編程如下:ORG1000HMOVDPTR,#0004H;指向定時(shí)器低字節(jié)寄存器地址MOVA,#64HMOVX@DPTR,A;裝入定時(shí)器初值低8位值INCDPTR;指向定時(shí)器高字節(jié)寄存器地址MOVA,#40HMOVX@DPTR,A;設(shè)定時(shí)器輸出方式為連續(xù)方波MOVDPTR,#0000H;指向命令寄存器地址MOVA,#0C0HMOVX@DPTR,A;裝入命令字,開(kāi)始計(jì)數(shù)SJMP $MCS-51和8155的接口非常簡(jiǎn)單,因?yàn)?155內(nèi)部有一個(gè)8位地址鎖存器,故無(wú)需外接鎖存器。在二者的連接中,8155的地址譯碼即片選端可以采用線選法、全譯碼等方法,這和8255類似。在整個(gè)單片機(jī)應(yīng)用系統(tǒng)中要考慮與片外RAM及其它接口芯片的統(tǒng)一編址,確定8155的相關(guān)地址。圖7-13為一個(gè)連接實(shí)例。

6.MCS-51單片機(jī)和8155的接口圖7-138155和8051的接口電路80518155RSTRESETALEALERDRDWRWRP0AD0~AD7CEIO/MP2.1P2.2+5VPAPBPC8根據(jù)上述、的連接關(guān)系,可以確定地址如下:8051:A15A14A13A12A11A10A9A8P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.08155的IO/MCERAM:

××

×××00×I/O口:

××

×××00×8051:

A7A6A5A4A3A2A1A0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.08155:

AD7AD000000000........................11111111I/O口:

××××××××……××××××××

此時(shí),8155內(nèi)部RAM的地址范圍為:0000H~00FFH,8155各端口的地址(設(shè)無(wú)關(guān)位為0,這些地址都不是惟一的)為:

命令/狀態(tài)口 0400HA口 0401HB口 0402HC口 0403H

定時(shí)器低字節(jié)?0404H

定時(shí)器高字節(jié)?0405H7.58279可編程鍵盤(pán)/顯示器接口芯片

8279是可編程的鍵盤(pán)顯示接口芯片,它能自動(dòng)完成鍵盤(pán)的掃描輸入和LED掃描顯示輸出。鍵盤(pán)部分提供的掃描方式,可以和具有64個(gè)觸點(diǎn)的鍵盤(pán)或傳感器相連。能自動(dòng)清除按鍵抖動(dòng),并實(shí)現(xiàn)多鍵同時(shí)按下的保護(hù)。顯示部分按掃描方式工作,可以連接8位或16位LED顯示塊。8279單片機(jī)鍵盤(pán)LED7.58279可編程鍵盤(pán)/顯示器接口芯片

芯片接口控制邏輯鍵盤(pán)接口控制邏輯顯示接口控制邏輯數(shù)據(jù)緩沖器I/O控制FIFO/傳感器RAM的狀態(tài)寄存器控制與定時(shí)寄存器8×8FIFO/傳感器RAM鍵盤(pán)反彈與控制定時(shí)與控制掃描計(jì)數(shù)器回送顯示寄存器顯示地址寄存器16×8顯示RAMD0~D7RDWRCSA0IRQ時(shí)鐘復(fù)位OUTA0~OUTA3OUTB0~OUTB3BDSL0~SL3RL0~RL7SHIFTCtrl一、8279的電路邏輯

8279的電路邏輯分為芯片接口控制邏輯、鍵盤(pán)接口控制邏輯、顯示器接口控制邏輯三部分。

芯片接口控制邏輯是8279和單片機(jī)的接口部分。主要包括:1、芯片接口控制邏輯

數(shù)據(jù)緩沖器-用于8279和單片機(jī)之間的數(shù)據(jù)傳送。

I/O控制電路-用于接收單片機(jī)方面送來(lái)的控制信號(hào),進(jìn)而產(chǎn)生

8279內(nèi)部的控制信號(hào)。

中斷請(qǐng)求產(chǎn)生電路

-如果有按鍵按下,則向單片機(jī)產(chǎn)生中斷請(qǐng)求信號(hào)。

鍵盤(pán)接口控制邏輯是8279和鍵盤(pán)的接口部分。主要包括:

掃描電路-用于為鍵盤(pán)提供行掃描輸出信號(hào)。有兩種輸出形式,即內(nèi)部譯碼方式、外部譯碼方式。2、鍵盤(pán)接口控制邏輯

掃描回送電路-輸入每次掃描的列檢測(cè)輸入信號(hào),以搜索閉合鍵。

去抖動(dòng)及鍵碼生成電路-大約延時(shí)10ms去抖動(dòng)。并由鍵碼生成電路將該鍵的行列號(hào)、換擋鍵、控制鍵等狀態(tài)結(jié)合起來(lái),生成閉合鍵的鍵碼,送入FIFO存儲(chǔ)器區(qū)中。

鍵盤(pán)存儲(chǔ)器區(qū)FIFORAM

-包括8個(gè)先進(jìn)先出的存儲(chǔ)單元,用于存儲(chǔ)閉合鍵的鍵碼數(shù)據(jù)。

時(shí)序和控制邏輯-用于對(duì)鍵盤(pán)掃描進(jìn)行控制。

顯示器接口控制邏輯是8279和LED顯示器的接口部分。主要包括:

顯示存儲(chǔ)區(qū)-8279可以連接8位或16位的LED顯示器。為給每位LED

提供顯示數(shù)據(jù),在8279芯片內(nèi)部有一個(gè)16×8的RAM存儲(chǔ)區(qū),其中每一個(gè)字節(jié)的RAM單元對(duì)應(yīng)一位LED。3、顯示器接口控制邏輯

顯示緩沖器-用于為顯示器提供段控?cái)?shù)據(jù)。使用時(shí),8279自動(dòng)對(duì)顯示器掃描,將顯示緩沖器中的數(shù)據(jù)輸出在LED上顯示出來(lái)。二、8279內(nèi)部結(jié)構(gòu)和引腳

下圖是8279的內(nèi)部結(jié)構(gòu)圖,它主要分為6個(gè)部分:(1)I/O控制及數(shù)據(jù)緩沖器;(2)控制與定時(shí)寄存器及定時(shí)控制;(3)掃描計(jì)數(shù)器;(4)回復(fù)緩沖器,鍵盤(pán)反彈與控制;(5)FIFO傳感器RAM及其狀態(tài)寄存器;(6)顯示RAM和顯示地址寄存器。數(shù)據(jù)緩沖器I/O控制FIFO/傳感器RAM的狀態(tài)寄存器控制與定時(shí)寄存器8×8FIFO/傳感器RAM鍵盤(pán)反彈與控制定時(shí)與控制掃描計(jì)數(shù)器回送顯示寄存器顯示地址寄存器16×8顯示RAMD0~D7RDWRCSA0IRQ時(shí)鐘復(fù)位OUTA0~OUTA3OUTB0~OUTB3BDSL0~SL3RL0~RL7SHIFTCtrl8279RL0~RL7SHIFTCNTL/STBSL0~SL3OUTA0~OUTA3OUTB0~OUTB3BDIRQDB0~DB7RDWRCSA0RESETCLK鍵盤(pán)接口顯示接口CPU接口二、8279的命令字和狀態(tài)字

命令字狀態(tài)字段碼鍵值8279單片機(jī)控制口數(shù)據(jù)口鍵盤(pán)LED段碼鍵值A(chǔ)0=1A0=0

命令字和狀態(tài)字共用一個(gè)端口地址。單片機(jī)輸出時(shí)為命令字;單片機(jī)輸入時(shí)為狀態(tài)字。

8279有8個(gè)可編程的命令字,用來(lái)設(shè)定鍵盤(pán)和LED顯示器的工作方式,實(shí)現(xiàn)對(duì)各種數(shù)據(jù)的讀、寫(xiě)操作。有1個(gè)狀態(tài)字,用于反應(yīng)鍵盤(pán)的FIFORAM的工作狀態(tài)。1、鍵盤(pán)/顯示方式設(shè)置命令000DDKKKD7D6D5D4D3D2D1D0D4D3:設(shè)定顯示方式008個(gè)字符顯示,左入口;0116個(gè)字符顯示,左入口;108個(gè)字符顯示,右入口;1116個(gè)字符顯示,右入口。D2D1D0:設(shè)定七種鍵盤(pán)工作方式000編碼掃描,雙鍵鎖定;001譯碼掃描,雙鍵鎖定;010編碼掃描,N鍵輪回;011譯碼掃描,N鍵輪回;100編碼掃描傳感器矩陣;101譯碼掃描傳感器矩陣;110選通輸入,編碼顯示掃描;111選通輸入,譯碼顯示掃描。2、編程時(shí)鐘命令001PPPPPD7D6D5D4D3D2D1D0D4D3D2D1D0:設(shè)定對(duì)CLK端輸入時(shí)鐘的分頻次數(shù)NN=2~313、讀FIFO傳感器RAM命令D2D1D0:要讀取的傳感器RAM地址。D4:自動(dòng)地址增量標(biāo)志,每讀出一字節(jié)后,AAA地址自動(dòng)加1。010AIXAAAD7D6D5D4D3D2D1D04、讀顯示RAM命令011AIAAAAD7D6D5D4D3D2D1D0D3D2D1D0:用來(lái)尋址顯示RAM的16個(gè)存儲(chǔ)單元。D4:地址自動(dòng)增量標(biāo)志。5、寫(xiě)顯示RAM命令D3D2D1D0:將要寫(xiě)入的顯示RAM地址。D4:地址自動(dòng)增量標(biāo)志。100AIAAAAD7D6D5D4D3D2D1D06、顯示禁止寫(xiě)入/消隱命令101XIW/AIW/BBL/ABL/BD7D6D5D4D3D2D1D0D3D2:A、B組顯示RAM寫(xiě)入屏蔽位,為1時(shí)顯示RAM禁止寫(xiě)入。D1D0:消隱設(shè)置位。為1時(shí)輸出消隱,為0時(shí)恢復(fù)顯示。7、結(jié)束中斷/錯(cuò)誤方式設(shè)置命令D4:為1時(shí)有效。111EXXXXD7D6D5D4D3D2D1D08、清除命令110CDCDCDCFCAD7D6D5D4D3D2D1D0D4D3D2:用于設(shè)置清除RAM方式。

10X:將顯示RAM全部清“0”;

110:將顯示RAM清成20H;

111:將顯示RAM全部清“1”。D1:用來(lái)置空FIFORAM。D0:為總清特征值。它兼有CD和CF的聯(lián)合效用。9、8279的狀態(tài)字DUS/EOUFNNND7D6D5D4D3D2D1D0D7:為1表示顯示無(wú)效。D6:為1表示傳感器的最后一個(gè)信號(hào)已進(jìn)入或出現(xiàn)了多鍵同時(shí)按下的錯(cuò)誤。D5、D4:數(shù)據(jù)超出,不足標(biāo)志。D3:為1時(shí)表示FIFORAM中8個(gè)數(shù)據(jù)已滿。D2、D1、D0:指明FIFORAM中的數(shù)據(jù)個(gè)數(shù)。三、8279和8031的接口

下圖是8031、8279與鍵盤(pán)、LED顯示器的接口電路。當(dāng)有鍵按下時(shí),8279可用中斷方式通知8031。編程實(shí)現(xiàn)功能為:當(dāng)有鍵00H~0FH按下時(shí),完成鍵值獲取,并用LED輸出顯示鍵值。位驅(qū)動(dòng)RL0...RL7Y0Y1Y2Y4Y5Y3ABCSL0SL1SL2段驅(qū)動(dòng)803174LS373..CLKA0D0...D7ALEP0.0...P0.78279CERDWRIRQP2.5RDWRINT0OUTA3...OUTB0.74LS138........MAIN:MOVDPTR,#5FFFH MOVA,#2AH MOVX@DPTR,A MOVA,#0DCH MOVX@DPTR,A ACALLDELAY MOVA,#10H MOVX@DPTR,A MOVA,#80H MOVX@DPTR,A MOVA,#8CH MOVDPTR,#5FFEH MOVX@DPTR,A ……7.6MCS-51單片機(jī)鍵盤(pán)接口技術(shù)7.6.1按鍵工作原理7.6.2獨(dú)立式按鍵7.6.3

矩陣式按鍵7.6.4鍵盤(pán)的工作方式

1.按鍵的分類

按鍵按照結(jié)構(gòu)原理可分為兩類,一類是觸點(diǎn)式開(kāi)關(guān)按鍵,如機(jī)械式開(kāi)關(guān)、導(dǎo)電橡膠式開(kāi)關(guān)等;另一類是無(wú)觸點(diǎn)式開(kāi)關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價(jià)低,后者壽命長(zhǎng)。目前,微機(jī)系統(tǒng)中最常見(jiàn)的是觸點(diǎn)式開(kāi)關(guān)按鍵。7.6.1按鍵工作原理

按鍵照接口原理可分為編碼鍵盤(pán)與非編碼鍵盤(pán)兩類,這兩類鍵盤(pán)的主要區(qū)別是識(shí)別鍵符及給出相應(yīng)鍵碼的方法。編碼鍵盤(pán)主要是用硬件來(lái)實(shí)現(xiàn)對(duì)鍵的識(shí)別,非編碼鍵盤(pán)主要是由軟件來(lái)實(shí)現(xiàn)鍵盤(pán)的定義與識(shí)別。

編碼鍵盤(pán)需要較多的硬件,價(jià)格較貴,一般的單片機(jī)應(yīng)用系統(tǒng)較少采用,而主要采用非編碼鍵盤(pán)。

2.鍵輸入原理

在單片機(jī)應(yīng)用系統(tǒng)中,除了復(fù)位按鍵有專門(mén)的復(fù)位電路及專一的復(fù)位功能外,其它按鍵都是以開(kāi)關(guān)狀態(tài)來(lái)設(shè)置控制功能或輸入數(shù)據(jù)的。當(dāng)所設(shè)置的功能鍵或數(shù)字鍵按下時(shí),計(jì)算機(jī)應(yīng)用系統(tǒng)應(yīng)完成該按鍵所設(shè)定的功能,鍵信息輸入是與軟件結(jié)構(gòu)密切相關(guān)的過(guò)程。對(duì)于一組鍵或一個(gè)鍵盤(pán),總有一個(gè)接口電路與CPU相連。CPU可以采用查詢或中斷方式了解有無(wú)將鍵輸入,并檢查是哪一個(gè)鍵按下,將該鍵號(hào)送入累加器ACC,然后通過(guò)跳轉(zhuǎn)指令轉(zhuǎn)入執(zhí)行該鍵的功能程序,執(zhí)行完后再返回主程序。3.按鍵結(jié)構(gòu)與特點(diǎn)

機(jī)械式按鍵再按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來(lái)。其抖動(dòng)過(guò)程如圖7-14所示,抖動(dòng)時(shí)間的長(zhǎng)短與開(kāi)關(guān)的機(jī)械特性有關(guān),一般為510ms。

圖7-14按鍵觸點(diǎn)的機(jī)械抖動(dòng)

在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò),即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是多次操作,這種情況是不允許出現(xiàn)的。為了克服按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測(cè)誤判,必須采取去抖動(dòng)措施。這一點(diǎn)可從硬件、軟件兩方面予以考慮。在鍵數(shù)較少時(shí),可采用硬件去抖,而當(dāng)鍵數(shù)較多時(shí),采用軟件去抖。現(xiàn)主要介紹軟件去抖的方法。

軟件上采取的措施是:在檢測(cè)到有按鍵按下時(shí),執(zhí)行一個(gè)10ms左右(具體時(shí)間應(yīng)視所使用的按鍵進(jìn)行調(diào)整)的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,若仍保持閉合狀態(tài)電平,則確認(rèn)該鍵處于閉合狀態(tài)。同理,在檢測(cè)到該鍵釋放后,也應(yīng)采用相同的步驟進(jìn)行確認(rèn),從而可消除抖動(dòng)的影響。

一組按鍵或鍵盤(pán)將采用某種編碼方式,轉(zhuǎn)換成為與累加器中數(shù)值相對(duì)應(yīng)的鍵值,以實(shí)現(xiàn)按鍵功能程序的跳轉(zhuǎn)。4.按鍵編碼

5.編址鍵盤(pán)程序

(1)檢測(cè)有無(wú)按鍵按下,并消除抖動(dòng)。

(2)每次處理一個(gè)按鍵。即其間對(duì)任何按鍵的操作對(duì)系統(tǒng)不產(chǎn)生影響,且無(wú)論一次按鍵時(shí)間有多長(zhǎng),系統(tǒng)僅執(zhí)行一次按鍵功能程序。

(3)準(zhǔn)確輸出按鍵值(或鍵號(hào)),以滿足跳轉(zhuǎn)指令要求。7.6.2獨(dú)立式按鍵

單片機(jī)控制系統(tǒng)中,往往只需要幾個(gè)功能鍵,此時(shí),可采用獨(dú)立式按鍵結(jié)構(gòu)。

1.獨(dú)立式按鍵結(jié)構(gòu)

獨(dú)立式按鍵是直接用I/O口線構(gòu)成的單個(gè)按鍵電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一根I/O口線,每個(gè)按鍵的工作不會(huì)影響其它I/O口線的狀態(tài),如圖7-15所示。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口線,因此,在按鍵較多時(shí),I/O口線浪費(fèi)較大,不宜采用。7-15獨(dú)立式按鍵電路

2.獨(dú)立式按鍵的軟件結(jié)構(gòu)

獨(dú)立式按鍵的軟件常采用查詢式結(jié)構(gòu)。先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認(rèn)該I/O口線所對(duì)應(yīng)的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。7.6.3矩陣式按鍵

單片機(jī)系統(tǒng)中,若使用按鍵較多時(shí),通常采用矩陣式(也稱行列式)鍵盤(pán)。

1.矩陣式鍵盤(pán)的結(jié)構(gòu)及原理

矩陣式鍵盤(pán)由行線和列線組成,按鍵位于行、列線的交叉點(diǎn)上,其結(jié)構(gòu)如圖7-16所示。由圖可知,一個(gè)4×4的行、列結(jié)構(gòu)可以構(gòu)成一個(gè)含有16個(gè)按鍵的鍵盤(pán),顯然,在按鍵數(shù)量較多時(shí),矩陣式鍵盤(pán)較之獨(dú)立式按鍵鍵盤(pán)要節(jié)省很多I/O口。圖7-16矩陣式鍵盤(pán)結(jié)構(gòu)

下圖即是8031與行列式鍵盤(pán)的接口電路。其中P1口作鍵盤(pán)接口,P1.0~P1.3作鍵盤(pán)的行掃描輸出線,P1.4~P1.7作列檢測(cè)輸入線。P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.78031+5V10kΩ...圖7-178031與行列式鍵盤(pán)的接口電路2.鍵盤(pán)掃描程序的步驟

(1)CPU判斷是否有鍵按下。首先單片機(jī)向行掃描口P1.0~P1.3輸出全“0”的掃描碼0F0H,然后從列檢查口P1.4~P1.7輸入列檢查信號(hào),只要讀入的P1口不為0F0H,就表示至少有一列信號(hào)不為“1”,即有鍵按下。

(2)判斷按下鍵所在的行列號(hào)。輸出掃描碼F0H后,從P1口讀入信息,P1.4~P1.7中為“0”的位便是鍵所在的列。接下來(lái)確定行號(hào),需要逐行掃描。單片機(jī)首先使P1.0接地,P1.1~P1.7為“1”,即向P1口發(fā)送掃描碼0FEH,接著讀入列檢查信號(hào),若P1.4~P1.7全為“1”,表示不在第1行。接著使P1.1接地,……,這樣逐行發(fā)“0”掃描碼,直到找到按下鍵所在行。

(3)對(duì)得到的行號(hào)和列號(hào)進(jìn)行譯碼,得到機(jī)器內(nèi)部能夠識(shí)別的鍵值。例如:找到閉合鍵在第1行,第3列。如果每行有4個(gè)按鍵,則該閉合鍵的鍵值為“1×4+3=7”。得出鍵號(hào)后,就可以轉(zhuǎn)入相應(yīng)處理程序。

(4)按鍵的抖動(dòng)處理。當(dāng)用手按下一個(gè)鍵時(shí),往往會(huì)出現(xiàn)所按鍵在閉合位置和斷開(kāi)位置之間跳幾下才能穩(wěn)定到閉合狀態(tài),釋放一個(gè)鍵時(shí),也有類似情況,我們稱這種現(xiàn)象為鍵抖動(dòng)。若抖動(dòng)問(wèn)題不解決,就會(huì)引起對(duì)閉合鍵的多次讀入。對(duì)于鍵抖動(dòng)最方便的解決方法是:當(dāng)發(fā)現(xiàn)有鍵按下時(shí),不是立即進(jìn)行逐行掃描,通常是延時(shí)10ms后再進(jìn)行,這樣,延時(shí)一段時(shí)間后讀取的就是穩(wěn)定的按鍵信息。t1t0t2t3t47.6.4鍵盤(pán)的工作方式

鍵盤(pán)的工作方式應(yīng)根據(jù)實(shí)際應(yīng)用系統(tǒng)中CPU的工作狀況而定,其選取的原則是既要保證CPU能及時(shí)響應(yīng)按鍵操作,又不要過(guò)多占用CPU的工作時(shí)間。通常,鍵盤(pán)的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。

(1)編程掃描方式

編程掃描方式是利用CPU完成其它工作的空余時(shí)間,調(diào)用鍵盤(pán)掃描子程序來(lái)響應(yīng)鍵盤(pán)輸入的要求。在執(zhí)行某一個(gè)鍵功能程序時(shí),CPU不再響應(yīng)其它鍵輸入要求,直到CPU重新掃描鍵盤(pán)為止。鍵盤(pán)掃描程序一般應(yīng)包括以下內(nèi)容:(1)判別有無(wú)鍵按下。(2)鍵盤(pán)掃描取得閉合鍵的行、列值。(3)用計(jì)算法或查表法得到鍵值。(4)判斷閉合鍵是否釋放,如沒(méi)釋放則繼續(xù)等待。(5)將閉合鍵鍵號(hào)保存,同時(shí)轉(zhuǎn)去執(zhí)行該閉合鍵的功能。

(2)定時(shí)掃描方式

定時(shí)掃描方式就是每隔一段時(shí)間對(duì)鍵盤(pán)掃描一次,它利用單片機(jī)內(nèi)部的定時(shí)器產(chǎn)生一定時(shí)間(例如10ms)的定時(shí),當(dāng)定時(shí)時(shí)間到就產(chǎn)生定時(shí)器溢出中斷。CPU響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描,并在有鍵按下時(shí)識(shí)別出該鍵,再執(zhí)行該鍵的功能程序。定時(shí)掃描方式的硬件電路與編程掃描方式相同,程序流程圖如圖7-18所示。圖7-18定時(shí)掃描方式程序流程圖

(3)中斷掃描方式

采用上述兩種鍵盤(pán)掃描方式時(shí),無(wú)論是否按鍵,CPU都要定時(shí)掃描鍵盤(pán),而單片機(jī)應(yīng)用系統(tǒng)工作時(shí),并非經(jīng)常需要鍵盤(pán)輸入,因此,CPU經(jīng)常處于空掃描狀態(tài)。

為提高CPU工作效率,可采用中斷掃描工作方式。其工作過(guò)程如下:當(dāng)無(wú)鍵按下時(shí),CPU處理自己的工作,當(dāng)有鍵按下時(shí),產(chǎn)生中斷請(qǐng)求,CPU轉(zhuǎn)去執(zhí)行鍵盤(pán)掃描子程序,并識(shí)別鍵號(hào)。

圖7-19是一種簡(jiǎn)易鍵盤(pán)接口電路。P1.4P1.7是鍵輸出線,P1.0P1.3是掃描輸入線。圖中的4輸入與門(mén)用于產(chǎn)生按鍵中斷,其輸入端與各列線相連,再通過(guò)上拉電阻接至+5V電源,輸出端接至8051的外部中斷輸入端。

具體工作如下:當(dāng)鍵盤(pán)無(wú)鍵按下時(shí),與門(mén)各輸入端均為高電平,保持輸出端為高電平;當(dāng)有鍵按下時(shí),端為低電平,向CPU申請(qǐng)中斷,若CPU開(kāi)放外部中斷,則會(huì)響應(yīng)中斷請(qǐng)求,轉(zhuǎn)去執(zhí)行鍵盤(pán)掃描子程序。圖7-19中斷掃描鍵盤(pán)電路+5V7.7MCS-51單片機(jī)顯示器接口技術(shù)7.7.1LED顯示器7.7.2靜態(tài)顯示方式7.7.3

動(dòng)態(tài)顯示方式

1.數(shù)碼管簡(jiǎn)介

(1)數(shù)碼管結(jié)構(gòu)

七段數(shù)碼管由8個(gè)發(fā)光二極管(以下簡(jiǎn)稱字段)構(gòu)成,通過(guò)不同的組合可用來(lái)顯示數(shù)字09、字符AF、H、L、P、R、U、Y、符號(hào)“”及小數(shù)點(diǎn)“”。數(shù)碼管的外形結(jié)構(gòu)如圖7-20(a)所示。數(shù)碼管又分為共陰極和共陽(yáng)極兩種結(jié)構(gòu),分別如圖7-20(b)和圖7-20(c)所示。7.7.1LED顯示器圖7-20數(shù)碼管結(jié)構(gòu)圖

(a)外型結(jié)構(gòu);(b)共陰極;(c)共陽(yáng)極

(2)數(shù)碼管工作原理

共陽(yáng)極數(shù)碼管的8個(gè)發(fā)光二極管的陽(yáng)極(二極管正端)連接在一起。通常,公共陽(yáng)極接高電平(一般接電源),其它管腳接段驅(qū)動(dòng)電路輸出端。當(dāng)某段驅(qū)動(dòng)電路的輸出端為低電平時(shí),則該端所連接的字段導(dǎo)通并點(diǎn)亮。根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時(shí),要求段驅(qū)動(dòng)電路能吸收額定的段導(dǎo)通電流,還需根據(jù)外接電源及額定段導(dǎo)通電流來(lái)確定相應(yīng)的限流電阻。

(3)數(shù)碼管字形編碼

要使數(shù)碼管顯示出相應(yīng)的數(shù)字或字符,必須使段數(shù)據(jù)口輸出相應(yīng)的字形編碼。對(duì)照?qǐng)D7-20(a),字型碼各位定義為:數(shù)據(jù)線D0與a字段對(duì)應(yīng),D1與b字段對(duì)應(yīng)……,依此類推。如使用共陽(yáng)極數(shù)碼管,數(shù)據(jù)為0表示對(duì)應(yīng)字段亮,數(shù)據(jù)為1表示對(duì)應(yīng)字段暗;如使用共陰極數(shù)碼管,數(shù)據(jù)為0表示對(duì)應(yīng)字段暗,數(shù)據(jù)為1表示對(duì)應(yīng)字段亮。如要顯示“0”,共陽(yáng)極數(shù)碼管的字型編碼應(yīng)為:11000000B(即C0H);共陰極數(shù)碼管的字型編碼應(yīng)為:00111111B(即3FH)。依此類推,可求得數(shù)碼管字形編碼如表7-9所示。表7-9數(shù)碼管字型編碼表顯示字符字型共陽(yáng)極共陰極dpgfedcba字型碼dpGfedcba字型碼0011000000C0H001111113FH1111111001F9H0000011006H2210100100A4H010110115BH3310110000B0H010011114FH441001100199H0110011066H551001001092H011011016DH661000001082H011111017DH7711111000F8H0000011107H881000000080H011111117FH991001000090H011011116FHAA1000100088H0111011177HBB1000001183H011111007CHCC11000110C6H0011100139H

續(xù)表顯示字符字型共陽(yáng)極共陰極

dpgfedcba字型碼dpGfedcba字型碼DD10100001A1H010111105EHEE1000011086H0111100179HFF100011108EH0111000171HHH1000100189H0111011076HLL11000111C7H0011100038HPP100011008CH0111001173HRR11001110CEH0011000131HUU11000001C1H001111103EHYY1001000191H011011106EH10111111BFH0100000040H..011111117FH1000000080H熄滅滅11111111FFH0000000000H7.7.2靜態(tài)顯示方式

靜態(tài)顯示是指數(shù)碼管顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定導(dǎo)通或恒定截止。

這種顯示方式的各位數(shù)碼管相互獨(dú)立,公共端恒定接地(共陰極)或接正電源(共陽(yáng)極)。每個(gè)數(shù)碼管的8個(gè)字段分別與一個(gè)8位I/O口地址相連,I/O口只要有段碼輸出,相應(yīng)字符即顯示出來(lái),并保持不變,直到I/O口輸出新的段碼。采用靜態(tài)顯示方式,較小的電流即可獲得較高的亮度,且占用CPU時(shí)間少,編程簡(jiǎn)單,顯示便于監(jiān)測(cè)和控制,但其占用的口線多,硬件電路復(fù)雜,成本高,只適合于顯示位數(shù)較少的場(chǎng)合。

圖7-21是一個(gè)靜態(tài)顯示的電路圖??梢灾苯永脝纹瑱C(jī)的并行輸出口或輸出瑣存芯片,也可以用單片機(jī)串行口擴(kuò)展多片串入并出的移位寄存器作為靜態(tài)顯示接口。如圖7-21所示,圖中在單片機(jī)串口處擴(kuò)展了8片串入并出瑣存器74LS164,發(fā)光二極管采用共陰極接法。圖7-21靜態(tài)顯示器接口TXDRXDMCS-5174LS16474LS16474LS164LED0共陰極LED1共陰極LED7共陰極abcdefg.abcdefg.abcdefg.…………1,213121110654389注:(1)74LS164

是串入并出移位寄存器;(2)74LS164

的第1、2引腳是串行輸入口;第3、4、5、

6、10、11、12、13引腳是并行輸出口;(3)74LS164

的第8引腳是時(shí)鐘信號(hào)輸入口;第9引腳是清零信號(hào)輸入口。;定義8個(gè)內(nèi)存單元用來(lái)存放待顯示的數(shù)字;指向存放LED7即將顯示的數(shù)字的單元地址;取出LED7即將顯示的數(shù)字;0,1,2,3,4;5,6,7,8,9;A,B,C,D,E;F,-,P,,E];變址尋址方式中的偏移量;外部ROM數(shù)據(jù)傳送指令MOVC;SBUF是串行口的輸出緩沖器;一幀發(fā)送完后自動(dòng)將TI置1,未發(fā)送完時(shí)為0;軟件將TI清零;指向下一位待顯示的數(shù)據(jù)的存儲(chǔ)單元地址;檢查是否8位數(shù)據(jù)已經(jīng)串行發(fā)送完畢?;子程序返回指令DIR:MOVR7,#08HMOVR0,#7FHDL0:MOVA,@R0ADDA,#0BHMOVCA,@A+PCMOVSUBF,ADL1:JNBTI,DL1CLRTIDECR0DJNZR7,DL0RETSEGTAB:DB3FH,06H,5BH,4FH,66H

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論