單片機的系統擴展_第1頁
單片機的系統擴展_第2頁
單片機的系統擴展_第3頁
單片機的系統擴展_第4頁
單片機的系統擴展_第5頁
已閱讀5頁,還剩96頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第七章第七章 MCS-51 MCS-51 單片機的系統擴展單片機的系統擴展 本章主要介紹51系列單片機系統擴展問題,在本章中要研究較多的硬件方面及硬軟結合方面的問題,本章與第一章關系密切,在學習本章內容之前,要先明確51系列單片機本身的系統資源,可先復習一下前面幾章的有關單片機硬件組成方面的內容。 本章將介紹以下具體內容: 系統擴展的含義、單片機的地址總線和數據總線、常見系統擴展電路舉例。7.0 前言 1.系統擴展的含義 單片機中雖然已經集成了CPU、I/O口、定時器、中斷系統、存儲器等計算機的基本部件(即系統資源),但是對一些較復雜應用系統來說有時感到以上資源中的一種或幾種不夠用,這就需要在

2、單片機芯片外加相應的芯片、電路,使得有關功能得以擴充,我們稱為系統擴展(即系統資源的擴充)。 2.系統擴展分類-單一功能的擴展 綜合功能的擴展3.系統擴展需要解決的問題- 單片機與相應芯片的接口電路連接(即地址總線、數據總線、控制總線的連接)與編程。 51系列單片機沒有專用的對外地址總線和數據總線,其P0口和P2口既是通用I/O口,同時P0口還是分時復用的雙向數據總線和低8位地址總線(一般需要加一級鎖存器),而P2口則是高8位地址總線。4.單片機的地址總線和數據總線(1)單一功能的系統擴展 存儲器的擴展(程序存儲器、數據存儲器、E2PROM ) 外部中斷源的擴展(簡單門電路) 并行口的擴展(8

3、155)(2)綜合功能的擴展 外部RAM、定時器、并行口擴展(8155) 存儲器、并行口、定時器擴展(多芯片)5.常見系統擴展電路 .程序存儲器的作用-存放程序代碼或常數表格 .擴展時所用芯片-一般用只讀型存儲器芯片(可以是EPROM、E2PROM、 FLASH芯片等)。 .擴展電路連接 - 用EPROM 2764擴展程序存儲器。 .存儲器地址分析-究竟單片機輸出什么地址值時,可以指向存儲器中的某一單元。7.1 存儲器的擴展7.1.1 程序存儲器的擴展2764-8K EPROM2764-8K EPROM27642764引腳功能引腳功能A0A0A12A12地址線地址線 CE CE選片選片 OE

4、OE讀讀D0D0D7D7數據線數據線VPPA12A7A6A5A4A3A2A1A0D0D1D2GNDVccPGMN.CA8A9A11OEA10CED7D6D5D4D32764.擴展時所用芯片1編程脈沖編程脈沖輸入輸入 PGM PGM編程電源編程電源 Vpp VppD7D6D5D4D3D2D1D0G74LS373GND+5VEQ7Q6Q5Q4Q3Q2Q1Q0.擴展時所用芯片2 373 373引腳功能引腳功能D0D0D6D6數據輸入數據輸入 E E輸出允許輸出允許 G G數據輸出數據輸出 Q0 Q0Q7Q7使能端使能端當E=0,G=1時, 輸出Q=輸入D(透明);當E=0,G=0時, 輸出Q端不變(

5、鎖存)當E=0,輸出高阻態. .擴展電路連接擴展電路連接圖7-4 擴展電路單片機單片機 8031P2.0:.A8.ALEPSEN74LS373G2764A7.A0O0.O7P0.0P0.0 :P0.7P0.7OECEQ0.Q7D0.D7 8031 8031 27642764數據數據總線的連接:P0.0-P0.7(數據總線)-O0-O7地址地址總線的連接:P0.0-P0.7(地址總線低8位)- A0-A7P2.0-P2.4(地址總線高8位中的5位)- A8-A12控制控制總線的連接: PSEN(程序存儲器允許,即讀指令) - OE ALE(地址鎖存允許)-接373的使能端G 經過鎖存器經過鎖存器

6、373373 A12P2.4一個機器周期一個機器周期ALEPSENP2P0地址地址A8A15地址地址A8A15A0A7A0A7指令碼指令碼指令碼指令碼圖7-2 從外存取指令時序圖一個機器周期ALEPSENP2P0地址地址A8A8A15A15地址地址A8A15A0A0A7A7A0A0A7A7指令碼指令碼指令碼指令碼單片機單片機 8031P2.0:.A8.ALEPSEN74LS373G2764A7.A0O0.O7P0.0P0.0 :P0.7P0.7OECEQ0.Q7D0.D7A12P2.4.存儲器地址分析-究竟單片機輸出什么地址值時,可以指向存儲器中的某一單元。指向存儲器中的某一單元。 80318

7、031 P2.4 P2.0 P0.7P0.0P2.4 P2.0 P0.7P0.0 選中單元(27322732 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) 0 0 0 0 0 0 0 0 0 0 0 0 0(0000H)0 0 0 0 0 0 0 0 0 0 0 0 0 1(0001H)1 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H)2 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H)3 0 0 0 0 0 0 0 0 0 0 1 0

8、 0(0004H)4 . . . 1 1 1 1 1 1 1 1 1 1 1 1 1(1FFFH) 8K-1 可見,當單片機輸出地址可見,當單片機輸出地址0000H0000H1FFFH1FFFH時,選中時,選中27642764的的0 08K-18K-1號單元,號單元,即按照上面電路擴展的即按照上面電路擴展的4K4K存儲器的地址范圍是存儲器的地址范圍是0000H0000H1FFFH1FFFH(共(共8K8K字字節)。節)。 請思考請思考:請同學們結合圖7.2來分析圖7.4中373 的作用,并說明沒有它行不行?為什么? . .擴展時所用芯片擴展時所用芯片. .程序存儲器的作用程序存儲器的作用. .

9、擴展電路連接擴展電路連接. .存儲器地址分析存儲器地址分析程序存儲程序存儲器的擴展器的擴展7.1.2 7.1.2 數據存儲器的擴展數據存儲器的擴展.數據存儲器的作用-存放數據,可改寫.擴展時所用芯片-一般用靜態讀寫型存儲器芯片SRAM,也可以用E2PROM、FLASH芯片等.擴展電路連接 - 用SRAM 6264擴展程序存儲器。.存儲器地址分析-究竟單片機輸出什么地址值時,可以指向存儲器中的某一單元。.擴展時所用芯片6264-8K SRAM6264-8K SRAM6264引腳功能A0A0A12A12地址線 CE選片 OE讀D0D7數據線N.CA12A7A6A5A4A3A2A1A0D0D1D2G

10、NDVccWECSA8A9A11OEA10CED7D6D5D4D36264寫 WE. .擴展電路連接擴展電路連接圖7-9 擴展電路數據數據總線的連接:總線的連接:P0.0P0.7P0.0P0.7(數據總線)(數據總線)-D0D7-D0D7 地址地址總線的連接:P0.0P0.7(地址總線低8位)- A0A7P2.0P2.4(地址總線高8位中的5位)- A8A12控制控制總線的連接:總線的連接: RDRD(讀外部數據)(讀外部數據) - OE - OE WRWR(寫外部數據)(寫外部數據)- WE - WE ALEALE(地址鎖存允許)(地址鎖存允許)-接接373373的使能端的使能端 G G 經

11、過373 A86264WE單片機單片機 8031P2.0:.A8.ALERD74LS373GA7.A0P0.0P0.0 :P0.7P0.7OECEQ0.Q7D0.D7A12P2.4WR8031803162646264一個機器周期ALEPSENP2P0地址A8A15A0A7三態數據D0D7入圖7-6 讀外部數據RAM時序圖RD一個機器周期ALEPSENP2P0地址A8A15A0A7數據D0D7出圖7-7 寫外部數據RAM時序圖WR一個機器周期ALEPSENP2P0地址A8A15A0A7三態數據D0D7入RD圖4.4 讀外部數據RAM時序圖單片機單片機 8031P2.0P2.1P2.2A8A9A1

12、0ALERD74LS373G6264A7A6A5A4A3A2A1A0O0O1O2O3O4O5O6O7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7OECEQ0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7WEWRP2.7P2.3P2.4A11A12. .存儲器地址分析存儲器地址分析-究竟單片機輸出什么地址值時,可以究竟單片機輸出什么地址值時,可以指向存儲器中的某一單元。指向存儲器中的某一單元。 80318031 P2.7P2.7 P2.4 P2.4 P2.0P2.0 P0.7 P0.0 選中單元(62646264 CE A12 A11 A8 A7 A6 A5 A

13、4 A3 A2 A1 A0) 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 0(0000H) 0 0 X X 0 0 0 0 0 0 0 0 0 0 0 0 1(0001H) 1 0 X X 0 0 0 0 0 0 0 0 0 0 0 1 0(0002H) 2 0 X X 0 0 0 0 0 0 0 0 0 0 0 1 1(0003H) 3 0 X X 0 0 0 0 0 0 0 0 0 0 1 0 0(0004H) 4 . . . 0 X X 1 1 1 1 1 1 1 1 1 1 1 1 1(1FFFH) 8K-1 可見,可見,當單片機輸出地址當單片機輸出地址0000H1FF

14、FH時,選中時,選中62646264的的08K-1號號單元,即按照上面電路擴展的單元,即按照上面電路擴展的4K存儲器的地址范圍是存儲器的地址范圍是0000H1FFFH(共(共8K字節)。字節)。 請注意,與擴展程序存儲器相比較,有以下不同點:. 存儲器芯片為可讀可寫的靜態RAM芯片,有讀寫控制引腳OE和WE。.單片機輸出的對數據存儲器的讀寫控制信號分別是RD(而不再是讀程序存儲器時的PSEN)和WR。. .擴展時所用擴展時所用芯片芯片. .數據存儲器的作用數據存儲器的作用. .擴展電路連擴展電路連接接. .存儲器地址存儲器地址分析分析數據存儲數據存儲器的擴展器的擴展2864-8K E2864-

15、8K E2 2PROMPROM2864引腳功能A0A12地址線 CE選片 OE讀D0D7數據線N.CA12A7A6A5A4A3A2A1A0D0D1D2GNDVccWEN.CA8A9A11OEA10CED7D6D5D4D32864. .擴展時所用芯片擴展時所用芯片寫 WE7.1.3 7.1.3 E E2 2PROMPROM的擴展的擴展單片機單片機 8031P2.4P2.4P2.0P2.0A8A12ALERD74LS373G2864A7A6A5A4A3A2A1A0D0D1D2D3D4D5D6D7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7OECEQ0Q1Q2Q3Q4Q5Q6Q7

16、D0D1D2D3D4D5D6D7WEWRWRP2.7P2.7PSEN&圖圖7-9 28647-9 2864擴展電路圖擴展電路圖 請思考請思考:什么情況下圖7-9中的與門輸出低電平,使E2PRAM的內容可以被讀出,讀出的是什么方面的內容?圖中擴展的E2PRAM是外部數據存儲器?外部程序存儲器?兩者都擴展了?7.2 7.2 并行口的擴展并行口的擴展7.2.1 7.2.1 并行口的簡單擴展并行口的簡單擴展輸出口-利用鎖存器擴展并行口擴展的分類并行口擴展的分類 利用鎖存器、緩沖器進行并行口簡單擴展進行并行口簡單擴展 用可編程并行接口芯片進行擴展用可編程并行接口芯片進行擴展輸入口-利用緩沖器擴展

17、8031 1 1WRRDP2.7GQ0.Q7P0.0.P0.7D0.D7Q0.Q7D0.D7CLK圖圖7-10 7-10 并行口的簡單擴展并行口的簡單擴展2732447.2.2 7.2.2 可編程并行接口芯片可編程并行接口芯片81558155的擴展的擴展一、一、81558155的結構及引腳的結構及引腳81558155的結構的結構81558155256256字節字節RAMRAM三個可編程并行口三個可編程并行口PAPA口,口,8 8位位PBPB口,口,8 8位位PCPC口,口,6 6位位1414位二進制減法計數器位二進制減法計數器8155芯片的內部結構256B256B靜態靜態RAMRAM A A

18、定時器定時器B B C C 口APA0PA7口BPB0PB7PC0PC5口CIO/ MAD0AD7CEALERDWRRESET定時器輸入定時器輸出接單片機接外設接外設接外設圖7.11b81558155引腳功能引腳功能PC3PC4 PC5 IO/ MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7VssVccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA08155TIMER INRESETTIMER OUTAD0-AD7AD0-AD7三態地址三態地址/ /數據線數據線 IO/ M IO/ M端口端口/ /存儲存儲

19、器選擇器選擇 RD RD讀讀ALEALE地址鎖存地址鎖存允許允許寫寫 WR WR選片選片 CE CE定時器輸定時器輸入入TIMER INTIMER IN定時器輸定時器輸出出TIMER OUTTIMER OUTPA0-PA7PA0-PA7A A口端口線口端口線PB0-PB7PB0-PB7B B口端口線口端口線PC0-PC5PC0-PC5C C口端口線口端口線圖7.11aPA0-PA7端口A的I/O線(8位,接外設)PB0-PB7端口B的I/O線(8位,接外設)PC0-PC5端口C的I/O線(6位,接外設)AD0-AD7三態地址/數據復用線(8位,一般接單片機P0口,CPU與8155之間的地址、數

20、據、命令、狀態等信號都通過它來傳送)端口/存儲器 選擇控制 “0”選擇片內RAM “1”選擇片內I/O口TIMER IN8155片內定時器/計數器的計數脈沖輸入引腳TIMER OUT8155片內定時器/計數器的計滿回零輸出引腳分別是對8155片內的RAM或I/O口的的讀、寫控制信號ALE地址鎖存引腳選片RESET復位引腳IO/ MRD、WRCEI/OI/O口地址口地址-當IO/ M 加高電平時1. 8155的RAM和I/O口地址RAMRAM地址-當IO/ M 加低電平時此時AD0-AD7上得到的地址值是指8155的某一RAMRAM單元的地址,地址范圍是 0000 0000-1111 1111分

21、別指向8155 RAM 的256256個存儲單元。此時AD0-AD7 (僅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具體端口地址分配是:二、二、81558155的工作原理的工作原理AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0I/O端口 0 0 00 0 0命令/狀態口 0 0 10 0 1A口 0 1 00 1 0B口 0 1 10 1 1C口 1 0 01 0 0計數器低8位 1 0 11 0 1計數器高6位8155的RAM和I/O口地址分配 2. 81552. 8155的

22、使用(分二種情況:片內的使用(分二種情況:片內RAMRAM的使用的使用 各各端口端口的使用)的使用) 8155 8155內內RAMRAM的使用:與一般外部數據存儲器的使用基本一樣,唯一區別是事先要使IO/ M 為低電平。81558155各各端口端口(包括定時器)的使用:A、B、C各端口可工作于不同的工作方式,使用前要進行初始化初始化(寫命令字到命令口)。81558155命令字含義命令字含義 PAPBPC1PC2IEAIEBTM1TM2PBPB、PAAPAA口、口、B B口數據傳送方向口數據傳送方向00輸入輸入11輸出輸出0000CC口輸入,口輸入,A A、B B口基本口基本I/OI/O方式方式

23、1111CC口輸出,口輸出,A A、B B口基本口基本I/OI/O方式方式01PC3-PC501PC3-PC5輸出,輸出,A A口選通方式,口選通方式,B B口基本口基本I/OI/O方式方式10A10A、B B口選通方式口選通方式PC2PC2、PC1CPC1C口數據傳送方向及口數據傳送方向及ABAB口工作方式口工作方式IEAIEA、IEB AIEB A、B B口中斷允許控制口中斷允許控制00禁止禁止11允許允許TM1TM1、TM2TM2定時器定時器/ /計數器控制計數器控制00 00 空操作空操作01 01 停止定時器停止定時器10 10 記滿回零停止計數記滿回零停止計數11 11 啟動啟動8

24、155內部有一個14位減法計數器,計數脈沖來自其引腳“TIMER IN”,使用定時器前要先裝入“時間常數”-14位二進制數。其格式為:8155定時器/計數器 D15D15 D14D14 D13D13 D12D12 D11D11 D10D10D9D9D8D8D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0M2M2M1M1T13T13 T12T12 T11T11 T10T10T9T9T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1T0T0高6位計數值低8位計數值定時器方式M2 M1M2 M100 單方波01 連續方波 單脈沖10 連續脈沖 三三. .擴展電路的連接舉

25、例擴展電路的連接舉例-見圖見圖7-127-12,接口電路非常,接口電路非常簡單,基本上是相同信號對接。簡單,基本上是相同信號對接。 8031803181558155RESETRDWRALEP2.0P2.7P0.0P0.1P0.2P.03P0.4P0.5P0.6P0.7RESETRDWRALEIO/MCEAD0AD1AD2AD3AD4AD5AD6AD7口口APA0PA7口口BPB0PB7PC0PC5口口C圖圖7-127-12請思考請思考:對比圖7-4(2764的擴展),為什么圖7-12中擴展8155時,單片機P0口輸出的地址信號沒有經過373鎖存而是直接接到8155的地址/數據復用線上了?四四.

26、 . 應用舉例-(見教材p139例)設8155與單片機連接電路如圖7-127-12,現要求其A口為基本輸入方式,B口為基本輸出方式,定時器為方波發生器,對8031輸入脈沖進行24分頻,編制初始化程序段。解:首先分析各端口地址-見教材P138表7-9。 命令狀態口地址為7F00H A口地址為7F01H B口地址為7F02H C口地址為7F03H 定時器低8位地址7F04H 定時器高6位地址7F05H8155的控制字為0C2H:PAPBPC1PC2IEAIEBTM1TM2 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0補充題補充題1 1: 根據圖7-12的電路,把8155的PB口設

27、置成輸入方式,PA口設置成輸出方式,并把PB口輸入的數據與8031 P1口輸入的數據相“異或”,結果從PA口輸出。試寫出滿足此要求的程序。MOV DPTR,#7F00HMOV DPTR,#7F00HMOV A,#0C2HMOV A,#0C2HMOVX DPTR,AMOVX DPTR,AMOV DPTRMOV DPTR,#7F05H#7F05H24分頻即計數初值為24(000000 0011000B=18H)加上定時計數控制01(連續方波),則送往定時計數器的時間常數及定時控制字應為 01000000 00011000B=4018HMOV A,#40HMOV A,#40HMOVX DPTR,AM

28、OVX DPTR,AMOV DPTR,#7F04HMOV DPTR,#7F04HMOV AMOV A,#18H#18HMOV DPTRMOV DPTR,A A TM2 TM1 IEB IEA PC2 PC1 PB PA 0 0 0 0 0 0 0 1即控制字為01H01H,(注:此處PC2 PC1取1 1也可以)依圖依圖7-127-12電路,電路,81558155的六個端口地址分配如下的六個端口地址分配如下P2.7P2.0 P0.7 P0.0P2.7P2.0 P0.7 P0.0 I/O I/O端口端口 0 X X X X X X 1 X X X X X 0 0 0 命令/狀態口 0 X X X

29、 X X X 1 X X X X X 0 0 1 A口 0 X X X X X X 1 X X X X X 0 1 0 B口 0 X X X X X X 1 X X X X X 0 1 1 C口 0 X X X X X X 1 X X X X X 1 0 0 計數器低8位 0 X X X X X X 1 X X X X X 1 0 1 計數器高6位地址地址7F00H7F01H7F02H7F03H7F04H7F05H解:解:根據題目要求,要先初始化8155(設置其端口的輸入輸 出方式-這里PB口輸入,PA口輸出),其控制字如下:SJMP $SJMP $所以程序如下:所以程序如下:MOV DPTR

30、MOV DPTR,#7F00H #7F00H ;選中;選中81558155命令口命令口MOV A,#01H MOV A,#01H ;控制字;控制字01H01HMOVX DPTR,A MOVX DPTR,A ;控制字;控制字01H01H送送81558155命令口命令口 MOV DPTRMOV DPTR,#7F02H #7F02H ;選中;選中8155 PB8155 PB口口MOVX A, DPTR MOVX A, DPTR ;從;從PBPB口輸入數據口輸入數據XRL A,P1 XRL A,P1 ;與;與8031 P18031 P1口內容口內容“異或異或”MOV DPTRMOV DPTR,#7F0

31、1H #7F01H ;選中;選中8155 PA8155 PA口口MOVX DPTR,A MOVX DPTR,A ;從;從PAPA口輸出數據口輸出數據補充題補充題2 2:根據圖7-12電路,設計一段程序把8155片內RAM全部填滿FFH。 解:根據圖7-12的電路,8155片內RAM地址是0000H00FFH,又由于是對8155片內RAM操作,不需要初始化芯片,P2.7P2.0 P0.7 P0.0P2.7P2.0 P0.7 P0.0 RAM RAM單元單元 0 X X X X X X 0 0 0 0 0 0 0 0 0 0號地址地址0000H 0 X X X X X X 0 1 1 1 1 1

32、1 1 1 255號00FFH程序如下:程序如下:SJMP $SJMP $MOV R7, #00H MOV R7, #00H ;R7R7作計數器,從作計數器,從0 0開始共減開始共減256256次再到次再到0 0MOV A,#0FFH MOV A,#0FFH ;準備送;準備送FFHFFHMOV DPTR,#0000H MOV DPTR,#0000H ;DPTRDPTR指向第一個單元指向第一個單元LOOP: MOVX DPTR,A LOOP: MOVX DPTR,A ;送數;送數INC DPTR INC DPTR ;調整指針,指向下一個單元;調整指針,指向下一個單元DJNZ R7,LOOP DJ

33、NZ R7,LOOP ;循環控制;循環控制1.1.綜合功能的擴展綜合功能的擴展:使用具有綜合功能的芯片、使用具有綜合功能的芯片、 使用多個芯片擴展。使用多個芯片擴展。(1 1)綜合功能芯片擴展- 8155 使用具有綜合功能的可編程可編程芯片8155來同時擴展單片機的I/O口、定時器、外部數據存儲器RAM。補充(2 2)多芯片擴展-使用多個芯片來進行綜合功能擴展。8031 373G27166116(2)6116(1)8155P0P2.2-P2.0PSENALEWRRDABCG2AG2BG1P1.0A0A7A8A10D7D0D7D0D7D0 CECECSOEA0A7A8A10WEWEOEOEWER

34、DALEAD0AD7CEY2Y1Y0+5VIO/ MPAPBPCP2.3P2.4P2.5P2.6P2.7需要弄清以下幾個問題:.選片問題-選片選片信號的功能是:當某個芯片的選片選片信號接低電平時,意味著該芯片被選中,而當其接高電平時,意味著該芯片沒有被選中,此時就好象該芯片沒有連接到電路中(實際上是其各引腳處于高阻態)。在這部分以前所有擴展電路中所用的芯片的選片選片信號引腳CE,都是直接接地或者接某一P2口線的。芯片138是3:8譯碼器,它在這里的作用是輸出選片信號:其輸出端Y0、Y1、Y2分別用來選擇8155、6116(1)、6116(2)。138的引腳及功能見下表:. 譯碼器問題-控控 制

35、制 引引 腳腳輸輸 入入 引引 腳腳輸輸 出出 引引 腳腳G1 G2A G2BG1 G2A G2BC B AY7 Y6 Y5 Y4 Y3 Y2 Y1 Y0Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y01 0 00 0 01 1 1 1 1 1 1 01 0 00 0 11 1 1 1 1 1 0 11 0 00 1 01 1 1 1 1 0 1 11 0 00 1 11 1 1 1 0 1 1 11 0 01 0 01 1 1 0 1 1 1 11 0 01 0 11 1 0 1 1 1 1 11 0 01 1 01 0 1 1 1 1 1 11 0 01 1 10 1 1 1 1 1 1 1

36、 138 功能表功能表 請思考請思考:b.b.為什么圖中 6116(1)的地址范圍是 0800H-0FFFH?而 6116(2)的地址范圍是 1000H-17FFH?a.a.為什么圖中的8155的各端口地址分別是 0000H、0001H、0005H, 而其內部RAM地址范圍是 0000H-00FFH?a.a.由由圖可知 圖中8155的CE接138的Y0, 138的G2B、G2A和CBA分別接到8031的P2.7-P2.3P2.7-P2.3,所以要選中8155,即要CE=0,則必有Y0=0, 由Y0=0得到必有G1=1,且G2A=G2B=0,CBA=000, 即8031的P2.7-P2.3=00

37、000P2.7-P2.3=00000時,時,選中81558155,在此前提下,當8031的P0口輸出地址是 00000000-11111111,且IO/ M=0時,選中8155的RAM單元,所以其內部RAM地址范圍是 0000H-00FFH 。當8031的P0口輸出地址是XXXXX000-XXXXX101,且IO/ M=1時,選中8155的各端口,即P2.7 P2.0 P0.7 P0.0 P2.7 P2.0 P0.7 P0.0 端口端口 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (0000H) 命令口 0 0 0 0 00 0 0 0 0 0 0 0 0

38、 0 0 0 0 0 0 1 (0001H) PA口 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 (0002H) PB口 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 (0003H) PC口 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 (0004H)計數器低 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 (0005H)計數器高所以8155的各端口地址分別是 0000H、0001H、0005H。b.b.同理可得61166116(1 1)和)和6116

39、6116(2 2)的地址范圍分別是0800H-0FFFH0800H-0FFFH和和1000H-17FFH1000H-17FFH:.圖中61166116(1 1)的CE接138的Y1Y1,所以要選中61166116(1 1),則必有Y1=0,由Y1=0得 必有G1=1,且G2A=G2B=0,CBA=001, 即8031的P2.7-P2.3=00001P2.7-P2.3=00001時,時,選中61166116(1 1),在此前提下,當8031的P2.2-P2.0,P0.7-P0.0輸出地址 000 0000 0000 -111 1111 1111時,選中61166116(1 1)中的某一個單元,也

40、即61166116(1 1) 的地址范圍是: 0000 1000 0000 0000-0000 1111 1111 1111 即 0800H-0FFFH(共2K)。同樣分析可知61166116(2 2)的地址范圍是1000H-17FFH1000H-17FFH 7.4.1 顯示器及接口一、 LED結構與原理DpgfedcbaD7 D6 D5 D4 D3 D2 D1 D0+5VDp g f e d c b a共陽極如共陽極時,輸出1 1 1 1 1 0 0 0 即 F8H時,顯示“7”。字型表見表5.9。Dp g f e d c b a共陰極abcdefg7.4 7.4 鍵盤及顯示接口鍵盤及顯示接

41、口(見教材p146153)二、LED接口(分靜態、動態).靜態LED-亮度大,硬件、軟件相對簡單,可以 用并行或串行方式。8031 WR P2.7 P2.6aDp373P0aDp37311117-15 并行輸出的靜態顯示電路.動態LED分時使各數碼管輪流點亮,硬件簡單。8155同相驅動反向驅動C5C4C3C2C1C0PB0PB1. .PB7PA0PA1.PA5圖 7-17 掃描式顯示電路共陰極數碼管原理: 8155的PB口輸出字型碼到所有數碼管的ag各段(1亮,0暗), PA口輸出位選字,選中某一個數碼管(因為加了一級反相器,所以1亮,0暗), 使該數碼管顯示相應的字型,其余數碼管不亮。 輪流

42、點亮每個數碼管并不斷掃描,最后各數碼管得到穩定的字型顯示。參考程序參考程序MOD:MOV R0,#CWR ;指向;指向8155命令口命令口MOV A,#03H ;設命令字,;設命令字,PA口、口、PB口輸出口輸出MOVX R0,A ;初始化;初始化8155DIR:MOV R0,#DIS0 ;指向片內顯示緩沖區首地址;指向片內顯示緩沖區首地址MOV R3,#01H ;選中;選中C0數碼管數碼管0000 0001ACALL DL1 ;調延時子程序;調延時子程序MOV A,R3 ;INC DPTR ;指向;指向8155的的PB口口LD0:MOV DPTR,#POA ;指向;指向8155的的PA口口M

43、OV A,R0 ;取要顯示的數;取要顯示的數MOVC A,A+PC ;查表求得字型碼;查表求得字型碼MOVX DPTR,A ;送字型碼(段值);送字型碼(段值) MOVX DPTR,A ;送位掃描值;送位掃描值 ADD A,#0DH ;加上偏移量;加上偏移量INC R0 ;指向下一個要顯示的數;指向下一個要顯示的數MOV A,R3JB ACC.5,ELD1 ;判斷掃描到;判斷掃描到C5數碼管沒有數碼管沒有ELD1:RETMOV R3,ADSEG:DB 3FH,06H,5BH,4FH,66H,6DH請思考:請思考:LEDLED靜態、動態接口分別有什么特點?靜態、動態接口分別有什么特點? RL A

44、 ;未掃描到;未掃描到C5,掃描碼左移,掃描碼左移1位位AJMP LD0 DSEG1:DB 7DH,07H,7FH,67H,77H,7CHDSEG2:DB 39H,5EH,79H,71HELD1:MOV R7, #02H ;延時子程序;延時子程序DL:MOV R6,#0FFHDL6:DJNZ R6,DL6DJNZ R7,DLRET7.4.2.鍵盤及接口-掃描(判斷哪個鍵按下)、去抖動、判斷按鍵是否抬起(以防止重復進行鍵處理)。 前沿抖動前沿抖動后沿抖動后沿抖動鍵按下鍵按下閉合穩定閉合穩定鍵釋放鍵釋放 a.鍵盤接口要解決的問題一、鍵盤工作原理8031+5VI/OP1R8 b.獨立式鍵盤工作原理請

45、思考請思考:什么是鍵抖動?為什么鍵盤要考慮去抖動?一般常用哪兩種去抖動的方法?原理-當任何一個鍵被按下時,與其相連的輸入線被置成 “0”,平時該線為“1”。鍵處理程序鍵處理程序ORG 2000HSTART:MOV A ,#0FFH ;先置;先置P1口為口為“1”MOV P1,AMOV A,P1 ;輸入鍵狀態;輸入鍵狀態JNB ACC.0, P0F ;查詢;查詢0號鍵號鍵JNB ACC.1, P1F ;查詢;查詢1號鍵號鍵JNB ACC.2, P2F ;查詢;查詢2號鍵號鍵JNB ACC.3, P3F ;查詢;查詢3號鍵號鍵JNB ACC.4, P4F ;查詢;查詢4號鍵號鍵JNB ACC.5,

46、 P5F ;查詢;查詢5號鍵號鍵JNB ACC.6, P6F ;查詢;查詢6號鍵號鍵JNB ACC.7, P7F ;查詢;查詢7號鍵號鍵LJMP START鍵盤掃描鍵盤掃描P0F:LJMP PROM0 ;入口地址表;入口地址表P1F:LJMP PROM1P6F:LJMP PROM6P7F:LJMP PROM7PROM0:. ;0號鍵功能程序號鍵功能程序PROM7:. ;7號鍵功能程序號鍵功能程序.LJMP START ;0號鍵處理完返回鍵盤掃描號鍵處理完返回鍵盤掃描LJMP START ;7號鍵處理完返回鍵盤掃描號鍵處理完返回鍵盤掃描.c.行列式鍵盤工作原理(見教材p150151)+5V I/

47、O接口X3X2X1X0Y3Y2Y1Y05.1K4特點:節省I/O口線過程:先判斷有無鍵按下列線輸出0000,然后輸入行線狀態,若沒有鍵按下,則行線狀態為全1( 1111 );若有任一鍵按下,則行線狀態不為全(1111);再確認哪個鍵被按下列線逐行輸出0(如1110),然后輸入行線狀態,若沒有鍵按下,則行線狀態為全1( 1111 );若有任一鍵按下,則行線狀態不為全為1(如0111,說明右上角那個鍵被按下)確定每個鍵的鍵值負邏輯表示-行列線數據直接組合,上例中的各鍵值分別為:77H、7BH 、7DH 、7EH、B7H 、BBH 、BDH、BEH、D7H、DBH、DDH、DEH、E7H、EBH、E

48、DH、EEH、負邏輯表示負邏輯表示-行列線數據求反組合,上例中的各行列線數據求反組合,上例中的各鍵值分別為:鍵值分別為:88H、84H 、82H 、81H、48H 、44H 、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H、(2 2)鍵盤掃描的控制方式)鍵盤掃描的控制方式程序控制掃描方式程序控制掃描方式-連續掃描連續掃描定時控制掃描方式定時控制掃描方式-定時掃描定時掃描中斷控制掃描方式中斷控制掃描方式-中斷后掃描中斷后掃描a.程序控制掃描方式以8155擴展I/O口組成的行列式鍵盤為例+5V8155PA7PA6.PA0PC0PC1PC2PC35.1K4CEIO/M

49、WRRDALEP0WRRDALEP2.7P2.080310 12 34 5 678 9 10 11 12 1314 1516 1718 19 20 21222324 2526 27 28 2930318155擴展I/O口組成的行列式鍵盤8155PA口地址7F01HPC口地址7F03H8155:PA口輸出列掃描信號 PC口輸入行狀態信號.判斷有無鍵按下PA口輸出00H PC口輸入行狀態信號,若PC3PC01111,有鍵按下.去抖動延時510ms后再判斷有無鍵按下.再確認哪個鍵被按下及其鍵號8155的PA口依次輸出下列掃描字:PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1

50、1 1 1 1 1 0 FEH1 1 1 1 1 1 0 1 FDH0 1 1 1 1 1 1 1 7FH8155的PC口輸入行狀態,可能為下列之一:PC5 PC4 PC3 PC2 PC1 PC0 1 1 1 0 EH 1 1 0 1 DH 1 0 1 1 BH 0 1 1 1 7H則每個鍵的鍵值(列行組合)FE E 、FD E 、 FB E 、 F7 E 、EF E、DE E、BF E、 7F E FE D 、FD D 、 FB D 、 F7 D 、EF D、DE D、BF D、 7F D FE B 、FD B 、 FB B 、 F7 B 、EF B、DE B、BF B、 7F B FE 7

51、 、 FD 7 、 FB 7 、 F7 7、 EF 7、 DE 7、 BF 7、 7F 7 每個鍵的鍵號(自己安排)N=行首鍵號+列號.判斷按鍵是否抬起(以防止重復進行鍵處理)等待鍵釋放后再進行進一步處理。鍵掃描程序框圖入口有鍵按下?延時12ms有鍵按下?NYNY鍵號入棧保存按鍵抬起?NY鍵號送A返回ORG 1000HKEY1:ACALL KS1 ;調用判斷有無鍵按下子程序JNZ LK1 ;有鍵按下,轉去抖動AJMP KEY1 ;無鍵按下,返回LK1:ACALL TM12S ;延時12msACALL KS1 ;再查有無鍵按下JNZ LK2 ;確實有鍵按下,逐行掃描,確定具體鍵AJMP KEY1

52、 ;無鍵按下,返回LK2:MOV R2,#0FEH ;首列掃描字送R2 MOV R4,#00H ;首列號R4LK4:MOV DPTR,#7F01H ;首列掃描字送8155的PA口MOV A,R2 ;第一列掃描MOVX DPTR,A ;使第i 列為0(R2中Di位為0)INC DPTRINC DPTR ;指向8155的PC口MOVX A,DPTR ;讀入行狀態JB ACC.0, LONE ;0行無鍵按下,轉查1行LONE:JB ACC.1, LTWO ;1行無鍵按下,轉查2行MOV A,#00H ;0行有鍵按下,行首鍵號#00H送AAJMP LKP ;求鍵號LTWO:JB ACC.2, LTHR

53、 ;2行無鍵按下,轉查3行MOV A,#08H ;1行有鍵按下,行首鍵號#08H送AAJMP LKP ;求鍵號LTHR:JB ACC.3, NEXT ;3行無鍵按下,轉查下一列MOV A,#10H ;2行有鍵按下,行首鍵號#10H送AAJMP LKP ;求鍵號MOV A,#18H ;3行有鍵按下,行首鍵號#18H送ALKP: ADD A,R4 ;求鍵號=行首鍵號+列號PUSH ACC ;鍵號入棧LK3:ACALL KS1 ;等待鍵釋放JNZ LK3 ;未釋放,繼續等待POP ACC ;已釋放,鍵號送ARETNEXT:INC R4 ;指向下一列,列號加1MOV A, R2 ;判斷8列掃描完沒有J

54、NB ACC.7,KND ;8列掃描完,返回RL A ;沒掃描完,置下一列掃描字MOV R2, A ;掃描字送AAJMP LK4 ;繼續下列掃描KND:AJMP KEY1 ;8列掃描完,返回KS1:MOV DPTR, #7F01H ;查有無鍵按下子程序MOV A,#00HMOVX DPTR,A ;8155 PA口輸出全掃描字#00HINC DPTRINC DPTR ;指向8155的PC口MOVX A,DPTR ;讀入行狀態,若有鍵按下,則A0FFHCPL A ;改成正邏輯,若有鍵按下,則A00HANL A ,#0FH ;屏蔽高四位RET ;子程序返回,當有鍵按下時,AA00HT12sm:MOV

55、 R7, #18H ;12sm延時子程序TM:MOV R6,#0FFH TM6:DJNZ R6, TM6DJNZ R7,TMRET;td=1+(1+255*2+2)*24+2*MCd.鍵操作及功能處理求出鍵號后要進行鍵處理:先判斷是何種鍵,然后:對數字鍵-送顯示緩沖區顯示;對功能鍵-執行相應的功能鍵處理程序。設圖5.36中,015號鍵為數字鍵,即鍵號鍵號10H10H的是數字鍵的是數字鍵;1631號鍵為功能鍵,即鍵號鍵號10H10H的是功能鍵的是功能鍵,其功能鍵處理程序入口地址分別為:AAA、BBB、CCC、PPP。則轉入功能鍵處理程序清單如下:ORG 8000HKEYADR:MOV A ,BUFF ;鍵號送ACLR CSUBB A,#10H ;Y與10H比較JC DIGPRO ;VX,先清零DN-1 ,再設次高位(DN-2)為1,繼續如此反復,經過N次比較后,最后一位D0得到確定,此時,N位寄存器的內容就是轉換好的數字量,而EOC輸出轉換結束信號,在輸出允許OE(高電平)有效時,數字量經輸出緩沖器讀出。8.2.2 ADC0809芯片與單片機的接口一、一、ADC0809的引腳及內部結構0809-80809-8位位

溫馨提示

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

評論

0/150

提交評論