單片機原理及接口技術(shù)復(fù)習(xí)題_第1頁
單片機原理及接口技術(shù)復(fù)習(xí)題_第2頁
單片機原理及接口技術(shù)復(fù)習(xí)題_第3頁
單片機原理及接口技術(shù)復(fù)習(xí)題_第4頁
單片機原理及接口技術(shù)復(fù)習(xí)題_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章單片機系統(tǒng)擴展與接口技術(shù)7.1外部總線的擴展

7.2外部存儲器的擴展7.3輸入/輸出接口的擴展7.4管理功能部件的擴展7.5A/D和D/A接口功能的擴展系統(tǒng)擴展的含義

單片機中雖然已經(jīng)集成了CPU、I/O口、定時器、中斷系統(tǒng)、存儲器等計算機的基本部件(即系統(tǒng)資源),但是對一些較復(fù)雜應(yīng)用系統(tǒng)來說,有時感到以上資源中的一種或幾種不夠用,這就需要在單片機芯片外加相應(yīng)的芯片、電路,使得有關(guān)功能得以擴充,我們稱為系統(tǒng)擴展(即系統(tǒng)資源的擴充)。

接口的含義:

接口是連接單片機與外圍電路、芯片、設(shè)備(如I/O設(shè)備、A/D、D/A設(shè)備)的中間環(huán)節(jié)。接口牽涉到包括外圍電路、設(shè)備、芯片的結(jié)構(gòu)、使用方法、時序要求;單片機本身的硬件、軟件資源等很多問題。接口技術(shù)要解決系統(tǒng)擴展時單片機與相應(yīng)芯片的接口(如地址總線、數(shù)據(jù)總線、控制總線的連接)與編程問題。系統(tǒng)擴展和接口技術(shù)一般有以下幾方面內(nèi)容:1.外部總線的擴展2.外部存儲器的擴展3.輸入、輸出接口的擴展4.管理功能部件(如定時/計數(shù)器、鍵盤/顯示器等)的擴展5.A/D和D/A的接口技術(shù)7.1外部總線的擴展一、外部總線的擴展圖7.1MCS-51外部三總線示意圖圖7.2地址鎖存器的引腳和接口二、總線驅(qū)動

在單片機應(yīng)用系統(tǒng)中,擴展的三總線上掛接很多負載,如存儲器、并行接口、A/D接口、顯示接口等,但總線接口的負載能力有限,因此常常需要通過連接總線驅(qū)動器進行總線驅(qū)動。總線驅(qū)動器對于單片機的I/O口只相當于增加了一個TTL負載,因此驅(qū)動器除了對后級電路驅(qū)動外,還能對負載的波動變化起隔離作用。

在對TTL負載驅(qū)動時,只需考慮驅(qū)動電流的大小;在對MOS負載驅(qū)動時,MOS負載的輸入電流很小,更多地要考慮電平的兼容和分布電容的電流。一般TTL電平和CMOS電平是不兼容的,CMOS電路能驅(qū)動TTL電路,而TTL電路一般不能驅(qū)動CMOS電路,在TTL電路和CMOS電路混用的系統(tǒng)中,應(yīng)特別注意。1.常用的總線驅(qū)動器

系統(tǒng)總線中地址總線和控制總線是單向的,因此驅(qū)動器可以選用單向的,如74LS244。74LS244還帶有三態(tài)控制,能實現(xiàn)總線緩沖和隔離。系統(tǒng)中的數(shù)據(jù)總線是雙向的,其驅(qū)動器也要選用雙向的,如74LS245。74LS245也是三態(tài)的,有一個方向控制端DIR,DIR=1時輸出(An→Bn),DIR=0時輸入(An←Bn)。圖7.3總線驅(qū)動器芯片管腳(a)單向驅(qū)動器;(b)雙向驅(qū)動器1G,2G為H時,Y為高阻;1G,2G為L時,Y=AG為H時,Y為高阻;G=L,DIR=0;B→AG=L,DIR=1;A→B2.總線驅(qū)動器的接口圖7.48051與總線驅(qū)動器的接口

(a)

P2口的驅(qū)動;(b)P0口的驅(qū)動

7.2外部存儲器的擴展

MCS-51系列單片機數(shù)據(jù)存儲器和程序存儲器的地址空間是相互獨立的。

MCS-51系列單片機具有64K的程序存儲器尋址空間和64K的片外數(shù)據(jù)存儲器尋址空間。如果系統(tǒng)需要用到的存儲器超過了單片機本身具有的容量,就要進行片外程序存儲器或者數(shù)據(jù)存儲器的擴展。程序存儲器的擴展要解決的幾個問題:

.程序存儲器的作用——存放程序代碼或常數(shù)表格

.擴展時所用芯片——一般用只讀型存儲器芯片(可以是

EPROM、E2PROM、FLASH芯片等)。

.擴展電路連接

——用EPROM2716、2732等擴展程序存儲器。

.存儲器地址分析——單片機輸出什么地址值時,可以指向存儲器中的某一單元。7.2.1外部程序存儲器的擴展圖7.5MCS-51單片機程序存儲器的擴展原理1.外部程序存儲器的擴展原理與時序分析圖2.8讀外部程序ROM時序2.EPROM擴展芯片圖7.62716的引腳圖2716容量:2K*8位2716有五種工作方式,見表7.1。

表7.12716工作方式選擇圖7.72716與8031的連接圖

由圖7.7可確定2716芯片的地址范圍。方法是A10~A0從全0開始,然后從最低位開始依次加1,最后變?yōu)槿?,相當于211=2048個單元地址依次選通,稱為字選。即3.E2PROM2864A的擴展圖7.82864A管腳及原理框圖(a)管腳;(b)原理框圖表7.22864A工作方式圖7.92864A與8031的接口電路7.2.2外部數(shù)據(jù)存儲器的擴展1.外部數(shù)據(jù)存儲器的擴展方法及時序圖7.10MCS-51數(shù)據(jù)存儲器的擴展示意圖

圖2-9讀外部數(shù)據(jù)RAM時序2.靜態(tài)RAM芯片圖7.116264管腳圖

I/O0~7:數(shù)據(jù)線A0~A12:地址線CE1、CE2:片選線OE:輸出使能WE:寫入使能VCC、GND:電源NC:未使用表7.36264的工作方式圖7.12擴展6264靜態(tài)RAM

6264的8KB地址范圍為6000H~7FFFH。當向該片6000H單元寫一個數(shù)據(jù)DATA時,可用如下指令:

MOVA,#DATA

MOVDPTR,#6000H

MOVX@DPTR,A

從7FFFH單元讀一個數(shù)據(jù)時,可用如下指令:

MOVDPTR,#7FFFH

MOVXA,@DPTR常用的地址譯碼器常用的地址譯碼器是:3-8線譯碼器74LS138雙2-4線譯碼器74LS13974LS13812345678910141615131211ABCG2AG2BG1GNDY7Y6Y4Y3Y2Y1Y0Y5VCC8個輸出端3個選擇輸入端3個允許輸入端Y0Y1Y2Y3Y4Y5Y7Y611111111111111111111111111111111011111111011111111011111111011111111011111111011

01

10

110

100100100100100100XX

000001011010X

010101CBAG2BG2AG1100110

11111101100111

11111110輸入輸出74LS138譯碼器真值表禁止允許74LS139123456789101416151312112個允許輸入端2個選擇輸入端4個輸出端1A1BGND1G1Y31Y21Y11Y02Y32Y22Y12Y0VCC2A2B2G輸出輸入GB

AY0Y1Y2Y31XX1111000011100110110101101001111074LS139譯碼器真值表4個輸出端7.2.3多片存儲器芯片的擴展1.線選法尋址

線選法使用P2、P0口的低位地址線對每個芯片內(nèi)的統(tǒng)一存儲單元進行尋址,稱為字選。所需地址線數(shù)由每片的存儲單元數(shù)決定,對于8K×8容量的芯片需要13根地址線A12~A0。然后將余下的高位地址線分別接到個存儲芯片的片選端CS,稱為線選。圖7.13用線選法實現(xiàn)片選

下圖是利用線選法,用3片2764A擴展24K×8位EPROM的電路圖:各芯片的地址范圍如下:

2.譯碼法尋址

譯碼法尋址就是利用地址譯碼器對系統(tǒng)的片外高位地址進行譯碼,以其譯碼輸出作為存儲器芯片的片選信號。譯碼法仍用低位地址線對每片內(nèi)的存儲單元進行尋址,而高位地址線經(jīng)過譯碼器譯碼后輸出作為各芯片的片選信號。常用的地址譯碼器是3/8譯碼器74LS138。

譯碼法又分為完全譯碼和部分譯碼兩種。

完全譯碼:譯碼器使用全部地址線,地址與存儲單元一一對應(yīng);部份譯碼:譯碼器使用部份地址線,地址與存儲單元不是一一對應(yīng)。部份譯碼會大量浪費尋址空間,對于要求存儲器空間大的微機系統(tǒng),一般不采用。但對于單片機系統(tǒng),由于實際需要的存儲容量不大,采用部份譯碼可簡化譯碼電路。

要求用2764芯片擴展8031的片外程序存儲器空間,分配的地址范圍為0000H~3FFFH。

本例采用完全譯碼方法。

(1)確定片數(shù)。因0000H~3FFFH的存儲空間為16KB,則所需芯片數(shù)=實際要求的存儲容量/單個芯片的存儲容量

=16KB/8KB

=2(片)(2)分配地址范圍。

(3)存儲器擴展連接如圖7.14所示。

圖7.14采用地址譯碼器擴展存儲器的連接圖

7.3輸入/輸出接口的擴展7.3.18255A可編程并行I/O接口

8255A具有3個8位并行I/O口,稱為PA口、PB口和PC口。其中PC口又分為高4位和低4位,通過控制字設(shè)定可以選擇三種工作方式:①基本輸入/輸出;②選通輸入/輸出;③PA口為雙向總線。1.8255的內(nèi)部結(jié)構(gòu)和引腳(1)端口A、B、C(2)工作方式控制(3)總線數(shù)據(jù)緩沖器(4)讀寫控制邏輯8255引腳功能:RESET:復(fù)位信號線。CS:片選信號線RD:讀信號線WR:寫信號D0~D7:三態(tài)雙向數(shù)據(jù)總線PA0~PA7:端口A輸入輸出線PB0~PB7:端口B輸入輸出線PC0~PC7:端口C輸入輸出線,A1、A0:端口地址總線,8255中有端口A、B、C和一個內(nèi)部控制字寄存器,共4個端口,由A0、A1輸入地址信號來尋址。

A1A0=00A口

01

B口

10C口

11控制口。2、工作方式選擇(1)工作方式0:基本輸入輸出方式(2)工作方式1:選通輸入輸出方式(3)工作方式2:雙向傳輸方式,僅A口可以工作在方式2選通輸入、輸出方式下各聯(lián)絡(luò)信號的含義:STB:選通信號輸入端,由外設(shè)送往8255。IBF:輸入緩沖器滿信號。由8255送往CPU。INTR:中斷請求信號,由8255送往CPU。OBF:輸出緩沖器滿信號。由8255送往外設(shè)。ACK:外設(shè)響應(yīng)輸入信號。由外設(shè)送往8255。INTR:中斷請求信號,由8255送往CPU。8255的控制字:工作方式控制字D6D5:A組方式控制,00-方式0,01-方式1;10-方式2D4:A口輸入輸出選擇:1-輸入,0-輸出D3:PC7-PC4輸入輸出選擇:1-輸入,0-輸出D2:B組方式選擇,0-方式0,1-方式1D1:B口輸入輸出選擇:1-輸入,0-輸出D0:PC3-PC0輸入輸出選擇:1-輸入,0-輸出D1D2D3D4D5D6D01標志位C口置0置1控制字:D3D2D1:000-111分別選擇PC0—PC7D0:所選位置0或置1選擇,0—置0,1-置1例1:要求A口工作在方式0輸入,B口工作在方式1輸出,C口高四位為輸入,C口低四位為輸出

MOVR1,#03H;8255控制端口

MOVA,#9CH;工作方式控制字

MOVX@R1,AD1D2D3D00標志位例28255與8031的接口如圖,要求編程序段實現(xiàn)PC3置1,PC5置0。

MOVR0,#03H;8255控制端口

MOVA,#07HMOVX@R0,AMOVA,#0AHMOVX@R0,A例3、

MOVR0,#7FH;8255控制端口

MOVA,#8EH;A口輸出,C口高四位輸入,低四位輸出。

MOVX@R0,AMOVR1,#20H;數(shù)據(jù)區(qū)首址

MOVR2,#50H;數(shù)據(jù)塊長度

LP:MOVR0,#7EH;C口LP1:MOVXA,@R0;PC7=?Busy?JBACC.7,LP1MOVR0,#7CH;A口

MOVA,@R1;從RAM取數(shù)據(jù)

MOVX@R0,AINCR1MOVR0,#7FH;控制端口

MOVA,#00H;PC0置0控制字

MOVX@R0,AMOVA,#01H;PC0置1控制字

MOVX@R0,ADJNZR2,LP7.3.28155可編程并行接口芯片1、8155的結(jié)構(gòu)及引腳8155的結(jié)構(gòu)8155256字節(jié)RAM三個可編程并行口PA口,8位PB口,8位PC口,6位14位二進制減法計數(shù)器8155芯片的內(nèi)部結(jié)構(gòu)256B靜態(tài)RAM

A

定時器B

C

口APA0~PA7口BPB0~PB7PC0~PC5口CIO/MAD0~AD7CEALERDWRRESET定時器輸入定時器輸出接單片機接外設(shè)接外設(shè)接外設(shè)圖7.218155引腳功能PC3PC4

PC5

IO/MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7VssVccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA08155TIMERINRESETTIMEROUTAD0-AD7三態(tài)地址/數(shù)據(jù)線IO/M端口/存儲器選擇RD讀ALE地址鎖存允許寫WR片選CE定時器輸入TIMERIN定時器輸出TIMEROUTPA0-PA7A口端口線PB0-PB7B口端口線PC0-PC5C口端口線圖7.11aI/O口地址----當IO/M加高電平時2.8155的RAM和I/O口地址RAM地址----當IO/M加低電平時此時AD0-AD7上得到的地址值是指8155的某一RAM單元的地址,地址范圍是

00000000--11111111分別指向8155RAM的256個存儲單元。此時AD0-AD7(僅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具體端口地址分配是:AD7AD6AD5AD4AD3AD2AD1AD0I/O端口╳╳╳╳╳000命令/狀態(tài)口╳╳╳╳╳001A口╳╳╳╳╳010B口╳╳╳╳╳011C口╳╳╳╳╳100計數(shù)器低8位╳╳╳╳╳101計數(shù)器高6位8155的RAM和I/O口地址分配

3.8155I/O口的工作方式1)基本I/O兩種工作方式與8255類似。2)選通I/O4.8155的命令/狀態(tài)字8155命令字含義

PAPBPC1PC2IEAIEBTM1TM2PB、PA—A口、B口數(shù)據(jù)傳送方向0—輸入1—輸出00—C口輸入,A、B口基本I/O方式11—C口輸出,A、B口基本I/O方式01—PC3-PC5輸出,A口選通方式,B口基本I/O方式10—A、B口選通方式PC2、PC1—C口數(shù)據(jù)傳送方向及AB口工作方式IEA、IEB—A、B口中斷允許控制0—禁止1—允許TM1、TM2—定時器/計數(shù)器控制00空操作01停止定時器10記滿回零停止計數(shù)11啟動D0(INTRA):A口是否有中斷請求D1(ABF):A口緩沖器滿/空D2(INTEA):A口中斷是否允許D3(INTRB):B口是否有中斷請求D4(BBF):B口緩沖器滿/空D5(INTEB):B口中斷是否允許D6(TIMER):定時器溢出中斷D1D2D3D4D5D6×D08155內(nèi)部有一個14位減法計數(shù)器使用定時器前要先裝入“時間常數(shù)”----14位二進制數(shù)。其格式為:5.8155定時器/計數(shù)器高6位計數(shù)值低8位計數(shù)值定時器方式M2M100單方波01連續(xù)方波單脈沖連續(xù)脈沖8155定時器編程方式及相應(yīng)的輸出波形M2M1方式定時器輸出波形00110101單方波連續(xù)方波單脈沖連續(xù)脈沖三.8155的接口電路及應(yīng)用80318155RESETRDWRALEP2.1P2.2P0.0P0.1P0.2P.03P0.4P0.5P0.6P0.7RESETRDWRALEIO/MCEAD0AD1AD2AD3AD4AD5AD6AD7口APA0~PA7口BPB0~PB7PC0~PC5口C圖7-25例1設(shè)8155與單片機連接電路如圖7-25,現(xiàn)要求其A、C口為基本輸入方式,B口為基本輸出方式,定時器為連續(xù)方波發(fā)生器,對輸入脈沖進行24分頻,編制初始化程序段。解:首先分析各端口地址命令狀態(tài)口地址為0200HA口地址為0201HB口地址為0202HC口地址為0203H

定時器低8位地址0204H

定時器高6位地址0205H8155的控制字為0C2H:PAPBPC1PC2IEAIEBTM1TM211000010MOVDPTR,#0204HMOVA,#18HMOVX@DPTR,AINCDPTR24分頻即計數(shù)初值為24(0000000011000B=18H)加上定時計數(shù)控制01(連續(xù)方波),則送往定時計數(shù)器的時間常數(shù)及定時控制字應(yīng)為

0100000000011000B=4018HMOVA,#40HMOVX@DPTR,AMOVDPTR,#0200HMOVA,#0C2HMOVX@DPTR,A例2采用圖7.25所示的電路,從8155的A中輸入數(shù)據(jù),并進行判斷:若不為0,則將該數(shù)據(jù)存入8155的RAM中,同時從B口輸出,并將PC0置“1”;若為0,則停止輸入數(shù)據(jù),同時將PC0清“0”,試編寫程序。MOVDPTR,#0200H;指向命令端口MOVA,,#0EH;A、B口為基本輸入輸出,C口輸出MOVX@DPTR,AMOVR0,#00HMOVR1,#00HLP1:MOVDPTR,#0201;A口MOVXA,@DPTRJZLP3MOVX@R0,A;存入RAM單元INCR0INCDPTR;指向B口MOVX@DPTR,AINCDPTR;指向C口MOVXA,@DPTR;??SETBACC.0MOVX@DPTR,ADJNZR1,LP1LP2:SJMP$LP3:MOVDPTR,#0203HMOVX@DPTR,ASJMPLP27.4管理功能部件的擴展7.4.1鍵盤接口

鍵盤實際上是由排列成矩陣形式的一系列按鍵開關(guān)組成,用戶通過鍵盤可以向CPU輸入數(shù)據(jù)、地址和命令。鍵盤按其結(jié)構(gòu)形式可分為:編碼式鍵盤和非編碼式鍵盤兩類。單片機系統(tǒng)中普遍使用非編碼式鍵盤,這類鍵盤主要解決以下幾個問題:

①鍵的識別;

②如何消除鍵的抖動;

③鍵的保護。

1.非編碼式鍵盤工作原理

非編碼式鍵盤識別按鍵的方法有兩種:一是行掃描法,二是線反轉(zhuǎn)法。

1)行掃描法通過行線發(fā)出低電平信號,如果該行線所連接的鍵沒有按下的話,則列線所接的端口得到的是全“1”信號,如果有鍵按下的話,則得到非全“1”信號。為了防止雙鍵或多鍵同時按下,往往從第0行一直掃描到最后1行,若只發(fā)現(xiàn)1個閉合鍵,則為有效鍵,否則全部作廢。找到閉合鍵后,讀入相應(yīng)的鍵值,再轉(zhuǎn)至相應(yīng)的鍵處理程序。

2)線反轉(zhuǎn)法線反轉(zhuǎn)法也是識別閉合鍵的一種常用方法,該法比行掃描速度快,但在硬件上要求行線與列線外接上拉電阻。先將行線作為輸出線,列線作為輸入線,行線輸出全“0”信號,讀入列線的值,然后將行線和列線的輸入輸出關(guān)系互換,并且將剛才讀到的列線值從列線所接的端口輸出,再讀取行線的輸入值。那么在閉合鍵所在的行線上值必為0。這樣,當一個鍵被按下時,必定可讀到一對唯一的行列值。

2.鍵盤接口電路圖7.26采用8155的鍵盤接口電路

下面的程序是用行掃描法進行鍵掃描的程序,其中KS1為判鍵閉合的子程序。有鍵閉合時鍵值存入20H單元和A中。DIR為數(shù)碼顯示器掃描顯示子程序,執(zhí)行一遍的時間約6ms。程序執(zhí)行后,若鍵閉合,鍵值存入A中,鍵值的計算公式是:鍵值=行號×4+列號;若無鍵閉合,則A中存入標志FFH。KEY1:LCALLKS1;檢查有無閉合鍵?

JNZLK1;(A)=0,有鍵閉合則轉(zhuǎn)

LJMPLK8;無閉合鍵則返回LK1:LCALLDIR;延時12ms

LCALLDIR;清抖

LCALLKS1;再檢查有鍵閉合否?

JNZLK2;有鍵閉合則轉(zhuǎn)

LJMPLK8;無鍵閉合則返回LK2:MOVR3,#00H;行號初值送R3

MOVR2,#FEH;行掃描初值送R2

LK3:MOVDPTR,#0101H;指向8155口AMOVA,R2;行掃描值送A

MOVX@DPTR,A;掃描1行

INCDPTR

INCDPTR;指向8155口C

MOVXA,@DPTR;讀入列值

ANLA,#0FH;保留低4位

MOVR4,A;暫存列值

CJNZA,#0FH,LK4;列值非全“1”則轉(zhuǎn)

MOVA,R2;行掃描值送AJNBACC.7,LK8;掃至最后一行則轉(zhuǎn)RLA;未掃完,則移至下一行MOVR2,A;行值存入R2中INCR3;行號加1

SJMPLK3;轉(zhuǎn)至掃描下一行LK4:MOVA,R3;行號送入A

ADDA,R3;行號×2

MOVR5,A

ADDA,R5;行號×4

MOVR5,A;存入R5中

MOVA,R4;列值送A

LK5:RRCA;右移一位

JNCLK6;該位為0則轉(zhuǎn)

INCR5;列號加1

SJMPLK5;列號未判完則繼續(xù)LK6:MOV20H,R5;存鍵值LK7:LCALLDIR;掃描一遍顯示器

LCALLKS1;發(fā)掃描信號

JNZLK7;鍵未釋放等待

LCALLDIR;鍵已釋放

LCALLDIR;延時12ms,清抖

MOVA,20H;鍵值存入A中KND:RETLK8:MOVA,#FFH;無鍵標志FFH存入A中

RET

KS1:MOVDPTR,#0101H;判鍵子程序

MOVA,#00H;全掃描信號

MOVX@DPTR,A;發(fā)全掃描信號

INCDPTR

INCDPTR;指向8155口C

MOVXA,@DPTR;讀入列值

ANLA,#0FH;保留低4位

ORLA,#F0H;高4位取“1”

CPLA ;取反,無鍵按下則全“0”

RET7.4.2LED顯示器接口1.LED顯示器結(jié)構(gòu)與原理圖7.277段LED數(shù)碼顯示器各段碼位的對應(yīng)關(guān)系如下:

共陰共陽0:00111111B3FHC0H1:00000110B06HF9H……A:01110111B77H88H表7.8十六進制數(shù)及空白與P的顯示段碼

用戶在使用時,應(yīng)先將待顯示數(shù)據(jù)轉(zhuǎn)換成相應(yīng)段顯碼后再送顯示器,常通過查表的形式取得段顯碼。

靜態(tài)顯示:各顯示位同時選通,每一位顯示器都需要8位數(shù)據(jù)線提供相應(yīng)位的段顯碼,6位LED顯示器共需48根數(shù)據(jù)線。通過8255A連接的3位LED靜態(tài)顯示器

優(yōu)點:顯示無閃爍,效果好,編程簡單

缺點:硬件開銷大

動態(tài)顯示:各位依次輪流選通(位掃描)

,每選通一位時,送入該位的段顯碼,延時1-2ms,再選通下一位,送下一位的段顯碼,依此類推。利用眼睛的視覺暫留。動態(tài)顯示有閃爍,成本低,常常采用動態(tài)顯示。不管是靜態(tài)顯示還是動態(tài)顯示,為了得到較好的顯示效果,一般要加驅(qū)動電路.2.LED顯示器接口電路圖7.286位動態(tài)顯示器接口

圖7.29顯示子程序流程圖8031RAM79H-7EH中存放的6位待顯示數(shù)據(jù)編程從顯示器上顯示出來。分析:顯示接口8155A口:輸出,依次送位選信號。B口:輸出,依次送出各位的段顯碼。顯示子程序清單如下:(設(shè)初始化程序已完成)

DIR:MOVR0,#79H;顯示緩沖區(qū)首址送R0

MOVR3,#01H;位掃描,使顯示器最左邊位亮

MOVA,R3

LD0:MOVDPTR,#0101H;掃描值送PA口

MOVX@DPTR,A

INCDPTR;指向PB口

MOVA,@R0;取顯示數(shù)據(jù)

ADDA,#12H;加上偏移量

MOVCA,@A+PC;取出段顯碼

MOVX@DPTR,A;送出顯示

ACALLDL1 ;延時2ms

INCR0 ;緩沖區(qū)地址加1

MOVA,R3;

JBACC.5,LD1 ;掃到第6個顯示位了嗎?

RLA ;沒有,R3左環(huán)移一位,掃描下一個顯示位

MOVR3,A

AJMPLD0

LD1:RET

DSEG:DB3FH,06H,5BH,4FH,66H,6DH;顯示段碼表DSEG1:DB7DH,07H,7FH,6FH,77H,7CHDSEG2:DB39H,5EH,79H,71H,73H,3EH

DSEG3:DB31H,61H,1CH,23H,40H,03H

DSEG4:DB18H,00H,00H,00H

DL1:MOVR7,#02H;延時子程序DL:MOVR6,#0FFH

DL6:DJNZR6,DL6

DJNZR7,DL

RET7.4.3鍵盤顯示器接口82798279是專用鍵盤/顯示器控制芯片,能對顯示器及鍵盤矩陣進行自動掃描,能識別鍵盤上按下鍵的鍵號;可充分提高CPU的工作效率。8279與MCS-51接口方便,由它構(gòu)成的標準鍵盤/顯示器接口在微機應(yīng)用系統(tǒng)中使用越來越廣泛。前面的按鍵識別程序最大的缺點:等待按鍵時,CPU不能干其它工作,效率低。8279的按鍵處理可按中斷方式工作。

1.8279的組成及引腳8279芯片有40條引腳,由單一+5V電源供電。它主要由以下幾部分組成:(1)I/O控制線和數(shù)據(jù)緩沖器:RD,WR,CS,地址線A0,由片選線和地址線共同決定8279在系統(tǒng)中的地址,8279在系統(tǒng)中僅占用兩個端口地址。A0=0時,選中8279的數(shù)據(jù)端口;A0=1時,選中8279的命令/狀態(tài)端口。數(shù)據(jù)緩沖器:8279通過數(shù)據(jù)緩沖器與CPU交換數(shù)據(jù).(2)控制和定時寄存器及定時控制部分:控制寄存器:接收CPU送來的命令字,按照命令字中的要求,組成指定的工作方式,并控制系統(tǒng)按指定的方式工作。定時控制部分:由于8279內(nèi)部有很多時序電路,因此必須要提供相應(yīng)的時鐘,8279內(nèi)部時序電路所需時鐘頻率為100KHz,必須由外部(CLK引腳)接入,若接入信號頻率大于100KHz,則必需對其進行分頻,定時控制部分提供分頻電路,按用戶設(shè)定的分頻值(2-31)對接入時鐘分頻。(3)掃描計數(shù)器:用來為顯示器和鍵盤提供掃描信號,它有兩種工作方式:編碼方式:其輸出端SL3SL2SL1SL0按0000—1111的規(guī)律變化,必須經(jīng)過譯碼后方可提供給鍵盤或顯示器作掃描線。譯碼方式:其輸出端SL3SL2SL1SL0按1110-1101-1011-0111規(guī)律循環(huán)變化,可直接用作掃描信號。但只能提供四根掃描線。(4)回復(fù)緩沖器與鍵盤去抖動控制電路:來自RL0—RL7的輸入信號(回復(fù)信號)送入回復(fù)緩沖器,由回復(fù)緩沖器保存并鎖存。在鍵盤工作方式中,行掃描線由SL0—SL3提供,逐行掃描時,列線的狀態(tài)將通過RL0—RL7送入回復(fù)緩沖器,當某一鍵按下時,回復(fù)緩沖器中必有一位為零,此時將自動啟動去抖電路,延時10ms,再檢查該鍵是否按下,若是,則將行線值、列線值加上移位、控制狀態(tài)一起形成8位數(shù)據(jù),送往8279內(nèi)部的先進先出(FIFO)存儲器,其格式為:CTRLSHIFT行線值列線值例如:用戶系統(tǒng)中無CTRL和SHIFT鍵,按下第二行第三列的鍵,則系統(tǒng)存入FIFO中的數(shù)據(jù)為:00010011(5)FIFO(先進先出)寄存器和狀態(tài)電路:FIFORAM是一個8*8位的RAM,可以存放8個鍵值,而其狀態(tài)寄存器用來存放FIFORAM當前的狀態(tài),如是滿、空、有幾個數(shù)據(jù)等。(6)顯示RAM和顯示地址寄存器:顯示RAM用來存放待顯示數(shù)據(jù)的字符碼,最多可以存放16個數(shù)據(jù),在顯示掃描線的配合下,自動輪流輸出待顯示數(shù)據(jù)到LED顯示器。顯示地址寄存器用來寄存由CPU進行讀/寫的顯示RAM地址,它可以由命令設(shè)定。圖7.308279的引腳圖8279的外特性:D0-D7:CLK:RESET:CS:A0:RD,WR,IRQSL0-SL3RL0-RL7SHIFT,CTRLOUTA0(a)-OUTA3OUTB0-OUTB3(h)BD8279的命令字和狀態(tài)字:8個命令字,1個狀態(tài)字。命令字的高三位為標志位鍵盤及顯示方式命令字:設(shè)置鍵盤及顯示器的工作方式D4:=1,顯示按左進方式;=0,顯示按右進方式。D3:=0,顯示8個字符;=1,顯示16個字符。D2D1:=00,雙鍵鎖定掃描鍵盤。=01,N鍵輪回掃描鍵盤

=10,掃描傳感矩陣;=11,選通輸入方式。D0:=0:編碼掃描=1:譯碼掃描。

時鐘編程命令字:設(shè)定對CLK引腳的輸入脈沖的分頻值(2-31),0和1無意義。讀FIFORAM命令字:8279有一個數(shù)據(jù)口,當CPU從8279端口讀取數(shù)據(jù)時,數(shù)據(jù)來源有兩個:一個是FIFORAM,另一個是顯示RAM,到底讀哪一個必須先發(fā)相應(yīng)的命令。D4:=1,讀出數(shù)據(jù)后,地址自動加1=0,讀出數(shù)據(jù)后,地址不變。D2D1D0:僅用于傳感器方式。讀顯示RAM命令字:D4:=1,讀出數(shù)據(jù)后,地址自動加1=0,讀出數(shù)據(jù)后,地址不變。D3D2D1D0:指定顯示RAM的地址。寫顯示RAM命令字:雖然8279往數(shù)據(jù)端口寫數(shù)據(jù)時,目的地只有顯示RAM,但必須由該命令字指定顯示RAM的地址。D4:=1,讀出數(shù)據(jù)后,地址自動加1=0,讀出數(shù)據(jù)后,地址不變。D3D2D1D0:指定顯示RAM的地址。顯示禁止寫入/消隱命令字:用于OUTA0-OUTA3,OUTB0-OUTB3分別顯示及寫入情況。D3:=1,禁止寫入A=0,允許寫入AD2:=1,禁止寫入B=0,允許寫入BD1:=1,消隱A,=0,不消隱AD0:=1,消隱B,=0,不消隱B。清除命令字:D4:=1,允許清除顯示RAM;=0,不允許清除D3D2:0×:顯示RAM全清010:顯示RAM全清成20H11:顯示RAM全置1D1:=1,清空FIFORAMD0:=1,清空FIFORAM,并清顯示RAM,按D3D2指出的格式清錯誤方式置位命令字:當8279被設(shè)置成N鍵輪回的工作方式時,如置D4=1,則當有多鍵同時按下時,則將狀態(tài)字中的錯誤特征位S/E=1,向CPU申請中斷,并禁止寫入FIFORAM。8279的狀態(tài)字:當從控制端口讀取數(shù)據(jù)時,為狀態(tài)字DU:=1,顯示無效,顯示RAM不可用。S/E:特殊工作方式下,有多鍵同時按下時,該位被置1O:=1,當FIFO滿后,再往里面寫入數(shù)據(jù),則置該位為1U=1,F(xiàn)IFO為空F=1,F(xiàn)IFO為滿NNN:FIFO中有幾個數(shù)據(jù)。2.8279的接口電路與應(yīng)用圖7.318031與8279接口連接框圖上述電路中,8279數(shù)據(jù)端口地址為:命令端口地址為:STRT1:MOVDPTR,#7FFFH;命令端口

MOVA,#0D1H;11010001,清顯示RAM和FIFO

MOVX@DPTR,A

WAITD:MOVXA,@DPTR;讀取狀態(tài)字

JBACC.7,WAITD;等待清除完

MOVA,#2AH;設(shè)置分頻數(shù)為10

MOVX@DPTR,A

MOVA,#08H;顯示器左入,編碼,雙鍵鎖定

MOVX@DPTR,AMOVR0,#30H;數(shù)據(jù)區(qū)初始化例:將內(nèi)部RAM30H開始的16個數(shù)據(jù)送顯示器顯示,并讀取16個鍵值,送入緩沖器(查詢方式)。MOVR7,#10HMOVA,#90H;寫顯示RAM命令字MOVX@DPTR,AMOVDPTR,#7EFFHLOOP1:MOVA,@R0MOVX@DPTR,A;數(shù)據(jù)送入顯示RAMINCR0DJNZR7,LOOP1MOVR0,#40HMOVR7,#10HLOOP2:MOVDPTR,#7FFFH;讀8279狀態(tài)LOOP3:MOVXA,@DPTRANLA,#0FHJZLOOP3MOVA,#40H;讀FIFORAM命令字MOVX@DPTR,AMOVDPTR,#7EFFH;數(shù)據(jù)端口

MOVXA,@DPTR;讀取鍵值

MOV@R0,AINCR0DJNZR7,LOOP1HERE:AJMPHERE7.5A/D和D/A接口功能的擴展

由于計算機本身只能處理數(shù)字量(二進制代碼)。而在計算機應(yīng)用領(lǐng)域中,特別是在實時控制系統(tǒng)中,常需要把外界連續(xù)變化的物理量(如溫度、壓力、流量、速度),變成數(shù)字量輸入計算機進行加工、處理。反之,也需要把計算機計算結(jié)果的數(shù)字量轉(zhuǎn)換成連續(xù)變化的模擬量輸出,用以控制,調(diào)節(jié)某些執(zhí)行機構(gòu),實現(xiàn)對被控對象的控制。這種把模擬量變成數(shù)字量和把數(shù)字量轉(zhuǎn)換成模擬量,就稱為模/數(shù)和數(shù)/模轉(zhuǎn)換。實現(xiàn)這類轉(zhuǎn)換的器件,就稱為模/數(shù)(A/D)和數(shù)/模(D/A)轉(zhuǎn)換器。7.5.1A/D轉(zhuǎn)換器接口

1.概述

A/D轉(zhuǎn)換器用以實現(xiàn)模擬量向數(shù)字量的轉(zhuǎn)換。按轉(zhuǎn)換原理可分為4種:雙積分式、計數(shù)式、逐次逼近式以及并行式A/D轉(zhuǎn)換器。逐次逼近式A/D轉(zhuǎn)換器是一種速度較快,精度較高的轉(zhuǎn)換器,其轉(zhuǎn)換時間大約在幾微秒到幾百微秒之間。常用的這種芯片有:(1)ADC0801~ADC0805型8位MOS型A/D轉(zhuǎn)換器;

(2)ADC0808/0809型8位MOS型A/D轉(zhuǎn)換器;

(3)ADC0816/0817型8位MOS型A/D轉(zhuǎn)換器;量化間隔和量化誤差是A/D轉(zhuǎn)換器的主要技術(shù)指標之一。

量化間隔由下式計算:

其中n為A/D轉(zhuǎn)換器的位數(shù)。量化誤差有兩種表示方法:一種是絕對量化誤差;另一種是相對量化誤差。絕對量化誤差相對量化誤差2.典型A/D轉(zhuǎn)換器芯片ADC0809簡介

ADC0809是采用CMOS工藝制造的雙列直插式單片8位A/D轉(zhuǎn)換器。分辨率8位,精度7位,帶8個模擬量輸入通道,有通道地址譯碼鎖存器,輸出帶三態(tài)數(shù)據(jù)鎖存器。啟動信號為脈沖啟動方式,最大可調(diào)節(jié)誤差為±1LSB,ADC0809內(nèi)部沒有時鐘電路,故CLK時鐘需由外部輸入,fclk

允許范圍為500kHz~1MHz,典型值為640kHz。每通道的轉(zhuǎn)換需66~73個時鐘脈沖,大約100~110μs。工作溫度范圍為-40℃~+85℃。功耗為15mW,輸入電壓范圍為0~5V,單一+5V電源供電。圖7.32ADC0809的內(nèi)部結(jié)構(gòu)圖7.33ADC0809引腳圖

IN0~IN7:8路模擬通道的輸入端。D0~D7:8位數(shù)字量輸出端。REF(+)、REF(-):正、負參考電壓輸入端。一般情況下REF(+)與VCC相連接,REF(-)與GND相連接CLK:時鐘輸入信號。START:轉(zhuǎn)換啟動信號,高電平有效。ADDA、ADDB、ADDC:模擬通道選擇輸入端。ALE:地址鎖存信號。EOC:A/D轉(zhuǎn)換結(jié)束信號,此信號常被用來作為中斷請求信號。OE:允許輸出信號。表7.9地址碼與輸入通道的對應(yīng)關(guān)系

圖7.34ADC0809時序圖3、ADC0809與8031的接口電路A/D轉(zhuǎn)換器與單片機接口具有軟、硬件相依性。一般來說,A/D轉(zhuǎn)換器與單片機的接口主要考慮的是地址線的連接、數(shù)字量輸出線的連接、ADC啟動方式、轉(zhuǎn)換結(jié)束信號處理方法以及時鐘的連接等。A/D轉(zhuǎn)換器數(shù)字量輸出線與單片機的連接方法與其內(nèi)部結(jié)構(gòu)有關(guān)。內(nèi)部帶有三態(tài)鎖存數(shù)據(jù)輸出緩沖器的ADC0809,可直接與單片機數(shù)據(jù)總線相連。還有,隨著位數(shù)的不同,ADC與單片機的連接方法也不同。對于8位ADC,其數(shù)字輸出線可與8位單片機數(shù)據(jù)線對應(yīng)相接。對于8位以上的ADC,與8位單片機相接就不那么簡單了,此時必須增加讀取控制邏輯,把8位以上的數(shù)據(jù)分兩次或多次讀取。一個ADC開始轉(zhuǎn)換時,必須加一個啟動轉(zhuǎn)換信號,這一啟動信號要由單片機提供。對于脈沖啟動型ADC0809,只要給其啟動控

溫馨提示

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

最新文檔

評論

0/150

提交評論