電子設(shè)計(jì)與實(shí)踐II匯編_第1頁(yè)
電子設(shè)計(jì)與實(shí)踐II匯編_第2頁(yè)
電子設(shè)計(jì)與實(shí)踐II匯編_第3頁(yè)
電子設(shè)計(jì)與實(shí)踐II匯編_第4頁(yè)
電子設(shè)計(jì)與實(shí)踐II匯編_第5頁(yè)
已閱讀5頁(yè),還剩115頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1電子設(shè)計(jì)與實(shí)踐IIMCU原理及其應(yīng)用系統(tǒng)設(shè)計(jì)電氣工程系趙志衡2課程主要內(nèi)容單片機(jī)應(yīng)用系統(tǒng)的構(gòu)成單片機(jī)應(yīng)用系統(tǒng)單元電路及其子程序設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)3一、應(yīng)用系統(tǒng)構(gòu)成單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)MCS51硬件結(jié)構(gòu)匯編程序的編寫功率接口MCS51指令系統(tǒng)仿真調(diào)試抗干擾設(shè)計(jì)MCS51定時(shí)計(jì)數(shù)器MCS51串行通訊MCS51中斷系統(tǒng)MCS51存儲(chǔ)器擴(kuò)展MCS51I/O擴(kuò)展MCS51鍵盤顯示擴(kuò)展MCS-51A/D、D/A擴(kuò)展4二、Mcs-51單元設(shè)計(jì)1.MCS-51的基本情況2.MCS-51的硬件結(jié)構(gòu)3.MCS-51的指令系統(tǒng)4.定時(shí)/計(jì)數(shù)器應(yīng)用及其子程序設(shè)計(jì)5.串行通訊應(yīng)用及其子程序設(shè)計(jì)6.中斷系統(tǒng)應(yīng)用及其子程序設(shè)計(jì)7.外擴(kuò)存儲(chǔ)器(程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器)8.外擴(kuò)I/O(8255、8155及TTL芯片)9.鍵盤與顯示應(yīng)用及其子程序設(shè)計(jì)10.外擴(kuò)A/D、D/A應(yīng)用及其子程序設(shè)計(jì)51.MCS-51芯片的基本情況屬于三總線結(jié)構(gòu)芯片管腳分別屬于數(shù)據(jù)總線地址總線控制總線此外,還有時(shí)鐘、電源、地等管腳6需要理解的控制管腳

ALERSTPSENEAWRRD7EA:接高電平時(shí)單片機(jī)訪問(wèn)內(nèi)部程序存儲(chǔ)器,當(dāng)PC值超過(guò)(0FFFH)時(shí),將自動(dòng)轉(zhuǎn)向執(zhí)行外部程序存儲(chǔ)器。EA

接低電平時(shí)直接訪問(wèn)外部程序存儲(chǔ)器。PSEN:接外部程序存儲(chǔ)器的讀選通端RD:接外部數(shù)據(jù)存儲(chǔ)器的讀選通端WR:接外部數(shù)據(jù)存儲(chǔ)器的寫選通端82.硬件結(jié)構(gòu)

每2個(gè)時(shí)鐘振蕩周期作為1個(gè)狀態(tài)周期,每個(gè)狀態(tài)周期分為2個(gè)時(shí)相P1、P2,每6個(gè)狀態(tài)周期作為1個(gè)機(jī)器周期。

12個(gè)振蕩周期為1個(gè)機(jī)器周期

ALE的頻率約為外部晶振頻率的1/6RST管腳施加持續(xù)時(shí)間大于2個(gè)機(jī)器周期(24個(gè)振蕩周期)的高電平,將引起MCS-51的復(fù)位910特殊功能寄存器(SFR)特殊功能寄存器反映了MCS51的狀態(tài),實(shí)際上是MCS51的狀態(tài)字及控制字寄存器。51單片機(jī)通過(guò)寫SFR來(lái)控制相應(yīng)功能部件(定時(shí)器、串口、中斷等)的工作方式,同時(shí)SFR也綜合的、實(shí)際的反映了整個(gè)單片機(jī)內(nèi)部的工作狀態(tài).11RAM及SFR的分布51系列:

RAM共128字節(jié),分布于地址00H-7FH空間

SFR離散分布于地址80H-FFH的空間,采用直接尋址方式訪問(wèn)52系列:

RAM共256字節(jié),分布于地址00H-FFH空間,

00H-7FH空間可采用直接尋址&間接尋址

80H-FFH空間只能采用間接尋址方式訪問(wèn)

SFR離散分布于地址80H-FFH的空間,只能采用直接尋址方式12位地址空間

211個(gè)(128個(gè)+83個(gè))尋址位。位地址范圍為:00H~FFH。內(nèi)部RAM的可尋址位128個(gè)(字節(jié)地址20H~2FH)。特殊功能寄存器SFR為83個(gè)可尋址位。13內(nèi)部的可尋址位及位地址14SFR中的位地址分布15工作寄存器區(qū)的選擇18~1FH3組1110~17H2組1008~0FH1組0100~07H0組00R0~R7地址寄存器組RS1RS0復(fù)位后,默認(rèn)第0組處于工作狀態(tài)16存儲(chǔ)器結(jié)構(gòu)的特點(diǎn)地址重疊性程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器操作指令不同位地址空間共有兩個(gè)區(qū)域片外數(shù)據(jù)存儲(chǔ)器與I/O口統(tǒng)一編址173.指令系統(tǒng)注意指令的書(shū)寫規(guī)范

[標(biāo)號(hào)]:操作碼助記符[第1操作數(shù)],[第2操作數(shù)];[注釋]Loop1:mova,#0ffh;累計(jì)器A賦值為ff

標(biāo)號(hào):表示該指令所在的符號(hào)地址,一般由字母和數(shù)字組成,第一位為字母,其余位為字母、數(shù)字任選。操作碼助記符、第1操作數(shù)和第2操作數(shù):指令的核心部分。對(duì)于某些指令可能不存在完整的兩個(gè)操作數(shù)。注釋:是由用戶加入的文本,對(duì)匯編程序不起任何作用,只是方便閱讀。*第1操作數(shù)又稱目的操作數(shù),第2操作數(shù)又稱源操作數(shù)**51不區(qū)分大小寫***注意立即數(shù)的書(shū)寫要求18指令系統(tǒng)尋址方式:

1.寄存器尋址:mova,#20h2.直接尋址:mova,20h3.寄存器間接尋址:mova,@r04.立即尋址:mova,#0ffh5.基址寄存器加變址寄存器間接尋址

movca,@a+dptr19常用的部分偽指令ORGENDEQUDB20偽指令簡(jiǎn)介

ORG起點(diǎn)指令

ORGaddr16org0000hORG指令用于指明程序代碼或數(shù)據(jù)塊在存儲(chǔ)器中的起始地址。addr16代表一個(gè)16位地址,即程序或數(shù)據(jù)塊的首地址。EQU等值指令標(biāo)號(hào)EQU表達(dá)式

aaaequ30h

EQU指令用于為程序中的任意標(biāo)號(hào)賦值。程序中的常量通常可以用標(biāo)號(hào)代替,便于修改。

主程序前要先用equ指令為常量標(biāo)號(hào)賦值。21偽指令簡(jiǎn)介

DB定義字節(jié)指令

[標(biāo)號(hào)]:

DB數(shù)據(jù)列表

DB指令用于定義字節(jié)型數(shù)據(jù)或數(shù)據(jù)串,并將數(shù)據(jù)作為常數(shù)填入指定的存儲(chǔ)器單元中。

END結(jié)束匯編指令

[標(biāo)號(hào)]:

ENDEND指令置于程序結(jié)尾處,作為源程序結(jié)束的標(biāo)志。224.定時(shí)/計(jì)數(shù)器及其子程序兩個(gè)16位定時(shí)/計(jì)數(shù)器存放初值的SFRT0:TH0、TL0T1:TH1、TL1其它相關(guān)的SFR:

TMOD(工作方式控制寄存器)

TCON(控制寄存器)定時(shí)功能時(shí),每個(gè)機(jī)器周期定時(shí)器加1

計(jì)數(shù)功能時(shí),在外部相應(yīng)輸入腳(T0和T1)有下降沿時(shí),計(jì)數(shù)器加1。

23

定時(shí)/計(jì)數(shù)器的工作方式24定時(shí)/計(jì)數(shù)器應(yīng)用要點(diǎn)幾種工作方式的區(qū)別定時(shí)器的啟動(dòng)、定時(shí)時(shí)間到的判斷初值的計(jì)算25定時(shí)/計(jì)數(shù)器的輸入信號(hào)

工作于定時(shí)器方式:對(duì)內(nèi)部時(shí)鐘信號(hào)計(jì)數(shù),內(nèi)部時(shí)鐘信號(hào)的頻率為時(shí)鐘振蕩頻率的1/12,即每個(gè)機(jī)器周期計(jì)數(shù)值加1。例:采用12MHz頻率的晶體時(shí),每1μs計(jì)數(shù)值將加1。

由于定時(shí)的精度決定于輸入脈沖的周期,因此當(dāng)需要高分辨率的定時(shí)時(shí),應(yīng)盡量選用頻率較高的晶體(MCS51最高為12MHz)。26定時(shí)/計(jì)數(shù)器的輸入信號(hào)工作于計(jì)數(shù)器方式:當(dāng)定時(shí)/計(jì)數(shù)器用作計(jì)數(shù)器時(shí),計(jì)數(shù)脈沖來(lái)自外部輸入引腳T0或T1。當(dāng)輸入信號(hào)產(chǎn)生由1至0的跳變(即下跳沿)時(shí),計(jì)數(shù)器的值增1。需要注意:每個(gè)機(jī)器周期的S5P2期間,對(duì)外部輸入進(jìn)行采樣。如在第一個(gè)周期中采得的值為1,而在下一個(gè)周期中采得的值為0,則計(jì)數(shù)器加1。由于確認(rèn)一次下跳變至少要用兩個(gè)機(jī)器周期,即24個(gè)振蕩周期,因此外部輸入的計(jì)數(shù)脈沖的最高頻率為振蕩器頻率的1/24,同時(shí)輸入信號(hào)的高、低電平保持一個(gè)機(jī)器周期以上。例如:選用6MHz頻率的晶體,允許輸入的脈沖頻率為250kHz;如果選用12MHz頻率的晶體,則可輸入500kHz的外部脈沖。27定時(shí)/計(jì)數(shù)器的輸入信號(hào)理想的計(jì)數(shù)器輸入信號(hào):脈沖信號(hào)的高、低電平至少要各保持一個(gè)機(jī)器周期以上,確保電平在變化之前能被采樣一次。28定時(shí)器/計(jì)數(shù)器的編程初始化1根據(jù)要求給方式寄存器TMOD送一個(gè)方式控制字,以設(shè)定定時(shí)器的工作方式;2根據(jù)需要給TH和TL選送初值,以確定需要的定時(shí)時(shí)間或計(jì)數(shù)的初值;3根據(jù)需要給中斷允許寄存器IE送中斷控制字,以開(kāi)放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級(jí);

也可用查詢方式來(lái)響應(yīng)定時(shí)器。4給TCON送命令字以啟動(dòng)或禁止定時(shí)/計(jì)數(shù)器的運(yùn)行。29定時(shí)器/計(jì)數(shù)器的編程初值的計(jì)算計(jì)數(shù)器初值:

設(shè)計(jì)數(shù)模值為M,所需的計(jì)數(shù)值為C,計(jì)數(shù)初值設(shè)定為TC,則:TC=M-C(M=213,216,28)定時(shí)器初值:

定時(shí)器的模值為M,需要的定時(shí)時(shí)間為T,定時(shí)器的初值TC為:

TC=M-T/t機(jī)器周期

30編程方式采用查詢方式:程序一直檢測(cè)TF0(TF1),若TF0=1(TF1=1),說(shuō)明定時(shí)時(shí)間到或計(jì)滿數(shù),需要軟件清除溢出標(biāo)志位TFx。采用中斷方式:程序初始化時(shí),設(shè)置定時(shí)器溢出中斷允許后,內(nèi)部硬件自動(dòng)檢測(cè)到TF0=1(TF1=1)時(shí),自動(dòng)響應(yīng)中斷,進(jìn)入中斷服務(wù)程序。由硬件自動(dòng)清除TFx。31例1:

T0計(jì)數(shù)、T1定時(shí)工作于方式2

從P3.4T0輸入低頻脈沖,要求該脈沖每發(fā)生一次跳變時(shí)由P1.0輸出一個(gè)500us的負(fù)脈沖,與此同時(shí)由P1.1輸出一個(gè)寬為1ms的正脈沖(6MHz晶振)。先設(shè)T0為計(jì)數(shù)方式,工作于方式2,初值設(shè)為FFH,即加1即刻產(chǎn)生溢出。當(dāng)外部輸入一個(gè)下跳沿時(shí),T0計(jì)數(shù)器加1,并產(chǎn)生溢出,TF0=1;引起CPU的T0中斷。中斷服務(wù)程序內(nèi),對(duì)定時(shí)器T1設(shè)定初值,T1也工作于方式2。32含中斷的定時(shí)/計(jì)數(shù)器響應(yīng)程序ORG0HSJMPBEGINORG000BHAJMPTT1ORG0030HBEGIN:MOVTMOD,#26H MOVTH0,#0FFH MOVTL0,#0FFHCLRP1.1SetbET0;允許T0中斷SetbEA;CPU開(kāi)中斷

SETBP1.0SETBTR0SJMP$工作于方式2的定時(shí)/計(jì)數(shù)器33中斷服務(wù)程序

ORG300HTT1:MOVTH1,#06HMOVTL1,#06HSETBP1.1CLRP1.0SETBTR1DEL2:JBCTF1,RP1

SJMPDEL2RP1:SETBP1.0DEL3:JBCTF1,RP2SJMPDEL3RP2:CLRP1.1CLRTR1RETI345.串行通訊全雙工串行通訊口有關(guān)的SFRSBUF、SCON、PCON幾種工作方式的區(qū)別串行通訊波特率的設(shè)定雙機(jī)通訊的實(shí)現(xiàn)35串行口的工作方式SCON中:SM0、SM1工作方式選擇位36方式1、方式3

串行口方式3為9位數(shù)據(jù)全雙工異步通信方式,比串行口方式1增加了第9位數(shù)據(jù)位。TXD為發(fā)送數(shù)據(jù)端,RXD為接收數(shù)據(jù)端。一幀信息有11位,包括9位數(shù)據(jù)位,1個(gè)起始位“0”和1個(gè)停止位“1”。發(fā)送數(shù)據(jù)的第9位在TB8中,接收數(shù)據(jù)的第9位存入RB8中。第9位數(shù)據(jù)位也稱為可編程位,常用做奇偶校檢位或多機(jī)通信中的地址/數(shù)據(jù)識(shí)別位。方式3的波特率與方式1的相同,計(jì)算式為:(2SMOD/32)×T1溢出率。

37方式3的時(shí)序38波特率波特率的定義:串行口每秒鐘發(fā)送或者接收數(shù)據(jù)的位數(shù)。串行口方式1和方式3用定時(shí)器T1作為波特率發(fā)生器,其波特率有多種選擇,與T1的溢出率有關(guān)。

波特率=(2SMOD/32)×T1溢出率

39定時(shí)器T1產(chǎn)生波特率的計(jì)算T1溢出率:T1溢出時(shí)間的倒數(shù)。T1用于波特率發(fā)生器時(shí)一般工作于方式2,即常數(shù)自動(dòng)重裝入方式。

TH1=TL1為T1的時(shí)間常數(shù)

40波特率計(jì)算的幾點(diǎn)注意事項(xiàng):1)波特率的相對(duì)誤差不大于2.5%2)注意SMOD位對(duì)波特率的影響例如:通訊波特率設(shè)為2400,晶振頻率為6MHz,計(jì)算T1的計(jì)時(shí)常數(shù)。當(dāng)SMOD=0時(shí),計(jì)時(shí)常數(shù)約為249,相對(duì)誤差7%。當(dāng)SMOD=1時(shí),計(jì)時(shí)常數(shù)約為243,相對(duì)誤差0.16%。41T1產(chǎn)生的常用波特率通訊時(shí),盡量選用11.0592M的晶振42串行口的編程舉例設(shè)定波特率設(shè)定串行口的工作方式設(shè)計(jì)中斷服務(wù)程序或查詢程序

注意對(duì)TI、RI的處理(硬件置位、軟件清零)43MCS-51雙機(jī)串行通訊的實(shí)現(xiàn)如何進(jìn)行物理連線?波特率的選擇?工作方式的選擇?如何編程實(shí)現(xiàn)?44雙機(jī)串行通訊的實(shí)現(xiàn)-1正確進(jìn)行物理接線45雙機(jī)串行通訊的實(shí)現(xiàn)-2設(shè)定一致的波特率設(shè)定一致的串行口工作方式分別設(shè)計(jì)中斷服務(wù)程序或查詢程序

注意對(duì)TI、RI的處理(硬件置位、軟件清零)46方式3發(fā)送50H~5FH的內(nèi)容待發(fā)送的16個(gè)字節(jié)存放在片內(nèi)RAM中地址為50H~5FH串行口波特率為2400波特率發(fā)生器T1工作于方式2,且SMOD=0晶振為11.0592MHz計(jì)算得到TL1的初值為F4H。串行口工作于方式3第9位發(fā)送奇偶校驗(yàn)位47程序狀態(tài)寄存器:PSWPSW.1是保留位,未用。Cy(PSW.7)進(jìn)位標(biāo)志位,在執(zhí)行算術(shù)和邏輯指令時(shí),可以被硬件或軟件置位或清除,在位處理器中,它是位累加器。Ac(PSW.6)輔助進(jìn)位標(biāo)志位。F0(PSW.5)標(biāo)志位,它是由用戶使用的一個(gè)狀態(tài)標(biāo)志位。RS1、RS0(PSW.4、PSW.3):寄存器區(qū)選擇控制位OV(PSW.2):溢出標(biāo)志位。P(PSW.0)奇偶標(biāo)志位。每個(gè)指令周期都由硬件來(lái)置位或清除,以表示累加器A中值為1的位數(shù)的奇偶數(shù)。48例2:

方式3發(fā)送50H~5FH中內(nèi)容-1

ORG 0000H ;復(fù)位入口

AJMP MAIN ORG 0023H ;串行口中斷入口

AJMP L1 ORG 0100H ;主程序入口MAIN:MOV SCON,#0C0H ;串行口初始化,;用方式3發(fā)送,TI=0 MOV PCON,#00H ;SMOD=0MOV TMOD,#20H ;T1方式2定時(shí)

MOV TL1,#0F4H ;寫入T1時(shí)間常數(shù)

MOV TH1,#0F4H SETB TR1 ;啟動(dòng)T1 SETB EA SETB ES ;允許串行口中斷

MOV R0,#50H ;設(shè)數(shù)據(jù)指針

MOV R7,#10H ;數(shù)據(jù)長(zhǎng)度LOOP:MOV A,@R0 ;取一個(gè)字符

MOV C,P ;加奇偶校驗(yàn)

MOV TB8,C MOV SBUF,A ;發(fā)送一個(gè)字符HERE:SJMP HERE ;CPU原地循環(huán),等待發(fā)送結(jié)束49例2:

方式3發(fā)送50H~5FH中內(nèi)容-2L1:

CLR TI ;中斷服務(wù)程序,;發(fā)送結(jié)束標(biāo)志位清0DJNZ R7,NEXT ;發(fā)送完全部字符?CLR ES ;已發(fā)送完,關(guān)閉串行口中斷

SJMP TENDNEXT:

INC R0 ;未發(fā)送完,修改指針

MOV A,@R0;取下一個(gè)字符

MOV C,P ;加奇偶校驗(yàn)

MOV TB8,C MOV SBUF,A ;再次發(fā)送一個(gè)字符TEND:

RETI ;中斷返回主程序506.中斷系統(tǒng)有關(guān)的SFRIE、IP、TCON中斷源、中斷允許控制、中斷優(yōu)先級(jí)外中斷觸發(fā)方式的設(shè)定(電平觸發(fā)、邊沿觸發(fā))中斷的響應(yīng)及返回典型應(yīng)用51中斷系統(tǒng)中斷的概念在執(zhí)行程序的過(guò)程中,由于某種原因,必須盡快終止當(dāng)前的程序執(zhí)行,而去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束后,再回來(lái)繼續(xù)執(zhí)行被終止的程序。這個(gè)過(guò)程叫中斷。5253中斷優(yōu)先級(jí)如同時(shí)發(fā)生多件事件,按照需響應(yīng)事件的重要性選擇事件處理,稱之為中斷優(yōu)先級(jí)。中斷系統(tǒng)的功能:中斷優(yōu)先權(quán)排隊(duì)實(shí)現(xiàn)中斷嵌套自動(dòng)響應(yīng)中斷實(shí)現(xiàn)中斷返回548051的中斷系統(tǒng)5個(gè)中斷源,具有二個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷服務(wù)程序的嵌套。每個(gè)中斷源均可軟件編程為允許或禁止向CPU請(qǐng)求中斷、高優(yōu)先級(jí)或低優(yōu)先級(jí)中斷。中斷源為:INT0、C/T0、INT1、C/T1、串行口5556注意:不同中斷源中斷入口地址不同

中斷源入口地址外部中斷0定時(shí)器/計(jì)數(shù)器T0外部中斷1定時(shí)器/計(jì)數(shù)器T1串行口中斷0003H000BH0013H001BH0023H0000H0003H

RETI外部中斷0響應(yīng)過(guò)程57

中斷系統(tǒng)的編程開(kāi)放相應(yīng)的中斷源;(IE)設(shè)定中斷優(yōu)先級(jí);(IP)若為外部中斷,設(shè)定外部中斷的觸發(fā)方式(TCON)在相應(yīng)的中斷入口處寫入中斷程序中斷子程序的最后一條指令為RETI588051單片機(jī)的P1口控制8個(gè)LED燈,要求8個(gè)燈加1移位點(diǎn)亮,當(dāng)INT0引腳有下跳沿時(shí),燈全滅后全亮,然后燈繼續(xù)加1移位點(diǎn)亮。例4:外部中斷0的應(yīng)用59

ORG0000HAJMPSTORG0003HAJMPEXT0ORG0030HST:MOVSP,#70HMOVTCON,#01HMOVIP,#01HMOVIE,#81HRES:

MOVA,#0FFHLoop:MOVP1,ADECALCALLDelayLCALLDelayJNZLoopSJMPRES Delay:movr6,#0ffhmovr7,#0ffhDelay1:Djnzr6,Delay1Djnzr7,Delay1RET主程序

中斷優(yōu)先級(jí)控制IP(B8H)———PSPT1PX1PT0PX0

中斷使能控制IE(A8H)EA——ESET1EX1ET0EX0TCONTF1TR1TF0TR0IE1IT1IE0IT060中斷服務(wù)程序EXT0:PUSHAPUSHPSWsetbrs1;使用第2組工作寄存器

MOVA,#00 MOVP1,ALCALLDelayLCALLDelayCPLAMOVP1,ALCALLDelayLCALLDelayPOPPSWPOPARETI

617.MCS-51存儲(chǔ)器擴(kuò)展分配地址的方法:線選法、譯碼法外擴(kuò)程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器的實(shí)現(xiàn)熟悉2764、6264、74LS373/573、74LS138/139等芯片的功能62MCS-51單片機(jī)外部存儲(chǔ)器結(jié)構(gòu):哈佛結(jié)構(gòu)。MCS-51RAM和ROM的最大擴(kuò)展空間各為64KB。系統(tǒng)擴(kuò)展首先要構(gòu)造系統(tǒng)總線。按功能把系統(tǒng)總線分為三組:

1.地址總線(AdressBus,簡(jiǎn)寫AB)

2.數(shù)據(jù)總線(DataBus,簡(jiǎn)寫DB)3.控制總線(ControlBus,簡(jiǎn)寫CB)

63構(gòu)造系統(tǒng)總線64

1.以P0口作為數(shù)據(jù)總線(8位)。

2.以P0口經(jīng)8位鎖存器鎖存后的信號(hào)作為地址總線的低8位。

3.以P2口作為地址總線高8位。

4.控制信號(hào)線。 *ALE——

低8位地址鎖存信號(hào)。 *PSEN*——

擴(kuò)展程序存儲(chǔ)器讀選通信號(hào)。 *EA*——

內(nèi)外程序存儲(chǔ)器選擇信號(hào)。 *RD*和WR*——

擴(kuò)展RAM和I/O口的讀選通、寫選通信號(hào)。65存儲(chǔ)器擴(kuò)展方法擴(kuò)展存儲(chǔ)器即分配地址空間給每個(gè)芯片,注意要避免地址和數(shù)據(jù)的沖突芯片的片選端口為避免數(shù)據(jù)的沖突提供了方便,通過(guò)MCS51的地址線產(chǎn)生片選信號(hào)是避免地址沖突的有效途徑。片選控制線選法適用于系統(tǒng)芯片數(shù)目較少利用高端地址線(未用到的地址線)直接作為外擴(kuò)芯片的片選線,線路簡(jiǎn)單地址空間有重疊,即同一存儲(chǔ)空間可能對(duì)應(yīng)多個(gè)地址譯碼選通法適用于多片存儲(chǔ)器擴(kuò)展高端地址線經(jīng)譯碼器譯碼后作為存儲(chǔ)器片選線,線路需增加譯碼器芯片地址空間連續(xù),存儲(chǔ)芯片空間對(duì)應(yīng)地址唯一66強(qiáng)調(diào):MCS51外擴(kuò)存儲(chǔ)器應(yīng)注意的問(wèn)題程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器空間獨(dú)立,各擁有64k尋址空間數(shù)據(jù)存儲(chǔ)器擴(kuò)展與I/O口擴(kuò)展占用數(shù)據(jù)64k空間,統(tǒng)一編址數(shù)據(jù)總線與低8位地址總線復(fù)用,必須使用地址鎖存器實(shí)現(xiàn)低8位地址總線和數(shù)據(jù)總線的分離。67硬件電路原理圖2764地址:IC1(0000h~1fffh)IC2(2000h~3fffh)6264地址:IC3(5000h~5fffh)IC4(6000h~7fffh)688.I/O口擴(kuò)展8255、8155的使用(基本輸入輸出)簡(jiǎn)單I/O口擴(kuò)展:通過(guò)74LS377擴(kuò)展輸出口、74LS244擴(kuò)展輸入口69

8255A擴(kuò)展實(shí)例8255A與8031接口電路708255A的接口應(yīng)用舉例1.硬件接口電路8031擴(kuò)展1片8255A的電路圖。74LS373是地址鎖存器,P0.1、P0.0經(jīng)74LS373與8255A的地址線A1、A0連接;P0.7經(jīng)74LS373與片選端相連,其他地址線懸空。2.端口地址確定8255A各端口寄存器的地址為:A口:

FF7CHB口:

FF7DHC口:

FF7EH控制寄存器:

FF7FH713.軟件編程要求8255A工作在方式0,且A口作為輸入,B口、

C口作為輸出,程序如下:MOV A,#90H ;A口方式0輸入,B口、;C口輸出的控制字送AMOV DPTR,#0FF7FH;控制寄存器地址→DPTRMOVX@DPTR,A ;方式控制字→控制寄存器MOV DPTR,#0FF7CH;A口地址→DPTRMOVXA,@DPTR ;從A口讀數(shù)據(jù)MOVDPTR,#0FF7DH;B口地址→DPTRMOV A,#55H;要輸出的數(shù)據(jù)55H→AMOVX@DPTR,A;將55H送B口輸出MOVDPTR,#0FF7EH;C口地址→DPTRMOVA,#60H ;60H→AMOVX@DPTR,A ;將60H送C口輸出729.鍵盤接口的設(shè)計(jì)鍵盤的分類

編碼式:由專門的硬件(8279等)識(shí)別按下的鍵碼。非編碼式:依靠軟件實(shí)現(xiàn)鍵碼的識(shí)別。非編碼鍵盤的結(jié)構(gòu)獨(dú)立式鍵盤矩陣式鍵盤軟件實(shí)現(xiàn)按鍵識(shí)別的方法掃描法鍵盤使用中的注意事項(xiàng)鍵盤的抖動(dòng)73

鍵盤接口的工作原理獨(dú)立式鍵盤接口和矩陣式鍵盤接口。1.獨(dú)立式鍵盤接口

各鍵相互獨(dú)立,每個(gè)按鍵各接一根輸入線,通過(guò)檢測(cè)輸入線的電平狀態(tài)可很容易判斷那個(gè)鍵被按下。此種接口適于鍵數(shù)較少或操作速度較高的場(chǎng)合。

74獨(dú)立式鍵盤的檢測(cè)方式75鍵盤的抖動(dòng)問(wèn)題鍵盤的抖動(dòng)抖動(dòng)時(shí)間一般為5~10ms。為了保證CPU對(duì)鍵的閉合作一次,而且是僅作一次處理,必須消除抖動(dòng)可采用軟、硬件方法消除抖動(dòng)。**軟件消抖原理1)判斷是否有鍵按下;2)若有鍵按下,調(diào)用延時(shí)程序(延時(shí)時(shí)間大于10ms);3)再次判斷是否有鍵按下,并讀入相應(yīng)的鍵值.鍵盤工作時(shí)輸出的電壓波形76

獨(dú)立式鍵盤編程1)每個(gè)按鍵占用一根口線2)電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。3)適用于按鍵較少的場(chǎng)合。

特點(diǎn):可直接判斷哪個(gè)鍵按下;----------------------------------------------------------------------------------------------------------; 獨(dú)立式鍵盤的處理程序(實(shí)際應(yīng)用時(shí)要加延時(shí)消除抖動(dòng));----------------------------------------------------------------------------------------------------------LOOP: MOV A,P1 ;讀P1口電平狀態(tài)

ANL A,#0FH ;取P1口低4位

CJNE A,#0FH,KEY ;判斷是否有鍵按下

SJMP LOOP ;如沒(méi)有鍵按下,重新掃描KEY: CJNE A,#0EH,NEXT1 ;判斷是否為一號(hào)鍵按下

ACALL KEY1 ;調(diào)用一號(hào)鍵處理子程序

SJMP LOOPNEXT1: CJNE A,#0DH,NEXT2;判斷是否為2號(hào)鍵按下

ACALL KEY2 …778255A擴(kuò)展I/O口的獨(dú)立式按鍵接口電路PA0PA1PA2PA3PA4PA5PA6PA7*8255A工作于基本輸入輸出方式*PA口地址7FF0H78

矩陣式(行列式)鍵盤接口

用于按鍵數(shù)目較多的場(chǎng)合,由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,如下圖。**在需要按鍵數(shù)目較多的場(chǎng)合,矩陣式鍵盤與獨(dú)立式鍵盤相比,要節(jié)省較多的I/O口線。79矩陣式鍵盤的工作過(guò)程鍵沒(méi)有按下時(shí)行線和列線是分開(kāi)的,鍵按下將相應(yīng)的行線列線短接。連接行線的管腳作為輸入口,沒(méi)有鍵按下時(shí),被外電路拉高為“1”連接列線的管腳作為輸出口,需要掃描鍵盤時(shí),逐次輸出低電平,若此時(shí)有鍵按下,則與其交叉的行線回讀值為“0”,否則為“1”。根據(jù)當(dāng)前的掃描列線和回讀電平為“0”的行線可確定按下的鍵值。80矩陣式鍵盤鍵碼的判別對(duì)于一個(gè)規(guī)則編碼的矩陣式鍵盤,可以通過(guò)對(duì)鍵盤的列線依次進(jìn)行掃描(輸出低電平),然后回讀行線,如果哪一行的電平為低,說(shuō)明該行、該列的鍵被按下。該鍵的鍵碼為:鍵碼=該行首鍵碼+該列號(hào)0行1行2行3行

0列1列2列3列81矩陣式按鍵的識(shí)別方法(掃描法)82鍵盤程序設(shè)計(jì)設(shè)計(jì)要求判別鍵盤上有無(wú)鍵閉合去除鍵盤的機(jī)械抖動(dòng)判別閉合鍵的鍵號(hào)使處理器對(duì)鍵的一次閉合僅作一次處理程序流程鍵盤處理子程序流程83848586鍵盤的掃描方式程序控制掃描方式當(dāng)單片機(jī)空閑時(shí),才調(diào)用鍵盤掃描程序定時(shí)掃描方式每隔一定時(shí)間對(duì)鍵盤掃描一次,通常采用單片機(jī)內(nèi)定時(shí)器確定鍵盤掃描時(shí)間間隔中斷掃描方式利用按鍵操作產(chǎn)生的中斷來(lái)掃描鍵盤,優(yōu)點(diǎn)是及時(shí)響應(yīng)鍵盤操作,節(jié)省CPU時(shí)間8710.A/D、D/A擴(kuò)展MCS-51外擴(kuò)ADC0809MCS-51外擴(kuò)DAC083288ADC0809編程要點(diǎn)選通模擬量輸入通道發(fā)出啟動(dòng)信號(hào)用延時(shí)、查詢或中斷方法等待轉(zhuǎn)換結(jié)束初學(xué)階段建議采用延時(shí)的方法讀取轉(zhuǎn)換結(jié)果89ADC0809與8031接口電路設(shè)計(jì)*啟動(dòng)AD接口設(shè)計(jì)*轉(zhuǎn)換時(shí)鐘的提供,51單片機(jī)晶振6MHz*轉(zhuǎn)換完成判斷*模擬通道的選擇90ADC0809接口電路編程要求:

設(shè)計(jì)程序?qū)崿F(xiàn)對(duì)8路模擬信號(hào)的采樣,并把數(shù)據(jù)存儲(chǔ)在RAM區(qū)30H~37H中。

;---------------------------------------------------------------------------; ADC0809的0~7模擬通道對(duì)應(yīng)地址7FF8H~7FFFH;--------------------------------------------------------------------------- ORG 0000HMAIN: MOV R1,#30H ;置數(shù)據(jù)存儲(chǔ)區(qū)首地址

MOV DPTR,#7FF8H ;指向ADC0809的0通道

MOV R7,#08H ;置通道數(shù)LOOP: MOVX @DPTR,A ;啟動(dòng)轉(zhuǎn)換

ACALL DELAY_130us ;等待130us MOVX A,@DPTR ;讀取轉(zhuǎn)換結(jié)果

MOV @R1,A ;保存轉(zhuǎn)換結(jié)果

INC DPTR ;指向下一個(gè)轉(zhuǎn)換通道

INC R1 ;指向下一個(gè)存儲(chǔ)空間

DJNZ R7,LOOP ;判斷8個(gè)通道采樣是否完成?

…91DAC0832與8031單緩沖接口硬件設(shè)計(jì)0832地址8000HDAC0832單緩沖方式應(yīng)用原理圖92

鋸齒波的產(chǎn)生

ORG2000HSTART:MOVDPTR,#8000H;DAC地址8000H→R0MOVA,#00H ;數(shù)字量→ALOOP:MOVX@DPTR,A ;數(shù)字量→D/A轉(zhuǎn)換器

INCA ;數(shù)字量逐次加1SJMPLOOP累加器A的值從0開(kāi)始輸出(模擬量為0V),逐次加1,到FFH時(shí)(模擬量為5V),再加1則A又變?yōu)?(模擬量又為0V),程序循環(huán)后得到鋸齒波。93三、MCS-51單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)設(shè)計(jì)一個(gè)單片機(jī)測(cè)控系統(tǒng),一般可分為四個(gè)步驟:(1)需求分析,方案論證和總體設(shè)計(jì)階段需求分析:被測(cè)控參數(shù)的形式(電量、非電量、模擬量、數(shù)字量等)、被測(cè)控參數(shù)的范圍、性能指標(biāo)、系統(tǒng)功能、工作環(huán)境、顯示、報(bào)警、打印要求等。方案論證:根據(jù)要求,設(shè)計(jì)出符合現(xiàn)場(chǎng)條件的軟硬件方案,力求系統(tǒng)簡(jiǎn)單、經(jīng)濟(jì)、可靠,這是進(jìn)行方案論證與總體設(shè)計(jì)一貫堅(jiān)持的原則。94(2)器件選擇,電路設(shè)計(jì)制作,數(shù)據(jù)處理,軟件的編制階段。(3)系統(tǒng)調(diào)試與性能測(cè)定。(4)文件編制95(1)單片機(jī)系統(tǒng)的擴(kuò)展部分設(shè)計(jì)包括存儲(chǔ)器擴(kuò)展和I/O接口擴(kuò)展。存儲(chǔ)器的擴(kuò)展指EPROM、EEPROM和RAM的擴(kuò)展,I/O接口擴(kuò)展是指8255、8155以及其它I/O功能器件的擴(kuò)展。(2)各功能模塊的設(shè)計(jì)如信號(hào)測(cè)量功能模塊、控制功能模塊、人機(jī)對(duì)話功能模塊、通訊功能模塊等,根據(jù)系統(tǒng)功能要求配置相應(yīng)的A/D、D/A、鍵盤、顯示器、打印機(jī)等外圍設(shè)備。a.盡可能采用功能強(qiáng)的芯片。b.單片機(jī)可優(yōu)先考慮選用片內(nèi)帶有閃爍存儲(chǔ)器的產(chǎn)品。例如ATMEL公司的89C51/89C52??墒箶U(kuò)展程序存儲(chǔ)器的工作省去,從而減少芯片的數(shù)目,縮小體積。c.EPROM空間和RAM空間。目前EPROM容量越來(lái)越大,一般盡量選用容量大的EPROM。d.I/O端口,要留有余量。e.A/D和D/A通道,要留有余量。(3)工藝設(shè)計(jì)機(jī)箱、面板、配線等1.應(yīng)用系統(tǒng)的硬件設(shè)計(jì)962.應(yīng)用系統(tǒng)的軟件設(shè)計(jì)(1)根據(jù)軟件功能要求,將系統(tǒng)軟件分成若干個(gè)相對(duì)獨(dú)立的部分。(2)各功能程序?qū)嵭心K化、子程序化。既便于調(diào)試、鏈接,又便于移植、修改、維護(hù)。(3)編應(yīng)用軟件前,應(yīng)繪制出程序流程圖。這不僅是程序設(shè)計(jì)的一個(gè)重要組成部分,而且是決定成敗的關(guān)鍵部分。(4)要合理分配系統(tǒng)資源,包括ROM、RAM、定時(shí)器/計(jì)數(shù)器、中斷源等。

**其中最關(guān)鍵的是片內(nèi)RAM分配,對(duì)8031來(lái)講,片內(nèi)RAM指00H~7FH單元,這128個(gè)字節(jié)的功能不完全相同,分配時(shí)應(yīng)充分發(fā)揮其特長(zhǎng),做到物盡其用。973.MCS-51單片機(jī)系統(tǒng)舉例

介紹幾個(gè)單片機(jī)應(yīng)用系統(tǒng),供設(shè)計(jì)時(shí)參考。

8031的最小系統(tǒng)8031無(wú)片內(nèi)程序存儲(chǔ)器,因此,其最小應(yīng)用系統(tǒng)必須在片外擴(kuò)展EPROM,必須有復(fù)位及時(shí)鐘電路。下圖為8031外擴(kuò)程序存儲(chǔ)器的最小應(yīng)用系統(tǒng)。該系統(tǒng)僅完成數(shù)字量的輸入和輸出控制。988031最小系統(tǒng)9989C51的最小系統(tǒng)1004.以單片機(jī)為核心的數(shù)據(jù)采集系統(tǒng)(一)數(shù)據(jù)采集系統(tǒng)的組成數(shù)據(jù)采集系統(tǒng)一般由信號(hào)調(diào)理電路、多路切換電路、采樣保持電路、A/D、CPU、RAM、EPROM組成。101數(shù)據(jù)采集系統(tǒng)各部分說(shuō)明(1)信號(hào)調(diào)理電路傳感器與A/D之間的橋梁,是測(cè)控系統(tǒng)中重要組成部分。主要功能:(a)目前標(biāo)準(zhǔn)化工業(yè)儀表通常采用0~10mA,4~20mA信號(hào),為了和A/D的輸入形式相適應(yīng),經(jīng)I/V轉(zhuǎn)換器變換成電壓信號(hào)。(b)某些測(cè)量信號(hào)可能是非電量,這些非電壓量信號(hào)必須變?yōu)殡妷盒盘?hào),還有些信號(hào)即使是電壓信號(hào),也必須經(jīng)過(guò)放大、濾波,這些處理包括信號(hào)形式的變換、量程調(diào)整、零點(diǎn)補(bǔ)償、線性化等。(c)某些惡劣條件下,共模電壓干擾很強(qiáng),必須根據(jù)現(xiàn)場(chǎng)環(huán)境,考慮共模干擾的抑制,甚至采用隔離措施,包括地線隔離、路間隔離等等。102

綜上所述,非電量的轉(zhuǎn)換、信號(hào)形式的變換、放大、濾波、共模抑制及隔離等等,都是信號(hào)調(diào)理的主要功能。

信號(hào)調(diào)理電路包括電橋、放大、濾波、隔離等電路。根據(jù)不同的調(diào)理對(duì)象,采用不同的電路。

信號(hào)放大電路通常由運(yùn)放承擔(dān),運(yùn)放的選擇主要考慮精度要求(失調(diào)及失調(diào)溫漂),速度要求(帶寬、上升率),幅度要求(工作電壓范圍及增益)及共模抑制要求。

濾波和限幅電路通常采用二極管、穩(wěn)壓管、電容等器件。用二極管和穩(wěn)壓管的限幅方法會(huì)產(chǎn)生一定的非線性且靈敏度下降,這可以通過(guò)后級(jí)增益調(diào)整和非線性校正補(bǔ)償。103(2)多路切換電路:通常檢測(cè)的物理量有多個(gè),不可能每一個(gè)通道都設(shè)有放大、濾波、補(bǔ)償?shù)入娐?,可采用多路切換降低成本。(3)采樣保持電路(S/H):將快速變化的模擬信號(hào)進(jìn)行保持,以供A/D轉(zhuǎn)換。(4)模-數(shù)轉(zhuǎn)換(ADC)(5)基本單片機(jī)系統(tǒng)設(shè)計(jì)(二)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)中的地址空間分配與總線驅(qū)動(dòng)有時(shí)要擴(kuò)多片存儲(chǔ)器芯片,要解決兩個(gè)問(wèn)題:(a)如何把兩個(gè)64K存儲(chǔ)器空間分配給各個(gè)芯片;(b)如何解決對(duì)多片芯片的驅(qū)動(dòng)問(wèn)題。104(1)地址空間的分配下圖是一個(gè)全地址譯碼的系統(tǒng)實(shí)例。105器件地址線(A15-A0)片內(nèi)地址單元數(shù)地址編碼6264000×××××××××××××8K0000H-1FFFH8255(1)00111111111111××43FFCH-3FFFH8155RAM

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論