《微型計(jì)算機(jī)原理與接口技術(shù)》課件第9章 2_第1頁
《微型計(jì)算機(jī)原理與接口技術(shù)》課件第9章 2_第2頁
《微型計(jì)算機(jī)原理與接口技術(shù)》課件第9章 2_第3頁
《微型計(jì)算機(jī)原理與接口技術(shù)》課件第9章 2_第4頁
《微型計(jì)算機(jī)原理與接口技術(shù)》課件第9章 2_第5頁
已閱讀5頁,還剩118頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

9.1并行接口的特點(diǎn)并行數(shù)據(jù)傳輸就是把組成一個(gè)數(shù)據(jù)的全部n個(gè)數(shù)位用與數(shù)據(jù)位數(shù)相同的n條線同時(shí)進(jìn)行傳輸。由于在數(shù)據(jù)傳輸時(shí),組成數(shù)據(jù)的各數(shù)位同時(shí)傳輸,并行數(shù)據(jù)傳輸具有傳輸速度快、信息率高等優(yōu)點(diǎn)。但是,由于并行數(shù)據(jù)傳輸所使用的電纜較多,在長(zhǎng)距離傳輸時(shí),電纜的損耗以及為避免數(shù)據(jù)傳輸錯(cuò)誤而增加的輔助設(shè)備會(huì)使成本大大增加,所以,并行數(shù)據(jù)傳輸一般適用于數(shù)據(jù)傳輸率要求較高而傳輸距離較短的場(chǎng)合,例如,計(jì)算機(jī)內(nèi)部各種設(shè)備的數(shù)據(jù)傳輸。能實(shí)現(xiàn)并行數(shù)據(jù)傳輸?shù)慕涌诰褪遣⑿薪涌?。一個(gè)并行接口根據(jù)需要,可以設(shè)計(jì)為輸出接口,只用來輸出數(shù)據(jù);也可以設(shè)計(jì)成輸入接口,負(fù)責(zé)輸入信息;此外,還可以將它設(shè)計(jì)成既能輸入信息,又可以將信息輸出的接口,稱為雙向接口。

在設(shè)計(jì)雙向接口時(shí),有兩種方法可以采用:一種方法是利用同一個(gè)接口器件中的兩個(gè)獨(dú)立通路,一個(gè)作為輸出通路,另一個(gè)作為輸入通路;另一種方法是采用一個(gè)具有雙向通路的器件,使之既作為輸入接口,又作為輸出接口。并行接口一般具有以下特點(diǎn):

(1)通過多根信號(hào)線同時(shí)傳送多位數(shù)據(jù)。

(2)并行接口多用于傳輸距離短、數(shù)據(jù)量大、速度高的實(shí)時(shí)傳輸場(chǎng)合。

(3)傳送時(shí)一般不需要特定的數(shù)據(jù)傳送格式。

圖9-1所示是典型的并行接口和外設(shè)連接的示意圖,圖中的并行接口用一個(gè)通道和輸入設(shè)備相連,用另一個(gè)通道和輸出設(shè)備相連。每個(gè)通道都配有一定的控制線和狀態(tài)線。從圖中可以看到,并行接口中應(yīng)該有一個(gè)控制寄存器用來接收CPU的控制命令,有一個(gè)狀態(tài)寄存器提供各種狀態(tài)供CPU查詢。為了實(shí)現(xiàn)輸入和輸出,并行接口中還必須有相應(yīng)的輸入緩沖寄存器和輸出緩沖寄存器。圖9-1并行接口和外設(shè)連接的示意圖9.2可編程并行接口芯片8255A

8255A是Intel公司為自己的微處理機(jī)系列研制的通用可編程并行接口芯片。它采用NMOS工藝制造,單一+5?V電源,40個(gè)引腳,雙列直插式封裝。它具有方式0、方式1、方式2三種工作方式,并且這三種工作方式可以通過軟件編程來設(shè)定和改變。8255A與Intel系列微處理器完全兼容,直接的位清0/置1功能簡(jiǎn)化了控制應(yīng)用接口,因而,8255A的應(yīng)用相當(dāng)普遍。

1.8255A的內(nèi)部結(jié)構(gòu)

8255A的內(nèi)部結(jié)構(gòu)框圖如圖9-2所示,8255A由以下幾個(gè)部分組成。圖9-28255A內(nèi)部結(jié)構(gòu)框圖

(1)三個(gè)數(shù)據(jù)輸入/輸出端口A、B、C。每個(gè)端口均為8位,可選擇輸入或輸出操作。

端口A:一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位數(shù)據(jù)輸入鎖存器。

端口B:一個(gè)8位數(shù)據(jù)輸入/輸出、鎖存/緩沖器和一個(gè)8位數(shù)據(jù)輸入緩沖器。

端口C:一個(gè)8位數(shù)據(jù)輸出鎖存/緩沖器和一個(gè)8位數(shù)據(jù)輸入鎖存器(輸入無鎖存)。它可分為兩個(gè)4位端口使用,或用作與A口和B口配合的控制或狀態(tài)口,依工作方式而定。

(2)?A組控制和B組控制。這兩組控制部件接收讀/寫控制邏輯來的命令,接收數(shù)據(jù)總線上的控制字,然后向相應(yīng)的端口發(fā)出命令,以控制其動(dòng)作。A組控制部件控制A口及C口高4位,B組控制部件控制B口及C口低4位。圖9-38255A芯片引腳圖

3.8255A的控制字

8255A有兩個(gè)8位控制字,即工作方式選擇控制字和C口按位置位/復(fù)位控制字。這兩個(gè)控制字共用一個(gè)端口地址,即控制字寄存器。為了區(qū)別這兩個(gè)控制字,規(guī)定了D7位為特征位,當(dāng)D7=1時(shí),是工作方式選擇控制字;當(dāng)D7=0時(shí),則是C口按位置位/復(fù)位控制字。

1)方式選擇控制字

8255A的工作方式選擇控制字是用來設(shè)定通道的工作方式及數(shù)據(jù)傳送方向的,其格式如圖9-4所示。

(1)?8255A可以分別設(shè)定A組、B組(A口和C口高4位、B口和C口低4位)的工作方式。

(2)B組只能工作在方式0和方式1,由D2位設(shè)定,A組可以工作在方式0、方式1、方式2三種工作方式,由D6和D5位設(shè)定。

(3)在A組確定工作方式后,可用D4位設(shè)定A口是輸入口還是輸出口。用D3位設(shè)定C口高4位是輸入還是輸出。

(4)在B組確定工作方式后,可用D1位設(shè)定B口是輸入口還是輸出口,用D0位設(shè)定C口低4位是輸入口還是輸出口。圖9-48255A的工作方式選擇控制字

2)端口C置位/復(fù)位控制字

端口C置位/復(fù)位控制字格式如圖9-5所示。

該控制字的D3~D1指明對(duì)端口C的哪一位進(jìn)行操作,而D0位則指明對(duì)端口C的操作是置1還是清0,D6~D4位為任意值,不影響操作。這一功能可使8255A實(shí)現(xiàn)對(duì)外設(shè)的按位控制。圖9-58255A端口C置位/復(fù)位控制字例如,要使端口C的PC7=1,則控制字為00001111B,即0FH;然后使PC3=0,則控制字為00000110B,即06H。設(shè)8255A控制端口地址為286H,程序段如下:

4.8255A的工作方式

1)方式0——基本輸入/輸出方式

在方式0下,三個(gè)數(shù)據(jù)端口A、B、C(C分為2個(gè)4位)通過工作方式選擇控制字可任意選擇其為輸入口或輸出口。特別是歸同一組的兩個(gè)端口也可分別定義為輸入口或輸出口。CPU只要對(duì)8255A執(zhí)行I/O指令即可輸入或輸出數(shù)據(jù)。

方式0的主要特點(diǎn)如下:

(1)兩個(gè)8位端口A、B和兩個(gè)4位端口(端口C),任一個(gè)端口可以作為輸入或輸出端口,各端口之間沒有規(guī)定必然的關(guān)系。共有16種可能的輸入/輸出組合。

(2)輸出鎖存,而輸入不鎖存。方式0的輸入/輸出時(shí)序分別如圖9-6和圖9-7所示。圖9-6方式0的輸入時(shí)序圖9-7方式0的輸出時(shí)序方式0主要用于同步傳送數(shù)據(jù)的場(chǎng)合。這時(shí),CPU和外設(shè)都互相了解對(duì)方的工作狀態(tài),不需要應(yīng)答信號(hào),三個(gè)數(shù)據(jù)端口可實(shí)現(xiàn)三個(gè)通道的數(shù)據(jù)傳送。

方式0也可以用于查詢式傳送的場(chǎng)合。這時(shí),可令一個(gè)數(shù)據(jù)端口作為狀態(tài)/控制口,另兩個(gè)數(shù)據(jù)端口為數(shù)據(jù)輸入/輸出口,利用狀態(tài)/控制口來配合數(shù)據(jù)輸入/輸出口的操作。例如,設(shè)端口A和B為數(shù)據(jù)口,端口C的高4位為控制輸出口,低4位為狀態(tài)輸入口,則使端口C與端口A和B配合,即可以實(shí)現(xiàn)查詢式傳送。

2)方式1——選通的輸入/輸出方式

在方式1下,端口A和B輸入/輸出數(shù)據(jù)時(shí),必須利用端口C提供的選通信號(hào)和應(yīng)答信號(hào)(握手信號(hào)),而這些信號(hào)與端口C的各位有著規(guī)定的對(duì)應(yīng)關(guān)系。

方式l的主要特點(diǎn)如下:

(1)兩組端口(A和B)都可工作于方式1,每一組包含一個(gè)8位數(shù)據(jù)端口和一個(gè)4位控制/數(shù)據(jù)端口。

(2)?8位數(shù)據(jù)口可以是輸入或輸出,輸入、輸出均帶鎖存。

(3)?4位端口用作8位端口的控制/狀態(tài)位。未用作控制/狀態(tài)的位仍可用作基本I/O位。圖9-8方式1的輸入時(shí)序圖9-98255A方式1輸入時(shí)對(duì)應(yīng)的控制信號(hào)圖9-10方式1時(shí)輸出端口對(duì)應(yīng)的控制信號(hào)圖9-11方式1的輸出時(shí)序方式1的狀態(tài)信號(hào)可通過讀取端口C得到,其對(duì)應(yīng)格式如圖9-12所示。因此,方式1在異步傳送數(shù)據(jù)時(shí),既可工作于中斷方式,也可工作于查詢方式。圖9-128255A方式l的狀態(tài)信號(hào)

3)方式2——雙向傳輸方式

此方式只適用于端口A。這時(shí),在PA7~PA0的8位數(shù)據(jù)線上,外設(shè)既可從8255A獲取數(shù)據(jù),也可向8255A發(fā)送數(shù)據(jù)。傳輸過程既可工作于查詢方式,也可工作于中斷方式。

方式2的主要特點(diǎn)如下:

(1)僅限于組A。

(2)一個(gè)雙向8位總線端口(A)和一個(gè)5位控制/狀態(tài)端口(C)。

(3)輸入和輸出均是鎖存的。

方式2的控制和引腳信息如圖9-13所示。方式2的時(shí)序如圖9-14所示。圖9-13方式2的控制信號(hào)圖9-14方式2的時(shí)序各端口各種允許的工作方式和輸入/輸出方式可任意組合。C口未用作控制/狀態(tài)位的位,可根據(jù)輸入/輸出定義,用C口讀和C口按位復(fù)位/置位控制字實(shí)現(xiàn)輸入/輸出操作。圖9-15方式2時(shí)端口C的各種組態(tài)

5.8255A初始化舉例

設(shè)8255A工作于方式0,端口A為輸入,端口B為輸出,端口C為輸出。試對(duì)其進(jìn)行初始化。

首先確定方式選擇控制字為10010000B,設(shè)8255A端口地址為80H~83H,則初始化程序?yàn)?/p>

MOV AL,90H;方式選擇控制字10010000B

OUT 83H,AL;方式選擇控制字送8255A控制端口

寫完控制字后,CPU可通過IN/OUT指令來與8255A傳送數(shù)據(jù),如:

IN AL,80H ;讀端口A的數(shù)據(jù)

OUT 81H,AL ;AL中數(shù)據(jù)寫入端口B

OUT 82H,AL ;寫端口C9.38255A的應(yīng)用舉例9.3.1鍵盤鍵盤是微型計(jì)算機(jī)不可缺少的輸入設(shè)備,人們通過它向計(jì)算機(jī)傳遞信息。鍵盤其實(shí)就是開關(guān),通過按鍵的閉合與斷開,使得計(jì)算機(jī)得到該按鍵是否按下,進(jìn)而得到用戶輸入的信息或者理解用戶的意圖。

1.鍵盤識(shí)別原理

在微機(jī)的各種應(yīng)用中,無論要它做什么事,都需要首先利用輸入設(shè)備將程序、數(shù)據(jù)或是控制信息輸入微機(jī),在所有不同的輸入設(shè)備中,鍵盤是最常用的一種。微機(jī)又是如何理解從鍵盤輸入的是什么內(nèi)容呢?我們知道,一個(gè)鍵盤由數(shù)個(gè)或數(shù)十個(gè)按鍵組成,這要求一是要能識(shí)別按鍵是否按下,二是要能識(shí)別出按下的不同按鍵。這樣CPU才能根據(jù)不同的按鍵按下,去執(zhí)行不同的操作程序。

計(jì)算機(jī)只能識(shí)別二進(jìn)制數(shù)“0”和“1”,識(shí)別按鍵是否按下的最基本原理就是利用鍵盤的按下與抬起產(chǎn)生低電平“0”或高電平“1”。而識(shí)別不同的按鍵按下卻有多種方法。

1)單個(gè)按鍵的連接與應(yīng)用

常用的按鍵存在斷開和閉合兩種狀態(tài)。若某一鍵被按下,則為閉合狀態(tài);若按鍵釋放,則為斷開狀態(tài)。鍵盤電路的功能就是將按鍵的閉合和斷開狀態(tài)用“0”和“1”來表示,然后通過數(shù)據(jù)總線送到CPU內(nèi)部進(jìn)行鍵的識(shí)別。圖9-16所示為單個(gè)鍵的輸入電路。圖中,按鍵K通過三態(tài)門連到數(shù)據(jù)總線的D0位,通過三態(tài)門,CPU可以讀取鍵的狀態(tài)。當(dāng)鍵處于斷開狀態(tài)時(shí),三態(tài)門的輸入值為“1”;當(dāng)鍵處于閉合狀態(tài)時(shí),三態(tài)門的輸入值為“0”。因此,下面兩條指令可以識(shí)別按鍵是否被按下:

IN AL,20H

AND AL,01H

程序執(zhí)行結(jié)果,若AL內(nèi)容為零(ZF=1),說明鍵被按下;若AL內(nèi)容為非零(ZF=0),說明鍵未被按下。圖9-16單個(gè)鍵的輸入電路在鍵處理過程中,下面兩個(gè)問題必須注意。

(1)鍵抖動(dòng)的處理。在實(shí)際按鍵操作中,由于動(dòng)作是一個(gè)機(jī)械動(dòng)作,鍵在閉合或斷開的過程中會(huì)發(fā)生抖動(dòng),如圖9-17所示。

鍵抖動(dòng)時(shí)間的長(zhǎng)短與開關(guān)的機(jī)械特性有關(guān),一般為5~10?s,然后達(dá)到穩(wěn)定狀態(tài)。在鍵盤接口中,為了保證CPU對(duì)鍵的閉合做一次且僅做一次處理,必須去除抖動(dòng),使CPU在鍵的穩(wěn)定閉合或斷開狀態(tài)時(shí)讀取鍵值。圖9-17鍵抖動(dòng)過程消除抖動(dòng)的方法很多,可用單穩(wěn)態(tài)電路或雙穩(wěn)態(tài)電路完成消抖。在鍵盤接口中,使用較普遍的是采用軟件延時(shí)方法完成消抖。其基本思想是:在檢測(cè)到按鍵按下或釋放時(shí),記錄按鍵的狀態(tài),延時(shí)10~20?ms,再次檢測(cè)按鍵的狀態(tài),若與前一次的狀態(tài)相同,說明按鍵的狀態(tài)已經(jīng)穩(wěn)定,可以進(jìn)行處理;否則,表示按鍵的狀態(tài)不穩(wěn)定,可能是誤動(dòng)作,不應(yīng)被處理。這樣,就可以消除鍵的抖動(dòng)而讀入正確的按鍵值。

(2)單個(gè)按鍵動(dòng)作的確認(rèn)。由于按鍵動(dòng)作是一個(gè)機(jī)械動(dòng)作,按下時(shí)間至少需要102?ms,而CPU執(zhí)行指令的速度快得多,因此,只要CPU不斷地讀取鍵盤接口,就可以成功識(shí)別每一次按鍵動(dòng)作,而不至于有某一次按鍵動(dòng)作沒有被CPU的程序檢測(cè)到。

另一方面,由于CPU的程序執(zhí)行比按鍵的機(jī)械動(dòng)作快得多,使得在一次按鍵動(dòng)作期間,CPU檢測(cè)到有按鍵并執(zhí)行了相應(yīng)的鍵處理程序以后,按下的鍵可能還沒有被釋放,因此,在CPU再一次測(cè)試鍵盤狀態(tài)時(shí),該鍵又被認(rèn)為是按下狀態(tài),從而出現(xiàn)按一次鍵而CPU進(jìn)行2次或多次鍵處理的情況。這是一個(gè)明顯的誤操作,解決它的方法有多種,最簡(jiǎn)便的解決方法是CPU在檢測(cè)到有健按下時(shí),一直等到鍵釋放才做相應(yīng)的鍵處理。

2)線性鍵盤及其接口

線性鍵盤由若干獨(dú)立的按鍵組成。每個(gè)按鍵將其一端與微機(jī)系統(tǒng)中某輸入端口的一位數(shù)據(jù)線相連,另一端接地。其接口程序簡(jiǎn)單,只要查詢?cè)撦斎攵丝诟魑坏臓顟B(tài),便可以判斷是否有鍵按下,以及按下的具體是哪一個(gè)鍵。

圖9-18所示為多鍵接口電路圖。其中,4個(gè)鍵K3~K0分別連至三態(tài)緩沖器的4條輸入線。CPU讀取三態(tài)緩沖器的值,并判別哪一條線上為“0”,就可以知道當(dāng)前是否有鍵被按下,是哪一個(gè)鍵被按下。鍵識(shí)別程序如下,程序轉(zhuǎn)移的目標(biāo)號(hào)K3~K0分別表示4個(gè)鍵K3~K0的處理程序。圖9-18多鍵接口電路圖當(dāng)然,上述程序段只是完成鍵識(shí)別工作。在實(shí)際應(yīng)用中,還要考慮鍵抖動(dòng)問題的處理,以及單個(gè)按鍵動(dòng)作的確認(rèn)問題。

線性鍵盤有多少按鍵,就有多少條連線與微機(jī)輸入端口相連。因此,線性鍵盤只適合于按鍵少的場(chǎng)合,常用于某些微機(jī)化儀器或?qū)S梦C(jī)系統(tǒng)中。

3)矩陣鍵盤及其接口

矩陣鍵盤的按鍵排成n行m列,每個(gè)按鍵占據(jù)行列的一個(gè)交叉點(diǎn),需要的輸入/輸出線為n+m,最大按鍵數(shù)為n×m。顯然,在按鍵較多的應(yīng)用場(chǎng)合,矩陣鍵盤可以減少與微機(jī)系統(tǒng)接口的連線,是一般微機(jī)常用的鍵盤結(jié)構(gòu)。

圖9-19所示為一個(gè)3×4矩陣鍵盤及其接口電路。圖9-20所示是實(shí)現(xiàn)鍵處理工作的程序流程。從該工作流程可以看出,鍵盤接口處理的主要任務(wù)如下。圖9-20鍵處理程序流程

(1)檢測(cè)是否有鍵按下。將鍵盤的所有行線全部接“0”,讀入列線的值,若所得到的列線的值全為“1”,說明無鍵按下;若不全為“1”,說明已有鍵按下。因?yàn)榘聪碌逆I已將所連的行線與列線接通,使相應(yīng)的列線變?yōu)椤?”。

(2)去除鍵的機(jī)械抖動(dòng)。在判別到鍵盤上有鍵閉合后,延時(shí)一段時(shí)間再判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤上有一個(gè)鍵處于穩(wěn)定的閉合狀態(tài),否則認(rèn)為是鍵的抖動(dòng)。

(3)確定被按下的鍵所在的行與列的位置。當(dāng)已有鍵按下時(shí),為找出按下的鍵所在的行值與列值,可采用逐行掃描法,先將鍵盤的行線0接“0”,讀入列線的值,判斷是否有鍵按下。若有鍵按下,找出列線中為“0”的列線,即為按下的鍵所在的列。由相應(yīng)的行列值可得到閉合鍵的鍵值。如果行線0無鍵按下,則依次掃描行線1和2,判斷哪一個(gè)鍵閉合并讀取相應(yīng)的鍵值。

確定鍵值的方法是:

N?=?行首鍵號(hào)?+?列號(hào)

在圖9-19中,每行的首鍵號(hào)自上而下依次為0、4、8,列號(hào)自左而右依次為0~3。設(shè)圖9-19中8255A的端口地址為00H(端口A)、02H(端口B)、04H(端口C)和06H(控制口),鍵處理的程序如下:9.3.2LED數(shù)字顯示

在微機(jī)系統(tǒng)中,發(fā)光二極管LED常常作為重要的顯示手段,可以顯示系統(tǒng)的狀態(tài)、數(shù)字和字符。由于LED顯示器的驅(qū)動(dòng)電路簡(jiǎn)單,易于實(shí)現(xiàn),而且價(jià)格低廉,因此應(yīng)用非常廣泛。

1.LED工作原理

LED的主要部分是7段發(fā)光管,如圖9-21(a)所示。

這7段發(fā)光管分別為a~g段,有些產(chǎn)品還附帶一個(gè)小數(shù)點(diǎn)dp。通過7個(gè)發(fā)光段的不同組合,可以顯示0~9和A~F共16個(gè)字母數(shù)字及其他特殊字符。

例如,當(dāng)a、b、c段亮,顯示“7”;當(dāng)a、b、c、d、e、g段亮,則顯示“d”。圖9-217段LED發(fā)光管

LED分為共陽極和共陰極兩種結(jié)構(gòu),如圖9-21(b)和(c)所示。其中,圖9-21(b)所示為共陽極結(jié)構(gòu),數(shù)碼顯示端輸入低電平有效,當(dāng)某一段得到低電平時(shí),便發(fā)光。例如,當(dāng)a、b、g、e、d為低電平,而其他段為高電平時(shí),則顯示數(shù)字“2”。圖9-21(c)所示為共陰極結(jié)構(gòu),數(shù)碼顯示端輸入高電平有效,當(dāng)某段處于高電平時(shí)便發(fā)光。

表9-2和表9-3分別為共陰極和共陽極LED顯示數(shù)字與顯示代碼之間的對(duì)應(yīng)關(guān)系。為了在LED上顯示數(shù)字,首先必須把顯示數(shù)據(jù)轉(zhuǎn)換為L(zhǎng)ED的7位顯示代碼。實(shí)現(xiàn)這種轉(zhuǎn)換可以采用下面兩種方法。

1)采用專用芯片

采用專用的帶驅(qū)動(dòng)器的LED段譯碼器,如CD4511,可以實(shí)現(xiàn)對(duì)BCD碼的譯碼,但不能對(duì)大于9的二進(jìn)制數(shù)譯碼。CD4511有4位顯示段輸入,7位顯示段輸出,3位控制信號(hào)輸入。使用時(shí),只要將CD4511的輸入端與微機(jī)系統(tǒng)輸出端口的某4個(gè)數(shù)據(jù)位相連,而CD4511的輸出端直接與LED的a~g相接,便可實(shí)現(xiàn)對(duì)1位BCD碼的顯示。具體電路如圖9-22所示。圖9-22采用CD4511的LED顯示電路

2)軟件譯碼法

圖9-23所示電路采用8255A的LED接口,進(jìn)行軟件設(shè)計(jì)時(shí),在數(shù)據(jù)段定義0~F共16個(gè)數(shù)字(也可以為0~9或其他符號(hào))的顯示代碼表,在程序中利用XLAT指令進(jìn)行軟件譯碼。假設(shè)用共陽極LED來顯示數(shù)據(jù),0~F的顯示代碼表就可以按0~F的順序定義如下:

DISPCODEDB0C0H,0F9H,…,06H,8EH

利用8086的換碼指令XLAT,可方便地實(shí)現(xiàn)數(shù)字到顯示代碼的譯碼。圖9-23采用8255A的LED接口假設(shè)要顯示的數(shù)據(jù)存放在BL的低4位中,利用下面指令就可以實(shí)現(xiàn)軟件譯碼。

MOV AL,BL ;把要顯示的數(shù)據(jù)送入AL

AND AL,0FH ;屏蔽無用位

LEA BX,DISPCODE ;顯示代碼表的首地址送BX

XLAT;換碼,相應(yīng)的顯示代碼即被存入AL

2.LED顯示器接口

LED顯示器接口電路如圖9-24所示,8255A的端口A用來輸出顯示字符。設(shè)TAB為L(zhǎng)ED段選碼碼表的首地址,那么要顯示的數(shù)字的地址正好為起始地址加數(shù)字值,其地址中存放著對(duì)應(yīng)于該數(shù)字值的顯示代碼。例如,要顯示“7”,則它所對(duì)應(yīng)的顯示代碼在TAB+7這個(gè)單元中,利用8086換碼指令XLAT,可方便地實(shí)現(xiàn)數(shù)字到顯示代碼的譯碼。圖9-248255A用作LED顯示器接口

8255A的端口B用來控制LED的顯示位,即位控端口。在軟件的設(shè)計(jì)上通過掃描法逐個(gè)接通8位LED,把端口A輸出的代碼送到相應(yīng)的位上去顯示,以減少硬件開支。這時(shí),8255A端口A送出的一個(gè)代碼盡管各個(gè)LED都收到了,但由于端口B只有一位輸出低電平,所以只有一個(gè)LED的相應(yīng)段能夠?qū)ǘ@示數(shù)字,其他LED并不亮。這樣,端口A依次輸出段選碼,端口B依次選中一位LED,就可以在各位上顯示不同的數(shù)據(jù)。利用眼睛的視覺慣性,當(dāng)采用一定的頻率循環(huán)地往8位LED輸送顯示代碼和掃描代碼時(shí),就可見到穩(wěn)定的數(shù)字顯示。這種LED顯示方式稱為動(dòng)態(tài)刷新。刷新一遍的顯示子程序(現(xiàn)場(chǎng)保護(hù)略)如下:9.3.3點(diǎn)陣LED顯示器

使用7段LED數(shù)碼管顯示信息,由于只有7個(gè)筆畫,只能顯示數(shù)字和一些簡(jiǎn)單字符,而不能顯示復(fù)雜的字符,所以有時(shí)需要使用點(diǎn)陣LED顯示塊顯示一些復(fù)雜圖形或字符。

1.點(diǎn)陣LED顯示塊原理

點(diǎn)陣LED顯示塊一般由64個(gè)發(fā)光二極管組成,這64個(gè)發(fā)光二極管排列成8行×8列的點(diǎn)陣(如圖9-25所示,圖中每個(gè)小圓圈就是一個(gè)發(fā)光二極管)。在同一行中的8個(gè)發(fā)光二極管的所有正極連接在一起,由一個(gè)引腳引出,在同一列中的8個(gè)發(fā)光二極管的所有負(fù)極連接在一起,由一個(gè)引腳引出,這樣共有8個(gè)行引出腳和8個(gè)列引出腳(見圖9-26中A1~A8,B1~B8)。圖9-25點(diǎn)陣LED顯示塊外形圖9-26點(diǎn)陣LED顯示塊原理圖若要顯示一個(gè)復(fù)雜的圖形或字符,可以按逐列顯示或按逐行顯示,即一列一列(或一行一行)將要顯示的點(diǎn)陣信息顯示出來。例如,顯示一個(gè)“Z”字符,按行顯示則應(yīng)在列線上輸出的字模碼為:00H,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,00H共8個(gè)字節(jié),顯示時(shí),只要在LED顯示塊的行線A1上輸出高電平,在其他行線輸出低電平,在列線上輸出00H,第一行上的8個(gè)發(fā)光二極管就會(huì)全部點(diǎn)亮。延時(shí)一段時(shí)間后,改變?yōu)锳2輸出高電平,其他行線輸出低電平,在列線上輸出0FDH,則在第二行上的8個(gè)發(fā)光二極管只有右邊第二個(gè)點(diǎn)亮。同理,掃描其他行,在8行掃描完后,再?gòu)牡谝恍兄匦聮呙瑁涂梢栽贚ED顯示塊上顯示一個(gè)穩(wěn)定的“Z”字符。按列顯示的原理也一樣,只不過顯示字模和加在列線上的電平不相同而已。同樣是“Z”字符,按列顯示則應(yīng)加在行線上的字模碼為:81H,0C1H,0A1H,91H,89H,85H,83H,81H,而列線則逐列輸出低電平。

2.點(diǎn)陣LED顯示器接口電路

由于點(diǎn)陣LED顯示塊在顯示字符(圖形符號(hào))時(shí)只能按列(行)逐列(行)掃描,所以在設(shè)計(jì)點(diǎn)陣LED顯示器時(shí),可以將列(行)線設(shè)計(jì)成通過串入/并出移位寄存器實(shí)現(xiàn),以節(jié)省輸出線,如圖9-27所示。通過串入/并出移位寄存器,可以在顯示時(shí)只給一列(行)提供低(高)電平,而其他列(行)提供高(低)電平,這樣在顯示字模送出時(shí),只有需要顯示的列(行)能點(diǎn)亮二極管。圖9-27位靜態(tài)LED顯示器原理在圖9-27所示的電路中,LED顯示塊的行線連接在8255A的端口A上,4個(gè)LED顯示塊共用此端口,要顯示4個(gè)字符,則顯示字模共需要32個(gè)字節(jié),對(duì)應(yīng)于要顯示的每一列發(fā)光二極管“亮滅”信息,例如,要顯示“大”、“小”、“人”、“木”四個(gè)字,則需要向端口A輸出32個(gè)字節(jié)的字模(見表9-4)。

8255A端口C的PC0、PC1與74LSl64連接,經(jīng)過74LSl64連接到LED顯示塊的列線上,只要通過74LSl64,在列線上只輸出一個(gè)低電平,并且使它在4片74LSl64的32個(gè)輸出端上循環(huán)輸出,就可以按列顯示各列的信息了。

具體實(shí)現(xiàn)的程序流程圖如圖9-28所示。圖9-28四位點(diǎn)陣LED的顯示流程圖在重新刷新一屏而設(shè)置字模指針時(shí),通過修改字模表中字模信息的存放格式,可以使顯示的字符

溫馨提示

  • 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)論