《單片機原理及應(yīng)用》課件-第7章_第1頁
《單片機原理及應(yīng)用》課件-第7章_第2頁
《單片機原理及應(yīng)用》課件-第7章_第3頁
《單片機原理及應(yīng)用》課件-第7章_第4頁
《單片機原理及應(yīng)用》課件-第7章_第5頁
已閱讀5頁,還剩165頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第7章單片機并行擴展技術(shù)7.1單片機的最小系統(tǒng)7.2總線擴展及編址方法7.3存儲器的擴展7.4并行I/O口的應(yīng)用7.5A/D、D/A轉(zhuǎn)換器及應(yīng)用思考與練習(xí)

51系列單片機在一塊芯片上集成了CPU、RAM、ROM及I/O口等計算機的基本部件,使用起來非常方便。但單片機內(nèi)的RAM、ROM和I/O接口數(shù)量有限,不夠使用時,需進行擴展。因此,單片機的系統(tǒng)擴展主要是指外接數(shù)據(jù)存儲器、程序存儲器或I/O接口等,以滿足應(yīng)用系統(tǒng)的需要。

7.1單片機的最小系統(tǒng)

最小應(yīng)用系統(tǒng),是指能維持單片機運行的最簡單配置的系統(tǒng)。這種系統(tǒng)成本低廉、結(jié)構(gòu)簡單,常用來構(gòu)成簡單的控制系統(tǒng),如開關(guān)狀態(tài)的輸入/輸出控制等。對于片內(nèi)有ROM/EPROM的單片機,其最小應(yīng)用系統(tǒng)即為配有晶振、復(fù)位電路和電源的單個單片機。對于片內(nèi)無ROM/EPROM的單片機,其最小系統(tǒng)除了外部配置晶振、復(fù)位電路和電源外,還應(yīng)當(dāng)外接EPROM或E2PROM作為程序存儲器使用。

當(dāng)然,最小系統(tǒng)有可能無法滿足應(yīng)用系統(tǒng)的功能要求。比如,有時即使有內(nèi)部程序存儲器,但由于程序很長,程序存儲器容量可能不夠;對一些數(shù)據(jù)采集系統(tǒng),內(nèi)部數(shù)據(jù)存儲器容量也可能不夠等,這就需要根據(jù)情況擴展EPROM、RAM、I/O口及其他所需的外圍芯片。

7.1.180C51/89C51最小應(yīng)用系統(tǒng)

51系列單片機的特點就是體積小,功能全,系統(tǒng)結(jié)構(gòu)緊湊,硬件設(shè)計靈活。對于簡單的應(yīng)用,最小系統(tǒng)即能滿足要求。

80C51/89C51是片內(nèi)有ROM/E2PROM的單片機,因此,用這些芯片構(gòu)成的最小系統(tǒng)簡單、可靠。

用80C51/89C51單片機構(gòu)成最小應(yīng)用系統(tǒng)時,只要將單片機接上時鐘電路和復(fù)位電路即可,具體電路見第2章。

7.1.28031最小應(yīng)用系統(tǒng)

8031是片內(nèi)無程序存儲器的芯片,因此,其最小應(yīng)用系統(tǒng)必須在片外擴展EPROM。圖7-1所示為外接程序存儲器的最小應(yīng)用系統(tǒng)。片外8KB單元地址要求地址線13根

(A0~A12),它由P0和P2.0~P2.4組成;地址鎖存器的鎖存信號為ALE(AddressLatchEnable)。程序存儲器的選通信號為PSEN(ProgramStoreEnable)。由于程序存儲器芯片

只有一片,故其片選線(CE)可以直接接地。圖7-18031最小應(yīng)用系統(tǒng)

8031芯片本身的連接除了EA必須接地地外(選擇外部存儲器),其他與80C51/89C51最小應(yīng)用系統(tǒng)一樣,也必須有復(fù)位及時鐘電路。

7.2總線擴展及編址方法

7.2.1單片機的外總線結(jié)構(gòu)圖7-2給出了單片機應(yīng)用系統(tǒng)的外總線結(jié)構(gòu)示意圖。

單片機是通過地址總線線、數(shù)數(shù)據(jù)總線和控制總線與外部交換信息的的。圖7-2單片機的三總線結(jié)構(gòu)

1.地址總線

地址總線寬度為16位,因此其尋址范圍為216=64KB。

高8位地址由P2口提供供,因為P2口具有輸出鎖存功能,且用于外部擴展時一般不做他用,所以不需地址鎖存器。

低8位地址由P0口提供供,PP0口是數(shù)據(jù)據(jù)、地地址分時使用的通道口口。為了保存地址信息,需外加地址鎖存器。鎖存器的鎖存信號為引腳ALE輸出的控制信號,在ALE的下降沿將P0口輸出的地址鎖存。

2.數(shù)據(jù)總線

數(shù)據(jù)總線由P0口提供,其寬度為8位,該口為三態(tài)雙向口,是應(yīng)用系統(tǒng)中使用最為頻繁的通道。單片機所有需要與外部交換的數(shù)據(jù)、指令、信息,除少數(shù)可直接通過P1口傳送

外,大部分都通過P0口傳送。

3.控制總線

系統(tǒng)擴展時,常用的控制信號如下:

(1)EA:內(nèi)部和外部程序存儲器的選擇控制信號。當(dāng)EA=0時,只訪問外部程序存儲器。

(2)ALE:地址鎖存允許信號。

(3)PSEN:外部程序存儲器讀信號。

(4)WR:外部數(shù)據(jù)存儲器寫信號。

(5)RD:外部數(shù)據(jù)存儲器讀信號。

其中,EA引腳的電平高低由用戶決定;ALE信號自動產(chǎn)生;PSEN在訪問外部程序存儲器時自動產(chǎn)生;RD、WR信號在執(zhí)行MOVX指令時自動產(chǎn)生。

7.2.2單片機的擴展能力

根據(jù)單片機地址總線寬度,在片外可擴展的存儲器最大容量為64KB,地址范圍為0000H~FFFFH。由于片外數(shù)據(jù)存儲器和程序存儲器的操作使用不同的指令和控制信號,允許兩者的地址重復(fù),因此片外可擴展的數(shù)據(jù)存儲器與程序存儲器各為64KB。.

片外數(shù)據(jù)存儲器與片內(nèi)數(shù)據(jù)存儲器的操作指令不同,所以也允許兩者的地址重復(fù),即外部擴展數(shù)據(jù)存儲器的地址可以從0000H開始。

MCS-51單片機片外程序存儲器與片內(nèi)程序存儲器采用相同的操作指令,對片內(nèi)、片外程序存儲器的選擇依靠硬件來實現(xiàn):當(dāng)EA=0時,不論片內(nèi)有無程序存儲器,片外程序

存儲器的地址都可以從0000H開始;但當(dāng)EA=1時,前4KB的地址(0000H~0FFFH)為片內(nèi)程序存儲器所有,片外擴展的程序存儲器的地址只能從1000H開始設(shè)置。

為了配置外圍設(shè)備而需要擴展的I/O口與片外數(shù)據(jù)存儲器統(tǒng)一編址,不再另外提供地址線。所以,當(dāng)應(yīng)用系統(tǒng)需要大量配置外圍設(shè)備以及擴展較多的I/O口時,要占去大量的

RAM地址。

7.2.3地址譯碼方法

擴展芯片與CPU地址總線的連接方式,必須滿足對這些芯片所分配的地址范圍的要求。CPU發(fā)出的地址信號必須實現(xiàn)兩種選擇:片選(即對對擴展芯片的選擇,使使相關(guān)芯片的片選端CS為有效效)和字選(即在在選中的芯片內(nèi)部再選擇某一存儲單元)。片選信號和字選信號均由CPU發(fā)出的地址信號經(jīng)譯碼產(chǎn)生。通常的連接方法是:將擴展芯片的地址線和單片機的地址總線中的若干根低位地址線對應(yīng)相連,其余的地址線(通常是P2口的高位地址)通過地址譯碼來產(chǎn)生外部擴展芯片的片選信號CE或CS。常用的地址譯碼方法有線選法和譯碼法兩種。

1.線選法

所謂線選法法,就就是將多余的高位地址線中單獨的一根直接接到擴展芯片的使能端上上。

線選法編址的特點是簡單明了,且不需要另外增加電路。由于片選線一般都是采用高位地址線,對于擴展芯片數(shù)量較多的應(yīng)用系統(tǒng),這些芯片所需要的片選信號的數(shù)量有可能多于可用的高位地址線數(shù)量,因此采用線選法無法解決問題。另外,這種編址方法對存儲空間的使用是斷續(xù)的,不能充分有效地利用存儲空間,且擴充容量受限,因而只適用于小規(guī)模

單片機系統(tǒng)的外圍芯片擴展。

圖7-3所示為線選法應(yīng)用實例。圖中所擴展的芯片地址范圍如表7-1所示,其中×可以取“0”,也可以取“1”,用十六進制數(shù)表示的地址如下:

2764(1):4000H~5FFFH,或C000H~DFFFH,有地址重疊現(xiàn)象。

2764(2):2000H~3FFFH,或A000H~BFFFH,有地址重疊現(xiàn)象。

6264(1):C000H~DFFFH。

6264(2):A000H~BFFFH。

8255:6000H~6003H,或6FFCH~6FFFH,或其他。8255雖然只用了四個存儲單元,但占用的地址空間可能從6000H一直到6FFFH,具體取決于那些“×”地址線的使用情況。圖7-3線選法應(yīng)用實例

2.譯碼法

所謂譯碼法,就是使用譯碼器對系統(tǒng)的高位地址進行譯碼,以譯碼輸出作為存儲芯片的片選信號,將低位地址作為存儲芯片的片內(nèi)地址。這是一種最常用的存儲器編址方法,

能有效地利用存儲空間,適用于大容量多芯片存儲器擴展;其缺點是增加了硬件電路。譯碼電路可以使用現(xiàn)有的譯碼器芯片,常用的譯碼芯片有74LS139(雙2-4譯碼器)和74LS138(3-8譯碼器)等。

1)全譯碼法

全譯碼法是指將各擴展芯片上的地址線均接到單片機系統(tǒng)的對應(yīng)的地址總線上,各芯片的選擇利用譯碼電路實現(xiàn),地址譯碼器使用余下的全部地址線,地址與存儲單元一一對

應(yīng),也就是一個存儲單元只占用一個唯一的地址。全譯碼法的特點是:各擴展芯片均有獨立片選控制線,且地址連續(xù),這種方法可以消除地址空間重疊現(xiàn)象和斷續(xù)現(xiàn)象,可擴展較多的外圍芯片。如圖7-4所示是全譯碼法的一個簡單應(yīng)用實例,圖中各芯片的地址范圍如下:圖7-4全譯碼法應(yīng)用實例

2)部分譯碼法

部分譯碼法是指地址譯碼器僅對余下高位地址線的一部分進行譯碼,產(chǎn)生片選信號。這種方法也會產(chǎn)生地址重疊現(xiàn)象。

全譯碼法和部分譯碼法的區(qū)別在于剩余的高位地址線是否全部接地址譯碼器,在設(shè)計地址譯碼器電路時,需要充分注意。除了使用譯碼器進行譯碼,還可以使用組合邏輯電路構(gòu)成譯碼電路,此時只需符合相應(yīng)的地址安排。

隨著存儲器集成電路技術(shù)的進步,大容量存儲器的成本和售價大幅降低。單片機的外擴存儲器通常只要一片即可,例如使用27512/27C512(64KB),其價格和2764、2732相

當(dāng)。所以,以上給出的存儲器擴展方法已無多大實用意義,但介紹的總線控制技術(shù)仍然十分有用,可以有效地應(yīng)用到其他外圍芯片的擴展中。

7.3存儲器的擴展

7.3.1EPROM程序存儲器的擴展1.EPROM芯片簡介EPROM芯片是紫外線擦除可編程只讀存儲器,其上有一個玻璃窗口,在紫外線的照射下,存儲器中的各位信息都為1,一般擦除次數(shù)可達上百次,甚至可達到萬次,所以稱為紫外線擦除可編程只讀存儲器。EPROM重新編程時,需從插座上取出,放到專門的擦寫器上,擦除干凈的EPROM芯片通過編程器將應(yīng)用程序固化到芯片中。

圖7-5所示是部分27系列EPROM芯片的引腳圖,各引腳功能如下:

(1)A0~Ai:地址線(不同容量芯片的地址線數(shù)目不同,i表示芯片的地址線數(shù)目)。

(2)D0~D7:8位輸出數(shù)據(jù)線。

(3)CE:片選端。

(4)OE:輸出允許端。

(5)VPP:編程電壓。

(6)PGM:編程脈沖輸入端。圖7-5部分27系列EPROM芯片的引腳圖

2.EPROM基本擴展法

圖7-6給出了外部程序存儲器的典型連接方法。圖7-6外部程序存儲器的典型連接方法

1)地址線的連接

存儲器低8位地址線A0~A7與P0口(經(jīng)鎖存器)的輸出端相連。

存儲器高8位地址線A8~A15中的若干根與P2口(無須經(jīng)過鎖存器)相連。P2口其余的高位地址線用作片選地址線(線選或譯碼)。

2)數(shù)據(jù)線的連接

存儲器的8位數(shù)據(jù)線與P0口相連。

3)控制線的連接

(1)PSEN:外部程序存儲器讀信號,與EPROM芯片的輸出允許端OE相連。

(2)ALE:接至地址鎖存器鎖存信號端。

(3)EA:采用8031/8032時,EA應(yīng)接地;采用8751、89C51等型號的芯片并且使用到內(nèi)部程序存儲器時,EA應(yīng)接高電平。

【例7-1】用兩片2764EPROM芯片為8031單片機擴展16KB的程序存儲器,試畫出線路連接圖。

連接方法:

(1)將兩片2764EPROM芯片低8位地址線A0~A7通過地址鎖存器與8031P0口的P0.0~P0.7相連,高5位地址線A8~A12直接與P2口的P2.0~P2.4相連。

(2)將兩片2764EPROM芯片的數(shù)據(jù)線D0~D7直接接到P0口,作為數(shù)據(jù)總線。

(3)用P2.5和一個“非門”產(chǎn)生兩個片選信號,將P2.5直接接到上方EPROM的CE端,另一個經(jīng)過“非門”接到下方EPROM的CE端,如圖7-7所示。當(dāng)P2.5=0時,選中上方的EPROM;當(dāng)P2.5=1時,反相選中下方的EPROM。

兩個芯片的地址范圍:

在圖7-7的連接方式中,P2.6和P2.7并沒有參與譯碼,而用P2.5經(jīng)過“12”譯碼器產(chǎn)生兩個片選信號,所以該連接方式屬于部分譯碼方式,兩個芯片的地址范圍如下:

①2764(1):××00000000000000B~××01111111111111B,由于“×”可以取“0”、“1”之中的任一值,故十六進制地址有四組,即0000H~1FFFH,4000H~5FFFH,8000H~9FFFH,C000H~DFFFH

②2764(2):××10000000000000B~××11111111111111B,十六進制地址有四組,即

2000H~3FFFH,6000H~7FFFH,A000H~BFFFH,E000H~FFFFH

可以看出,部分譯碼方式和線選法一樣同樣浪費地址空間,出現(xiàn)地址重疊的情況。圖7-7兩片2764擴展16KB程序存儲器

7.3.2E2PROM程序存儲器的擴展

1.E2PROM芯片簡介

電擦除可編程只讀存儲器E2PROM是近年來國外廠家推出的新產(chǎn)品,它的主要特點是能在計算機系統(tǒng)中進行在線修改,并能在斷電的情況下保持修改的結(jié)果。因此,自從

E2PROM問世以來,在智能化儀器儀表、控制裝置、終端機、開發(fā)裝置等各種領(lǐng)域中受到極大的重視。下面介紹典型E

2PROM存儲器芯片Intel2864A。

Intel2864A是8K×8bit的電可擦除可編程只讀存儲器,單一+5V供電,最大工作電流為140mA,維持電流為60mA。由于其片內(nèi)設(shè)有編程所需的高壓脈沖產(chǎn)生電路,因圖7-82864A引腳圖而無需外加編程電源和寫入脈沖即可工作。Intel2864A采用典型的28引腳結(jié)構(gòu),與常用的8KB靜態(tài)RAM6264引腳完全兼容。其芯片引腳如圖7-8所示。圖7-82864A引腳圖

2.E2PROM基本擴展法

MCS51單片機擴展E2PROM時,地址線和數(shù)據(jù)線的

連接方法與EPROM連接方法相同,控制線的連接中,只有

單片機的PSEN及RD信號與EPROM的連接有所不同。若

E2PROM僅作為程序存儲器,則將PSEN信號與OE引腳相

連。若E2PROM僅作為數(shù)據(jù)存儲器,則將RD信號與OE引腳相連。如E2PROM既作為數(shù)據(jù)存儲器用,又作為程序存儲器用,可將PSEN信號和RD信號經(jīng)過相“與”后與OE引腳相連。圖7-9所示是E2PROM芯片的一般連接圖。圖7-9E2PROM芯片的一般連接圖

7.3.3數(shù)據(jù)存儲器及其擴展

在MCS51單片機的產(chǎn)品中,片內(nèi)數(shù)據(jù)存儲器的容量一般很小。當(dāng)數(shù)據(jù)量較大時,需要在片外擴展RAM數(shù)據(jù)存儲器,擴展的容量最大可達64KB。但由于MCS-51系列單

片機對片外擴展的I/O口采用外部數(shù)據(jù)存儲器映射方式進行輸入/輸出(即將片外I/O口的數(shù)據(jù)寄存器當(dāng)作外部數(shù)據(jù)存儲器的一個單元來看待,在指令系統(tǒng)及接口上不對這兩者加以區(qū)別),在這種情況下,允許直接擴展的外部數(shù)據(jù)存儲器的容量將不足64KB。

1.RAM芯片簡介

RAM的典型芯片有6116(2K×8bit)、6264(8K×8bit)等。圖7-10所示為6264芯片引腳圖,其引腳功能如下:圖7-106264芯片引腳圖

2.外部數(shù)據(jù)存儲器的擴展方法

外部數(shù)據(jù)存儲器的連接方法與程序存儲器的連接方法大致相同,區(qū)別在于控制線的連接。圖7-11所示為外部數(shù)據(jù)存儲器的一般連接方法,其中WR是外部數(shù)據(jù)存儲器的寫信

號,與RAM芯片的WE引腳相連;RD是外部數(shù)據(jù)存儲器的讀信號,與RAM芯片的OE引腳相連。圖7-11外部數(shù)據(jù)存儲器的一般連接方法

【例7-2】用三片6264芯片為AT89C51單片機擴展24KB的外部數(shù)據(jù)存儲器,分別采用線選法、部分譯碼法和全譯碼法來實現(xiàn),并給出各芯片的地址范圍,譯碼芯片不限。

連接方法和地址:其線路連接如圖7-12所示。圖7-12用6264芯片擴展24KB的數(shù)據(jù)存儲器圖7-12用6264芯片擴展24KB的數(shù)據(jù)存儲器圖7-12用6264芯片擴展24KB的數(shù)據(jù)存儲器

地址線:將6264芯片的低8位地址線A0~A7通過地址鎖存器74LS373與AT89C51P0口的P0.0~P0.7相連,高5位地址線A8~A12直接與P2口的P2.0~P2.4相連。

數(shù)據(jù)線:將6264芯片的數(shù)據(jù)線D0~D7直接接到P0口,作為數(shù)據(jù)總線。

控制線:將6264芯片的輸出允許端OE直接接到AT89C51的P3.7(RD),寫允許端WE直接接到P3.6(WR)。ALE與鎖存器74LS373的G相連,產(chǎn)生鎖存控制信號。

(1)線選法:在圖7-12(a)中,由于擴展三片,故將P2.5、P2.6、P2.7分別與三個6264芯片的CE相連,產(chǎn)生三個片選信號。

單片機P2.7=1、P2.6=1和P2.5=0是固定的,僅P2.5是低電平,選中第一個RAM,其余的地址線與6264(1)地址線直接相連,可以任意為“0”或“1”,均為有效地址。6264(1)的地址范圍是1100000000000000B~1101111111111111B,十六進制地址范圍為C000H~DFFFH。

P2.7=1、P2.6=0和P2.5=1時,選中第二個RAM,6264(2)的十六進制地址范圍為A000H~BFFFH。

P2.7=0、P2.6=1和P2.5=1時,選中第三個RAM,6264(3)的十六進制地址范圍為6000H~7FFFH。

顯然,用線選法會使存儲空間不連續(xù),也不能充分有效地利用存儲空間,擴充存儲容量受限。

(2)部分譯碼法:在圖7-12(b)中,P2.6、P2.7與74LS139(24譯碼器)輸入端A、B相連,三個輸出信號Y0、Y1和Y2與三片存儲器的CE端相連,由于P2.5空閑,可以選擇0或1,這時,第一個RAM可訪問的二進制地址范圍為00×0000000000000B~00×1111111111111B,由此可得兩組地址:0000000000000000B~0001111111111111B和

0010000000000000B~0011111111111111B,另兩個RAM可用類似方法獲得地址編碼,所以三片6264芯片的十六進制地址范圍如下:

6264(1):0000H~1FFFH和2000H~3FFFH;

6264(2):4000H~5FFFH和6000H~7FFFH;

6264(3):8000H~9FFFH和A000H~BFFFH。

通過地址范圍可以看出,每個芯片占用了16KB的地址空間,而每個芯片實際的容量是8KB,原因是地址線P2.5沒有參與譯碼,這種部分譯碼方式也存在地址空間浪費的情況。在這種情況下,地址0000H和2000H指向的是同一數(shù)據(jù)存儲器單元,其余類似。

(3)全譯碼法:如果把譯碼器換成74LS138,則P2.5(A13)也參與了譯碼,這種全譯碼(所有剩余高地址線都參與譯碼)方式不存在地址空間浪費,如圖7-12(c)所示。使用Y0、Y1和Y2作片選信號,則三片6264芯片的地址范圍如下:

6264(1):0000000000000000B~0001111111111111B,0000H~1FFFH。

6264(2):0010000000000000B~0011111111111111B,2000H~3FFFH。

6264(3):0100000000000000B~0101111111111111B,4000H~5FFFH。

注意:在擴展單片數(shù)據(jù)存儲器時,存儲器片選端能否直接接地,還需考慮應(yīng)用系統(tǒng)中有無I/O口及外圍設(shè)備擴展,如果有,則要用剩余高地址線通過譯碼統(tǒng)一進行片選選擇,而8031因無片內(nèi)ROM,還要同時進行外部程序存儲器擴展。

7.4并行I/O口的應(yīng)用

在計算機應(yīng)用系統(tǒng)中,因系統(tǒng)擴展外部存儲器而占用P2和P0口,而P3口又被作為第二功能使用時,留給用戶的只有P1口,這時不可避免地要進行I/O口的擴展,以便有效地與外部設(shè)備相連接。由于MCS51系列單片機的外部RAM和I/O口是統(tǒng)一編址的,因此用戶可以把單片機的外部64KBRAM空間的一部分作為擴展I/O的地址空間。這樣,單片機就可以像訪問外部RAM存儲器那樣訪問外部接口芯片,對其端口進行讀/寫操作。

7.4.1I/O口的簡單擴展

圖7-13所示是一個采用緩沖器74LS244作為擴展輸入、鎖存器74LS273作為擴展輸出的簡單I/O擴展應(yīng)用。圖7-13用74LS273和74LS244進行簡單I/O擴展

【例7-3】如圖7-13所示,編寫一段程序,功能是按下任意鍵,使對應(yīng)的LED發(fā)光。

分析:當(dāng)74LS244選通時,與74LS244相連的按控信息將會從D0~D7引腳輸入,并從Q0~Q7輸出,再輸入到P0口的數(shù)據(jù)總線上。

當(dāng)74LS273選通時,從P0口輸出的數(shù)據(jù)將被鎖存到74LS273的輸出端,控制Q0~Q7引腳上接的發(fā)光二極管LED。

因為74LS244和74LS273都是在P2.0為0時被選通的,所以二者的口地址都可以是FEFFH(不是唯一的,只要保證P2.0=0)。但由于分別由RD和WR控制,這兩個信號都是

在執(zhí)行MOVX指令時產(chǎn)生的,因此,兩者不可能同時有效,所以在邏輯上,輸入和輸出不會產(chǎn)生沖突。

7.4.2LED數(shù)碼管顯示接口

顯示器是最常用的輸出設(shè)備,在單片機應(yīng)用系統(tǒng)中,常用發(fā)光二極管和數(shù)碼管作為顯示器顯示信息。由于數(shù)碼管結(jié)構(gòu)簡單、價格便宜、接口容易,在單片機系統(tǒng)中被大量使用。

1.LED數(shù)碼管顯示器的結(jié)構(gòu)

LED數(shù)碼管顯示器的結(jié)構(gòu)如圖7-14所示。LED數(shù)碼管顯示器內(nèi)部由8個發(fā)光二極管組成。其中7個長條形的發(fā)光二極管排列成“日”字形,另一個圓點形狀的發(fā)光二極管在顯示器的右下角,用于顯示小數(shù)點。當(dāng)二極管導(dǎo)通時,相應(yīng)的筆畫段發(fā)亮。因此,只要分別控制各筆畫段的發(fā)光二極管,使其中的某些發(fā)亮,就可以顯示各種不同的字符。圖7-14LED數(shù)碼管顯示器的結(jié)構(gòu)

LED數(shù)碼管顯示器的內(nèi)部結(jié)構(gòu)有兩種:

(1)共陽極結(jié)構(gòu):8個發(fā)光二極管的陽極全部連接在一起組成公共端,8個發(fā)光二極管的陰極單獨引出,當(dāng)公共端接高電平時,只要相應(yīng)的陰極出現(xiàn)低電平,對應(yīng)的發(fā)光二極管

就會發(fā)亮。

(2)共陰極結(jié)構(gòu):8個發(fā)光二極管的陰極全部連接在一起組成公共端,8個發(fā)光二極管的陽極單獨引出,當(dāng)公共端接低電平時,只要相應(yīng)的陽極出現(xiàn)高電平,對應(yīng)的發(fā)光二極管就會發(fā)亮。

無論是共陰極還是共陽極結(jié)構(gòu)的LED顯示器,它們排列成“日”字形的各筆畫段的安排順序都是相同的,如圖7-14中的“a、b、c、d、e、f、g、dp

”。

2.LED數(shù)碼管的驅(qū)動方法

在單片機應(yīng)用系統(tǒng)中,LED數(shù)碼管顯示器的顯示方法有兩種:靜態(tài)顯示法和動態(tài)掃描顯示法。

1)靜態(tài)顯示法

圖7-15所示為一個4位的靜態(tài)顯示器電路。

所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一個字符時,相應(yīng)的發(fā)光二極管恒定地導(dǎo)通或截止。例如,七段顯示器的a、b、c、d、e、f導(dǎo)通,g截止,則顯示0。這種顯示方式,每一位都需要有一個8位輸出口控制,所以占用硬件多,一般用于顯示器位數(shù)較少(很少)的場合。圖7-154位LED靜態(tài)顯示電路

在靜態(tài)顯示電路中,由于I/O只要有段碼輸出,相應(yīng)字符就會顯示出來,并保持不變,直到I/O輸出新的段碼,因此,為防止燒壞LED,一般要在LED的8個發(fā)光二極管的各引

出端接限流電阻,阻值大小根據(jù)額定導(dǎo)通電流來確定。

當(dāng)位數(shù)較多時,用靜態(tài)顯示所需的I/O口太多,一般采用動態(tài)顯示方法。

用74LS164擴展兩個8位靜態(tài)數(shù)碼顯示電路設(shè)計如圖716所示。單片機的串行口工作在方式0,即移位寄存器方式,74LS164是8位串入/并出的移位寄存器。顯示數(shù)據(jù)時,串行數(shù)據(jù)由單片機的P3.0(RxD)送出,同步移位時鐘脈沖由P3.1(TxD)送出。在移位時鐘脈沖的作用下,串行口發(fā)送緩沖器SBUF中的數(shù)據(jù)按先后順序逐位移入74LS164移位寄存器中,于是兩片74LS164的并行輸出口將并行輸出移入的數(shù)據(jù),分別驅(qū)動兩個LED數(shù)碼管顯示數(shù)據(jù)。

【例7-4】試將RAM緩沖區(qū)40H、41H中的單BCD碼通過74LS164并行輸出并顯示到兩位LED數(shù)碼管,如圖7-16所示。假設(shè)LED數(shù)碼管是共陽的。

分析:40H和41H中的單BCD碼是“0~9”,需讀取字形碼,再放入到40H和41H;設(shè)置串行口工作于方式0,然后將P1.0置“1”,選通74LS164,最后調(diào)用一個串行輸出16

位的子程序。圖7-1674LS164驅(qū)動的靜態(tài)數(shù)碼顯示電路

2)動態(tài)掃描顯示法

在多位LED顯示時,為了簡化電路,降低成本,一般采用動態(tài)掃描顯示方式。動態(tài)掃描顯示是單片機應(yīng)用系統(tǒng)中最常用的顯示方式之一。圖7-17就是一個4位LED動態(tài)顯示電路。圖7-174位LED動態(tài)顯示電路

所謂動態(tài)顯示,就是一位一位地輪流點亮各位顯示器(掃描),對于每一位顯示器來說,每隔一段時間點亮一次,但由于人眼存在視覺暫留效應(yīng),加上發(fā)光二極管的余輝效應(yīng),只要掃描的速度足夠快,每位顯示的間隔時間足夠短,就可以給人同時顯示的感覺,而不會有閃爍感。調(diào)整電流和顯示時間間隔,可實現(xiàn)亮度較高且穩(wěn)定的顯示。

在動態(tài)顯示電路中,所有LED顯示器的8個筆畫段的各段同名端互相連接起來,并把它接到輸出I/O(1)口上(稱為數(shù)據(jù)口,8位),這樣I/O上輸出的字形碼會同時到達每個

LED的“dp、g、f、e、d、c、b、a”。為了防止各顯示器顯示同樣的數(shù)字,各個顯示器應(yīng)該輪流顯示,在某一時刻只能是其中的一個數(shù)碼管點亮,因此每個數(shù)碼管的COM端還要受到另一信號的控制,方法是將COM端接到另外一個I/O輸出口(稱為掃描口,位數(shù)與顯示器位數(shù)相等)上,某一個時刻只讓其中的一個COM出現(xiàn)低電平或高電平。

在MCS51單片機應(yīng)用系統(tǒng)中,若無需擴展外部存儲器等部件,可直接用單片機自帶的I/O口來構(gòu)建數(shù)碼管動態(tài)顯示系統(tǒng)。若外部擴展占用了I/O資源,可以采用8155、

8255等芯片擴展I/O口,構(gòu)建數(shù)碼管動態(tài)顯示系統(tǒng)。

【例7-5】圖7-18為利用單片機P2口和P1口構(gòu)成的動態(tài)顯示的電路,共有6個共陽極LED數(shù)碼管顯示器,P2口為字段口,輸出字形碼,P2.0~P2.7分別與“a、b、c、d、e、f、g、dp”對應(yīng)相連,P1口為字位口,輸出位碼。編寫程序,使圖7-18的動態(tài)掃描顯示電路從左到右顯示l、2、3、4、5、6共六個字符。設(shè)晶振頻率為12MHz。

分析:在第一時刻從P2口輸出1的字形碼,從P1口輸出00100000B(20H),使最左邊的LED點亮;延時一段時間后,從P2口輸出2的字形碼,從P1口輸出00010000B(10H),使左邊第二個LED點亮;依次循環(huán),最后從P2口輸出6的字形碼,從P1口輸出0000001B(01H),使最右邊的LED點亮;再回過頭從左邊第一個開始。

獲取字形碼采用查表方式,將字形碼以表格的形式按順序存儲到ROM中,將表格首地址取到DPTR中,將要顯示的數(shù)字送給累加器A,執(zhí)行“MOVCA,@A+DPTR”指令獲取字形碼。

對于動態(tài)掃描顯示而言言,由由于各數(shù)碼管大部分時間不亮亮,只只有一小部分時間亮亮,因因此在設(shè)計實際的硬件電路時時,并并不一定需要加限流電阻阻,可以將單片機輸出段碼的I/O直接接到LED的8個發(fā)光二極管的各引出端。

采用動態(tài)顯示方式比較節(jié)省I/O口,硬件電路也較簡單,但其亮度不如靜態(tài)顯示方式。而且在顯示位數(shù)較多時,CPU要依次掃描,占用CPU較多的時間。我們已經(jīng)知道,一旦程序使用軟件延時,在CPU執(zhí)行延時程序的時候,就不能做其他的事,這樣勢必會降低CPU的效率。在實際應(yīng)用中,當(dāng)然不可能只顯示幾個數(shù)字,還要做其他的事。這時,我們可以借助定時器。定時時間一到,產(chǎn)生中斷,更換一個數(shù)碼管點亮,然后立刻返回;此次點亮的數(shù)碼管會一直亮到下一次定時時間到。這段時間內(nèi)不執(zhí)行延時程序,可以留給主程序做其他的事。到下一次定時時間到,則點亮下一個數(shù)碼管。

7.4.3鍵盤接口

在單片機應(yīng)用系統(tǒng)中,為了控制系統(tǒng)的工作狀態(tài),以及向系統(tǒng)輸入數(shù)據(jù),應(yīng)用系統(tǒng)應(yīng)設(shè)有按鍵或鍵盤。鍵盤按接口形式可以分為獨立連接式和行列(矩陣)式兩類,按結(jié)構(gòu)形式可分為編碼鍵盤和非編碼鍵盤。

編碼鍵盤除了按鍵以外,還包括產(chǎn)生編碼的硬件芯片(如:8279);非編碼鍵盤靠軟件來識別鍵盤上的閉合鍵,由此得出鍵值,在單片機應(yīng)用系統(tǒng)中被普遍采用。

1.非編碼鍵盤的設(shè)計原理

非編碼鍵盤的設(shè)計必須解決以下問題:

(1)判定是否有鍵按下。

(2)若有鍵按下,判定是哪個鍵按下,確定被按鍵的“鍵值”。

(3)除抖動。按鍵從最初的按下到接觸穩(wěn)定要經(jīng)過數(shù)毫秒的抖動時間,鍵松開時也有同樣的問題,如圖7-19所示。抖動會引起一次按鍵多次讀數(shù),實際使用時必須避免。可

以用硬件或軟件方法來消除抖動。通常,鍵數(shù)較少時,采用硬件消除抖動,如用RS觸發(fā)器消除抖動(見圖7-20);鍵數(shù)多時,常用軟件消除抖動。當(dāng)檢出鍵按下后執(zhí)行一個延時子程序產(chǎn)生數(shù)毫秒的延時,使前沿抖動消失后再檢驗鍵的閉合;當(dāng)發(fā)現(xiàn)鍵松開后,也要經(jīng)數(shù)毫秒的延時,待抖動消失后再檢驗下一次鍵的閉合。

圖7-19鍵閉合及斷開時的電壓抖動圖7-20由RS觸發(fā)器構(gòu)成的去抖電路

(4)準(zhǔn)確得出按鍵值(或鍵號),以滿足跳轉(zhuǎn)指令要求。鍵盤上的每個鍵都應(yīng)有一個鍵值,CPU將根據(jù)它來執(zhí)行相應(yīng)的功能程序。為了方便地使用散轉(zhuǎn)指令,在許多場合下,常

采用依次排列鍵值的方法,這時的鍵值與鍵號一致。比如對圖7-23中的矩陣鍵盤,就可以將S1~S16號鍵的鍵值直接定為00H~0FH,這樣,掃描后得到的鍵值(存放在A中)可

以直接用于散轉(zhuǎn)指令。指令系統(tǒng)中的散轉(zhuǎn)指令“JMP@A+DPTR”,就是專門為了配合鍵輸入信息而設(shè)置的。

(5)同一按鍵長時間持續(xù)按下。在一般情況下,無論一次按鍵的時間有多長,系統(tǒng)僅執(zhí)行一次按鍵功能程序,但是很多智能儀表的數(shù)據(jù)修改鍵恰好充分利用這一特點,來增加數(shù)據(jù)的修改速度。

(6)處理同時按鍵。由于硬件條件限制,系統(tǒng)可以用多個按鍵的組合鍵實現(xiàn)不同功能,若沒有組合鍵功能,也可采用對按鍵位的查詢順序來確定哪個按鍵有效。

2.單片機對非編碼鍵盤的控制方式

單片機獲取按鍵狀態(tài)有三種方式:程序查詢方式、定時掃描方式和中斷掃描方式。

1)程序查詢方式

采用程序查詢方式將使CPU時刻處于鍵盤檢測狀態(tài),不能做其他事。對于單片機應(yīng)用系統(tǒng),鍵盤處理往往只是CPU工作的一部分,所以此種方式效率低下。

2)定時掃描方式

單片機對鍵盤的掃描也可以采用定時掃描方式,即每隔一定的時間對鍵盤掃描一次。在這種掃描方式中,通常利用單片機的定時器,產(chǎn)生10ms的定時中斷,CPU響應(yīng)定時器

溢出中斷請求,調(diào)用鍵盤掃描子程序,以響應(yīng)鍵盤輸入請求。鍵盤掃描子程序流程圖如圖7-21所示,其中KM為除抖動標(biāo)志位。需要說明的是,鍵按下或鍵抬起都會執(zhí)行按鍵處

理程序,所以我們還需在按鍵處理程序前識別按鍵是按下還是抬起,以便執(zhí)行不同的程序來分別處理。圖7-21鍵盤掃描子程序流程圖

3)中斷掃描方式

在鍵盤定時掃描方式中,CPU總要定時掃描,若此時定時中斷程序僅僅是進行鍵盤掃描,則在大多數(shù)情況下,CPU對鍵盤是空掃描。為提高CPU的效率,可以采用中斷掃描方式。當(dāng)鍵盤有鍵閉合時,產(chǎn)生中斷請求,CPU響應(yīng)中斷,執(zhí)行服務(wù)程序,判斷鍵號,做相應(yīng)處理。

3.獨立式按鍵接口電路

獨立式按鍵是指直接用I/O口線構(gòu)成的單個按鍵電路。每個獨立式按鍵單獨占用一位I/O口線。獨立式按鍵電路如圖7-22所示。

獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。但由于每個按鍵必須單獨占用一根I/O口線,在按鍵數(shù)量較多時,I/O口線浪費較大。如果應(yīng)用系統(tǒng)中的鍵較少,就可采用獨立式

的鍵盤接口電路。

【例7-6】根據(jù)圖7-22所示的獨立式按鍵電路,編寫程序查詢方式的鍵盤處理子程序。

分析1:假設(shè)I/O口是P3口,當(dāng)某一按鍵Sn(n=4~7)閉合時,P3.n輸入為低電平;釋放時,P3.n輸入為高電平。

在程序中S4~S7為每個按鍵功能程序入口地址標(biāo)號,PROM4~PROM7為每個按鍵的功能程序。圖7-22獨立式按鍵電路

分析2:可以采用散轉(zhuǎn)指令來編寫程序。S4閉合時,P3輸入1110××××;S5閉合時,P3輸入1101××××;

S6閉合時,P3輸入1011××××;S7閉合時,P3輸入0111

××××。將對應(yīng)值轉(zhuǎn)換成00000000、00000001、00000010、00000011,即0~3;采用帶進位位右移的方法,通過進位位Cy=0來計算移位次數(shù),即是需要的鍵值;然后轉(zhuǎn)換值乘3得到偏移量。需要注意的是:低4位沒用,應(yīng)先右移4次。

4.矩陣式鍵盤

1)矩陣式鍵盤的結(jié)構(gòu)

在鍵盤中按鍵數(shù)量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式,如圖7-23所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處通過一個按鍵加以連接。

這樣,一個8位并行端口(如P3口)最多可以構(gòu)成4×4=16個按鍵,比直接將端口線用于鍵盤多出了一倍,而且線數(shù)越多,區(qū)別越明顯。比如,再多加一條線就可以構(gòu)成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。

2)矩陣式鍵盤的工作原理及按鍵的識別

矩陣式鍵盤的識別比獨立式要復(fù)雜一些。在圖723中,行線和列線所接的I/O口分別作為輸入端和輸出端。這樣,當(dāng)按鍵沒有按下時,所有的輸入端都是高電平,代表無鍵按下。若某輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入端的狀態(tài)即可知是否有鍵按下。識別按鍵的方法很多,其中最常用的是掃描法和反轉(zhuǎn)法。圖7-23矩陣式按鍵電路

(1)掃描法。

在圖7-23中,列線通過電阻接正電源,并將行線所接的I/O口作為輸出端,列線所接的I/O口作為輸入端。這樣,任何按鍵都沒有按下時,所有的列輸入端都是高電平。當(dāng)所有的行線都處于高電平時,按鍵按下與否不會影響列線電平的變化,因此,必須使行線處于低電平,只有這樣,當(dāng)有鍵按下時,該鍵所在的列電平才會由高電平變?yōu)榈碗娖?CPU根據(jù)列線電平的變化,便能判斷相應(yīng)的列是否有鍵按下。以圖7-23中4×4鍵盤的S5號鍵的識別為例來說明,當(dāng)S5鍵按下后,與此鍵相連的行線和列線導(dǎo)通,列0肯定是低電平。然而列0為低電平時能否肯定僅是S5鍵按下呢?當(dāng)然不行,因為S1、S9、S13號鍵按下也同樣可能會使列0為低電平。

為進一步確定具體鍵,不能使所有的行線在同一時刻都處于低電平。當(dāng)某一行線輸出是低電平時,比如行1處于低電平且行0、2、3處于高電平時,我們掃描的是S5、S6、S7、S8四個鍵是否按下,如S5鍵按下,則列0輸入為低,如S8鍵按下,則列3輸入為低。這樣,通過讀入列輸入線(列0)的狀態(tài)并結(jié)合行輸出線的狀態(tài)(行1)就可得知S5鍵是否按

下。以此類推,其他鍵是否按下,也可以通過這個方法確定。

所以,在某一時刻只能使1條行線處于低電平,其余行線都處于高電平;另一時刻,讓下一行處于低電平,依次循環(huán)。這種工作方式稱為鍵盤掃描。假設(shè)我們只考慮按鍵按下時有效(有些場合按鍵抬起時也要求系統(tǒng)能完成一定功能),那么一個完整的鍵盤掃描程序應(yīng)包括以下內(nèi)容:

①檢測當(dāng)前是否有鍵按下。方法是輸出全0信號到所有的行線上,然后讀所有列線的狀態(tài)。當(dāng)所有列線不全為1時,表明有鍵閉合;否則表明無鍵閉合,繼續(xù)等待。

②當(dāng)有鍵閉合時,可以采用硬件措施或調(diào)用軟件延時程序消除抖動。

③在確認(rèn)鍵已穩(wěn)定閉合后,需要進一步判斷是哪一個鍵閉合。方法是對鍵盤進行掃描,就是依次給每一條行線送出0信號,其余各行線均為1,并相繼檢測每一次掃描時所對

應(yīng)的列狀態(tài)。若各列全為1,則表示為0的這一行上沒有鍵閉合;否則為0的這一行上有鍵閉合,且閉合鍵所在的列就是列狀態(tài)為0的列。

④判斷閉合鍵是否釋放,如沒釋放,則繼續(xù)等待。

⑤用查表法或計算法得到鍵值,然后轉(zhuǎn)向相應(yīng)的處理程序。

鍵盤掃描也可以采用掃描列線判斷行線的方法。

【例7-7】如圖7-23所示矩陣式鍵盤,編寫鍵值獲取子程序。規(guī)定:S1~S16鍵對應(yīng)的鍵值為0~15,如果有鍵按下,鍵值存入A,以便用散轉(zhuǎn)指令轉(zhuǎn)移到不同的處理程序上

去。如果沒有鍵按下,則A中的值為FFH。

分析(掃描法):參考程序是一個子程序,入口名稱為KEYP。出口參數(shù)為A(即鍵值)。首先判斷是否有鍵按下,用R3做行掃描控制,初始值為00000001B;然后依次左移,共4次,從上到下分別掃描4條行線,R4為行號記錄寄存器,取值0、4、8、12,以便于直接計算鍵值。假設(shè)x為行位置,y為列位置,則鍵值為4x+y。由于x、y的取值均為0~3,故最終的鍵值為0~15。

【例7-8】設(shè)圖7-23中16個按鍵對應(yīng)的處理程序為WORK0~WORK15,利用例77獲得的鍵值,應(yīng)用散轉(zhuǎn)指令跳轉(zhuǎn)到按鍵對應(yīng)的處理程序上去。

分析:將獲得的鍵值(在A中)乘以3,得到偏移量,直接使用散轉(zhuǎn)指令“JMP@A+DPTR”,跳到相應(yīng)位置。

(2)反轉(zhuǎn)法。

掃描法要逐行(列)掃描查詢,當(dāng)所按下的鍵在最后行(列)時,要經(jīng)過多次掃描才能獲得鍵值或鍵號。而采用反轉(zhuǎn)法,只要經(jīng)過兩個步驟即可獲得鍵值。

反轉(zhuǎn)法原理如圖7-24所示,用一個8位I/O口構(gòu)成4×4鍵盤,I/O口的排列規(guī)律與圖723相同。假設(shè)圖中所畫為所按下的鍵,則實現(xiàn)例7-7鍵盤功能的反轉(zhuǎn)法原理如下:圖7-24反轉(zhuǎn)法原理圖

第一步,行輸出線(P3.3~P3.0)輸出0000,若有鍵按下,則列輸入線(P3.7~P3.4)為0的位對應(yīng)的是被按下鍵的列位置。如按下的是圖中所示的鍵,則輸入為1110,按鍵位于第

0列,并將這個輸入數(shù)據(jù)暫存入B(或某存儲單元)中。

第二步,列輸出線(P3.7~P3.4)輸出0000,若有鍵按下,則行輸入線(P3.3~P3.0)為0的位對應(yīng)的是被按下鍵的行位置。如按下的是圖中所示的鍵,則輸入為1101,按鍵位于第1行。

綜合這兩步,就知道按鍵所在的位置,圖示按鍵在第1行第0列。

7.5A/D、D/A轉(zhuǎn)換器及應(yīng)用

7.5.1A/D轉(zhuǎn)換器隨著單片機技術(shù)的不斷發(fā)展,許多新一代的單片機已經(jīng)在片內(nèi)集成了多路A/D轉(zhuǎn)換通道和PWM輸出,這大大簡化了電路和編程工作,但這類CPU芯片大多價格較貴。本節(jié)主要介紹CPU芯片內(nèi)無A/D轉(zhuǎn)換電路的MCS51單片機與A/D芯片的接口技術(shù)。

1.A/D轉(zhuǎn)換器的主要技術(shù)指標(biāo)

1)量化誤差與分辨率

分辨率反映A/D轉(zhuǎn)換器所能分辨的被測量的最小值,通常以輸出二進制位數(shù)或BCD碼值數(shù)表示。位數(shù)越多,量化分層越細(xì),分辨率就越高。例如,一個A/D轉(zhuǎn)換器為8位,則其分辨率為滿刻度電壓的1/28,該A/D轉(zhuǎn)換器能分辨的最小電壓值為5/28=20mV;若A/D轉(zhuǎn)換器為10位,則該A/D轉(zhuǎn)換器能分辨的最小電壓值為5/210=4.9mV。

為將模擬信號轉(zhuǎn)換為數(shù)字量,在A/D轉(zhuǎn)換過程中,還必須將采樣/保持電路的輸出電壓按某種近似方式歸化到相應(yīng)的離散電平上,這一轉(zhuǎn)化過程稱為數(shù)值量化,簡稱量化。量

化過程中所取最小數(shù)量單位稱為量化單位,用Δ表示,記為1LSB(LeastSignificantBit)。在量化過程中,由于采樣電壓不一定能被Δ整除,所以量化前后不可避免地存在誤差,此誤差稱為量化誤差。對于四舍五入量化方式,最大量化誤差理論上為±1/2LSB。

2)轉(zhuǎn)換精度

A/D轉(zhuǎn)換器的轉(zhuǎn)換精度反映了一個實際A/D轉(zhuǎn)換器在量化值上與一個理想A/D轉(zhuǎn)換器進行A/D轉(zhuǎn)換的差值,可表示成相對誤差和絕對誤差。常用數(shù)字量的位數(shù)作為度量

絕對精度的單位,如精度為±1/2LSB,而用百分比來表示滿量程時的相對誤差,如±0.05%。

注意,精度和分辨率是兩個不同的概念。精度指的是轉(zhuǎn)換后所得結(jié)果相對于實際值的準(zhǔn)確度,而分辨率指的是能對轉(zhuǎn)換結(jié)果發(fā)生影響的最小輸入量。分辨率很高的A/D轉(zhuǎn)換器可能由于溫度漂移、線性不良等原因而并不具有很高的精度。

3)轉(zhuǎn)換時間和轉(zhuǎn)換速度

A/D轉(zhuǎn)換器完成一次轉(zhuǎn)換所需要的時間稱為A/D轉(zhuǎn)換時間。轉(zhuǎn)換速度是轉(zhuǎn)換時間的倒數(shù)。

2.A/D轉(zhuǎn)換器的選擇

1)精度及分辨率的選擇

用戶提出的數(shù)據(jù)采集精度是綜合精度,可分為傳感器精度、信號調(diào)節(jié)電路精度和A/D轉(zhuǎn)換精度。應(yīng)將綜合精度在各個環(huán)節(jié)上進行分配,以確定A/D轉(zhuǎn)換器的精度要求,再根據(jù)它來確定A/D轉(zhuǎn)換器的位數(shù)。

2)轉(zhuǎn)換速度的選擇

有的系統(tǒng)有實時性要求。對于快速信號的采集,有時找不到高速的A/D轉(zhuǎn)換芯片,應(yīng)考慮采用采樣/保持電路。

3)轉(zhuǎn)換器輸出狀態(tài)的選擇

A/D轉(zhuǎn)換器輸出狀態(tài)的選擇包括以下內(nèi)容:是并行輸出還是串行輸出,是二進制碼輸出還是BCD碼輸出,是用外部時鐘、內(nèi)部時鐘還是不用時鐘,有無轉(zhuǎn)換結(jié)束狀態(tài)信號,與TTL、CMOS電路的兼容性等。

4)工作溫度范圍

由于溫度會對A/D轉(zhuǎn)換器內(nèi)部運算放大器和加權(quán)電阻網(wǎng)絡(luò)等產(chǎn)生影響,所以只有在一定的溫度范圍內(nèi)才能保證額定精度指標(biāo)。較好的轉(zhuǎn)換器件的工作溫度為-40℃~85℃,較差者為0℃~70℃。

3.A/D轉(zhuǎn)換器的種類

A/D轉(zhuǎn)換器的種類很多,目前最常用的是逐次逼近式A/D轉(zhuǎn)換器和雙積分式A/D轉(zhuǎn)換器。

1)逐次逼近式A/D轉(zhuǎn)換器

逐次逼近式A/D轉(zhuǎn)換器是目前種類最多、數(shù)量最大、應(yīng)用最廣的A/D轉(zhuǎn)換器件。逐次逼近式A/D轉(zhuǎn)換器中有一個逐次逼近寄存器SAR,數(shù)字量是由它產(chǎn)生的。SAR使用對分搜索法產(chǎn)生數(shù)字量。

以8位數(shù)字量為例,SAR首先產(chǎn)生8位數(shù)字量的一半,即10000000b,試探模擬量Ui的大小。若Uo>Ui,則清除最高位;反之,則保留最高位。在最高位確認(rèn)后,SAR又以對分搜索法確定次高位,即以7位數(shù)字量的一半y1000000b(y由前面的過程已確認(rèn)),試探模擬量Ui的大小。依此類推,直到確定了bit0為止,轉(zhuǎn)換結(jié)束。

2)雙積分式A/D轉(zhuǎn)換器

雙積分式A/D轉(zhuǎn)換器的基本原理是對輸入模擬電壓和參考電壓分別進行兩次積分,將輸入電壓平均值變成與之成正比的時間間隔,然后利用時鐘脈沖和計數(shù)器測出此時間間

隔,進而得到相應(yīng)的數(shù)字量輸出。由于該轉(zhuǎn)換電路是對輸入電壓的平均值進行變換,所以它具有很強的抗工頻干擾能力,但雙積分式A/D轉(zhuǎn)換器轉(zhuǎn)換時間較長,在一些非快速過程

的數(shù)字測量中得到廣泛應(yīng)用。

4.ADC0809芯片的工作原理

ADC0809是采樣分辨率為8位的、以逐次逼近原理進行模/數(shù)轉(zhuǎn)換的器件。其內(nèi)部有一個8通道選擇開關(guān),它可以根據(jù)地址碼鎖存譯碼后的信號,選通8路模擬輸入信號中的

一路進行A/D轉(zhuǎn)換。

1)ADC0809芯片的主要特性

ADC0809芯片的主要特性如下:

(1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。

(2)具有轉(zhuǎn)換啟??刂贫撕娃D(zhuǎn)換結(jié)束信號輸出端。

(3)輸入/輸出與TTL電平兼容。

(4)轉(zhuǎn)換時間為128ms(與CLK引腳外接時鐘信號有關(guān))。

(5)單個+5V電源供電,模擬輸入電壓范圍為0~+5V,不需零點和滿刻度校準(zhǔn)。

(6)工作溫度范圍為-40℃~+85℃。

(7)功耗低,約15mW。

2)ADC0809芯片的內(nèi)部結(jié)構(gòu)

ADC0809芯片的內(nèi)部結(jié)構(gòu)如圖-25所示,其內(nèi)部有一個8通道多路開關(guān),允許8路模擬量分時輸入,共用一個A/D轉(zhuǎn)換器進行轉(zhuǎn)換。通道地址鎖存和譯碼電路對ADDA、

ADDB、ADDC三個地址信號進行鎖存和譯碼,其輸出用于通道選擇。當(dāng)選中某路并啟動A/D轉(zhuǎn)換時,該路模擬信號進行A/D轉(zhuǎn)換,當(dāng)OE有效時,便可輸出轉(zhuǎn)換結(jié)果。圖7-25ADC0809芯片的內(nèi)部結(jié)構(gòu)

3)ADC0809芯片的引腳功能

ADC0809芯片有28個引腳,采用雙列直插式封裝,如圖726所示。

IN0~IN7:8路模擬量輸入端。在多路開關(guān)控制下,任一瞬間只能有一路模擬量經(jīng)相應(yīng)通道輸入到A/D轉(zhuǎn)換器中的比較放大器。

D0~D7:8位數(shù)字量輸出端,可直接接入單片機的數(shù)據(jù)總線。

ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的某一路。這3位地址線與通道的對應(yīng)關(guān)系見表7-2。

ALE:地址鎖存允許信號。該信號的上升沿,可將地址選擇信號ADDA、ADDB、ADDC鎖入地址寄存器內(nèi)。

START:A/D轉(zhuǎn)換啟動信號。在START信號的上升沿,將逐次逼近寄存器復(fù)位;在START信號的下降沿,開始進行A/D轉(zhuǎn)換;在轉(zhuǎn)換過程中,START保持低電平。

EOC:A/D轉(zhuǎn)換結(jié)束信號,輸出。EOC=0,表示正在轉(zhuǎn)換(轉(zhuǎn)換期間一直為低電平);EOC=1,表示A/D轉(zhuǎn)換結(jié)束。該信號既可作為查詢的狀態(tài)標(biāo)志,又可作為中斷請求信號使用。

OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效,用于控制三態(tài)輸出鎖存器向單片機輸出轉(zhuǎn)換得到的數(shù)字量。OE=0,輸出數(shù)據(jù)線呈高阻態(tài);OE=1,才能打開三態(tài)輸出鎖存器。

CLK:外部時鐘脈沖輸入端。ADC0809芯片內(nèi)部沒有時鐘電路,故所需時鐘信號由外界提供。CLK的頻率決定了A/D轉(zhuǎn)換器的轉(zhuǎn)換速度,ADC0809的頻率不能高于640kHz。

VREF(+)和VREF(-):A/D轉(zhuǎn)換器的參考電壓輸入線,一般與本機電源和地相連。

VCC:+5V電源。

GND:地。

4)ADC0809芯片的工作過程

ADC0809芯片的工作過程如下:

(1)確定ADDA、ADDB、ADDC3位地址,決定選擇哪一路模擬信號。

(2)使ALE端接收一正脈沖信號,并使該路模擬信號經(jīng)選擇開關(guān)到達比較器的輸入端。

(3)使START端接收一正脈沖信號,在START的上升沿將逐次逼近寄存器復(fù)位,在下降沿啟動A/D轉(zhuǎn)換。

(4)EOC輸出信號變低,表示轉(zhuǎn)換正在進行。

(5)A/D轉(zhuǎn)換結(jié)束,EOC變?yōu)楦唠娖健4藭r,數(shù)據(jù)已保存到8位三態(tài)輸出鎖存器中,CPU可以通過使OE信號為高電平,打開ADC0809三態(tài)輸出鎖存器,由ADC0809輸出的數(shù)字量傳送到CPU。

5)ADC0809芯片與單片機的接口

圖7-27所示為ADC0809芯片與單片機的一種接口方法。ADC0809芯片與單片機接口時,應(yīng)考慮以下問題:

(1)8路模擬通道選擇。

一般來說,ADDA、ADDB、ADDC分別接地址鎖存器74LS373提供的低3位地址,若要選擇某個通道,還需輸出一個口地址來使ALE信號變?yōu)楦唠娖?才能將三位地址寫入

ADC0809的通道地址鎖存器并譯碼。圖中ALE信號是由單片機的P2.2、P2.1、P2.0經(jīng)過38譯碼器74LS138的輸出Y5與WR信號“相或”后再經(jīng)過反相器產(chǎn)生的。因此,ADC0809的8路通道的地址可以確定為0500H~0507H(P2.2、P2.1、P2.0=101)。

(2)START信號的產(chǎn)生。

圖7-27中ADC0809芯片的START引腳是和ALE引腳接在一起的,單片機的P3.6(WR)和38譯碼器74LS138的輸出Y5“相或”后再經(jīng)過反相器接到ADC0809芯片的

START、ALE引腳。因此,只要WR和Y5都為0,反相器的輸出信號就會出現(xiàn)高電平。在這個高電平的上升沿,將ADDA、ADDB、ADDC地址狀態(tài)送入地址鎖存器中;在下降沿,啟動ADC0809芯片轉(zhuǎn)換。啟動圖7-27中的DC0809芯片進行轉(zhuǎn)換只需要執(zhí)行下面幾條指令(以通道0為例):

(3)轉(zhuǎn)換的CLK時鐘的產(chǎn)生。

ADC0809的轉(zhuǎn)換頻率不能高于640kHz。圖7-27是將單片機的ALE引腳經(jīng)過一個2分頻電路接在ADC0809芯片的CLK引腳上的。如果單片機的fosc=6MHz,則ALE信

號的頻率為2×fosc/12,即1MHz,再經(jīng)過2分頻后,=500kHz,滿足ADC0809芯片的時鐘要求。圖7-27ADC0809芯片與單片機接口

(4)如何提供有效的OE信號。

圖7-27是將P3.7(RD)和3-8譯碼器74LS138的輸出Y5“相或”后再經(jīng)過反相器接到ADC0809芯片的OE引腳的。因此,只要RD和Y5都為0,OE引腳就會出現(xiàn)高電平,從而打開三態(tài)輸出鎖存器,A/D轉(zhuǎn)換的結(jié)果也會出現(xiàn)在P0口上,輸入到單片機中。

(5)CPU讀取A/D轉(zhuǎn)換器數(shù)據(jù)的方式。

①查詢方式。

直接用軟件檢測EOC的狀態(tài),EOC=1時表明A/D轉(zhuǎn)換結(jié)束,然后進行數(shù)據(jù)傳送。

優(yōu)點:接口電路設(shè)計簡單。

缺點:A/D轉(zhuǎn)換期間獨占CPU,致使CPU運行效率降低。

②定時方式。

ADC0809芯片的轉(zhuǎn)換時間為128ms,我們可設(shè)計一個延時150ms的子程序(稍大于128ms),A/D轉(zhuǎn)換啟動后即調(diào)用這個子程序,正常情況下延時時間一到,A/D轉(zhuǎn)換肯定已經(jīng)完成,接著就可以進行數(shù)據(jù)傳送。

優(yōu)點:接口電路設(shè)計比查詢方式的簡單,不必讀取EOC的狀態(tài)。

缺點:A/D轉(zhuǎn)換期間獨占CPU,致使CPU運行效率降低;另外還必須知道A/D轉(zhuǎn)換器的轉(zhuǎn)換時間。

③中斷方式。

將轉(zhuǎn)換完成的狀態(tài)信號EOC經(jīng)反相器連接到單片機的外部中斷請求引腳。

優(yōu)點:A/D轉(zhuǎn)換期間CPU可以處理其他的程序,提高了CPU的運行效率。

缺點:接口電路復(fù)雜。

圖7-27是將ADC0809的EOC引腳經(jīng)過一個反相器接在單片機的INT1引腳上的,轉(zhuǎn)換結(jié)束后,EOC=1,經(jīng)過反相器后為0,可以向單片機發(fā)出中斷請求,也可以作為查詢轉(zhuǎn)換結(jié)束的標(biāo)志。

5.ADC0809芯片的應(yīng)用舉例

【例7-9】在圖7-27的基礎(chǔ)上,設(shè)計一個8路模擬量輸入的巡回檢測系統(tǒng)。編寫程序,分別采用查詢方式和中斷方式,將采樣轉(zhuǎn)換后的數(shù)據(jù)依次存放在內(nèi)部RAM的40H~

47H單元中。

分析1(查詢方式):通過判斷P3.3的電平變化確定A/D轉(zhuǎn)換是否完成,完成后讀取數(shù)據(jù)。IN0~IN7的地址是0500H~0507H。

A/D轉(zhuǎn)換啟動方法是向?qū)?yīng)的地址寫入一個任意數(shù),這時WR為低電平,Y5為低電平,ADC0809的START輸入高電平,A/D轉(zhuǎn)換開始。

分析2(中斷方式):其他同查詢方式,只是轉(zhuǎn)換完成信號EOC觸發(fā)外中斷1,讀取數(shù)據(jù)等操作在中斷服務(wù)程序中進行。

7.5.2D/A轉(zhuǎn)換器

1.D/A轉(zhuǎn)換器概念

D/A轉(zhuǎn)換器(DAC)是一種將數(shù)字信號轉(zhuǎn)換成模擬信號的器件,為計算機系統(tǒng)的數(shù)字信號和模擬環(huán)境的連續(xù)信號之間提供了一種接口。D/A轉(zhuǎn)換器的輸出是由數(shù)字輸入和參

考源VREF組合進行控制的。大多數(shù)常用的D/A轉(zhuǎn)換器的數(shù)字輸入是二進制碼或BCD碼,輸出可以是電流或電壓,但多數(shù)是電流。因而,在多數(shù)電路中,D/A轉(zhuǎn)換器的輸出需要由運算放大器組成的電流/電壓轉(zhuǎn)換器將電流輸出轉(zhuǎn)換成電壓輸出。目前DAC除了使用并行方式與單片機連接外,還可使用I2C總線和SPI串行方式與單片機連接。

1)D/A轉(zhuǎn)換原理

數(shù)字量是用代碼按數(shù)位組合起來表示的,對于有權(quán)碼,每位代碼都有一定的權(quán)值。為了將數(shù)字量轉(zhuǎn)換成模擬量,必須將每1位的代碼按其權(quán)值的大小轉(zhuǎn)換成相應(yīng)的模擬量,然

后將這些模擬量相加,即可得到與數(shù)字量成正比的總模擬量,從而實現(xiàn)數(shù)字—模擬轉(zhuǎn)換。這就是構(gòu)成D/A轉(zhuǎn)換器的基本思路。

在單片集成D/A轉(zhuǎn)換器中,使用最多的是倒T形電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器。4位(D3D2D1D0)倒T形電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器原理圖如圖7-28所示。圖7-284位倒T形電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器原理圖

S0~S3為模擬開關(guān),R-2R電阻解碼網(wǎng)絡(luò)呈倒T形,運算放大器A構(gòu)成求和電路。Si由輸入數(shù)碼Di控制。當(dāng)Di=1時,Si接運放反相輸入端(“虛地”),Ii流入求和電路;當(dāng)Di=0時,Si將電阻2R接地。

無論模擬開關(guān)Si處于何種位置,與Si相連的2R電阻均等效接“地”(地或虛地),這樣流經(jīng)2R電阻的電流與開關(guān)位置無關(guān),為確定值。

分析R-2R電阻解碼網(wǎng)絡(luò)不難發(fā)現(xiàn),從每個接點向左看的二端網(wǎng)絡(luò)等效電阻均為R,流入每個2R電阻的電流從高位到低位按2的整倍數(shù)遞減。設(shè)由基準(zhǔn)電壓源提供的總電流

為I(I=UREF/R),則流過各開關(guān)支路(從右到左)的電流分別為I/2、I/4、I/8和I/16。

流過電阻Rf的電流為

將輸入數(shù)字量擴展到n位,可得n位數(shù)字量倒T形電阻網(wǎng)絡(luò)D/A轉(zhuǎn)換器輸出模擬量與輸入數(shù)字量之間的一般關(guān)系式:

2)D/A轉(zhuǎn)換芯片的主要性能指標(biāo)

(1)分辨率。

D/A轉(zhuǎn)換器的分辨率是指當(dāng)輸入數(shù)字是發(fā)生單位數(shù)碼(1LSB)變化時,所對應(yīng)輸出模擬量(電壓或電流)的變化量。對于線性D/A轉(zhuǎn)換器來說,分辨率=模擬輸出的滿量程值/2n(其中n為數(shù)字量位數(shù))。在實際使用中,常采用輸入數(shù)字量的位數(shù)或最大輸入碼的個數(shù)來表示分辨率。例如,8位D/A轉(zhuǎn)換器,其分辨率為8位。顯然,位數(shù)越多,分辨率就越高。

(2)線性度。

D/A轉(zhuǎn)換器的線性度用非線性誤差的大小來表示。非線性誤差是指理想的輸入/輸出特性的偏差與滿刻度輸出之比的百分?jǐn)?shù)。

(3)精度。

D/A轉(zhuǎn)換器的精度是實際輸出電壓與理論輸出電壓相差程度的一個量度,與D/A轉(zhuǎn)換芯片的結(jié)構(gòu)和接口配置的電路有關(guān)。一般來說,當(dāng)不考慮其他D/A轉(zhuǎn)換誤差時,D/A轉(zhuǎn)換的精度即為分辨率的大小。故要獲得高精度的D/A轉(zhuǎn)換結(jié)果,首先要保證選擇有足夠分辨率的D/A轉(zhuǎn)換器。但是D/A轉(zhuǎn)換精度還與外電路的配置有關(guān),當(dāng)外電路的器件或電源誤差較大時,會造成較大的D/A轉(zhuǎn)換誤差。當(dāng)這些誤差超過一定程度時,會使增加D/A轉(zhuǎn)換位數(shù)失去意義。

(4)轉(zhuǎn)換時間。

D/A轉(zhuǎn)換器的轉(zhuǎn)換時間又稱建立時間,一般是指在輸入的數(shù)字量發(fā)生變化后,輸出的模擬量穩(wěn)定到相應(yīng)數(shù)值范圍內(nèi)(穩(wěn)定值±1/2LSB)所經(jīng)歷的時間。

(5)標(biāo)稱滿量程和實際滿量程。

標(biāo)稱滿量程(NFS)是指對應(yīng)于數(shù)字量標(biāo)稱值2n的模擬輸出量。但實際數(shù)字量最大為2n1,比標(biāo)稱值小1個LSB,因此實際滿量程(AFS)比標(biāo)稱滿量程(NFS)小1個LSB增量,即AFS=NFS-1LSB增量=(2n-1)/2n×NFS。

2.DAC0832芯片的工作原理及應(yīng)用

1)DAC0832的主要特性

DAC0832是采用CMOS/Si-Cr工藝制成的雙列直插式單片8位D/A轉(zhuǎn)換器。它可直接與MCS51單片機相連,以電流形式輸出;當(dāng)轉(zhuǎn)換為電壓輸出時,可外接運算放大器。

其主要應(yīng)用特性如下:

(1)分辨率為8位,建立時間為1ms,功耗為20mW。

(2)DAC0832芯片是與微處理器兼容的D/A轉(zhuǎn)換器,邏輯電平輸入與TTL兼容,芯片的許多控制引腳可以和微處理器的控制線直接相連,接受微處理器控制。

(3)數(shù)字輸入端具有雙重鎖存控制功能,可以雙緩沖、單緩沖或直通數(shù)字輸入,實現(xiàn)多通道D/A的同步轉(zhuǎn)換輸出。

(4)芯片內(nèi)部沒有參考電壓,必須外接參考電壓電路。

(5)該芯片為電流輸出型D/A轉(zhuǎn)換器,要獲得模擬電壓輸出,需外加轉(zhuǎn)換電路。

2)DAC0832的內(nèi)部結(jié)構(gòu)及外部引腳

DAC0832由輸入(數(shù)據(jù))寄存器、DAC寄存器和D/A轉(zhuǎn)換器三大部分組成,如圖7-29所示。

DAC0832內(nèi)部采用R-2R梯形電阻網(wǎng)絡(luò)。輸入寄存器和DAC寄存器用以實現(xiàn)兩次緩沖,故在輸出的同時,還可同時存一個數(shù)字,從而提高了轉(zhuǎn)換速度。當(dāng)多芯片同時工作時,可用同步信號實現(xiàn)各模擬量同時輸出。圖7-29DAC0832的內(nèi)部結(jié)構(gòu)

CS:片選信號,低電平有效。與ILE相配合,可對寫信號WR1是否有效起到控制作用。

ILE:允許輸入鎖存信號,高電平有效。輸入寄存器的鎖存信號LE1由ILE、CS、WR1的邏輯組合產(chǎn)生。當(dāng)輸入寄存器的鎖存信號為高電平時,輸入寄存器與數(shù)據(jù)線上的狀態(tài)一致,輸入寄存器的鎖存信號的負(fù)跳變將輸入在數(shù)據(jù)線上的信息存入輸入鎖存器。

WR1:寫信號1,低電平有效。當(dāng)WR1、CS、ILE均有效時,可將數(shù)據(jù)寫入8位輸入寄存器。

WR2:寫信號2,低電平有效。當(dāng)WR2有效時,在XFER傳送控制信號作用下,可將鎖存在輸入寄存器的8位數(shù)據(jù)送到DAC寄存器。

XFER:數(shù)據(jù)傳送信號,低電平有效。當(dāng)WR2、XFER均有效時,在DAC寄存器的鎖存信號產(chǎn)生正脈沖,當(dāng)DAC寄存器的鎖存信號為高電平時,DAC寄存器的輸出和輸入寄

存器的狀態(tài)一致,DAC寄存器的鎖存信號負(fù)跳變,輸入寄存器的內(nèi)容存入DAC寄存器。

VREF:基準(zhǔn)電源輸入端。它與DAC內(nèi)的R-2R梯形網(wǎng)絡(luò)相接,VREF可在±10V范圍內(nèi)調(diào)節(jié)。

DI0~DI7:8位數(shù)字量輸入端。DI7為最高位,

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論