新概念51單片機(jī)C語言-07 MCS-51 單片機(jī)的系統(tǒng)擴(kuò)展_第1頁
新概念51單片機(jī)C語言-07 MCS-51 單片機(jī)的系統(tǒng)擴(kuò)展_第2頁
新概念51單片機(jī)C語言-07 MCS-51 單片機(jī)的系統(tǒng)擴(kuò)展_第3頁
新概念51單片機(jī)C語言-07 MCS-51 單片機(jī)的系統(tǒng)擴(kuò)展_第4頁
新概念51單片機(jī)C語言-07 MCS-51 單片機(jī)的系統(tǒng)擴(kuò)展_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第七章MCS-51單片機(jī)的系統(tǒng)擴(kuò)展

本章主要介紹51系列單片機(jī)系統(tǒng)擴(kuò)展問題,在本章中要研究較多的硬件方面及硬軟結(jié)合方面的問題,本章與第一章關(guān)系密切,在學(xué)習(xí)本章內(nèi)容之前,要先明確51系列單片機(jī)本身的系統(tǒng)資源,可先復(fù)習(xí)一下前面幾章的有關(guān)單片機(jī)硬件組成方面的內(nèi)容。

本章將介紹以下具體內(nèi)容:

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

2.系統(tǒng)擴(kuò)展分類----單一功能的擴(kuò)展綜合功能的擴(kuò)展3.系統(tǒng)擴(kuò)展需要解決的問題----

單片機(jī)與相應(yīng)芯片的接口電路連接(即地址總線、數(shù)據(jù)總線、控制總線的連接)與編程。

51系列單片機(jī)沒有專用的對外地址總線和數(shù)據(jù)總線,其P0口和P2口既是通用I/O口,同時P0口還是分時復(fù)用的雙向數(shù)據(jù)總線和低8位地址總線(一般需要加一級鎖存器),而P2口則是高8位地址總線。4.單片機(jī)的地址總線和數(shù)據(jù)總線(1)單一功能的系統(tǒng)擴(kuò)展

存儲器的擴(kuò)展(程序存儲器、數(shù)據(jù)存儲器、E2PROM)

外部中斷源的擴(kuò)展(簡單門電路)

并行口的擴(kuò)展(8155)(2)綜合功能的擴(kuò)展外部RAM、定時器、并行口擴(kuò)展(8155)存儲器、并行口、定時器擴(kuò)展(多芯片)5.常見系統(tǒng)擴(kuò)展電路

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

.擴(kuò)展時所用芯片----一般用只讀型存儲器芯片(可以是EPROM、E2PROM、FLASH芯片等)。

.擴(kuò)展電路連接

----用EPROM2764擴(kuò)展程序存儲器。

.存儲器地址分析----究竟單片機(jī)輸出什么地址值時,可以指向存儲器中的某一單元?!?.1存儲器的擴(kuò)展7.1.1程序存儲器的擴(kuò)展2764----8KEPROM2764引腳功能A0~A12地址線CE選片OE讀D0~D7數(shù)據(jù)線VPPA12A7A6A5A4A3A2A1A0D0D1D2GNDVccPGMN.CA8A9A11OEA10CED7D6D5D4D32764.擴(kuò)展時所用芯片1編程脈沖輸入PGM編程電源

VppD7D6D5D4D3D2D1D0G74LS373GND+5VEQ7Q6Q5Q4Q3Q2Q1Q0.擴(kuò)展時所用芯片2

373引腳功能D0~D6數(shù)據(jù)輸入E輸出允許G數(shù)據(jù)輸出Q0~Q7使能端當(dāng)E=0,G=1時,

輸出Q=輸入D(透明);當(dāng)E=0,G=0時,輸出Q端不變(鎖存)當(dāng)E=0,輸出高阻態(tài).擴(kuò)展電路連接圖7-4擴(kuò)展電路單片機(jī)

8031P2.0:.A8...ALEPSEN74LS373G2764A7..A0O0..O7P0.0

:P0.7OECEQ0..Q7D0..D7

8031

2764數(shù)據(jù)總線的連接:P0.0-P0.7(數(shù)據(jù)總線)--------------------------------------O0-O7地址總線的連接:P0.0-P0.7(地址總線低8位)--------------------------------

A0-A7P2.0-P2.4(地址總線高8位中的5位)-------------------------A8-A12控制總線的連接:PSEN(程序存儲器允許,即讀指令)--------------------------OEALE(地址鎖存允許)--------------------------------接373的使能端G經(jīng)過鎖存器373

A12P2.4一個機(jī)器周期ALEPSENP2P0地址A8~A15地址A8~A15A0~A7A0~A7指令碼指令碼圖7-2從外存取指令時序圖一個機(jī)器周期ALEPSENP2P0地址A8~A15地址A8~A15A0~A7A0~A7指令碼指令碼單片機(jī)

8031P2.0:.A8...ALEPSEN74LS373G2764A7..A0O0..O7P0.0

:P0.7OECEQ0..Q7D0..D7A12P2.4.存儲器地址分析----究竟單片機(jī)輸出什么地址值時,可以指向存儲器中的某一單元。

8031

P2.4…………P2.0P0.7…P0.0

選中單元(2732

A12A11A10A9A8A7A6A5A4A3A2A1A0)

0000000000000(0000H)00000000000001(0001H)10000000000010(0002H)20000000000011(0003H)30000000000100(0004H)4...

1111111111111(1FFFH)8K-1

可見,當(dāng)單片機(jī)輸出地址0000H~1FFFH時,選中2764的0~8K-1號單元,即按照上面電路擴(kuò)展的4K存儲器的地址范圍是0000H~1FFFH(共8K字節(jié))。

請思考:請同學(xué)們結(jié)合圖7.2來分析圖7.4中373的作用,并說明沒有它行不行?為什么?.擴(kuò)展時所用芯片.程序存儲器的作用.擴(kuò)展電路連接.存儲器地址分析程序存儲器的擴(kuò)展7.1.2數(shù)據(jù)存儲器的擴(kuò)展.數(shù)據(jù)存儲器的作用----存放數(shù)據(jù),可改寫.擴(kuò)展時所用芯片----一般用靜態(tài)讀寫型存儲器芯片SRAM,也可以用E2PROM、FLASH芯片等.擴(kuò)展電路連接

----用SRAM6264擴(kuò)展程序存儲器。.存儲器地址分析----究竟單片機(jī)輸出什么地址值時,可以指向存儲器中的某一單元。.擴(kuò)展時所用芯片6264----8KSRAM6264引腳功能A0~A12地址線CE選片OE讀D0~D7數(shù)據(jù)線N.CA12A7A6A5A4A3A2A1A0D0D1D2GNDVccWECSA8A9A11OEA10CED7D6D5D4D36264寫WE.擴(kuò)展電路連接圖7-9擴(kuò)展電路數(shù)據(jù)總線的連接:P0.0~P0.7(數(shù)據(jù)總線)---------------------D0~D7

地址總線的連接:P0.0~P0.7(地址總線低8位)---------------

A0~A7P2.0~P2.4(地址總線高8位中的5位)-------A8~A12控制總線的連接:RD(讀外部數(shù)據(jù))-------------------------OEWR(寫外部數(shù)據(jù))-------------------------WEALE(地址鎖存允許)--------------接373的使能端G

經(jīng)過373

A86264WE單片機(jī)

8031P2.0:.A8..ALERD74LS373GA7..A0P0.0

:P0.7OECEQ0..Q7D0..D7A12P2.4WR80316264一個機(jī)器周期ALEPSENP2P0地址A8~A15A0~A7三態(tài)數(shù)據(jù)D0~D7入圖7-6讀外部數(shù)據(jù)RAM時序圖RD一個機(jī)器周期ALEPSENP2P0地址A8~A15A0~A7數(shù)據(jù)D0~D7出圖7-7寫外部數(shù)據(jù)RAM時序圖WR一個機(jī)器周期ALEPSENP2P0地址A8~A15A0~A7三態(tài)數(shù)據(jù)D0~D7入RD圖4.4讀外部數(shù)據(jù)RAM時序圖單片機(jī)

8031P2.0P2.1P2.2A8A9A10ALERD74LS373G6264A7A6A5A4A3A2A1A0O0O1O2O3O4O5O6O7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7OECEQ0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7WEWRP2.7P2.3P2.4A11A12.存儲器地址分析----究竟單片機(jī)輸出什么地址值時,可以指向存儲器中的某一單元。

8031

P2.7…P2.4…P2.0

P0.7…P0.0

選中單元(6264CEA12A11……A8A7A6A5A4A3A2A1A0)

0XX0000000000000(0000H)00XX0000000000001(0001H)10XX0000000000010(0002H)20XX0000000000011(0003H)30XX0000000000100(0004H)4...0XX1111111111111(1FFFH)8K-1

可見,當(dāng)單片機(jī)輸出地址0000H~1FFFH時,選中6264的0~8K-1號單元,即按照上面電路擴(kuò)展的4K存儲器的地址范圍是0000H~1FFFH(共8K字節(jié))。

請注意,與擴(kuò)展程序存儲器相比較,有以下不同點(diǎn):ⅰ.存儲器芯片為可讀可寫的靜態(tài)RAM芯片,有讀寫控制引腳OE和WE。ⅱ.單片機(jī)輸出的對數(shù)據(jù)存儲器的讀寫控制信號分別是RD(而不再是讀程序存儲器時的PSEN)和WR。.擴(kuò)展時所用芯片.數(shù)據(jù)存儲器的作用.擴(kuò)展電路連接.存儲器地址分析數(shù)據(jù)存儲器的擴(kuò)展2864----8KE2PROM2864引腳功能A0~A12地址線CE選片OE讀D0~D7數(shù)據(jù)線N.CA12A7A6A5A4A3A2A1A0D0D1D2GNDVccWEN.CA8A9A11OEA10CED7D6D5D4D32864.擴(kuò)展時所用芯片寫WE7.1.3E2PROM的擴(kuò)展單片機(jī)

8031P2.4P2.0A8A12ALERD74LS373G2864A7A6A5A4A3A2A1A0D0D1D2D3D4D5D6D7P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7OECEQ0Q1Q2Q3Q4Q5Q6Q7D0D1D2D3D4D5D6D7WEWRP2.7PSEN&圖7-92864擴(kuò)展電路圖

★請思考:什么情況下圖7-9中的與門輸出低電平,使E2PRAM的內(nèi)容可以被讀出,讀出的是什么方面的內(nèi)容?圖中擴(kuò)展的E2PRAM是外部數(shù)據(jù)存儲器?外部程序存儲器?兩者都擴(kuò)展了?§7.2并行口的擴(kuò)展7.2.1并行口的簡單擴(kuò)展輸出口----利用鎖存器擴(kuò)展并行口擴(kuò)展的分類利用鎖存器、緩沖器進(jìn)行并行口簡單擴(kuò)展用可編程并行接口芯片進(jìn)行擴(kuò)展輸入口----利用緩沖器擴(kuò)展8031

1

1WRRDP2.7GQ0..Q7P0.0..P0.7D0..D7Q0..Q7D0..D7CLK圖7-10并行口的簡單擴(kuò)展2732447.2.2可編程并行接口芯片8155的擴(kuò)展一、8155的結(jié)構(gòu)及引腳8155的結(jié)構(gòu)8155256字節(jié)RAM三個可編程并行口PA口,8位PB口,8位PC口,6位14位二進(jìn)制減法計(jì)數(shù)器8155芯片的內(nèi)部結(jié)構(gòu)256B靜態(tài)RAM

A

定時器B

C

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

PC5

IO/MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7VssVccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA08155TIMERINRESETTIMEROUTAD0-AD7三態(tài)地址/數(shù)據(jù)線IO/M端口/存儲器選擇RD讀ALE地址鎖存允許寫WR選片CE定時器輸入TIMERIN定時器輸出TIMEROUTPA0-PA7A口端口線PB0-PB7B口端口線PC0-PC5C口端口線圖7.11aCECEPA0-PA7端口A的I/O線(8位,接外設(shè))PB0-PB7端口B的I/O線(8位,接外設(shè))PC0-PC5端口C的I/O線(6位,接外設(shè))AD0-AD7三態(tài)地址/數(shù)據(jù)復(fù)用線(8位,一般接單片機(jī)P0口,CPU與8155之間的地址、數(shù)據(jù)、命令、狀態(tài)等信號都通過它來傳送)端口/存儲器選擇控制“0”選擇片內(nèi)RAM“1”選擇片內(nèi)I/O口TIMERIN8155片內(nèi)定時器/計(jì)數(shù)器的計(jì)數(shù)脈沖輸入引腳TIMEROUT8155片內(nèi)定時器/計(jì)數(shù)器的計(jì)滿回零輸出引腳分別是對8155片內(nèi)的RAM或I/O口的的讀、寫控制信號ALE地址鎖存引腳選片RESET復(fù)位引腳IO/MRD、WRCECEI/O口地址----當(dāng)IO/M加高電平時1.8155的RAM和I/O口地址RAM地址----當(dāng)IO/M加低電平時此時AD0-AD7上得到的地址值是指8155的某一RAM單元的地址,地址范圍是

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

2.8155的使用(分二種情況:片內(nèi)RAM的使用各端口的使用)

8155內(nèi)RAM的使用:與一般外部數(shù)據(jù)存儲器的使用基本一樣,唯一區(qū)別是事先要使IO/M為低電平。8155各端口(包括定時器)的使用:A、B、C各端口可工作于不同的工作方式,使用前要進(jìn)行初始化(寫命令字到命令口)。8155命令字含義

PAPBPC1PC2IEAIEBTM1TM2PB、PA—A口、B口數(shù)據(jù)傳送方向0—輸入1—輸出00—C口輸入,A、B口基本I/O方式11—C口輸出,A、B口基本I/O方式01—PC3-PC5輸出,A口選通方式,B口基本I/O方式10—A、B口選通方式PC2、PC1—C口數(shù)據(jù)傳送方向及AB口工作方式IEA、IEB—A、B口中斷允許控制0—禁止1—允許TM1、TM2—定時器/計(jì)數(shù)器控制00空操作01停止定時器10記滿回零停止計(jì)數(shù)11啟動8155內(nèi)部有一個14位減法計(jì)數(shù)器,計(jì)數(shù)脈沖來自其引腳“TIMERIN”,使用定時器前要先裝入“時間常數(shù)”----14位二進(jìn)制數(shù)。其格式為:8155定時器/計(jì)數(shù)器

D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0高6位計(jì)數(shù)值低8位計(jì)數(shù)值定時器方式M2M100單方波01連續(xù)方波單脈沖連續(xù)脈沖三.擴(kuò)展電路的連接舉例----見圖7-12,接口電路非常簡單,基本上是相同信號對接。80318155RESETRDWRALEP2.0P2.7P0.0P0.1P0.2P.03P0.4P0.5P0.6P0.7RESETRDWRALEIO/MCEAD0AD1AD2AD3AD4AD5AD6AD7口APA0~PA7口BPB0~PB7PC0~PC5口C圖7-12★請思考:對比圖7-4(2764的擴(kuò)展),為什么圖7-12中擴(kuò)展8155時,單片機(jī)P0口輸出的地址信號沒有經(jīng)過373鎖存而是直接接到8155的地址/數(shù)據(jù)復(fù)用線上了?四.應(yīng)用舉例----(見教材p139例)設(shè)8155與單片機(jī)連接電路如圖7-12,現(xiàn)要求其A口為基本輸入方式,B口為基本輸出方式,定時器為方波發(fā)生器,對8031輸入脈沖進(jìn)行24分頻,編制初始化程序段。解:首先分析各端口地址----見教材P138表7-9。命令狀態(tài)口地址為7F00HA口地址為7F01HB口地址為7F02HC口地址為7F03H

定時器低8位地址7F04H

定時器高6位地址7F05H8155的控制字為0C2H:PAPBPC1PC2IEAIEBTM1TM2

11000010補(bǔ)充題1:

根據(jù)圖7-12的電路,把8155的PB口設(shè)置成輸入方式,PA口設(shè)置成輸出方式,并把PB口輸入的數(shù)據(jù)與8031P1口輸入的數(shù)據(jù)相“異或”,結(jié)果從PA口輸出。試寫出滿足此要求的程序。MOVDPTR,#7F00HMOVA,,#0C2HMOVX@DPTR,AMOVDPTR,#7F05H24分頻即計(jì)數(shù)初值為24(0000000011000B=18H)加上定時計(jì)數(shù)控制01(連續(xù)方波),則送往定時計(jì)數(shù)器的時間常數(shù)及定時控制字應(yīng)為

0100000000011000B=4018HMOVA,,#40HMOVX@DPTR,AMOVDPTR,#7F04HMOVA,#18HMOVDPTR,A

TM2TM1IEBIEAPC2PC1PBPA00000001即控制字為01H,(注:此處PC2PC1取11也可以)依圖7-12電路,8155的六個端口地址分配如下P2.7……………P2.0P0.7………………P0.0

I/O端口

0XXXXXX1XXXXX000命令/狀態(tài)口

0XXXXXX1XXXXX001

A口

0XXXXXX1XXXXX010

B口

0XXXXXX1XXXXX011

C口

0XXXXXX1XXXXX100計(jì)數(shù)器低8位

0XXXXXX1XXXXX101計(jì)數(shù)器高6位地址7F00H7F01H7F02H7F03H7F04H7F05H解:根據(jù)題目要求,要先初始化8155(設(shè)置其端口的輸入輸出方式----這里PB口輸入,PA口輸出),其控制字如下:SJMP$所以程序如下:MOVDPTR,#7F00H;選中8155命令口MOVA,#01H;控制字01HMOVX@DPTR,A;控制字01H送8155命令口MOVDPTR,#7F02H;選中8155PB口MOVXA,@DPTR;從PB口輸入數(shù)據(jù)XRLA,P1;與8031P1口內(nèi)容“異或”MOVDPTR,#7F01H;選中8155PA口MOVX@DPTR,A;從PA口輸出數(shù)據(jù)補(bǔ)充題2:根據(jù)圖7-12電路,設(shè)計(jì)一段程序把8155片內(nèi)RAM全部填滿FFH。解:根據(jù)圖7-12的電路,8155片內(nèi)RAM地址是0000H~00FFH,又由于是對8155片內(nèi)RAM操作,不需要初始化芯片,P2.7……………P2.0P0.7………………P0.0

RAM單元

0XXXXXX000000000

0號地址0000H

0XXXXXX011111111

255號00FFH程序如下:SJMP$MOVR7,#00H;R7作計(jì)數(shù)器,從0開始共減256次再到0MOVA,#0FFH;準(zhǔn)備送FFHMOVDPTR,#0000H;DPTR指向第一個單元LOOP:MOVX@DPTR,A;送數(shù)INCDPTR;調(diào)整指針,指向下一個單元DJNZR7,LOOP;循環(huán)控制1.綜合功能的擴(kuò)展:使用具有綜合功能的芯片、使用多個芯片擴(kuò)展。(1)綜合功能芯片擴(kuò)展----8155

使用具有綜合功能的可編程芯片8155來同時擴(kuò)展單片機(jī)的I/O口、定時器、外部數(shù)據(jù)存儲器RAM。補(bǔ)充(2)多芯片擴(kuò)展----使用多個芯片來進(jìn)行綜合功能擴(kuò)展。8031

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

138功能表

★請思考:b.為什么圖中

6116(1)的地址范圍是

0800H-0FFFH?而

6116(2)的地址范圍是

1000H-17FFH?a.為什么圖中的8155的各端口地址分別是

0000H、0001H、……、0005H,而其內(nèi)部RAM地址范圍是

0000H--00FFH?a.由圖可知圖中8155的CE接138的Y0,138的G2B、G2A和CBA分別接到8031的P2.7-P2.3,所以要選中8155,即要CE=0,則必有Y0=0,由Y0=0得到必有G1=1,且G2A=G2B=0,CBA=000,

即8031的P2.7-P2.3=00000時,選中8155,在此前提下,當(dāng)8031的P0口輸出地址是

00000000-11111111,且IO/M=0時,選中8155的RAM單元,所以其內(nèi)部RAM地址范圍是

0000H--00FFH。當(dāng)8031的P0口輸出地址是XXXXX000-XXXXX101,且IO/M=1時,選中8155的各端口,即P2.7……………P2.0P0.7……………P0.0端口

0000000000000000(0000H)命令口

0000000000000001(0001H)PA口

0000000000000010(0002H)PB口

0000000000000011(0003H)PC口

00000

00000000100(0004H)計(jì)數(shù)器低

0000000000000101(0005H)計(jì)數(shù)器高所以8155的各端口地址分別是

0000H、0001H、……、0005H。b.同理可得6116(1)和6116(2)的地址范圍分別是0800H-0FFFH和1000H-17FFH:ⅰ.圖中6116(1)的CE接138的Y1,所以要選中6116(1),則必有Y1=0,由Y1=0得必有G1=1,且G2A=G2B=0,CBA=001,

即8031的P2.7-P2.3=00001時,選中6116(1),在此前提下,當(dāng)8031的P2.2-P2.0,P0.7-P0.0輸出地址

00000000000-11111111111時,選中6116(1)中的某一個單元,也即6116(1)

的地址范圍是:

0000100000000000-000011111111

1111

0800H-0FFFH(共2K)。ⅱ同樣分析可知6116(2)的地址范圍是1000H-17FFH

7.4.1顯示器及接口一、LED結(jié)構(gòu)與原理DpgfedcbaD7D6D5D4D3D2D1D0+5VDpgfedcba共陽極如共陽極時,輸出11111000

即F8H時,顯示“7”。字型表見表5.9。Dpgfedcba共陰極abcdefg7.4鍵盤及顯示接口(見教材p146~153)二、LED接口(分靜態(tài)、動態(tài))ⅰ.靜態(tài)LED----亮度大,硬件、軟件相對簡單,可以用并行或串行方式。8031

WRP2.7P2.6aDp373P0aDp373≥11≥117-15并行輸出的靜態(tài)顯示電路ⅱ.動態(tài)LED—分時使各數(shù)碼管輪流點(diǎn)亮,硬件簡單。8155同相驅(qū)動反向驅(qū)動C5C4C3C2C1C0PB0PB1....PB7PA0PA1..PA5圖7-17掃描式顯示電路共陰極數(shù)碼管原理:

8155的PB口輸出字型碼到所有數(shù)碼管的a~g各段(1—亮,0—暗),

PA口輸出位選字,選中某一個數(shù)碼管(因?yàn)榧恿艘患壏聪嗥?,所?—亮,0—暗),使該數(shù)碼管顯示相應(yīng)的字型,其余數(shù)碼管不亮。輪流點(diǎn)亮每個數(shù)碼管并不斷掃描,最后各數(shù)碼管得到穩(wěn)定的字型顯示。參考程序MOD:MOVR0,#CWR;指向8155命令口MOVA,#03H;設(shè)命令字,PA口、PB口輸出MOVX@R0,A;初始化8155DIR:MOVR0,#DIS0;指向片內(nèi)顯示緩沖區(qū)首地址MOVR3,#01H;選中C0數(shù)碼管00000001ACALLDL1;調(diào)延時子程序MOVA,R3;INCDPTR;指向8155的PB口LD0:MOVDPTR,#POA;指向8155的PA口MOVA,@R0;取要顯示的數(shù)MOVCA,@A+PC;查表求得字型碼MOVX@DPTR,A;送字型碼(段值)MOVX@DPTR,A;送位掃描值A(chǔ)DDA,#0DH;加上偏移量INCR0;指向下一個要顯示的數(shù)MOVA,R3JBACC.5,ELD1;判斷掃描到C5數(shù)碼管沒有ELD1:RETMOVR3,ADSEG:DB3FH,06H,5BH,4FH,66H,6DH★請思考:LED靜態(tài)、動態(tài)接口分別有什么特點(diǎn)?RLA;未掃描到C5,掃描碼左移1位AJMPLD0DSEG1:DB7DH,07H,7FH,67H,77H,7CHDSEG2:DB39H,5EH,79H,71HELD1:MOVR7,#02H;延時子程序DL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRET7.4.2.鍵盤及接口----掃描(判斷哪個鍵按下)、去抖動、判斷按鍵是否抬起(以防止重復(fù)進(jìn)行鍵處理)。

前沿抖動后沿抖動鍵按下閉合穩(wěn)定鍵釋放

a.鍵盤接口要解決的問題一、鍵盤工作原理8031+5VI/OP1R╳8

b.獨(dú)立式鍵盤工作原理★請思考:什么是鍵抖動?為什么鍵盤要考慮去抖動?一般常用哪兩種去抖動的方法?原理----當(dāng)任何一個鍵被按下時,與其相連的輸入線被置成“0”,平時該線為“1”。鍵處理程序ORG2000HSTART:MOVA,#0FFH;先置P1口為“1”MOVP1,AMOVA,P1;輸入鍵狀態(tài)JNBACC.0,P0F;查詢0號鍵JNBACC.1,P1F;查詢1號鍵JNBACC.2,P2F;查詢2號鍵JNBACC.3,P3F;查詢3號鍵JNBACC.4,P4F;查詢4號鍵JNBACC.5,P5F;查詢5號鍵JNBACC.6,P6F;查詢6號鍵JNBACC.7,P7F;查詢7號鍵LJMPSTART鍵盤掃描P0F:LJMPPROM0;入口地址表P1F:LJMPPROM1P6F:LJMPPROM6P7F:LJMPPROM7……PROM0:…..;0號鍵功能程序PROM7:…..;7號鍵功能程序…..LJMPSTART;0號鍵處理完返回鍵盤掃描LJMPSTART;7號鍵處理完返回鍵盤掃描…......c.行列式鍵盤工作原理(見教材p150~151)+5V

I/O接口X3X2X1X0Y3Y2Y1Y05.1KΩ╳4特點(diǎn):節(jié)省I/O口線過程:先判斷有無鍵按下列線輸出0000,然后輸入行線狀態(tài),若沒有鍵按下,則行線狀態(tài)為全1(1111);若有任一鍵按下,則行線狀態(tài)不為全(1111);再確認(rèn)哪個鍵被按下列線逐行輸出0(如1110),然后輸入行線狀態(tài),若沒有鍵按下,則行線狀態(tài)為全1(1111);若有任一鍵按下,則行線狀態(tài)不為全為1(如0111,說明右上角那個鍵被按下)確定每個鍵的鍵值負(fù)邏輯表示----行列線數(shù)據(jù)直接組合,上例中的各鍵值分別為:77H、7BH、7DH、7EH、B7H、BBH、BDH、BEH、D7H、DBH、DDH、DEH、E7H、EBH、EDH、EEH、負(fù)邏輯表示----行列線數(shù)據(jù)求反組合,上例中的各鍵值分別為:88H、84H、82H、81H、48H、44H、42H、41H、28H、24H、22H、21H、18H、14H、12H、11H、(2)鍵盤掃描的控制方式程序控制掃描方式----連續(xù)掃描定時控制掃描方式----定時掃描中斷控制掃描方式----中斷后掃描a.程序控制掃描方式—以8155擴(kuò)展I/O口組成的行列式鍵盤為例+5V8155PA7PA6.....PA0PC0PC1PC2PC35.1K?╳4CEIO/MWRRDALEP0WRRDALEP2.7P2.080310123456789101112131415161718192021222324252627282930318155擴(kuò)展I/O口組成的行列式鍵盤8155PA口地址7F01HPC口地址7F03H8155:PA口輸出列掃描信號

PC口輸入行狀態(tài)信號ⅰ.判斷有無鍵按下PA口輸出00H

PC口輸入行狀態(tài)信號,若PC3~PC0≠1111,有鍵按下ⅱ.去抖動延時5~10ms后再判斷有無鍵按下ⅲ.再確認(rèn)哪個鍵被按下及其鍵號8155的PA口依次輸出下列掃描字:PA7PA6PA5PA4PA3PA2PA1PA011111110FEH11111101FDH……011111117FH8155的PC口輸入行狀態(tài),可能為下列之一:PC5PC4PC3PC2PC1PC0

1110╳EH

╳1101╳DH

1011╳BH

0111╳7H則每個鍵的鍵值(列行組合)FE╳E、FD╳E、FB╳E、F7╳E、EF╳E、DE╳E、BF╳E、7F╳EFE╳D、FD╳D、FB╳D、F7╳D、EF╳D、DE╳D、BF╳D、7F╳DFE╳B、FD╳B、FB╳B、F7╳B、EF╳B、DE╳B、BF╳B、7F╳BFE╳7、FD╳7、FB╳7、F7╳7、EF╳7、DE╳7、BF╳7、7F╳7每個鍵的鍵號(自己安排)N=行首鍵號+列號ⅳ.判斷按鍵是否抬起(以防止重復(fù)進(jìn)行鍵處理)等待鍵釋放后再進(jìn)行進(jìn)一步處理。鍵掃描程序框圖入口有鍵按下?延時12ms有鍵按下?①①NYNY鍵號入棧保存按鍵抬起?NY鍵號送A返回ORG1000HKEY1:ACALLKS1;調(diào)用判斷有無鍵按下子程序JNZLK1;有鍵按下,轉(zhuǎn)去抖動AJMPKEY1;無鍵按下,返回LK1:ACALLTM12S;延時12msACALLKS1;再查有無鍵按下JNZLK2;確實(shí)有鍵按下,逐行掃描,確定具體鍵AJMPKEY1;無鍵按下,返回LK2:MOVR2,#0FEH;首列掃描字送R2

MOVR4,#00H;首列號R4LK4:MOVDPTR,#7F01H;首列掃描字送8155的PA口MOVA,R2;第一列掃描MOVX@DPTR,A;使第i列為0(R2中Di位為0)INCDPTRINCDPTR;指向8155的PC口MOVXA,@DPTR;讀入行狀態(tài)JBACC.0,LONE;0行無鍵按下,轉(zhuǎn)查1行LONE:JBACC.1,LTWO;1行無鍵按下,轉(zhuǎn)查2行MOVA,#00H;0行有鍵按下,行首鍵號#00H送AAJMPLKP;求鍵號LTWO:JBACC.2,LTHR;2行無鍵按下,轉(zhuǎn)查3行MOVA,#08H;1行有鍵按下,行首鍵號#08H送AAJMP

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論