單片機第7章MCS-51單片機接口技術(shù)1_第1頁
單片機第7章MCS-51單片機接口技術(shù)1_第2頁
單片機第7章MCS-51單片機接口技術(shù)1_第3頁
單片機第7章MCS-51單片機接口技術(shù)1_第4頁
單片機第7章MCS-51單片機接口技術(shù)1_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章51單片機的接口技術(shù)共一百三十頁 在由單片機構(gòu)成的實際的測控系統(tǒng)中,通常要在最小系統(tǒng)的基礎(chǔ)上根據(jù)需求(xqi)連接相應(yīng)的硬件電路。這時單片機內(nèi)部的資源有可能不夠用,因此在設(shè)計時首先要解決系統(tǒng)擴展問題,如I/O接口的擴展。共一百三十頁本講重點: 片外RAM與片外ROM擴展(參考范例應(yīng)用); 簡單I/O擴展 (選用鎖存器與驅(qū)動器); 擴展8255,8155 (初始化,電路及應(yīng)用); LED顯示接口(動態(tài)與靜態(tài)(jngti),硬件譯碼與 軟件譯碼,電路與編程應(yīng)用). 共一百三十頁任務(wù)6:采用兩只LED數(shù)碼管顯示(xinsh)模擬生產(chǎn)線計件 模擬生產(chǎn)流水線的產(chǎn)品計數(shù),以按鍵模擬產(chǎn)品檢測(jin

2、c)。每按一下按鍵,相當(dāng)于產(chǎn)品計數(shù)一次。用兩只數(shù)碼管(共陰)顯示結(jié)果,計滿16次后從0開始重新顯示,依次循環(huán)。設(shè)晶振頻率為6MHz。 共一百三十頁共一百三十頁#include #define uchar unsigned char#define uint unsigned intsbit K1=P33;uchar Count = 0;uchar DSY_CODE= 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;void DelayMS(uint ms) uchar t; while(ms-) for(t=0;t16) C

3、ount=0; P0=DSY_CODECount/10; /十位P2=DSY_CODECount%10; /個位共一百三十頁問題的提出1、可以看到,先從P0口輸出3fH這個數(shù)據(jù),目的是在共陰數(shù)碼管上顯示“0”這個字符,為什么輸出3fH就可以顯示“0”呢?別的數(shù)據(jù)可以嗎?2、按鍵(n jin)是如何防抖的?3、任務(wù)中,數(shù)碼管是接在P0、P2口上的。那如果數(shù)碼管很多,光P0、P2口肯定接不下,怎么辦?共一百三十頁系統(tǒng)(xtng)擴展概述 單片機最小系統(tǒng): 最小應(yīng)用系統(tǒng)是指能維持單片機運行的最簡單配置的系統(tǒng)。 對于AT89C51這樣片內(nèi)有程序存儲器的單片機,其最小應(yīng)用系統(tǒng)內(nèi)包括不可能集成在芯片內(nèi)的器

4、件,如晶體(jngt)振蕩電路、復(fù)位開關(guān)和電源部分等。系統(tǒng)擴展時的三總線結(jié)構(gòu):共一百三十頁1、地址總線 由P2口提供高8位地址,因為P2口具有(jyu)輸出鎖存的功能,并且功能比較單一,因此不需地址鎖存器。 低8位由P0口提供,P0口是數(shù)據(jù)、地址分時使用的通道口。為保存地址信息,需外加地址鎖存器。一般用單片機的ALE信號控制地址鎖存。共一百三十頁2、數(shù)據(jù)總線 由P0口提供,對外部芯片進行讀寫時,數(shù)據(jù)都要通過P0口出入。3、控制總線 系統(tǒng)擴展時,常用的控制信號(xnho)有:/EA、ALE、/PSEN、/WR、/RD等等。 EA:內(nèi)部和外部程序存儲器的讀寫控制信號 ALE:地址鎖存允許信號 PS

5、EN:外部程序存儲器讀信號 WR:外部數(shù)據(jù)存儲器寫信號 RD:外部數(shù)據(jù)存儲器的讀信號 共一百三十頁/EA: 引腳的電平高低由用戶決定(/EA =1:自內(nèi)而外 地訪問ROM; /EA =0:僅訪問外部ROM)ALE: 信號自動產(chǎn)生(晶振頻率的1/6)。在訪問外部存儲器時:ALE高電平期間(qjin),P0口地址信息;在低電平期間,P0口數(shù)據(jù)信息。/PSEN:在用MOVC指令訪問外部程序存儲器時自動產(chǎn)生(外部程序存儲器讀信號,從片外程序存儲器讀取指令或常數(shù)時,用于命令外部程序存儲器做輸出動作,即:存儲器輸出允許信號)/RD、/WR:信號在執(zhí)行MOVX指令時自動產(chǎn)生(“0”電平)共一百三十頁 系統(tǒng)(

6、xtng)擴展的主要方面:外部程序存儲器(ROM)擴展:外部數(shù)據(jù)存儲器(RAM)的擴展:外部中斷源的擴展:(已講過)I/O接口的擴展:共一百三十頁程序(chngx)存儲器 2864A 的擴展:單片機E2PROM 2864A鎖存器74LS373P0.0-P0.7ALEPSENP2.0-P2.48D8QOEA8-A12A0-A7D0-D7LEEAOECE51單片機能提供16條地址線,可擴展64K字節(jié)(z ji)的ROM??梢杂靡黄珽2PROM,也可以用多片E2PROM共一百三十頁1、地址(dzh)鎖存器的使用 一般要用P0口輸出地址的低8位,而P0又承擔(dān)輸出、輸入數(shù)據(jù)(shj)的任務(wù),因此要根據(jù)需

7、要在P0口和外接芯片地址線引腳之間加一個地址鎖存器。共一百三十頁OE=0(接地(jid)LE=1,8D8Q直通。LE=ALE時,P0口是地址,地址直接(zhji)進入尋址線LE=1G=0( )時,8Q數(shù)據(jù)鎖存LE=ALE時,當(dāng)ALE 時,將 前8Q代表的地址鎖存。鎖存控制端LE有的地方稱為G端共一百三十頁 除了ALE引腳和74LS373的LE引腳相連使得地址鎖存由單片機的ALE控制外,還要注意單片機讀/寫控制引腳/RD、/WR與6264相關(guān)(xinggun)引腳的連接。共一百三十頁2. 地址范圍的確定和片選信號(xnho)的產(chǎn)生 為了便于對接口芯片中的某一個端口進行讀寫控制,顯然要對給各端口分

8、配一個地址,以便實現(xiàn)I/O操作。 決定端口地址范圍的因素有兩個:一是接口芯片的地址線和單片機地址線的連接方式;二是接口芯片的片選信號(xnho)/CE(Chip Enable)或/CS(Chip Select)的產(chǎn)生方法。 如果一個單片機應(yīng)用系統(tǒng)中外擴的芯片很多,單片機在某個時刻只能選中其中之一進行訪問。所謂“片選”信號,就是用來選中該芯片的控制信號。共一百三十頁3、端口的I/O編址 在MCS-51單片機中,擴展出的I/O接口與外部數(shù)據(jù)存儲器采用統(tǒng)一編址方式,即每一個擴展出的I/O端口都相當(dāng)于一個外部RAM的存儲單元,CPU可像訪問外部RAM存儲單元那樣(nyng)訪問I/O 接口。使用C51

9、語言進行編程,則需要將端口地址定義在PDATA或XDATA區(qū)。如:char xdata COM8255 _at_ 0 xF003;或:#define COM8255 XBYTE0 xF003;注意:使用了絕對地址,所以要包含absacc.h。 共一百三十頁數(shù)據(jù)(shj)存儲器 RAM 的擴展:有時需要擴展外部數(shù)據(jù)存儲器RAM方能工作(如數(shù)據(jù)采集系統(tǒng)(xtng)數(shù)據(jù)量較大,需要專設(shè) RAM或 Flash RAM)。最常用的 RAM器件是SRAM。如:6116(2K)/6264(8K)/62128(16K)/628128(128K) A7 VccA6 A8A5 A9A4 WE A3 OEA2 A1

10、0A1 CEA0 D7D0 D6D1 D5D2 D4GND D36116Vpp VccA12 WEA7 CE2A6 A8A5 A9A4 A11 A3 OEA2 A10A1 CE1A0 D7D0 D6D1 D5D2 D4GND D36264Vpp VccA12 WEA7 A13A6 A8A5 A9A4 A11 A3 OEA2 A10A1 CEA0 D7D0 D6D1 D5D2 D4GND D362128共一百三十頁數(shù)據(jù)(shj)存儲器 6264 的擴展:89C51單片機SRAM6264鎖存器74LS373P0.0-P0.7ALEP2.0-P2.48D8QOEA8-A12A0-A7D0-D7LEE

11、AOECS51單片機能提供16條地址線,可擴展64K字節(jié)的RAM。可以(ky)用一片芯片,也可以(ky)用多片RAMRDWRWECE+5V共一百三十頁 補充例L710:使用 6264SRAM擴展外部(wib)數(shù)據(jù)存儲器。共一百三十頁 為了直接訪問外部擴展內(nèi)存,本例添加了頭文件absacch,這樣可非常方便地通過XBYTE,index讀寫擴展內(nèi)存,整個(zhngg)擴展內(nèi)存可看成一個龐大的字節(jié)數(shù)組,XBYTE就是這個字節(jié)數(shù)組的數(shù)組名稱,或者是整個空間的首字節(jié)地址,index則是數(shù)組索引或指針偏移值。 共一百三十頁 本例程序首先(shuxin)通過for循環(huán)向0 x0000地址開始寫入200字節(jié)(

12、1200),然后再用for循環(huán)將這些數(shù)據(jù)逆向復(fù)制到0 x0100地址開始處。第一個for循環(huán)對6264執(zhí)行的是寫入操作,第二個for循環(huán)則同時執(zhí)行讀與寫操作。如果刪除/WR引線,數(shù)據(jù)寫入會失敗,如果刪除/RD連接,6264中的0 x0000開始的200字節(jié)就無法復(fù)制到0 x0100處,因為數(shù)據(jù)無法讀取。共一百三十頁共一百三十頁外部中斷(zhngdun)源的擴展:一般采用外部中斷和查詢相結(jié)合的方法擴展外部中斷共一百三十頁并行(bngxng)I/O口的擴展共一百三十頁擴展I/O接口時應(yīng)注意(zh y)的幾個問題地址存儲器的使用: P0口通常(tngchng)會數(shù)據(jù)、地址復(fù)用,且單片機輸出地址時AL

13、E是高電平、數(shù)據(jù)時是低電平,所以使用鎖存器應(yīng)使用高電平觸發(fā)或下降沿觸發(fā)的地址鎖存器,如74LS373地址范圍的確定和片選信號的產(chǎn)生: 為了對外圍芯片進行控制,必須對外圍芯片分配地址。共一百三十頁片選信號產(chǎn)生(chnshng)方法線選:單片機多余(duy)的口線拿出一根譯碼法:地址要素單片機的地址總線與接口芯片的連接方式接口芯片的片選信號CE或CS產(chǎn)生方法片選信號數(shù)量超出單片機可用的多余口線時共一百三十頁G1 G2A G2BC B A /Y7 /Y6 /Y5 /Y4 /Y3 /Y2 /Y1 /Y01 0 01 0 01 0 01 0 01 0 01 0 01 0 01 0 0其它狀態(tài)0 0 00

14、 0 10 1 00 1 11 0 01 0 11 1 01 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1共一百三十頁端口的I/O編址: 在MCS-51單片機中,擴展出的I/O接口與外部數(shù)據(jù)存儲器采用統(tǒng)一(tngy)編址方式,即每一個擴展出的I/O端口都相當(dāng)于一個外部RAM的存儲單元。CPU可像訪問外部RAM存儲單元那樣訪問I/O 接口,即用“MO

15、VX”指令對擴展的I/O口進行輸入/輸出操作。共一百三十頁I/O口擴展用集成芯片 I/O擴展芯片可分成三種類型: TTL電路芯片。通過P0口擴展的主要有各類鎖存器及三態(tài)緩沖器等,如74LS373、74LS273、74LS367、74LS374、74LS377、74LS244等。通過串行口擴展的有74LS164、74LS165等。 專用I/O擴展芯片。如8255,可以擴展出3個8位并行口。 I/O擴展復(fù)合(fh)芯片。不僅能擴展I/O外,還能擴展其他外圍功能電路。如8155,可擴展出2個8位并行口,1個6位并行口,還能擴展出256B靜態(tài)RAM,1個14位定時/計數(shù)器。共一百三十頁一、用TTL芯片

16、進行(jnxng)I/O接口擴展用單片機的串行口來擴展并行I/O口 用串行口的方式(fngsh)0只能用于串并、并串轉(zhuǎn)換用,可用此特性來擴展并行輸出I/O口。用串行口擴展并行輸出口示意圖 共一百三十頁【例7.1】假設(shè)上圖中74LS164芯片的并行輸出端連接到8個LED的陽極,編寫程序使LED處于一個亮點(lin din)流動的狀態(tài)。共一百三十頁用串行口擴展并行(bngxng)輸入口示意圖 共一百三十頁【例7.2】假設(shè)上圖中74LS165芯片的并行輸入(shr)端接了8個開關(guān),SH/-LD腳接單片機的P3.2,編寫程序,讀入開關(guān)信息,并通過P1口所連的8個LED顯示出來。共一百三十頁在單片機的I

17、/O口線不夠用的情況下,可以借助外部器件對I/O口進行擴展。可資選用(xunyng)的器件很多,方案也有多種。通常對單片機的P0口擴展。通過鎖存器進行(jnxng)I/O口擴展CLR VCC 1Q 8Q 1D 8D 2D 7D 2Q 7Q 3Q 6Q 3D 6D 4D 5D 4Q 5Q GND CLKOE VCC 1Q 8Q 1D 8D 2D 7D 2Q 7Q 3Q 6Q 3D 6D 4D 5D 4Q 5Q GND GOE VCC 1Q 8Q 1D 8D 2D 7D 2Q 7Q 3Q 6Q 3D 6D 4D 5D 4Q 5Q GND CLK74LS27374LS37374LS374通常輸出需要

18、鎖存,輸入需要緩沖。但并非一成不變。共一百三十頁二、用專用I/O擴展芯片(xn pin)行I/O接口擴展8255實現(xiàn)I/O并口擴展共一百三十頁可編程并行I/O接口芯片(xn pin)8255擴展I/O:PA3 PA4PA2 PA5PA1 PA6PA0 PA7RD WRGND D0A1 D1A0 D2PC7 D3PC6 D4PC5 D5PC4 D6PC0 D78255PC2 PB7PC3 PB6PB0 PB5PB1 PB4PB2 PB3CS RESETPC1 VCC8255的基本(jbn)特性與引腳: PA,PB,PC 三個8位I/O口;40 PIN PC口分高4位和低4位。高4位 可與PA口合

19、為一組(A組),低4 位可與PB口合為一組(B組)。 3種工作方式。內(nèi)部有4個寄存 器,由A1,A0與讀,寫信號選擇。 片選低有效,復(fù)位高有效。 PC可按位置位/復(fù)位。 40條引腳,DIP封裝。須注意 VCC與GND引腳的位置。 一個8位的數(shù)據(jù)口D0D7。所謂的可編程指該接口芯片功能可以通過執(zhí)行相應(yīng)的指令加以改變共一百三十頁RESET:復(fù)位引腳,為1時,控制寄存器清0,所有I/O口都設(shè)置為輸入方式。/CS:片選信號,為0時,表示8255被選中,允許CPU對8255進行讀寫。/RD:讀信號,為0時,允許8255向CPU送數(shù)據(jù)或狀態(tài)字。/WR:寫信號;為0時,允許CPU向8255寫數(shù)據(jù)或控制字。D

20、7D0:雙向數(shù)據(jù)總線,可傳送CPU和8255之間的數(shù)據(jù)、控制字和狀態(tài)信息(xnx);PA7PA0:端口A的輸入/輸出線。PB7PB0:端口B的輸入/輸出線。PC7PC0:端口C的輸入/輸出線。A1、A0:端口地址選擇線,用來尋址8255內(nèi)部端口寄存器,見下表:共一百三十頁A1 A0I/O口或寄存器0 00 11 01 1端口A端口B端口C控制端口 8255內(nèi)部(nib)端口尋址共一百三十頁 8255芯片有兩個控制字:工作方式控制字和C口按位控制字,均寫入8255芯片內(nèi)部的控制寄存器。因8255芯片內(nèi)部只有一個控制寄存器,因此(ync)要用一個標(biāo)志表明它的身份(工作方式控制字,或者是C口置位/復(fù)

21、位控制字)。這個標(biāo)志位就是它們各自的最高位。(1)工作方式控制字 規(guī)定A、B、C三個端口的工作狀態(tài),即設(shè)置某個端口工作于輸入方式還是工作在輸出方式。工作方式控制字的格式為:D7 = 1D6D5D4D3D2D1D0共一百三十頁各位的含義如下:D7:特征(tzhng)位。D7 = 1表示為工作方式控制字。D6D5位:用來規(guī)定A口的工作方式。當(dāng)D6D5分別是00、01、1*時,8255的A口分別工作在方式0、1、2。D4:用來規(guī)定A口的輸入/輸出。D4 = 0時,A口為輸出;D4 = 1時,A口為輸入。D3:用來規(guī)定C口的上半口(PC7PC4)的輸入/輸出。D3 = 0時,C口高4位為輸出;D3 =

22、 1時,C口高4位為輸入。D2:用來規(guī)定B口的工作方式。D2 = 0時,B口工作在方式0;D2 = 1時,B口工作在方式1。D1:用來規(guī)定B口的輸入/輸出;D1 = 0時,B口為輸出;D1 = 1時,B口為輸入。D0:用來規(guī)定C口下半口(PC3PC0)的輸入/輸出。D0 = 0時,C口的低4位為輸出;D0 = 1時,C口的低4位為輸入。共一百三十頁8255的PA,PB,PC口的三種(sn zhn)工作方式: 三種方式中只有方式 0 用得最多且最容易使用(shyng)。 基本輸入/輸出方式 就是簡單輸入/輸出方式。 方式1 和方式2 使用復(fù)雜。因單片機能自動提供 各種應(yīng)答信號,這兩種方式已很難見

23、到再有人用 于單片機系統(tǒng)。工作方式A口B口C口0基本輸入/輸出輸出鎖存, 輸入三態(tài)基本輸入/輸出輸出鎖存, 輸入三態(tài)基本輸入/輸出輸出鎖存, 輸入三態(tài)1應(yīng)答式輸入/輸出輸入/輸出均鎖存應(yīng)答式輸入/輸出輸入/輸出均鎖存提供A口和B口的應(yīng)答信號2應(yīng)答式雙向輸入/輸出輸入/輸出均鎖存B口無此方式提供A口的應(yīng)答信號共一百三十頁PA,PB,PC口的三種(sn zhn)工作方式示意圖:RD WR D7D0 A1 A0地址(dzh)總線控制總線數(shù)據(jù)總線ABCPA0-7PB0-7PC4-7PC0-3A組B組8255的方式 0ABPA0-7PB0-7控制線控制線A組B組ABPA0-7PB0-7控制線I/OA組B

24、組7 6 5 4 3 2 1 0PC口8255的方式 18255的方式 27 6 5 4 3 2 1 0PC口共一百三十頁 D7 D6 D5 D4 D3 D2 D1 D0 特征(tzhng)位=1A組方式(fngsh)選擇0 0:方式 00 1:方式 11 X:方式 2A 口B 口CL 口CH 口B組方式選擇=0,方式0=1,方式1=0,輸出=1,輸入=0,輸出=1,輸入=0,輸出=1,輸入=0,輸出=1,輸入8255控制寄存器(A1,A0 = 11)接受控制命令,告訴8255以何種方式工作。其地址是:A1,A0 = 11。它可以接受兩條命令,第一條命令叫“方式控制字”,方式控制字格式如下:A

25、 組B 組注意:對同一控制寄存器可寫兩種命令,故必須在命令本身用“特征位”加以區(qū)別。第二條命令的特征位=0共一百三十頁D7 =0D3D2D1D0(2)C口按位控制字 本控制字,可以(ky)使C口8根線中某根線置位或復(fù)位,以達到某種控制功能。 C口按位控制字的格式為:各位的含義如下:D7:特征位。D7 = 0表示為C口置位/復(fù)位控制字。D6、D5、D4未用。D、D、D1:C口PC7PC0選擇控制位,即選擇對C口的哪一位進行置位/復(fù)位操作。D0:用來規(guī)定對由D3D2D1位選中的C口某位進行置位還是復(fù)位操作。D0 = 1表示進行置位操作,D0 = 0表示進行復(fù)位操作。共一百三十頁 D7 D6 D5

26、D4 D3 D2 D1 D0 特征(tzhng)位=0Dont care bits選中的位將要輸出(shch)的狀態(tài)= 0,清0= 1,置18255控制寄存器 可以接受的第2條命令是:可以對PC口按位進行“置1”和“清0”操作。具體命令格式如下:(地址同樣是:A1,A0 = 11)D3D2D1選中PCx引腳000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC7*共一百三十頁8255與單片機的連接(linji):AT89C51825574LS373P0.0-P0.7ALEP2.78DQ0Q1CSRESETA0A1D0-D7GEAOERESETRDWRWR

27、RD+5VPAPCPBP2.7接片選/CS端,8255的(一組)寄存器地址(dzh)可以是:PA口:7000H PB口:7001H PC口:7002H 命令口:7003H共一百三十頁8255與單片機的連接(linji):AT89C51825574LS373P0.0-P0.7ALE8DQ0Q1Q7CSRESETA0A1D0-D7GEAOERESETRDWRWRRD+5VPAQ7接片選/CS端,8255的(一組)寄存器地址(dzh)可以是:PA口:0000H PB口:0001H PC口:0002H 命令口:0003H也可以是:007CH,007DH,007EH,007FHPC7PC0微型 打印機共

28、一百三十頁8255的編程應(yīng)用(yngyng)例:初始化A口,B口,C口為基本(jbn)I/O輸出口#define COM XBYTE0 x0003;指向控制字寄存器COM=0 x80H ; A,B,C口均為輸出口按照8255控制寄存器方式控制字格式寫命令: D7 D6 D5 D4 D3 D2 D1 D0 特征位=1A組方式選擇0 0:方式 00 1:方式 11 X:方式 2A 口B 口CL 口CH 口B組方式選擇=0,方式0=1,方式1=0,輸出=1,輸入=0,輸出=1,輸入=0,輸出=1,輸入=0,輸出=1,輸入共一百三十頁【例7.3】設(shè)8255的控制寄存器的地址為1003H,編寫程序,設(shè)置

29、A口為方式0輸入,B口為方式0輸出,C口為輸入。用C51語言(yyn)可編程如下:#include #include xdata char COM8255 _at_ 0 x1003;void main( ) /主函數(shù),用于初始化8255 COM8255 = 0 x99;/1001 1001共一百三十頁 1 0 0 1 1 0 0 1共一百三十頁【例7.3.4】仍設(shè)8255的控制寄存器的地址為1003H,編寫初始化程序,將8255的PC3置1,PC4清0。用C51語言(yyn)可編程如下:#include #include xdata char COM8255 _at_ 0 x1003;void

30、 init8255( ) COM8255 = 0 x07;/0000 0111 PC3置1 COM8255 = 0 x08;/0000 1000 PC4清0共一百三十頁共一百三十頁8255與單片機系統(tǒng)(xtng)的連接 8255和單片機的接口可以看作(kn zu)三總線結(jié)構(gòu)。下圖是8255與單片機連接的一個實例。共一百三十頁【例7.5】假設(shè)在下圖中,8255芯片的A口接了8個開關(guān),B口接了8個發(fā)光二極管。編寫程序,利用B口相應(yīng)發(fā)光二極管的狀態(tài)(zhungti)表示A口的按鍵的開關(guān)狀態(tài)。共一百三十頁A1 A0I/O口或寄存器0 00 11 01 1端口A端口B端口C控制端口8255內(nèi)部(nib)

31、端口尋址A0、A1配合RD、WR、CS用于確定(qudng)各口的相應(yīng)地址編碼。共一百三十頁D7 = 1D6D5D4D3D2D1D0工作(gngzu)方式控制字通過對COM口寫入工作(gngzu)方式控制字來指定8255的工作形式。工作在方式0(基本輸入、輸出方式)時:D7 1D60D50D4A入1D3Ch出0D20D1B出0D0Cl出0共一百三十頁 分析:對8255初始化時,應(yīng)將A口設(shè)置為方式(fngsh)0輸入,B口設(shè)置為方式0輸出,這樣,方式控制字即為0 x90。然后將A口的開關(guān)狀態(tài)讀進來(閉合時為0,斷開時為1),然后送B口輸出(0表示亮,1表示滅)。 采用線選法進行片選,當(dāng)P2.7為

32、0時選中8255芯片。這樣可以設(shè)置8255的A、B、C及控制寄存器的端口地址分別為:7FFCH、7FFDH、7FFEH、7FFFH。共一百三十頁【補充例7.11】(8255的擴展應(yīng)用)通過(tnggu)P0口擴至8只共陽數(shù)碼管的滾動顯示。共一百三十頁D7 1D60D50D4A出0D3Ch出0D20D1B出0D0Cl出0共一百三十頁可編程RAM/ IO/ CTC接口(ji ku)芯片8155:并行接口的擴展(kuzhn)(8155)PC3 VCCPC4 PC2TIMERIN PC1RESET PC0PC5 PB7IO/M PB5RD PB3WR PB2ALE PB1AD0 PB0AD1 PA7A

33、D2 PA6AD3 PA58155AD5 PA3AD6 PA2AD7 PA1CE/CE PB4GND PA0TIMEROUT PB6AD4 PA440 PIN8155與8255 是Intel推出的兩個廣泛應(yīng)用的并行口擴展芯片:8255擴展了三個8位的并行口8155擴展了兩個8位并行口 + 一個6位的并行口 + 一個14位Timer + 片內(nèi)256字節(jié)RAM8155有一個姊妹芯片 8156 片選端為高有效,其他完全相同共一百三十頁可編程RAM/IO/CTC接口(ji ku)芯片8155引腳:PC3 VCCPC4 PC2TIMERIN PC1RESET PC0PC5 PB7IO/M PB5RD P

34、B3WR PB2ALE PB1AD0 PB0AD1 PA7AD2 PA6AD3 PA58155AD5 PA3AD6 PA2AD7 PA1CE/CE PB4GND PA0TIMEROUT PB6AD4 PA4 PA,PB兩個8位和一個6位PC口。 AD0AD7,地址/數(shù)據(jù)復(fù)用線。 ALE,地址鎖存使能,控制地 址/數(shù)據(jù)復(fù)用。 /CE是8155的片選端,低有效(yuxio); 8156的片選端是CE,高有效。 IO/M,I/O口或RAM選擇線。 /RD是讀信號;/WR是寫信號; RESET是復(fù)位信號,高有效。 片內(nèi)1個14位減法Timer,計數(shù) 脈沖由TIMERIN輸入,分頻后由 TIMEROUT

35、 輸出。 VCC,GND是電源端。40 PIN共一百三十頁8155的 6個寄存器 8155有2種工作方式(基本I/O和選通I/O)。 內(nèi)部有6個寄存器, 由AD2, AD1,AD0,ALE與RD,WR, IO/M信號線選擇(xunz)。RESET高有效; /CE低有效。AD7AD0選中的寄存器功 能X X X X X 0 0 0命令/狀態(tài)字寄存器對它只能寫命令從它只能讀狀態(tài)X X X X X 0 0 1A口寄存器(PA7PA0)對應(yīng)A口的各個引腳X X X X X 0 1 0B口寄存器(PB7PB0)對應(yīng)B口的各個引腳X X X X X 0 1 1C口寄存器(PC7PC0)對應(yīng)C口的各個引腳X

36、 X X X X 1 0 0定時器低8位寄存器單純存放低8位初值X X X X X 1 0 1定時器高6位和輸出方式寄存器高兩位控制輸出信號形式共一百三十頁 TM2 TM1 IEB IEA PC2 PC1 PB PA A口中斷(zhngdun)B 口A 口C 口方式(fngsh)選擇=1,允許=0,禁止=1,輸出=0,輸入=1,輸出=0,輸入8155命令/狀態(tài)字寄存器 是兩個地址相同的寄存器,命令字寄存器接受控制命令(只寫)。地址:A2,A1,A0=000 命令字格式如下:C口方式:ALT1C口為輸入口(A、B為基本I/O)。 ALT2C口為輸出口(A、B為基本I/O)。 ALT3C口低3位為

37、A口選通I/O提供應(yīng)答信號; B口為基本I/O,C口高3位為輸出口。 ALT4C口的低、高3位分別為A口、B口的選 通I/O提供應(yīng)答信號。B口中斷=1,允許=0,禁止0 0 = ALT1 0 1 = ALT2 1 0 = ALT3 1 1 = ALT4起/停與運行控制位:0 0 = 無操作=NOP 0 1 = 立即停計數(shù); 若未計數(shù)=NOP1 0 = 減到 0 停止; 若未計數(shù)=NOP1 1 = 立即開始計數(shù); 若正在計數(shù)則減 到 0后按新的方 式和初值計數(shù)。共一百三十頁 X D6 D5 D4 D3 D2 D1 D0 A 口中斷請求=1,滿=0,空=1,請求(qngqi)中斷=0, 無請求注:

38、讀取狀態(tài)字信息多用在以查詢方式與通過8155 擴展(kuzhn)的外部設(shè)備進行應(yīng)答,或查詢定時器的狀態(tài)。 B 口中斷允許=1,允許=0,禁止定時器中斷狀態(tài)B 口中斷請求=1,請求中斷=0, 無請求A 口緩沖器狀態(tài)A 口緩沖器狀態(tài)=1,滿=0,空A 口中斷允許=1,允許=0,禁止=1,已經(jīng)計滿=0, 讀出或復(fù)位后8155命令/狀態(tài)字寄存器 是兩個地址相同的寄存器,狀態(tài)字寄存器存放狀態(tài)信息(只讀)。地址:A2,A1,A0=000 狀態(tài)字格式如下:共一百三十頁 D7 D6 D5 D4 D3 D2 D1 D0 8155定時(dn sh)/計數(shù)器14位的減法計數(shù)器工作時先要對低8位寄存器和高6位寄存器寫

39、入初始值。其地址分別為:A2,A1,A0 = 100 和 101 bD5 D4 D3 D2 D1 D0 TIMER低8位:TIMER高6位: M2 M1(地址(dzh):100b)(地址:101b)共一百三十頁 D7 D6 D5 D4 D3 D2 D1 D0 8155定時/計數(shù)器 輸出(shch)信號的形式M2,M1 定義定時(dn sh)/計數(shù)器從TIMEROUT輸出信號的形式: D5 D4 D3 D2 D1 D0 TIMER低8位TIMER高6位 M2 M1(100)(101)M2,M1=00 輸出單個方波M2,M1=01 輸出連續(xù)方波M2,M1=10 輸出單個脈沖M2,M1=11 輸出連

40、續(xù)脈沖計數(shù)開始計數(shù)結(jié)束常常用作分頻器(自動重裝初值)常常用作分頻器(自動重裝初值)負脈沖寬度約等于TIMERIN的Tin單方波寬度約等于初值的一半共一百三十頁8155定時/計數(shù)器的使用(shyng)(如何初始化)8155定時/計數(shù)器是減 2計數(shù)器,故: 最小初值為2。 分頻應(yīng)用時,初值若為偶數(shù),則輸出(shch)等占空比 方波;若為奇數(shù),則正半周多一個脈沖周期。先對(04H)(05H)寄存器裝入14位初值和輸 出信號形式。14位初值的范圍是23FFFH。啟動定時/計數(shù)器。 即對命令/狀態(tài)字寄存器(00H)的最高兩位 TM2,TM1寫入“11”。如果定時/計數(shù)器在運行中要改換新的時間 常數(shù),務(wù)必

41、先裝入新的初值,然后再發(fā)送一 次啟動命令,即寫入:TM2,TM1=11。共一百三十頁8155與單片機的連接(linji):AT89C518155P0.0-P0.7ALEP2.1CERESETAD0-AD7EARESETRDWRWRRD+5VPAPBPC8位6位8位P2.2IO/MALETinTout 8155內(nèi)部有一個(y )鎖存器,故不必再需要外加74LS373 由于用了P2.2接/CE;P2.1接IO/M,它的一組地址是: XXXX X01X XXXX X000 命令/狀態(tài)字寄存器 XXXX X01X XXXX X001010 A,B,C口寄存器 XXXX X01X XXXX X10010

42、1 定時器低/高位寄存器 對8155的片內(nèi)RAM尋址,必須P2.1為低,故RAM地址為: XXXX X00X 0000 00001111 1111等256個單元。共一百三十頁8155的編程應(yīng)用(yngyng)例1:初始化A口,C口為輸入口,B口為輸出口(均為 基本(jbn)I/O)定時器為24分頻連續(xù)方波輸出。MOV DPTR,#0204H ;指向Timer低8位寄存器MOV A, #24 ;初值即分頻數(shù),24=18HMOVX DPTR, A ;裝入根據(jù)連線應(yīng)該知道它的一組地址是:02000205H命令/狀態(tài)字寄存器的M2,M1=01 輸出連續(xù)方波常常用作分頻器(自動重裝初值)共一百三十頁IN

43、C DPTR ;波形選擇(xunz)位與Timer高6位MOV A, #40H ;01000000=連續(xù)方波TH=0MOVX DPTR, A ;裝入MOV DPTR,#0200H ;指向(zh xin)命令/狀態(tài)字寄存器8155的編程應(yīng)用例1:初始化A口,C口為輸入口,B口為輸出口(均為 基本I/O)定時器為24分頻連續(xù)方波輸出。MOV DPTR,#0204H ;指向Timer低8位寄存器MOV A, #24 ;初值即分頻數(shù),24=18HMOVX DPTR, A ;裝入共一百三十頁 TM2 TM1 IEB IEA PC2 PC1 PB PA A口中斷(zhngdun)B 口A 口C 口方式(f

44、ngsh)選擇=1,允許=0,禁止=1,輸出=0,輸入=1,輸出=0,輸入C口方式:ALT1C口為輸入口(A、B為基本I/O)。 ALT2C口為輸出口(A、B為基本I/O)。 ALT3C口低3位為A口選通I/O提供應(yīng)答信號; B口為基本I/O,C口高3位為輸出口。 ALT4C口的低、高3位分別為A口、B口的選 通I/O提供應(yīng)答信號。B口中斷=1,允許=0,禁止0 0 = ALT1 0 1 = ALT2 1 0 = ALT3 1 1 = ALT4起/停與運行控制位:0 0 = 無操作=NOP 0 1 = 立即停計數(shù); 若未計數(shù)=NOP1 0 = 減到 0 停止; 若未計數(shù)=NOP1 1 = 立即

45、開始計數(shù); 若正在計數(shù)則減 到 0后按新的方 式和初值計數(shù)。 1 1 0 0 0 0 1 0題目要求初始化A口,C口為輸入口,B口為輸出口(均為基本I/O)此例命令字寄存器地址是:0200H。共一百三十頁單片機與LED數(shù)碼管的接口技術(shù)共一百三十頁LED顯示器的擴展(kuzhn)(結(jié)構(gòu))LED數(shù)碼管的結(jié)構(gòu)(jigu):共陽與共陰 單片機系統(tǒng)擴展LED數(shù)碼管時多用共陽LED:共陽數(shù)碼管每個段筆畫是用低電平(“0”)點亮的,要求驅(qū)動功率很小;而共陰數(shù)碼管段筆畫是用高電平(“0”)點亮的,要求驅(qū)動功率較大。 通常每個段筆畫要串一個數(shù)百歐姆的降壓電阻。公共陽極h g f e d c b aabcdgef

46、h公共陰極h g f e d c b aabcdgefhh g f ah g f a高電平點亮低電平點亮接高電平接地共一百三十頁LED數(shù)碼管的譯碼:硬件(yn jin)譯碼與軟件譯碼共陰LEDabcdgefhgfedcb aDCBAP1.3P1.2P1.1P1.0CD4511AT89C5174LS48/CD4511是“BCD碼七段共陰譯碼/驅(qū)動(q dn)”IC; 74LS47是“BCD碼七段共陽譯碼/驅(qū)動”ICLED顯示器的擴展(結(jié)構(gòu))共一百三十頁LED顯示器的擴展(kuzhn)(軟件譯碼)軟件譯碼特點(tdin): 不用專用的譯碼/驅(qū)動器件,驅(qū)動功率較??;不增加硬件的開銷;軟件編程較復(fù)雜;

47、字型靈活(比如:有八段,只可譯多種字符,字型好看)。共陽LEDabcdgefhP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5VAT89C51硬件譯碼特點: 采用專用譯碼/驅(qū)動器件,驅(qū)動功率較大;增加了硬件的開銷;軟件編程簡單;字型固定(比如:只有七段,只可譯數(shù)字,字型不好看)。共一百三十頁LED數(shù)碼管的軟件(run jin)譯碼八段LED數(shù)碼管段代碼編碼(bin m)表(連線不同可有多種表):公共陽極h g f e d c b aabcdgefh公共陰極h g f e d c b aabcdgefhh g f ah g f a高電平點亮低電平點亮接高電平接地字形01234

48、56789黑共陽0C00F90A40B09992820F880900FF共陰3F065B4F666D7D077F6F00共一百三十頁LED顯示器的擴展(kuzhn)(顯示方式)LED數(shù)碼管的顯示方式:靜態(tài)(jngti)與動態(tài)動態(tài)顯示特點: 有閃爍,用元器件少,占I/O線少,必須掃描,花費CPU時間,編程復(fù)雜。(有多個LED時尤為突出)靜態(tài)顯示特點: 無閃爍,用元器件多,占I/O線多,無須掃描,節(jié)省CPU時間,編程簡單。靜態(tài)顯示: 各數(shù)碼管在顯示過程中持續(xù)得到送顯信號,與各數(shù)碼管接口的I/O口線是專用的。動態(tài)顯示: 各數(shù)碼管在顯示過程中輪流得到送顯信號,與各數(shù)碼管接口的I/O口線是共用的。共一百

49、三十頁ABCLKh g f e d c b aCLRABCLKCLRABCLKCLR+5VVCCTxDRxD 89C51單片機74LS16474LS16474LS164h g f e d c b ah g f e d c b a+5V共陽LED數(shù)碼管LED數(shù)碼管靜態(tài)(jngti)顯示舉例(學(xué)習(xí)串行口已見過)有幾個LED就要(ji yo)幾個74LS164,但只要數(shù)據(jù)不變,送一次就保持住了,且不閃爍,編程十分簡單。共一百三十頁【例7.7】用上圖靜態(tài)顯示電路從左到右顯示1、2、3共3個字符。(L841) 要顯示3個字符1、2、3,只要從單片機的串行口發(fā)送這3個字符的字形碼即可。因單片機發(fā)送的數(shù)據(jù)首

50、先進入第一個74LS164(最左邊),然后向下一個74LS164移動,則最早發(fā)送的字型碼在最右邊的74LS164輸出(shch)。因此,單片機的串行口要先發(fā)送3的字型碼,再發(fā)送2、1的字型碼。共一百三十頁#include void main () SCON = 0 x00;SBUF = 0 xB0;while(TI);TI = 0;SBUF = 0 xA4while(TI);TI = 0;SBUF = 0 xF9;while(TI);TI = 0;while(1);共一百三十頁動態(tài)(dngti)掃描顯示接口: 在多位LED顯示時,為了簡化電路,降低成本,一般采用動態(tài)掃描顯示方式。動態(tài)掃描顯示是

51、單片機應(yīng)用系統(tǒng)中最常用的顯示方式之一。共一百三十頁LED數(shù)碼管動態(tài)顯示(xinsh)原理工作(gngzu)原理:從P0口送段代碼,P1口送位選信號。段碼雖同時到達 6個LED,但一次僅一個LED被選中。利用“視覺暫留”,每送一個字符并選中相應(yīng)位線,延時一會兒,再送/選下一個循環(huán)掃描即可。P1.5 P1.4P1.3P1.2P1.2P1.0P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0AT89C51位選線段代碼共一百三十頁 為了使各顯示器顯示不同的字符,各個數(shù)碼管應(yīng)該輪流顯示,在某一時刻只能是其中的一個數(shù)碼管點亮。因此(ync)每個數(shù)碼管的COM端還要受到另一信號的

52、控制,可以接到另外一個I/O輸出口上,某一個時刻只讓其中的一個COM出現(xiàn)低電平或高電平。共一百三十頁【例7.8】編寫程序,使下圖的動態(tài)(dngti)掃描顯示電路從左到右顯示1、2、3、4、5、6共6個字符(假設(shè)使用的是共陽極LED)。(由于動態(tài)掃描,限流電阻可以不用)PC5 PC4PC3PC2PC1PC0PA7 PA6 PA5PA4 PA3 PA2 PA1 PA08155位選線段代碼(di m)abcdefgh共一百三十頁思路: 在第一時刻(shk)從PA口輸出1的字形碼,從PC口輸出00100000B(20H),使最左邊的LED顯示“1”。延時一段時間后,從PA口輸出2的字型碼,從PC口輸出

53、00010000B(10H),使左邊第二個LED顯示“2”,依次循環(huán),最后從PA口輸出6的字型碼,從PC口輸出000000001B(01H),使最右邊的LED顯示“6”。再回過頭從左邊第一個開始。只要保證延時時間足夠短即可(但時間也不能太短,一般是幾個毫秒)。 設(shè)8155的命令/狀態(tài)寄存器的地址為4000H,端口A、B、C的地址分別是4001H、4002H、4003H。8155的工作方式應(yīng)設(shè)置為:A口輸出,C口輸出,B口未用,可以定義為輸入。因不用A、B中斷,也不用定時/計數(shù)器,故工作方式控制字為4DH。共一百三十頁#include #include #include xdata char C

54、OM8155 _at_ 0 x4000;xdata char PORTA8155 _at_ 0 x4001;xdata char PORTC8155 _at_ 0 x4003;void delay ( unsigned int d )/延時函數(shù)(hnsh) while(-d 0);共一百三十頁void main( ) unsigned char idata dis_buf 6 = 0,1,2,3,4,5;unsigned char code table 6 = 0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82 ;COM8155 = 0 x4D;unsigned char

55、segcode,i; while(1) unsigned char bitcode = 0 x20; 共一百三十頁for(i = 0;i 6;i+) segcode = dis_buf i; PORTA8155 = table segcode; PORTC8155 = bitcode; delay(1000);/延時1毫秒 bitcode = _cror_ (bitcode ,1); 共一百三十頁【例7.8】使用定時器完成上例的效果(設(shè)晶振頻率(pnl)為12MHz)。#include #include #include #include #define time0 1000/定時1ms,用于

56、數(shù)碼管掃描顯示xdata char COM8155 _at_ 0 x4000;xdata char PORTA8155 _at_ 0 x4001;xdata char PORTC8155 _at_ 0 x4003;unsigned char idata dis_buf6=0,1,2,3,4,5;unsigned char code table6=0 xF9,0 xA4,0 xB0,0 x99,0 x92,0 x82;unsigned char bitcode = 0 x20;unsigned char segcode,i = 0;共一百三十頁void main ( void ) COM8155

57、 = 0 x4D;TMOD = 0 x01;TH0 = (65536 - time0)/ 256;TL0 = (65536 - time0)% 256;TR0 = 1;EA = 1;ET0 = 1;while(1);共一百三十頁void Time0_int( ) interrupt 1 TH0 =(65536 - time0)/ 256; TL0 = (65536 - time0)% 256; segcode = dis_buf i; PORTA8155 = table segcode; PORTC8155 = bitcode; bitcode = _cror_ (bitcode,1); i

58、= i +1; if(i = 6) i = 0;bitcode = 0 x20;共一百三十頁7.5 MCS-51單片機與LCD的接口技術(shù)共一百三十頁 液晶(Liquid Crystal)是一種高分子材料(cilio),因為其特殊的物理、化學(xué)、光學(xué)特性,20世紀(jì)中葉開始廣泛應(yīng)用在輕薄型顯示器上。通常把各種液晶顯示器都直接叫做液晶。共一百三十頁 各種型號的液晶通常是按照顯示字符的行數(shù)或液晶點陣的行、列數(shù)來命名的。比如:1602的意思是每行顯示16個字符,一共(ygng)可以顯示兩行。這類液晶通常都是字符型液晶,即只能顯示ASCII碼字符,如數(shù)字、大小寫字母、各種符號等。12232液晶屬于圖形型液晶

59、,她的意思是液晶由122列、32行組成,即共有12232個點來顯示各種圖形,我們可以通過程序控制這12232個點中的任一個點顯示或不顯示。類似的命名還有12864,19264,192128,20240等,根據(jù)客戶需要,廠家可以設(shè)計出任意數(shù)組合的點陣液晶。共一百三十頁 液晶體積小、功耗低、顯示操作簡單,但是它有一個致命的弱點,其使用的溫度范圍很窄,通用型液晶正常工作溫度范圍為0+55 ,存儲溫度范圍為-20+60,即使是寬溫級液晶,其正常工作溫度范圍也僅為-20+70,存儲溫度范圍為-30+80,因此在設(shè)計相應(yīng)產(chǎn)品時,務(wù)必(wb)要考慮實際使用環(huán)境 ,選取合適的液晶。共一百三十頁 液晶顯示器操作

60、方式(fngsh)有:并行操作方式(fngsh)和串行操作方式。 市場上使用的液晶以并行操作方式居多,也有串行操作方式的。還有并、串口同時具有的,用戶可以選擇用并口或串口操作。共一百三十頁7.5.1 1602字符(z f)型LCD顯示器簡介一. LCD顯示原理 LCD能夠顯示字符的關(guān)鍵在于其控制器,目前大部分 LCD都使用日立公司的HD44780集成電路作為控制器。HD44780是集驅(qū)動器與控制器于一體專門用于字符顯示的LCD顯示控制驅(qū)動集成路,它的特點在于:顯示緩沖區(qū)及用戶定義區(qū)的字符發(fā)生器全部集成在片內(nèi);接口數(shù)據(jù)傳輸有8位和4位兩種傳輸模式;具有簡單而功能很強的指令集,可以(ky)實現(xiàn)字符

溫馨提示

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

評論

0/150

提交評論