山東大學(xué)單片機(jī)原理與應(yīng)用課件05系統(tǒng)擴(kuò)展_第1頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件05系統(tǒng)擴(kuò)展_第2頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件05系統(tǒng)擴(kuò)展_第3頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件05系統(tǒng)擴(kuò)展_第4頁
山東大學(xué)單片機(jī)原理與應(yīng)用課件05系統(tǒng)擴(kuò)展_第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第五章 系統(tǒng)擴(kuò)展5.1 MCS-51的最小系統(tǒng)及系統(tǒng)擴(kuò)展5.2 MCS-51系統(tǒng)總線擴(kuò)展技術(shù)5.3 存儲器擴(kuò)展5.4 并行I/O擴(kuò)展5.5 其它擴(kuò)展5.1 MCS-51的最小系統(tǒng)及系統(tǒng)擴(kuò)展最小系統(tǒng) 使單片機(jī)能運(yùn)行的最少器件構(gòu)成的系統(tǒng)。對于無ROM的單片機(jī)芯片如8031必須擴(kuò)展ROM,復(fù)位、晶振電路;而對于有ROM芯片:89C51等,不必?cái)U(kuò)展ROM,只要有復(fù)位、晶振電路即可。 通常,采用8051/8751/89C51的最小系統(tǒng)最能發(fā)揮單片機(jī)體積小、成本低的優(yōu)點(diǎn)。但很多情況下,最小系統(tǒng)并不能滿足應(yīng)用要求。 當(dāng)單片機(jī)最小系統(tǒng)不能滿足系統(tǒng)功能的要求時(shí), 就需要進(jìn)行擴(kuò)展。 首先,為了節(jié)省成本,單片機(jī)內(nèi)部

2、所配置的存儲器容量一般都比較?。ㄈ纾?031內(nèi)部有128字節(jié)的RAM和0字節(jié)的ROM),往往滿足不了實(shí)際應(yīng)用系統(tǒng)的需要,需要從外部擴(kuò)展RAM和ROM以滿足實(shí)際要求。 其次,為了使單片機(jī)按照人們的要求工作,就需要將必要的命令和數(shù)據(jù)輸入單片機(jī),單片機(jī)也需要把運(yùn)算的結(jié)果以一定的方式輸出出來,要完成這些工作,僅僅依賴于單片機(jī)系統(tǒng)原配的接口往往難以勝任,這就需要一定的輸入輸出接口擴(kuò)展,還有一些其它方面的擴(kuò)展。 總之單片機(jī)系統(tǒng)的擴(kuò)展一般包含以下幾方面的內(nèi)容: 外部程序存儲器的擴(kuò)展; 外部數(shù)據(jù)存儲器的擴(kuò)展; 輸入/輸出接口的擴(kuò)展; 管理功能器件的擴(kuò)展(如定時(shí)/計(jì)數(shù)器擴(kuò)展、中斷擴(kuò)展、通信接口擴(kuò)展等)。5.2

3、MCS-51系統(tǒng)總線擴(kuò)展技術(shù)總線:就是用來連接計(jì)算機(jī)系統(tǒng)中各擴(kuò)展部件的一些公共連接信號線。 三總線結(jié)構(gòu):根據(jù)總線中各信號線在器件連接中所起的作用不同,將信號線分成了三類: (1)地址總線(Address Bus):用于實(shí)現(xiàn)計(jì)算機(jī)與外部器件之間地址信號的傳遞,一方面實(shí)現(xiàn)了將這些不同的外部器件分別編入了單片機(jī)的不同的外部空間單元(編址),另一方面也能實(shí)現(xiàn)計(jì)算機(jī)對這些不同的空間單元訪問時(shí)形成對這些器件的分別選擇(尋址)。(2)數(shù)據(jù)總線(Data Bus):用于實(shí)現(xiàn)計(jì)算機(jī)與外部器件之間的數(shù)據(jù)信號的傳遞。(3)控制總線(Control Bus):用于實(shí)現(xiàn)計(jì)算機(jī)與外部器件之間的控制信號(如讀寫、選通、Re

4、ady等)的傳遞。5.2.1 MCS-51的系統(tǒng)總線結(jié)構(gòu)(1)地址總線: P2口提供地址總線的高8位 P0口分時(shí)復(fù)用,提供地址總線的低8位。(但是對于P0 口它一方面作為地址總線的低8位,另一方面還將作為數(shù)據(jù)總線,所以P0口提供的低8位地址需要外部電路進(jìn)行鎖存)(2)數(shù)據(jù)總線: 由P0口提供。 (3)控制總線: 一部分包括ALE、PSEN、EA等,另一部分包括 P3 口提供部分?jǐn)U展系統(tǒng)時(shí)常用的控制信號,如RD和WR等。單片機(jī)的總線結(jié)構(gòu)圖 地址鎖存器常常采用帶三態(tài)緩沖輸出的鎖存器,如74LS373、74LS273等實(shí)現(xiàn),為地址鎖存信號,在其下降沿將口的內(nèi)容鎖存住,而這時(shí)口的內(nèi)容恰好就是外部數(shù)據(jù)的

5、地址低位,當(dāng)訪問外部程序存儲器時(shí)和口的時(shí)序?qū)?yīng)關(guān)系如下圖所示:利用74LS373構(gòu)成的外部系統(tǒng)總線如圖所示:5.2.2 MCS-51的總線驅(qū)動(dòng) 在單片機(jī)應(yīng)用系統(tǒng)中, 擴(kuò)展的三總線上往往掛接很多負(fù)載, 如存儲器、并行接口、A/D接口、顯示接口等, 但總線接口的負(fù)載能力有限(大部分僅僅能夠驅(qū)動(dòng)4個(gè)TTL電路), 這時(shí)便需要通過連接總線驅(qū)動(dòng)器對單片機(jī)的系統(tǒng)總線進(jìn)行驅(qū)動(dòng)。 根據(jù)總線信號流通的方向不同,可以將這些總線驅(qū)動(dòng)分成兩大類:單向驅(qū)動(dòng):只有一個(gè)傳輸方向的信號(如地址信號)雙向驅(qū)動(dòng):有兩個(gè)傳輸方向的信號(如數(shù)據(jù)信號) 5.2.2.1 單向驅(qū)動(dòng) 單向總線驅(qū)動(dòng)常常選用74LS244來實(shí)現(xiàn)。74LS244

6、是三態(tài)輸出的八緩沖器,由2組、每組四路輸入、輸出構(gòu)成。每組有一個(gè)控制端( 和 )控制,控制端的高或低電平?jīng)Q定該組數(shù)據(jù)被接通還是斷開。 74LS244的功能表 74LS244在高電平輸入時(shí)最大需要20uA電流,在低電平輸入時(shí)最大需要200uA電流,這對于單片機(jī)來講只是一個(gè)TTL負(fù)載的輸入要求;而輸出時(shí),在高電平時(shí)可以提供15mA的輸出電流,在低電平時(shí)可以提供24mA的灌入電流,可以驅(qū)動(dòng)近120個(gè)TTL負(fù)載。可見,使用74LS244使得單片機(jī)系統(tǒng)的總線驅(qū)動(dòng)能力得到了很大提高。用74LS244構(gòu)成的高8位地址總線驅(qū)動(dòng)電路 5.2.2.2 雙向驅(qū)動(dòng) 對于雙向總線驅(qū)動(dòng)常常選用74LS245來實(shí)現(xiàn)。74L

7、S245是8路雙向數(shù)據(jù)總線驅(qū)動(dòng)芯片,具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。常常用來擴(kuò)展數(shù)據(jù)總線。74LS245內(nèi)部結(jié)構(gòu)如圖所示:當(dāng)片選端 低電平有效時(shí),DIR=“0”,信號由 B 向 A 傳輸;DIR=“1”,信號由 A 向 B 傳輸;當(dāng) 為高電平時(shí),A、B均為高阻態(tài)。74LS245的功能表 74LS245的輸入要求和74LS244一樣僅僅是一個(gè)TTL負(fù)載的要求(高電平時(shí)需要20uA,低電平時(shí)需要200uA),輸出驅(qū)動(dòng)能力也和74LS244一樣。這里不再重復(fù)。用74LS245構(gòu)成的8位數(shù)據(jù)總線驅(qū)動(dòng)電路 對于P0口的雙線驅(qū)動(dòng)器74LS245,使接地保證芯片一直處于工作狀態(tài),而輸入/輸出的

8、方向控制由單片機(jī)的數(shù)據(jù)存儲器的“讀”控制引腳( )和程序存儲器的取指控制引腳( )通過與門控制DIR引腳實(shí)現(xiàn)。這種連接方法保證無論是“讀”數(shù)據(jù)存儲器中數(shù)據(jù)( 有效)還是從程序存儲器中取指令( 有效)時(shí),都能保證P0口的輸入驅(qū)動(dòng);除此以外的時(shí)間里( 及 均無效)保證P0口的輸出驅(qū)動(dòng)。 除了配置總線驅(qū)動(dòng)器以外,在總線上適當(dāng)安裝上拉電阻也可以提高總線上高電平信號的帶負(fù)載能力(如對發(fā)光二極管的驅(qū)動(dòng)便可以考慮用這種方法)。但是,總線驅(qū)動(dòng)器除了增加總線的電路驅(qū)動(dòng)能力外,還能夠?qū)ω?fù)載的波動(dòng)變化起隔離作用。 同時(shí),考慮總線驅(qū)動(dòng)時(shí),還要根據(jù)負(fù)載的性質(zhì)分別加以考慮,在對TTL 負(fù)載進(jìn)行驅(qū)動(dòng)時(shí), 只需考慮驅(qū)動(dòng)電流的

9、大小; 在對MOS負(fù)載驅(qū)動(dòng)時(shí), 其負(fù)載的輸入電流很小, 更多地要考慮對分布電容的電流驅(qū)動(dòng)。 在系統(tǒng)較小的情況下,外圍器件盡量采用MOS器件,這樣可以減少負(fù)載,省去驅(qū)動(dòng)器; 對于較大的系統(tǒng),當(dāng)需要MOS和TTL器件混用時(shí),最好把雙向總線分為兩類,所有的MOS器件接在一類總線上,所有TTL器件接在另一類總線上,以免出現(xiàn)CMOS器件直接驅(qū)動(dòng)多個(gè)TTL負(fù)載(CMOS器件的驅(qū)動(dòng)能力一般相對較弱)的情況,然后再將兩類總線連接到一個(gè)公共總線上即可,如圖所示:5.2.3 MCS-51外部地址空間的分配 MCS-51具有64KB的片內(nèi)、片外統(tǒng)一編址的程序存儲空間和64KB的片外數(shù)據(jù)存儲空間。 MCS-51沒有獨(dú)

10、立的I/O空間,I/O空間和外部數(shù)據(jù)空間是統(tǒng)一的,也就是說,外部I/O設(shè)備也是編入外部數(shù)據(jù)空間的,占據(jù)外部數(shù)據(jù)空間的地址段,對這些I/O設(shè)備的訪問和對外部數(shù)據(jù)存儲器的訪問方法也基本上一樣(除了可能需要另外設(shè)置一些握手信號)。 對于外部擴(kuò)展的器件可以根據(jù)它們本身的性質(zhì)不同分別編入這些存儲空間內(nèi),占據(jù)不同的地址段,這種地址分配的過程就是單片機(jī)系統(tǒng)外部擴(kuò)展器件的編址。根據(jù)編址實(shí)現(xiàn)的方式不同,可以將其分成兩類:線選法 譯碼法5.2.3.1 線選法 直接以系統(tǒng)的地址線作為存儲器芯片的片選信號, 只需把用到的地址線與存儲器芯片的片選端直接相連即可。 通過上表我們可以發(fā)現(xiàn)EPROM2716共占據(jù)了16個(gè)地址

11、塊,每個(gè)地址塊的大小都是2KB(即每個(gè)存儲器單元都分配了16個(gè)不同的地址),總共占用了32K的地址空間。 因此,線選法具有以下特點(diǎn):優(yōu)點(diǎn):簡單明了,不需要譯碼電路,成本低。缺點(diǎn):浪費(fèi)了大量的存儲空間,所劃分的地址空間往往不連續(xù),這種方法只適用于片外擴(kuò)展不是很多的單片機(jī)系統(tǒng)中。5.2.3.2 譯碼法 使用地址譯碼器對系統(tǒng)的片外地址進(jìn)行譯碼,以其譯碼輸出作為存儲器芯片的片選信號。優(yōu)點(diǎn):能有效地利用存儲空間 , 適用于大容量多芯片存儲器的擴(kuò)展。 常用的地址譯碼器芯片有:74S139( 雙 2-4 譯碼器 )、 74LS138(3-8 譯碼器 ) 及 74LS154(4-16 譯碼器 ) 等。 用74

12、LS138譯碼器構(gòu)成的編址電路 地址譯碼關(guān)系圖:用簡單的符號來表示全部地址譯碼關(guān)系的示意圖。 例如: “.”表示該地址線不接?!癤”表示該地址線上的內(nèi)容可能是“1”也可能是“0” 譯碼法又分為完全譯碼和部分譯碼兩種。(1) 完全譯碼:地址譯碼器使用了全部地址線,地址與存儲單元一一對應(yīng),也就是 1 個(gè)存儲單元只占用 1 個(gè)唯一的地址。 (2)部分譯碼:地址譯碼器僅使用了部分地址線,地址與存儲單元不是一一對應(yīng),而是 1 個(gè)存儲單元占用了幾個(gè)地址。 1 根地址線不接,一個(gè)單元占用 2個(gè)地址;2 根地址線不接,一個(gè)單元占用 4個(gè)地址;3 根地址線不接,則占用 8個(gè)地址;依此類推。 使用部分譯碼將會大量

13、浪費(fèi)存儲單元,使存儲器的實(shí)際容量降低。但是對于單片機(jī)系統(tǒng)來說,由于實(shí)際需要的存儲器容量往往大大低于所能提供的容量,而部分譯碼可以簡化譯碼電路。從地址譯碼關(guān)系表可以得出以下幾點(diǎn)結(jié)論: 屬完全譯碼還是部分譯碼; 片內(nèi)譯碼線和片外譯碼線各有多少根; 所占用的全部地址范圍為多少。 在上表中, 有1個(gè)“”(A15不接), 表示為部分譯碼,其中A14、A13、A12和A11是參加譯碼的,片內(nèi)譯碼線有11根(A100),這樣每個(gè)單元占用2個(gè)地址。所占用的地址范圍如下:當(dāng)A15為0時(shí), 所占用地址為0010 0000 0000 00000010 0111 1111 1111, 即2000H27FFH。當(dāng)A15

14、為1時(shí), 所占用地址為1010 0000 0000 00001010 0111 1111 1111, 即A000HA7FFH。5.3 存儲器擴(kuò)展 MCS-51具有64KB的片內(nèi)、片外統(tǒng)一編址的程序存儲空間和64KB的片外數(shù)據(jù)存儲空間。而MCS-51片內(nèi)僅僅配置了這些存儲空間中的部分單元。 以MCS89C51為例,片內(nèi)配置了256字節(jié)的RAM作為數(shù)據(jù)存儲器和4KB的FLASH作為程序存儲器。對于功能相對簡單,數(shù)據(jù)存儲量不多的情況下,可以直接使用這些片內(nèi)存儲器來完成數(shù)據(jù)和程序的存儲功能。而對于大部分情況下,片內(nèi)存儲單元(尤其是數(shù)據(jù)存儲單元)是不夠系統(tǒng)使用的。 因此,單片機(jī)系統(tǒng)擴(kuò)展中最重要也是最基本

15、的內(nèi)容便是存儲器擴(kuò)展。根據(jù)存儲器的作用不同,存儲器擴(kuò)展又可以分成程序存儲器擴(kuò)展和數(shù)據(jù)存儲器擴(kuò)展兩部分。 5.3.1 程序存儲器的擴(kuò)展 程序存儲器是用來存放系統(tǒng)的可執(zhí)行程序代碼和固定表格數(shù)據(jù)的,這些代碼或數(shù)據(jù)一旦生成并存入存儲器以后,系統(tǒng)運(yùn)行過程中一般僅有讀的需求,而沒有寫的需求。 另外,這些代碼或數(shù)據(jù)一旦寫入后,希望系統(tǒng)斷電再次上電后能夠得到保持,也就是這些數(shù)據(jù)或代碼具有“掉電不丟失”或者“非易失”性。因此程序存儲器的選型上一般選擇“非易失”性存儲器。如:ROM、PROM、EPROM、EEPROM或者FLASH等來實(shí)現(xiàn)。5.3.1.1 程序存儲器類型簡介ROM: 只讀存儲器,由廠家生產(chǎn)存儲器時(shí)

16、直接將數(shù)據(jù)或者代碼直接燒寫到存儲器單元里,用戶是無法更改的,一般非大批量生產(chǎn)用戶難以使用這種存儲器。PROM: 可編程ROM。廠家預(yù)留了存儲單元空間,內(nèi)容由用戶寫入, 與ROM相比有了一定的靈活性,但是往往也只有一次寫的機(jī)會,如果程序不完善,或者需要對程序進(jìn)行升級,都需要選擇新的空白PROM進(jìn)行重新燒寫,這對于用戶來講也不是非常方便。EPROM: 紫外線可擦除可編程ROM。類似于PROM,用戶可以編程存儲單元,與PROM不同的是編程完畢以后還可以進(jìn)行擦除,擦除以后就和空白PROM一樣可以重新進(jìn)行編程。這種存儲器的擦除一般需要專用的擦除器,將EPROM放入擦除器內(nèi),用一定強(qiáng)度的紫外線照射分鐘就可

17、以將EPROM內(nèi)的存儲內(nèi)容擦除干凈。 特點(diǎn): 擦除速度慢 擦除次數(shù)有限(一般在10次以內(nèi)) 常用的EPROM:Intel公司2764(8KB )/27128(16KB) /27256(32KB)等。EEPROM: 電可擦除可編程ROM。 優(yōu)點(diǎn): 可擦除次數(shù)比EPROM有了幾百倍甚至上千倍的增加。 擦除的速度也提高了上百倍。 缺點(diǎn): 工藝上比其它可編程存儲器復(fù)雜,成本較高。 單片機(jī)系統(tǒng)一般很少將EEPROM作為程序存儲器來使用,而是用EEPROM來存放系統(tǒng)運(yùn)行過程中產(chǎn)生的一些關(guān)鍵狀態(tài)數(shù)據(jù)。此時(shí)EEPROM所占據(jù)存儲空間不再是程序存儲空間,而是數(shù)據(jù)存儲空間。一方面這些數(shù)據(jù)是運(yùn)行過程中產(chǎn)生的,它和普

18、通中的數(shù)據(jù)性質(zhì)上是一樣的,另一方面這些數(shù)據(jù)是隨時(shí)需要讀寫的,讀寫的方式以及所用到的讀寫信號也和普通中的數(shù)據(jù)基本一致,也就是說從外觀上它和普通中的數(shù)據(jù)是一樣的。FLASH: 非易失閃存。 特點(diǎn): 容量更大 體積更小 擦除速度更快(數(shù)據(jù)刪除不是以單個(gè)的字節(jié)為單位而是以固定的區(qū)塊為單位,區(qū)塊大小一般由256K到20MB。FLASH這個(gè)詞最初就是由于該芯片的瞬間清除能力而提出的)。 性價(jià)比更高 功耗更低 使用更方便 目前市場上的FLASH常用的有(公司的AT29 系列,意法半導(dǎo)體公司的M29F系列,Intel公司的28F系列等),存儲容量也從bits到64Mbits甚至4bits、8bits不等。5.

19、3.1.2 典型EPROM擴(kuò)展 典型的EPROM芯片是27系列產(chǎn)品, 例如,2764 (8KB8) 27128(16KB8) 27256(32KB8) 27512(64KB8) 其中“27”是產(chǎn)品系列名稱,“27”后面的數(shù)字表示其位存儲容量。它們都是雙列直插式28引腳的標(biāo)準(zhǔn)芯片。 下面 ,我們以最常用的2764為例,介紹一下EPROM芯片的管腳排列、工作原理和編程應(yīng)用特點(diǎn)。常用EPROM芯片2764簡介 目前用于程序存儲器的EPROM,用得比較廣泛的是2764芯片,該芯片容量為8K8位。 2764的引腳A12A0: 13位地址線。 D7D0: 8位數(shù)據(jù)線。 : 片選信號, 低電平有效。 : 輸

20、出允許信號,低電平有效,當(dāng) 有效時(shí), 輸出緩沖器打開, 被尋址單元的內(nèi)容才能被讀出。 VPP: 編程電源, 當(dāng)芯片編程時(shí), 該端加上編程電壓 (+25 V或+12 V); 正常使用時(shí), 該端加+5 V電源。(NC為不用的管腳)。 2764的工作時(shí)序 2764在使用時(shí),只能將其所存儲的內(nèi)容讀出, 其過程與RAM的讀出十分類似。 即首先送出要讀出的單元地址,然后使 和 均有效(低電平),則在芯片的D0D7數(shù)據(jù)線上就可以輸出要讀出的內(nèi)容。其過程的時(shí)序關(guān)系如下圖所示: 2764的編程 EPROM的一個(gè)重要特點(diǎn)就在于它可以反復(fù)擦除, 即在其存儲的內(nèi)容擦除后可通過編程(重新)寫入新的內(nèi)容。 這就為用戶調(diào)試

21、和修改程序帶來很大的方便。 EPROM的編程過程:擦除: 如果EPROM芯片是第一次使用的新芯片,則它是干凈的。干凈的標(biāo)志通常是每一個(gè)存儲單元的內(nèi)容都是FFH。 編程: EPROM的編程有兩種方式: 標(biāo)準(zhǔn)編程和靈巧編程。 這里應(yīng)注意的是, 對于不同型號、 不同廠家生產(chǎn)的EPROM芯片, 其編程電壓Vpp是不一樣的, 有+12 V, +18 V, +21 V, +24 V等數(shù)種。 編程時(shí)一定要根據(jù)芯片所要求的電壓來編程。 若不注意,極易燒壞芯片。靈巧編程時(shí)序圖 EPROM程序存儲器擴(kuò)展實(shí)例 線選法的單片程序存儲器的擴(kuò)展【例5.1】 試用EPROM2764構(gòu)成8031的最小系統(tǒng)。 2764是8K8

22、位程序存儲器,芯片的地址引腳線有13條,順次和單片機(jī)的地址線A0A12相接。由于不采用地址譯碼器,所以高3位地址線A13、A14、A15不接,故有23=8個(gè)重疊的8 KB地址空間。因只用一片2764,其片選信號CE可直接接地(常有效)。 上圖所示連接電路的8個(gè)重疊的地址范圍為00000000000000000001111111111111,即0000H1FFFH;00100000000000000011111111111111,即2000H3FFFH;01000000000000000101111111111111,即4000H5FFFH;011000000000000001111111111

23、11111,即6000H7FFFH;10000000000000001001111111111111,即8000H9FFFH;10100000000000001011111111111111,即A000HBFFFH;11000000000000001101111111111111,即C000HDFFFH;11100000000000001111111111111111,即E000HFFFFH。 線選法的多片程序存儲器的擴(kuò)展【例5.2】 使用兩片2764擴(kuò)展16 KB的程序存儲器,采用線選法選中芯片。 例中以P2.7作為片選,當(dāng)P2.7=0時(shí),選中2764(1);當(dāng)P2.7=1時(shí),選中2764(

24、2)。因兩根線(A13、A14)未用,故兩個(gè)芯片各有22=4個(gè)重疊的地址空間。它們分別為 左片:000000000000000000001111111111111,即0000H1FFFH;001000000000000000011111111111111,即2000H3FFFH;010000000000000000101111111111111,即4000H5FFFH;011000000000000000111111111111111,即6000H7FFFH; 右片:100000000000000001001111111111111,即8000H9FFFH;101000000000000001

25、011111111111111,即A000HBFFFH;110000000000000001101111111111111,即C000HDFFFH; 111000000000000001111111111111111,即E000HFFFFH。 采用地址譯碼器的多片程序存儲器的擴(kuò)展【例5.3】要求用2764芯片擴(kuò)展8031的片外程序存儲器,分配的地址范圍為0000H3FFFH。 本例要求的地址空間是唯一確定的,所以要采用全譯碼方法。由分配的地址范圍知:擴(kuò)展的容量為3FFFH-0000H+1=4000H=4 KB,2764為8 K8位,故需要兩片。第1片的地址范圍應(yīng)為0000H1FFFH;第2片的

26、地址范圍應(yīng)為2000H3FFFH。 由地址范圍確定譯碼器的連接。為此畫出譯碼關(guān)系圖如下: 全譯碼、兩片2764 EPROM的擴(kuò)展連接圖如下圖所示: 5.3.2 數(shù)據(jù)存儲器的擴(kuò)展 數(shù)據(jù)存儲器是用來存放系統(tǒng)運(yùn)行過程中所產(chǎn)生的數(shù)據(jù)的,對于這些數(shù)據(jù)的操作既有讀也有寫,也就是所要求在系統(tǒng)運(yùn)行過程中能夠?qū)ζ湫薷?。為此,?shù)據(jù)存儲器一般采用隨機(jī)存取存儲器 (Random Access Memory), 簡稱RAM來實(shí)現(xiàn), 對 RAM 可以進(jìn)行讀、寫兩種操作。 按其工作方式 ,RAM 又分為靜態(tài)(SRAM) 和動(dòng)態(tài) (DRAM) 兩種: 靜態(tài) RAM :只需要提供電源和相應(yīng)的讀寫信號,就能方便的對其操作。同時(shí),

27、保存到靜態(tài)RAM中的數(shù)據(jù),除非對其改寫,在掉電之前不會自動(dòng)改變,但掉電后將消失。 動(dòng)態(tài)RAM: 需要不斷進(jìn)行刷新以便周期性地再生 , 才能保存住信息?;蛘哒f,即使不對其改寫,如果長期不對其進(jìn)行刷新,則所保存的信息也將丟失。 動(dòng)態(tài) RAM 優(yōu)缺點(diǎn): 優(yōu)點(diǎn): 集成密度大 , 如集成同樣的位容量 , 那么動(dòng)態(tài) RAM 所占芯片面積只是靜態(tài)RAM的四分之一。 功耗低 , 價(jià)格便宜。 缺點(diǎn): 除了正常的讀寫邏輯外,還要增加動(dòng)態(tài)存儲器的刷新電路 因此動(dòng)態(tài) RAM適用于存儲容量較大的系統(tǒng)。 一般的單片機(jī)系統(tǒng)不需要太大的數(shù)據(jù)存儲容量,所以一般都是采用靜態(tài)RAM,因此,我們這里也將主要介紹靜態(tài)RAM的擴(kuò)展。 R

28、AM是“易失”性的,單片機(jī)系統(tǒng)中的大部分?jǐn)?shù)據(jù)也都是臨時(shí)性的,也大都不要求掉電后持續(xù)保持,因此,對于這些大部分?jǐn)?shù)據(jù),采用RAM是合適的。 但是,也有一些關(guān)鍵的狀態(tài)數(shù)據(jù)可能要求“掉電后不丟失”或者“非易失”性,這時(shí)一般采用方便讀寫的“非易失”性存儲器EEPROM來實(shí)現(xiàn),根據(jù)EEPROM與單片機(jī)的連接方式可以分成并行EEPROM和串行EEPROM兩種。5.3.2.1 SRAM及其擴(kuò)展技術(shù)(1) 常用的靜態(tài)RAM簡介常用的數(shù)據(jù)存儲器SRAM芯片有6116626462256等。 A13A0: 13位地址線。 D7D0: 8位數(shù)據(jù)線。 : 片選信號, 低電平有效。 : 輸出允許信號,低電平有效, 當(dāng)有效時(shí)

29、, 輸出緩沖器打開, 被尋址單元的內(nèi)容才能被讀出。 : 寫允許信號,低電平有效, 當(dāng) 有效時(shí), 才能對尋址單元的內(nèi)容進(jìn)行改寫。(2) 靜態(tài)RAM擴(kuò)展實(shí)例 數(shù)據(jù)存儲器的擴(kuò)展與程序存儲器的擴(kuò)展相類似, 不同之處主要在于控制信號的接法不一樣, 不用 信號, 而用 和 信號, 且直接與數(shù)據(jù)存儲器的 端和 端相連即可。 【例5.4】圖5.20為外擴(kuò)1片6264的連接圖。 采用線選法, 將片選信號 與P2.7相連, 片選信號CE2與P2.6相連。 其地址譯碼關(guān)系為: 所占用的地址為:第1組 4000H5FFFH (A13=0)第2組 6000H7FFFH (A13=1)【例5.5】全地址范圍的存儲器最大擴(kuò)

30、展系統(tǒng) 我們以8031為例,說明全地址范圍的存儲器最大擴(kuò)展系統(tǒng)的構(gòu)成方法。 如圖5.21所示,8031的片外程序存儲器和數(shù)據(jù)存儲器的地址各為64K。 若采用EPROM2764和RAM6264芯片,則各需8片才能構(gòu)成全部有效地址。芯片的選擇采用38譯碼器74LS138,片外地址線只有3根(A15、A14、A13), 分別接至74LS138的C、 B、 A端,其8路譯碼輸出分別接至8個(gè)2764和8個(gè)6264的片選端。圖5.21 全地址范圍的存儲器最大擴(kuò)展系統(tǒng) 5.3.2.2 并行EEPROM及其擴(kuò)展技術(shù)(1) 常用的并行EEPROM簡介 常用的并行EEPROM有:2816(2K8)、2817(2K

31、8)、2864(8K8)、28256(32K8)、28010(128K8)、28040(512K8)等。2864和2817的引腳分布如下圖5.22所示:圖中有關(guān)引腳的含義如下:A0Ai 地址輸入線;I/O0I/O7雙向三態(tài)數(shù)據(jù)線; 片選信號輸入,低電平有效; 讀選通信號輸入線,低電平有效; 寫選通信號輸入線,低電平有效;RDY/ 2817的狀態(tài)輸出線,低電平表示正在進(jìn)行寫操作,寫入完畢呈高阻態(tài)。 VCC 工作電源,一般為+5V。 GND 地線。 另外,2817的存儲容量為2KB,2864的存儲容量為8KB,讀出時(shí)間最大均為250ns,寫入時(shí)間約為16ms。由于片內(nèi)有編程所需的高壓脈沖產(chǎn)生電路,

32、無須外加編程電壓和寫入脈沖即可工作。 EEPROM 2817、2864的讀操作和普通EPROM和RAM的讀操作沒有區(qū)別,讀時(shí)序完全一樣。 EEPROM 2817、2864的寫操作和RAM的寫操作稍微有些不同,這主要是每次對EEPROM進(jìn)行寫操作都需要大約16ms的寫持續(xù)時(shí)間。其操作過程是這樣的: 當(dāng)向EEPROM 2817、2864發(fā)出一個(gè)字節(jié)的寫入命令時(shí),它們便首先將地址、數(shù)據(jù)和有關(guān)控制信號鎖存住,然后開始寫操作,同時(shí)在寫操作完成之前會將信號線置為低電平,直到寫操作完成后,該信號線會自動(dòng)變?yōu)楦唠娖剑@時(shí),處理器便可對EEPROM 2817、2864寫入新的數(shù)據(jù)。這種寫入方式便是EEPROM的

33、字節(jié)寫入方式。對于2817來講只有這種字節(jié)寫入方式,對于2864來講還有一種以16字節(jié)為單位的“頁緩沖”寫入模式,對于大批量數(shù)據(jù)的寫可以采用這種“頁緩沖”模式,采用這種模式時(shí),一個(gè)字節(jié)的寫入操作時(shí)間在3至20us之間。關(guān)于這種寫入方式這里不再具體論述。(2)并行EEPROM擴(kuò)展實(shí)例 并行EEPROM的擴(kuò)展如圖所示。圖中采用了將外部數(shù)據(jù)存儲器空間和程序存儲器空間合并的方法,即將 和信號 相“與”,輸出作為2817的片選信號。 和P1.0連在一起,這樣單片機(jī)可以通過查詢P1.0來了解對2817的寫操作是否完成。圖中P2.7和2817的片選信號 連在了一起,只有P2.7為低電平時(shí)才能選中該2817芯

34、片,這是一種典型的線選模式。 通過分析可以知道,該2817所占用的地址塊有16塊,分別是: 0000H-07FFH,0800H-0FFFH,1000H-17FFH,1800H-1FFFH,2000H-27FFH,2800H-2FFFH,3000H-37FFH,3800H-3FFFH,4000H-47FFH,4800H-4FFFH,5000H-57FFH,5800H-5FFFH, 6000H-67FFH,6800H-6FFFH,7000H-77FFH,7800H-7FFFH。 假如我們采用最后一組地址作為其實(shí)際操作地址,并要求對最后的128個(gè)單元(即:7F80H-7FFFH)完成清零,可以采用如

35、下程序來實(shí)現(xiàn):MOV DPTR,#7F80HMOV A,#00HMOV R7,#80HLOOP: MOVX DPTR ,AWAIT: JNB P1.0,WAITINC DPTRDEC R7JNZ LOOP5.3.2.3 串行EEPROM及其擴(kuò)展技術(shù)并行EEPROM: 優(yōu)點(diǎn):存儲容量較大,讀寫方法簡單 缺點(diǎn):價(jià)格較高 適用于信息量較多的場合。串行EEPROM: 優(yōu)點(diǎn):結(jié)構(gòu)簡單緊湊,體積小,功耗低,價(jià)格低廉,硬件接口非常簡單 缺點(diǎn):讀寫方法相對較復(fù)雜,存儲單元較小 一般用于掉電情況下需要保存或一些數(shù)據(jù)需要在線修改的場合,通常這類數(shù)據(jù)不多卻很重要,使用串行EEPROM來存儲這類數(shù)據(jù)是最合適。在智能化

36、儀器儀表、控制裝置等領(lǐng)域得到了越來越廣泛的應(yīng)用。專用串行EEPROM: Microchip 微芯存儲器公司的24、25、93系列 意法半導(dǎo)體(STM) 的M24/M93/M95系列 Atmel公司的AT24/25/93C46/56/66系列 Intersil公司的ISL12026/7/8/9系列 TOSHIBA 東芝TC9WM系列 MAXIM的DS24/26/28系列 Integrated Silicon Solution的 IS24系列 Catalyst Semiconductor公司推出CAT24系列所采用的串行總線技術(shù):SPI、I2C、 1-Wire等。集成了其它功能的串行EEPROM:

37、 Maxim公司的系統(tǒng)監(jiān)控芯片X5/X4/X25等芯片除了提供上電復(fù)位、看門狗等系統(tǒng)監(jiān)控功能外也提供一定的串行EEPROM可供使用 MAX5477/MAX5478/MAX5479除了提供數(shù)字電位器以外也提供一定的串行EEPROM Dallas的X1228I2C除了提供實(shí)時(shí)時(shí)鐘RTC以外,也提供一定的EEPROM。 (1) 24C系列串行EEPROM簡介 眾多廠商都提供的24C系列串行EEPROM,除了具有一般串行EEPROM的體積小、功耗低、工作電壓允許范圍寬等特點(diǎn)外,還具有型號多(從幾百個(gè)bit到1Mbit)、容量大、二總線協(xié)議、占用IO口線少、容量擴(kuò)展配置極其靈活方便、讀寫操作相對簡單等特

38、點(diǎn),所以,這里我們以應(yīng)用最廣泛的24C系列串行EEPROM為例介紹一下串行EEPROM的擴(kuò)展應(yīng)用。 目前在我國應(yīng)用開發(fā)中,所用的24C系列串行EEPROM主要由ATMEL、MICROCHIP、XICOR、NATIONAL等幾家公司提供。目前市場上容量最小的為24C01(1kb),最大的是24C64(64kb),生產(chǎn)工藝都是CMOS工藝,工作電壓在1855V之間,24系列有兩種封裝形式:8腳封裝和14腳封裝。我國目前開發(fā)用量最多的封裝形式是8腳PDIP封裝。 引腳分布 8腳PDIP封裝的引腳定義如圖所示。 A0、A1、A2為器件地址選擇位,這3個(gè)引腳配置成不同的編碼值,在同一串行總線上最多可擴(kuò)展

39、8片同一容量或不同容量的24C系列串行EEPROM芯片。 WP(TEST)為硬件寫保護(hù)控制端(測試端),這個(gè)引腳,脈沖的上升沿將數(shù)據(jù)寫入EEPROM,下降沿將數(shù)據(jù)從EEPROM中讀出。 SDA為串行數(shù)據(jù)輸入輸出端,漏極開路驅(qū)動(dòng),容量擴(kuò)展時(shí),可以將多片24系列SDA引腳直接相連,實(shí)際使用時(shí)要加一個(gè)上拉電阻 。 VCC 、GND分別是電源和地。 器件地址 24C系列串行EEPROM是串行接口器件,其地址、數(shù)據(jù)信息都在同一條線路上傳送。當(dāng)串行總線上掛有多個(gè)芯片時(shí),每個(gè)芯片必須具有唯一的器件地址。24C系列芯片的器件地址格式為: 24C系列芯片的器件地址由7位數(shù)據(jù)位和一位讀寫位組成。其中,高4位的10

40、10為24系列的協(xié)議格式地址即I2C總線分配給串行EEPROM的器件地址,這4位是固定的;之后的3位A2、A1、A0為可編程地址位,以256字節(jié)為一頁,供在總線上聯(lián)接多片同一型號器件時(shí)作為分配給器件的地址使用;最后一位RW是讀寫控制位,當(dāng)該位為高電平“1”時(shí),表示當(dāng)前的操作是讀操作,該位為低電平“0”時(shí),表示當(dāng)前的操作是寫操作。 表5.7 器件型號、容量、結(jié)構(gòu)及地址選擇位 24C04以后的串行EEPROM芯片由多頁組成,訪問時(shí)需要提供頁地址,頁地址占用引腳地址(A2、A1、A0)位給出。這時(shí),根據(jù)廠家規(guī)定,凡是被尋址位占用的引腳(如24C04的A0腳)在線路上只能作懸空處理,不能另行使用。24

41、C系列串行EEPROM擴(kuò)展技術(shù) 24C系列串行EEPROM嚴(yán)格遵守I2C總線的時(shí)序和數(shù)據(jù)格式。24C系列串行EEPROM的擴(kuò)展電路如下圖所示: 關(guān)于I2C總線技術(shù)的原理及應(yīng)用以及24C系列串行EEPROM擴(kuò)展時(shí)的控制時(shí)序和讀寫流程請參考第九章有關(guān)章節(jié),這里不再重復(fù)。5.4 并行I/O擴(kuò)展 MCS-51單片機(jī)本身提供了4個(gè)并行I/O口。 P0口作為外部數(shù)據(jù)/地址低8位總線,P2口作為地址高8位總線,一般都不能作為通用I/O口使用; P3口具有第2功能,一般難以完全作為通用I/O口使用。 這樣,一般只有P1口可以作為通用I/O使用,這對于大多數(shù)的單片機(jī)應(yīng)用系統(tǒng)尤其是單片機(jī)控制系統(tǒng)來講,一般是遠(yuǎn)遠(yuǎn)不

42、夠使用的。因此,對于大多數(shù)單片機(jī)應(yīng)用系統(tǒng),并行I/O的擴(kuò)展也是不可避免的。5.4.1 單片機(jī)I/O接口的功能 MCS-51的外部數(shù)據(jù)存儲器空間和外部I/O口統(tǒng)一編制,用戶可以利用外部數(shù)據(jù)存儲器空間的一部分地址進(jìn)行I/O擴(kuò)展,對這些I/O口的訪問也和外部數(shù)據(jù)存儲器的訪問很相似,采用相同的指令MOVX來實(shí)現(xiàn)。 MCS-51訪問外部數(shù)據(jù)存儲器和外部I/O區(qū)別: 外部數(shù)據(jù)存儲器種類不是很多,訪問速度比較快,大多數(shù)外部數(shù)據(jù)存儲器的訪問速度和計(jì)算機(jī)本身的運(yùn)算速度差距并不是很大。 外部I/O設(shè)備種類繁多,不同I/O設(shè)備的訪問速度差距很大。大多數(shù)外部I/O設(shè)備的工作速度比計(jì)算機(jī)CPU本身的處理速度要低的很多。

43、這樣“高速”計(jì)算機(jī)為了和這些“慢速”的外部設(shè)備進(jìn)行有效的數(shù)據(jù)通信,必須主動(dòng)地來適應(yīng)這些慢速設(shè)備。計(jì)算機(jī)與外部I/O設(shè)備“適應(yīng)”方法有兩種: 一、根據(jù)外部設(shè)備的訪問速度,“高速”計(jì)算機(jī)在每向“慢速”I/O設(shè)備讀寫一個(gè)數(shù)據(jù)后自動(dòng)增加適當(dāng)?shù)难訒r(shí); 二、“慢速”的外部設(shè)備按照自己的步驟操作數(shù)據(jù),但在每次操作完數(shù)據(jù)之后主動(dòng)向“高速”計(jì)算機(jī)反饋一個(gè)信號,這個(gè)信號稱為握手信號,一般用READY來表示,其含義是“慢速”設(shè)備已經(jīng)準(zhǔn)備好接收或輸出下一個(gè)數(shù)據(jù),計(jì)算機(jī)可以提供下一次的數(shù)據(jù)訪問,這樣“高速”計(jì)算機(jī)看到這樣的信號后再訪問I/O設(shè)備。同時(shí),外部設(shè)備的輸入信號其功率要求也千差萬別,有的功率比較大,這樣計(jì)算機(jī)直

44、接輸出的信號也很難能夠滿足要求。 此外,外部設(shè)備的輸入信號的功率要求千差萬別,有的功率比較大,計(jì)算機(jī)直接輸出的信號很難滿足要求。 有的外部設(shè)備距離控制計(jì)算機(jī)之間也有一定的距離,為了實(shí)現(xiàn)遠(yuǎn)距離的通信,往往也不能直接采用計(jì)算機(jī)輸出的TTL電平信號,有時(shí)需要經(jīng)過電平轉(zhuǎn)換,有的還要將電平信號轉(zhuǎn)換成差分信號或電流信號或者進(jìn)行一定的調(diào)制解調(diào)處理。 為了適應(yīng)計(jì)算機(jī)與外部設(shè)備之間的有效數(shù)據(jù)通信,一般需要在二者之間增加一個(gè)I/O接口電路,該接口電路的功能有以下幾個(gè)方面: 接口擴(kuò)展:增加I/O接口數(shù)。 速度匹配:匹配二者的速度差異。 數(shù)據(jù)轉(zhuǎn)換:滿足功率、電平或者通信距離的要求。 智能傳輸:盡量減少CPU的占用時(shí)間

45、。 本章節(jié)主要是從接口擴(kuò)展的角度,介紹I/O接口電路的實(shí)現(xiàn)方式,至于速度匹配和數(shù)據(jù)轉(zhuǎn)換等方面的內(nèi)容在第7章還要介紹。5.4.2 用鎖存電路擴(kuò)展并行I/O口 74系列中的74LS373鎖存器除了可以用來利用計(jì)算機(jī)的ALE信號,將P0口輸出的地址低8位鎖存住,然后和P2口的地址高8位一起,合成外部空間的16位的地址總線;還可以用來利用適當(dāng)?shù)钠x信號(線選或地址譯碼產(chǎn)生)、 或 信號進(jìn)行組合來產(chǎn)生鎖存信號,將P0口上的數(shù)據(jù)信號鎖存住,作為外部擴(kuò)展的I/O口使用。這是一種簡單的并行I/O擴(kuò)展方法。 優(yōu)點(diǎn):簡單 缺點(diǎn):集成度不高,每個(gè)芯片僅能擴(kuò)展8個(gè)I/O口。 對于擴(kuò)展口數(shù)要求不是很多的情況下,這種方法

46、還是非常合適的。5.4.2.1 鎖存擴(kuò)展輸出接口用鎖存器擴(kuò)展輸出I/O口的方法如圖5.26所示:圖5.26 74LS377擴(kuò)展輸出口 74LS377是一個(gè)帶鎖存允許8D鎖存器,它的特點(diǎn)是當(dāng)E=0時(shí),CLK的上升沿將8位D輸入端的數(shù)據(jù)打入鎖存器,這時(shí)鎖存器將保持D端輸入的8位數(shù)據(jù),直到再次鎖存新的數(shù)據(jù)。 圖5.26中,CLK與 相連,E與單片機(jī)的地址線P2.7相連。這樣當(dāng)輸出口地址是P2.7=0時(shí),如果 出現(xiàn),則將P0上的信號鎖存住。 出現(xiàn)時(shí),一定是單片機(jī)執(zhí)行了外部訪問指令MOVX指令,并且出現(xiàn)的時(shí)刻P0口上出現(xiàn)的也將正是數(shù)據(jù)Data。所以,對任何P2.7=0的地址執(zhí)行寫操作都會將輸出數(shù)據(jù)鎖存到

47、該74LS377的輸出端。假定,我們選擇了74LS377的地址為7FFFH,那么對該口的如下操作將完成擴(kuò)展并行I/O的數(shù)據(jù)輸出功能: MOV DPTR,#7FFFH ;使DPTR指向74LS377輸出口 MOV A,#data ;輸出的數(shù)據(jù)要通過累加器A傳送 MOVX DPTR,A ;向74LS377擴(kuò)展口輸出數(shù)據(jù)5.4.2.2 鎖存擴(kuò)展輸入接口用鎖存器擴(kuò)展輸入I/O口的方法如圖5.27所示: 圖5.27 74LS373擴(kuò)展輸入口 74LS373是一個(gè)帶三態(tài)門的8D鎖存器。G端的上升沿將74LS373輸入端D端的數(shù)據(jù)鎖存住,同時(shí)經(jīng)反向后在8031的外部中斷 端產(chǎn)生中斷,8031的外部中斷服務(wù)子

48、程序?qū)⒆x取使地址線P2.6=0的地址處的外部數(shù)據(jù)空間單元,這時(shí)P2.6和 都是0,邏輯或后仍為0,74LS373的輸出使能端 有效,74LS373的輸出端Q端便出現(xiàn)了剛才鎖存的輸入信號,從而8031的P0口上也出現(xiàn)了該數(shù)據(jù),完成了數(shù)據(jù)讀的任務(wù)。當(dāng)讀其它的P2.60的地址處的數(shù)據(jù)時(shí),由于P2.6=1, =1,所以74LS373的輸出端呈現(xiàn)三態(tài)狀態(tài),對P0口沒有任何影響。我們假定該74LS373的地址為0BFFFH,那么下面一段程序?qū)⑼瓿稍摬⑿袛U(kuò)展I/O口的數(shù)據(jù)輸入功能: MOV DPTR,#0BFFFH MOVX A,DPTR圖5.27 74LS373擴(kuò)展輸入口5.4.3 用8255芯片擴(kuò)展并行

49、I/O口5.4.3.1 8255芯片簡介 8255A可編程并行輸入/輸出接口芯片是Intel公司生產(chǎn)的標(biāo)準(zhǔn)外圍接口電路。它采用NMOS工藝制造,用單一5V電源供電,具有40條引腳(引腳排列如右圖所示,引腳功能如表5.5所示),采用雙列直插式封裝。它有A、B、C3個(gè)端口共24條I/O線,可以通過編程的方法來設(shè)定端口的各I/O功能。由于它功能強(qiáng),又能方便地與各種微機(jī)系統(tǒng)相接,而且在連接外部設(shè)備時(shí),通常不需要再附加外部電路,所以得到了廣泛的應(yīng)用。表5.6 8255芯片的引腳信號說明5.4.3.2 8255芯片內(nèi)部結(jié)構(gòu)8255A內(nèi)部組成:(1) 數(shù)據(jù)總線緩沖器:是一個(gè)8位的雙向三態(tài)驅(qū)動(dòng)器,用于與單片機(jī)

50、的數(shù)據(jù)總線相連。(2) 讀/寫控制邏輯:根據(jù)單片機(jī)的地址信息(A1、A0)與控制信息(、RESET),控制片內(nèi)數(shù)據(jù)、CPU控制字、外設(shè)狀態(tài)等信息的傳送。(3) 控制電路:根據(jù)CPU送來的控制字使有關(guān)I/O口按一定方式工作。對C口甚至可按位實(shí)現(xiàn)置位或復(fù)位??刂齐娐贩譃閮山M:A組控制電路控制A口及C口的高4位(PC7PC4),B組控制電路控制B口及C口的低4位(PC3PC0)。(4) 三個(gè)并行I/O端口:A口可編程為8位輸入,或8位輸出,或雙向傳送;B口可編程為8位輸入,或8位輸出,但不能雙向傳送;C口分為兩個(gè)4位口,用于輸入或輸出,也可用作A口、B口的狀態(tài)控制信號。5.4.3.3 8255芯片的

51、工作方式及其設(shè)置 8255A有3種工作方式,即方式0、方式1和方式2,這些工作方式可用軟件編程來指定。3種工作方式的傳送示意圖如圖5.30所示:(a)方式0; (b)方式1; (c)方式2 1、方式0(基本輸入/輸出方式) 不需要任何選通信號,A口、B口及C口的高4位和低4位都可以設(shè)定為輸入或輸出。作為輸出口時(shí),輸出的數(shù)據(jù)均被鎖存;作為輸入口時(shí),A口的數(shù)據(jù)能鎖存,B口與C口的數(shù)據(jù)不能鎖存。2.方式1(選通輸入/輸出方式) 在這種工作方式下,A口可由編程設(shè)定為輸入口或輸出口,C口的3位用來作為輸入/輸出操作的控制和同步信號;B口同樣可由編程設(shè)定為輸入口或輸出口,C口的另3位用來作為輸入/輸出操作

52、的控制和同步信號。在方式1下A口和B口的輸入數(shù)據(jù)或輸出數(shù)據(jù)都能被鎖存。 在方式1下,A口和B口均工作在輸入狀態(tài)時(shí),需利用C口的6條線作為控制和狀態(tài)信號線,其定義如圖5.31 (a)所示。(1)方式1下A口、B口均為輸入A口、B口均為輸入時(shí);(b) A口、B口均為輸出時(shí)圖5.31 方式1下的信號定義 C口所提供的用于輸入的聯(lián)絡(luò)信號有: (Strobe):選通脈沖信號(輸入),低電平有效。當(dāng)外設(shè)送來 信號時(shí),輸入的數(shù)據(jù)被裝入8255A的輸入鎖存器中。IBF(Input Buffer Full):輸入緩沖器滿信號(輸出),高電平有效。此信號有效時(shí),表示已有一個(gè)有效的外設(shè)數(shù)據(jù)鎖存于8255A的口鎖存器

53、中,尚未被CPU取走,暫不能向接口輸入數(shù)據(jù),它是一個(gè)狀態(tài)信號。INTR(Interrupt Request):中斷請求信號(輸出),高電平有效。當(dāng)IBF為高、信號由低變高(后沿)時(shí),該信號有效,向CPU發(fā)出中斷請求。方式1 數(shù)據(jù)輸入過程如下: 當(dāng)外設(shè)的數(shù)據(jù)準(zhǔn)備好后,發(fā)出信號,輸入的數(shù)據(jù)被裝入鎖存器中,然后IBF信號有效(變?yōu)楦唠娖?。 數(shù)據(jù)輸入操作的時(shí)序關(guān)系如圖5.32所示。(2) 方式1下A口、B口均為輸出 與輸入時(shí)一樣,要利用C口的6根信號線,其定義如右圖所示。用于輸出的聯(lián)絡(luò)信號有: (Acknowledge):外設(shè)響應(yīng)信號(輸入),低電平有效。 (Output Buffe Full):輸

54、出緩沖器滿信號(輸出),低電平有效。INTR:中斷請求信號(輸出),高電平有效。 方式1下數(shù)據(jù)輸出過程如下: 當(dāng)外設(shè)接收并處理完1組數(shù)據(jù)后,發(fā)回響應(yīng)信號。數(shù)據(jù)輸出操作的時(shí)序關(guān)系如圖所示: 應(yīng)當(dāng)指出,當(dāng)8255A的A口與B口同時(shí)為方式1的輸入或輸出時(shí),需使用C口的6條線,C口剩下的2條線還可以用程序來指定數(shù)據(jù)的傳送方向是輸入還是輸出,而且也可以對它們實(shí)現(xiàn)置位或復(fù)位操作。當(dāng)一個(gè)口工作在方式1時(shí),則C口剩下的5條線也可按照上述情況工作。3. 方式2 8255A只有A口具有這種雙向輸入輸出工作方式,實(shí)際上是在方式1下A口輸入輸出的結(jié)合。在這種方式下,A口為8位雙向傳輸口,C口的PC7PC3用來作為輸入

55、/輸出的同步控制信號。在這種情況下,B口只能編程為方式0或方式1工作,而C口剩下的3條線可作為輸入或輸出線使用或用作B口方式1之下的控制線。 在方式2時(shí),其輸入輸出的操作時(shí)序如圖所示:(1) 輸入操作 當(dāng)外設(shè)向8255A送數(shù)據(jù)時(shí),選通信號STBATX-也同時(shí)送到,選通信號將數(shù)據(jù)鎖存到8255A的輸入鎖存器中,從而使輸入緩沖器滿信號IBFA成為高電平(有效),告訴外設(shè),A口已收到數(shù)據(jù)。選通信號結(jié)束時(shí),使中斷請求信號為高,向CPU請求中斷。 (2)輸出操作 CPU響應(yīng)中斷,當(dāng)用輸出指令向8255A的A端口中寫入一個(gè)數(shù)據(jù)時(shí),會發(fā)出寫脈沖信號。 8255的全部工作狀態(tài)是通過讀/寫控制邏輯和工作方式選擇

56、來實(shí)現(xiàn)的:(1)讀/寫控制邏輯操作選擇 讀/寫控制邏輯由6條控制線組成:CS、RD、WR、A1、A0、RESET,它們的不同控制不同的操作,如下表所示:(2)方式選擇及方式控制字(a)方式選擇控制字;(b) C口置位/復(fù)位控制字圖536 8255方式控制字 5.4.3.4 8255芯片的應(yīng)用1、硬件連接 采用線選法,利用高8位地址線的P2.7作為線選信號,直接與8255A的片選端相連,而A1、A0則與地址的最低2位相連。由上圖所示接法,可得到8255A各個(gè)端口的地址,如表510所示。 2、軟件編程 假如,我們現(xiàn)在要求編制打印50個(gè)字符,這些字符數(shù)據(jù)現(xiàn)存于片內(nèi)RAM從20H開始的50個(gè)連續(xù)單元中

57、。現(xiàn)在,我們分析一下控制字的組成: 根據(jù)圖5.34,我們采用方式0,其中A口為輸出口,B口也假定為輸出口,C口上半部分定義為輸入口,下半部分定義為輸出口。這樣根據(jù)前面控制字的分析,我們可以得出實(shí)現(xiàn)這一工作模式設(shè)定的控制字應(yīng)該為:1000 1000=88H。 程序如下: MOV DPTR,#0003H ;指向8255A的命令口 MOV A,88H ;取方式字:A口輸出,C口低出高入 MOVX DPTR,A ;送方式字 MOV R1,20H ;R1指向數(shù)據(jù)區(qū)首址 MOV R2,32H ;送數(shù)據(jù)塊長度 (續(xù)前) LP: MOV DPTR,#0002H ;指向C口LOOP1: MOVX A,DPTR

58、;讀入C口信息 JB ACC.7,LOOP1 ;若BUSY=1,繼續(xù)查詢,直到BUSY=0 MOV DPTR,#0000H ;指向A口 MOV A,R1 ;取RAM數(shù)據(jù) MOVX DPTR,A ;數(shù)據(jù)輸出到A口 INC R1 ;數(shù)據(jù)指針加1 MOV DPTR,#0003H ;指向命令口 MOV A,00H ;C口置位/復(fù)位命令字(PC0=0) MOVX DPTR,A ;產(chǎn)生STB的下降沿 MOV A,01H ;改變C口置位/復(fù)位命令字(PC0=1) MOVX DPTR,A ;產(chǎn)生STB的上升沿 DJNZ R2,LP ;未完,則反復(fù)5.4.4 用串行口擴(kuò)展并行I/O口 MCS-51單片機(jī)有一個(gè)串

59、行口,如果該口未使用可以用來擴(kuò)展并行口。 另外,我們也可以用并行口如P1口仿真某種串行口如I2C,然后利用I2C接口擴(kuò)展并行口。 優(yōu)點(diǎn):線路連接少,節(jié)省了電路板的制版面積,器件本省也能做的較小,擴(kuò)展的并行口數(shù)可以較多。 缺點(diǎn):串口擴(kuò)展的這種并行口的接口速度沒有并行擴(kuò)展的接口速度快。 在速度要求不是很高的情況下,利用串口擴(kuò)展并行口越來越成為一種趨勢。5.4.4.1 用74LS164擴(kuò)展并行輸出接口 MCS-51單片機(jī)的串行口在方式0(移位寄存器方式)下,使用移位寄存器芯片可以擴(kuò)展一個(gè)或多個(gè)并行I/O口。擴(kuò)展并行輸出口時(shí),可用串入并出移位寄存器芯片,如CMOS芯片4094和74LS164芯片。其引

60、腳如下圖所示:(a) 4094; (b) 74LS164圖5.38 8串行輸入/并行輸出移位寄存器芯片的引腳圖 圖5.39 串行擴(kuò)展并行輸出口硬件連接 圖5.39是利用兩片74LS164擴(kuò)展2個(gè)8位輸出口的接口電路。 單片機(jī)串行口工作在方式0時(shí),RXD(P3.0)為串行數(shù)據(jù)輸出與74LS164數(shù)據(jù)輸入端(1,2)相連;TXD(P3.1)為移位脈沖輸出,與74LS164的時(shí)鐘脈沖輸出端(8)相連;由P1.0口線控制74LS164的清除端 MR(9)。當(dāng) MR 為低電平時(shí),清除74LS164中的數(shù)據(jù);當(dāng)MR為高電平時(shí),開始串行移位。當(dāng)擴(kuò)展多個(gè)8位輸入口時(shí),相鄰兩芯片的首尾(串行輸出端Q7與串行輸入

溫馨提示

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

評論

0/150

提交評論