單片機(jī)嵌入式系統(tǒng)原理及應(yīng)用賈好來(lái)單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)_第1頁(yè)
單片機(jī)嵌入式系統(tǒng)原理及應(yīng)用賈好來(lái)單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)_第2頁(yè)
單片機(jī)嵌入式系統(tǒng)原理及應(yīng)用賈好來(lái)單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)_第3頁(yè)
單片機(jī)嵌入式系統(tǒng)原理及應(yīng)用賈好來(lái)單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)_第4頁(yè)
單片機(jī)嵌入式系統(tǒng)原理及應(yīng)用賈好來(lái)單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩218頁(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)介

單片機(jī)嵌入式系統(tǒng)原理及應(yīng)用賈好來(lái)單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)第1頁(yè)/共223頁(yè)2單片機(jī)應(yīng)用系統(tǒng)必然包含合適的外圍器件。外圍器件與單片機(jī)的接口是單片機(jī)應(yīng)用系統(tǒng)至關(guān)重要的環(huán)節(jié)。本章主要講述8051單片機(jī)與常見(jiàn)的程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、數(shù)字I/O通道的接口技術(shù),模擬輸入輸出通道和單片機(jī)的接口技術(shù)。第2頁(yè)/共223頁(yè)3本章內(nèi)容9.18051程序存儲(chǔ)器的擴(kuò)展9.28051數(shù)據(jù)存儲(chǔ)器擴(kuò)展9.38051的I/O接口擴(kuò)展9.4鍵盤與顯示器接口9.58051單片機(jī)和A/D及D/A的接口9.6單總線1-Wire接口的溫度傳感器DS18B20及其應(yīng)用第3頁(yè)/共223頁(yè)49.18051程序存儲(chǔ)器的擴(kuò)展存儲(chǔ)器分類:只讀存儲(chǔ)器(ROM):ROM中的信息一旦寫入之后,就不能隨意更改,特別是不能在程序運(yùn)行的過(guò)程中寫入新的內(nèi)容,故稱之為只讀存儲(chǔ)器。ROM又分為:掩膜ROM、可編程ROM、EPROM、E2PROM、FlashROM等。隨機(jī)存儲(chǔ)器(RAM):RAM在程序運(yùn)行過(guò)程中可根據(jù)需要隨時(shí)更改其中的內(nèi)容,斷電后不能保存數(shù)據(jù)。E2PROM(EEPROM):是一種用電信號(hào)編程、電信號(hào)擦除的ROM芯片,寫入的速度比較慢,但斷電后能夠保存信息。第4頁(yè)/共223頁(yè)5FlashROM:又稱閃爍存儲(chǔ)器,是非易失性、電擦除型存儲(chǔ)器。其特點(diǎn)是可快速在線修改其存儲(chǔ)單元中的數(shù)據(jù),標(biāo)準(zhǔn)改寫次數(shù)可達(dá)1萬(wàn)次。與E2PROM相比,F(xiàn)lashROM的讀寫速度都很快。由于其性能比E2PROM要好,所以目前大有取代E2PROM的趨勢(shì)。MCS-51系列單片機(jī)具有64KB的程序存儲(chǔ)器空間,其中8051、8751型單片機(jī)含有4KB的片內(nèi)程序存儲(chǔ)器,而8031型單片機(jī)則無(wú)片內(nèi)程序存儲(chǔ)器。當(dāng)采用8051、8751型單片機(jī)而程序超過(guò)4KB,或采用8031型單片機(jī)時(shí),就需要進(jìn)行程序存儲(chǔ)器的擴(kuò)展。第5頁(yè)/共223頁(yè)69.1.18051外部程序存儲(chǔ)器的操作時(shí)序圖9-1是與訪問(wèn)外部程序存儲(chǔ)器有關(guān)的時(shí)序圖。其中a)是沒(méi)有訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器,即沒(méi)有執(zhí)行MOVX類指令情況下的時(shí)序;b)是訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器操作時(shí)的時(shí)序。CPU由外部程序存儲(chǔ)器取指時(shí),16位地址的低8位PCL由P0輸出,高8位PCH由P2輸出,而指令由P0輸入。第6頁(yè)/共223頁(yè)7第7頁(yè)/共223頁(yè)8第8頁(yè)/共223頁(yè)9在不執(zhí)行MOVX指令時(shí),P2口專用于輸出PCH,P2有輸出鎖存功能,可直接接至外部存儲(chǔ)器的地址端,無(wú)需再加鎖存。P0口則作分時(shí)復(fù)用的雙向總線,輸出PCL,輸入指令。在這種情況下,每一個(gè)機(jī)器周期中,允許地址鎖存信號(hào)ALE兩次有效,在ALE由高變低時(shí),有效地址PCL出現(xiàn)在P0總線上,低8位地址鎖存器應(yīng)在此時(shí)把地址鎖存起來(lái)。同時(shí)也是每個(gè)機(jī)器周期兩次有效,用于選通外部程序存儲(chǔ)器,使指令送到P0總線上,由CPU取入。第9頁(yè)/共223頁(yè)10當(dāng)系統(tǒng)中接有外部數(shù)據(jù)存儲(chǔ)器,執(zhí)行MOVX指令時(shí),時(shí)序有些變化,見(jiàn)圖b)若執(zhí)行的是MOVX@DPTR指令,則此地址就是DPL值(數(shù)據(jù)指針的低8位),同時(shí),在P2口出現(xiàn)有效的DPH值(數(shù)據(jù)指針的高8位);若執(zhí)行的是MOVX@Ri指令,則此地址就是Ri的內(nèi)容,同時(shí)在P2口線上出現(xiàn)的將是專用寄存器P2(即口內(nèi)鎖存器)的內(nèi)容。第10頁(yè)/共223頁(yè)119.1.2并行EEPROM及其擴(kuò)展AT28C64B是ATMEL公司生產(chǎn)的高速并行EEPROM,存儲(chǔ)容量8k×8bit;讀取時(shí)間70ns,最大頁(yè)寫入時(shí)間10ms;工作電流為40mA,待機(jī)電流100μA;硬件和軟件數(shù)據(jù)保護(hù);數(shù)據(jù)輪詢和觸發(fā)位用于寫結(jié)束檢測(cè);可靠性高:100000次擦寫,數(shù)據(jù)可保存10年;單電源供電,其引腳和內(nèi)部框圖如圖9-2:第11頁(yè)/共223頁(yè)12a)引腳圖b)內(nèi)部結(jié)構(gòu)框圖圖9-2

AT28C64的引腳和內(nèi)部結(jié)構(gòu)框圖

A0~A12:

地址線; I/O0-I/O7:數(shù)據(jù)的輸入輸出;

:芯片使能,低電平有效;

:輸出使能,低電平有效;

:寫使能,低電平有效。

第12頁(yè)/共223頁(yè)對(duì)AT28C64的讀寫

對(duì)AT28C64的讀寫和SRAM相同,無(wú)非是寫入時(shí)間略長(zhǎng)。在寫入命令發(fā)出后,需要判斷寫入過(guò)程是否結(jié)束。工程上常采取延時(shí)的方法或查詢I/O7,也就是所謂的輪詢功能。輪詢功能是指在28C64寫入期間,如果讀取I/O7上的數(shù)據(jù),則得到最后一次寫入數(shù)據(jù)的補(bǔ)碼,即如果在I/O7寫入的數(shù)據(jù)為邏輯“1”,則讀出的數(shù)據(jù)為“0”;反之,如果在I/O7寫入的數(shù)據(jù)為邏輯“0”,則讀出的數(shù)據(jù)為“1”。當(dāng)寫入過(guò)程結(jié)束,則從I/O7引腳讀出的數(shù)據(jù)是真實(shí)的寫入數(shù)據(jù)。13第13頁(yè)/共223頁(yè)1428C64和89S52的連接28C64既可作為外部程序存儲(chǔ)器,又可作為數(shù)據(jù)存儲(chǔ)器。在寫入期間,單片機(jī)通過(guò)查詢I/O7引腳狀態(tài),來(lái)判斷寫入過(guò)程是否結(jié)束。28C64的片選信號(hào)由P2.7提供。因28C64可作為外部程序存儲(chǔ)器和外部數(shù)據(jù)存儲(chǔ)器合并使用,故將信號(hào)和加到與門74HC08上,并將其輸出與28C64的數(shù)據(jù)輸出允許信號(hào)相連。第14頁(yè)/共223頁(yè)15圖9-3AT89S52單片機(jī)和AT28C64的接口第15頁(yè)/共223頁(yè)16

例9-1

根據(jù)AT89S52單片機(jī)和AT28C64的接口電路,編寫對(duì)AT28C64進(jìn)行寫操作的字程序。要寫入的數(shù)據(jù)區(qū)取自源數(shù)據(jù)區(qū)。

子程序的入口參數(shù)如下:

R0:寫入的字節(jié)計(jì)數(shù)器 R1:28C64的低8位地址寄存器

R2:AT28C64的高8位地址寄存器 R3:源數(shù)據(jù)區(qū)首地址的低8位寄存器

R4:源數(shù)據(jù)區(qū)首地址的高8位寄存器 R5:寫入的數(shù)據(jù)第16頁(yè)/共223頁(yè)17解:程序清單如下:

WR1: MOV DP0L,R3 MOV DP0H,R4;源數(shù)據(jù)區(qū)16位地址傳輸?shù)? ;DPTR0中

MOVXA,@DPTR;取數(shù)據(jù)

MOV R5,A INC DPTR MOV R3,DP0L MOV R4,DP0H MOV DP0L,R1 MOV DP0H,R2;28C64地址傳輸?shù)紻PTR0中

MOVX @DPTR,A;將A的內(nèi)容寫入28C64H

第17頁(yè)/共223頁(yè)18

NOP NOP NOP WAIT:MOVXA,@DPTR;讀取最后一次寫入的數(shù)據(jù)

XRLA,R5 JNZWAIT;寫入的I/O7和讀出的I/O7不相等 ;寫入沒(méi)有結(jié)束,等待

INCDPTR MOVR1,DP0L MOVR2,DP0H DJNZR0,WR1 ;未完成,循環(huán)

RET第18頁(yè)/共223頁(yè)199.1.3并行Flash存儲(chǔ)器FM16W08及其擴(kuò)展性能特點(diǎn)存儲(chǔ)容量為64Kbit(即8k×8byte);讀寫壽命為100億次;掉電數(shù)據(jù)可保存38年;寫數(shù)據(jù)無(wú)延時(shí);讀取時(shí)間為70ns;讀周期約為130ns;低功耗,工作電流為12mA,待機(jī)電流僅為20μA;寬電壓范圍供電,2.7V~5.5V;工作溫度范圍為-40℃~+85℃;具有特別優(yōu)良的防潮濕、防電擊及抗震性能;與并行SRAM或E2PROM管腳兼容。第19頁(yè)/共223頁(yè)20引腳定義A0~A12 :地址線,在的下降沿被鎖定;DQ0~DQ7 :數(shù)據(jù)輸入輸出線;:片選信號(hào)線,為低電平時(shí),芯片被選中;:輸出使能,低電平時(shí),F(xiàn)M16W08把數(shù)據(jù)送到總線;為高電平時(shí),數(shù)據(jù)線為高阻態(tài);

:寫使能,低電平時(shí),總線的數(shù)據(jù)寫入由A0~A12確定的地址中。第20頁(yè)/共223頁(yè)21圖9-4FM16W08的引腳和內(nèi)部結(jié)構(gòu)框圖第21頁(yè)/共223頁(yè)22

(1)讀操作FW16W08的讀操作一般在下降沿開(kāi)始,這時(shí)地址位被鎖存,存儲(chǔ)器讀周期開(kāi)始,一旦開(kāi)始,應(yīng)使保持不變,一個(gè)完整的存儲(chǔ)器周期可在內(nèi)部完成,在訪問(wèn)時(shí)間結(jié)束后,總線上的數(shù)據(jù)變?yōu)橛行А.?dāng)?shù)刂繁绘i存后,地址值可在滿足保持時(shí)間參數(shù)的基礎(chǔ)上發(fā)生改變,這一點(diǎn)不象SRAM,地址被鎖存后改變地址值不會(huì)影響存儲(chǔ)器的操作。第22頁(yè)/共223頁(yè)23符號(hào)VDD2.7Vto3.0VMinMaxVDD3.0Vto5.5VMinMax單位tCE8070nstCA8070nstRC145130nstPC6560nstAS00nstAH1515nstOE1512nstHZ1515nstOHZ1515ns圖9-5FM16W08的讀時(shí)序和參數(shù)第23頁(yè)/共223頁(yè)24(2)寫操作FW16W08的寫操作由和控制,地址在的下降沿鎖存。控制寫操作時(shí),在開(kāi)始寫周期之前置0,即當(dāng)有效時(shí),應(yīng)先為低電平。FRAM沒(méi)有寫延時(shí),讀與寫訪問(wèn)時(shí)間是一致的,整個(gè)存儲(chǔ)器操作一般在一個(gè)總線周期出現(xiàn)。因此,任何操作都能在一個(gè)寫操作后立即進(jìn)行,而不象E2PROM需要通過(guò)判斷來(lái)確定寫操作是否完成。第24頁(yè)/共223頁(yè)25符號(hào)VDD2.7Vto3.0VMinMaxVDD3.0Vto5.5VMinMax單位tCA80807070nstPC6560nstWC145130nstAS00nstAH1515nstWS00nstWH015012nstDS40153015nstDH015015ns圖9-6FM16W08的寫時(shí)序和參數(shù)第25頁(yè)/共223頁(yè)26(3)充電操作預(yù)充電操作是準(zhǔn)備一次新訪問(wèn)存儲(chǔ)器的一個(gè)內(nèi)部條件,所有存儲(chǔ)器周期包括一個(gè)存儲(chǔ)器訪問(wèn)和一個(gè)預(yù)充電,預(yù)充電在腳為高電平或無(wú)效時(shí)開(kāi)始,它必須保持高電平至少為最小的預(yù)充電時(shí)間,由于預(yù)充電在上升沿開(kāi)始,這使得用戶可決定操作的開(kāi)始,同時(shí)該器件有一個(gè)為低電平必須滿足的最大時(shí)間規(guī)范。第26頁(yè)/共223頁(yè)27Flash存儲(chǔ)器FM16W08和SRAM時(shí)序的區(qū)別:FRAM、SRAM外部引腳雖然相同,但讀寫時(shí)序有所不同,編寫對(duì)應(yīng)的讀寫程序時(shí),需要考慮其不同之處。圖9-7FRAM和SRAM的選通信號(hào)第27頁(yè)/共223頁(yè)284.FRAM和8051單片機(jī)的接口8051單片機(jī)的ALE引腳為地址鎖存允許信號(hào),訪問(wèn)單片機(jī)外部存儲(chǔ)器時(shí),該腳將輸出一個(gè)負(fù)跳沿的脈沖以用于鎖存16位地址的低8位。要保證對(duì)FM16W08的正確訪問(wèn),必須注意兩點(diǎn):第一,F(xiàn)RAM的訪問(wèn)時(shí)間必須大于70ns;第二,ALE的高電平寬度必須大于60ns。第28頁(yè)/共223頁(yè)29

圖9-8AT89S52單片機(jī)和FM16W08的接口第29頁(yè)/共223頁(yè)309.28051數(shù)據(jù)存儲(chǔ)器擴(kuò)展數(shù)據(jù)存貯器的擴(kuò)展方法可分為:并行擴(kuò)展:數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)口和單片機(jī)的數(shù)據(jù)口P0相連,8051單片機(jī)每次可讀入或輸出8位數(shù)據(jù)。常見(jiàn)的數(shù)據(jù)存儲(chǔ)器芯片有6116、6264、62128等SRAM。串行擴(kuò)展:串口數(shù)據(jù)存儲(chǔ)器和單片機(jī)的接口方式為SPI總線或I2C總線,存儲(chǔ)器的類型主要是EEPROM和Flash,主要用于保存一些數(shù)據(jù)或常數(shù)。第30頁(yè)/共223頁(yè)319.2.1并行接口外部數(shù)據(jù)存貯器的操作時(shí)序

第31頁(yè)/共223頁(yè)32讀并行接口外部數(shù)據(jù)存貯器的時(shí)序

在第一個(gè)機(jī)器周期的S1,允許地址鎖存信號(hào)ALE由低變高①,開(kāi)始了讀周期。在S2狀態(tài),CPU把低8位地址送上P0總線,把高8位地址送上P2口(采用MOVX@DPTR指令)。ALE的下降沿②用來(lái)把低8位地址信息鎖存到外部鎖存器內(nèi)③。而高8位地址信息此后一直鎖存在P2口上,無(wú)需再加外部鎖存。在S3狀態(tài),P0總線驅(qū)動(dòng)器進(jìn)入高阻狀態(tài)④。在S4狀態(tài),讀控制信號(hào)變?yōu)橛行Б?,它使得被尋址的并行接口?shù)據(jù)存貯器略過(guò)片刻后把有效的數(shù)據(jù)送上總線⑥,當(dāng)回到高電平后⑦,被尋址的并行接口存貯器把其本身的總線驅(qū)動(dòng)器懸浮起來(lái)⑧,使P0總線又進(jìn)入高阻狀態(tài)。第32頁(yè)/共223頁(yè)33第33頁(yè)/共223頁(yè)34寫并行接口外部數(shù)據(jù)存貯器的時(shí)序

與上述類同。但寫的過(guò)程是CPU主動(dòng)把數(shù)據(jù)送上總線,故在時(shí)序上,CPU向P0總線送完被尋址存貯器的低8位地址后,在S3狀態(tài),就由送地址直接改為送數(shù)據(jù)上總線③,其間總線上不出現(xiàn)高阻懸浮狀態(tài)。在S4狀態(tài),寫控制信號(hào)有效,選通被尋址的存貯器,稍過(guò)片刻,P0上的數(shù)據(jù)就寫到被尋址的存貯器內(nèi)了。第34頁(yè)/共223頁(yè)359.2.28051單片機(jī)擴(kuò)展并行接口外部數(shù)據(jù)存貯器SRAM擴(kuò)展容量小于256B,用MOVX@Ri指令訪問(wèn)外部SRAM,只用P0口傳送8位地址;擴(kuò)展容量大于256B,用MOVX@DTPR指令訪問(wèn)外部SRAM,同時(shí)用P0和P2口傳送16位地址,P0口傳送低8位,P2口傳送高8位。1.6264的引腳和操作方式 6264是8k×8位的靜態(tài)隨機(jī)存儲(chǔ)器芯片,采用CMOS工藝制作,由單一+5V供電,額定功耗200mW,典型存取時(shí)間為200ns。為28腳雙列直插式封裝,其管腳如圖9-10所示。第35頁(yè)/共223頁(yè)36引腳操作方式(20)(26)(22)(27)IO0~I(xiàn)O7(11~13),(15~19)未選中(掉電)VIH任意任意任意高阻未選中(掉電)任意VIL任意任意高阻輸出禁止VILVIHVIHVIH高阻讀VILVIHVILVIHDOUT寫VILVIHVIHVILDIN寫VILVIHVILVILDIN圖9-106264引腳排列和操作方式第36頁(yè)/共223頁(yè)37圖9-11擴(kuò)展單片6264靜態(tài)數(shù)據(jù)存儲(chǔ)器電路第37頁(yè)/共223頁(yè)38注意:擴(kuò)展單片程序存儲(chǔ)器時(shí),片選端直接接地即可,因?yàn)橄到y(tǒng)中不會(huì)再有其它程序存儲(chǔ)器芯片。但是擴(kuò)展單片數(shù)據(jù)存儲(chǔ)器時(shí),其片選端能否直接接地則還須考慮應(yīng)用系統(tǒng)中有無(wú)I/O口及外圍設(shè)備擴(kuò)展,如果有,則要統(tǒng)一進(jìn)行片選選擇。第38頁(yè)/共223頁(yè)399.2.38051擴(kuò)展SPI接口外部Flash數(shù)據(jù)存貯器FM25040B1.FM25040B的特點(diǎn)存儲(chǔ)容量512×8bits讀寫次數(shù)1012數(shù)據(jù)可保存38年寫入無(wú)延遲總線頻率最高可達(dá)20Mhz硬件可直接替代EEPROM可運(yùn)行在SPI的模式0和模式3硬件寫保護(hù)和軟件寫保護(hù)待機(jī)電流4μA,工作電流250μA8引腳SOIC封裝第39頁(yè)/共223頁(yè)40引腳功能描述芯片選擇SCK串行時(shí)鐘輸入掛起寫保護(hù)SI串行數(shù)據(jù)輸入SO串行數(shù)據(jù)輸出2.FM25040B的結(jié)構(gòu)和引腳圖9-12FM25040B的內(nèi)部結(jié)構(gòu)和引腳排列第40頁(yè)/共223頁(yè)41圖9-12FM25040B的內(nèi)部結(jié)構(gòu)和引腳排列第41頁(yè)/共223頁(yè)423.FM25040B的操作命令和操作時(shí)序命令操作碼說(shuō)明WREN0000_0110B置位寫使能鎖存(SetWriteEnableLatch)WRDI0000_0100B寫禁止(WriteDisable)RDSR0000_0101B讀狀態(tài)寄存器(ReadStatusRegister)WRSR0000_0001B寫狀態(tài)寄存器(WriteStatusRegister)READ0000_A011B讀存儲(chǔ)器數(shù)據(jù)(ReadMemoryData)WRITE0000_A010B寫存儲(chǔ)器數(shù)據(jù)(WriteMemoryData)第42頁(yè)/共223頁(yè)(1)置位寫使能鎖存器命令—WRENFM25040B上電時(shí)禁止寫操作。在任何寫操作之前,必須發(fā)出WREN命令。在WREN命令發(fā)出之后允許發(fā)出寫操作代碼,包括寫狀態(tài)寄存器和寫存儲(chǔ)器命令。WREN操作使內(nèi)部寫使能鎖存器被置位。狀態(tài)寄存器的WEL表示鎖存器的狀態(tài)。WEL=1表示寫允許。任何寫操作的完成將自動(dòng)清除寫使能鎖存器,如果沒(méi)有新的WREN命令,則寫操作無(wú)法進(jìn)行。圖9-13是WREN命令的時(shí)序圖。43第43頁(yè)/共223頁(yè)圖9-13WREN命令的時(shí)序圖44第44頁(yè)/共223頁(yè)(2)寫禁止命令—WRDI

WRDI命令禁止所有的寫操作。在寫操作被禁止的情況下,狀態(tài)寄存器的WEL=0。圖9-14是WRDI命令時(shí)序圖。45圖9-14WRDI命令的時(shí)序圖第45頁(yè)/共223頁(yè)(3)讀狀態(tài)寄存器命令—RDSR

讀狀態(tài)寄存器命令RDSR允許主器件校驗(yàn)狀態(tài)寄存器的內(nèi)容。狀態(tài)寄存器提供了寫保護(hù)當(dāng)前狀態(tài)。在RDSR命令之后,F(xiàn)M25040B返回單字節(jié)的狀態(tài)寄存器內(nèi)容。狀態(tài)寄存器詳細(xì)描述見(jiàn)“狀態(tài)寄存器和寫保護(hù)”。圖9-15是RDSR命令時(shí)序圖46圖9-15RDSR命令時(shí)序圖第46頁(yè)/共223頁(yè)(4)寫狀態(tài)寄存器命令—WRSR

WRSR命令允許用戶向單字節(jié)的狀態(tài)寄存器做寫操作而確定寫保護(hù)作用的范圍或者不起保護(hù)作用。在發(fā)出WRSR命令之前,

必須為高或者無(wú)效。在發(fā)出WRSR命令之前,WREN命令必須先發(fā)出。注意,WRSR命令是寫操作,且執(zhí)行完畢后將清除寫使能鎖存器,WRSR對(duì)應(yīng)的總線時(shí)序圖如圖9-16所示。47第47頁(yè)/共223頁(yè)圖9-16WRSR命令的時(shí)序圖48第48頁(yè)/共223頁(yè)(5)狀態(tài)寄存器和寫保護(hù)

FM25040B的寫保護(hù)特點(diǎn)是多層次的。首先,在任何寫操作之前,WREN命令必須發(fā)出。如果寫命令已經(jīng)發(fā)出,引腳和狀態(tài)寄存器控制存儲(chǔ)器的操作。如果

為低,全部存儲(chǔ)器被寫保護(hù);如果

為高,存儲(chǔ)器的寫保護(hù)由狀態(tài)寄存器決定。狀態(tài)寄存器結(jié)構(gòu)如表9-3所示。49第49頁(yè)/共223頁(yè)其中,位4-7和位0為“0”,且不能被修改。注意,因?yàn)镕RAM存儲(chǔ)器沒(méi)有寫延遲,存儲(chǔ)器不會(huì)出向“忙”現(xiàn)象,因此將位0設(shè)為邏輯“0”,而在EEPROM中,位0的意義為

。非易失的BP1和BP0表示寫保護(hù)的區(qū)域。WEL表示寫使能鎖存器的狀態(tài),由WREN命令置位,由WRDI命令或?qū)懼芷诮Y(jié)束時(shí)(變高)清除。BP1和BP0是存儲(chǔ)器模塊寫保護(hù)位,不同的BP1、BP0保護(hù)不同的存儲(chǔ)器模塊,表9-4為對(duì)應(yīng)的保護(hù)范圍。50表9-3FM25040B的狀態(tài)寄存器位6543210名稱000BP1BP0WEL0第50頁(yè)/共223頁(yè)表9-4FM25040B的存儲(chǔ)器寫保護(hù)范圍51BP1BP0保護(hù)范圍00無(wú)01180H~1FFH(高1/4)10100H~1FFH(高1/2)11000H~1FFH(全部)表9-5FM25040B的寫保護(hù)WEL被保護(hù)的存儲(chǔ)器模塊沒(méi)保護(hù)的存儲(chǔ)器模塊狀態(tài)寄存器0X被保護(hù)被保護(hù)被保護(hù)10被保護(hù)被保護(hù)被保護(hù)11被保護(hù)不保護(hù)不保護(hù)第51頁(yè)/共223頁(yè)(6)存儲(chǔ)器的寫操作和SPI總線的EEPROM不同,F(xiàn)M25040B能夠以總線速度執(zhí)行一系列的寫操作,且不需要頁(yè)寄存器,可執(zhí)行任意數(shù)量的寫操作。所有的存儲(chǔ)器寫操作均以操作命令WREN開(kāi)始。然后,主器件發(fā)出寫命令操作碼。寫命令操作碼包括存儲(chǔ)器地址的高位,操作碼的位3對(duì)應(yīng)于字節(jié)地址的A8;下一字節(jié)是存儲(chǔ)器地址的低8位A7-A0。這樣,9位地址確定了要寫入數(shù)據(jù)的第一字節(jié)的地址。緊接著的字節(jié)是要寫入的數(shù)據(jù)。數(shù)據(jù)的內(nèi)部地址隨主器件不斷發(fā)出的時(shí)鐘增加而增加。如果最后一個(gè)地址達(dá)到1FFH,計(jì)數(shù)器將回歸到0。寫操作時(shí)首先發(fā)送數(shù)據(jù)的MSB。和EEPROM不同,F(xiàn)M25040B可以連續(xù)寫入多個(gè)字節(jié)的數(shù)據(jù),且每個(gè)字節(jié)在輸入8個(gè)時(shí)鐘后立即寫入。在片選信號(hào)

的上升沿結(jié)束一次寫操作。圖9-17是存儲(chǔ)器寫的時(shí)序圖。52第52頁(yè)/共223頁(yè)圖9-17FM25040B的存儲(chǔ)器寫時(shí)序圖53第53頁(yè)/共223頁(yè)(7)存儲(chǔ)器的讀操作在片選信號(hào)

的下降沿,主器件可以發(fā)出讀操作指令碼。操作碼包括存儲(chǔ)器地址的高位,緊接著的是存儲(chǔ)器地址的低8位。這樣,9位地址確定了要讀出數(shù)據(jù)的第一字節(jié)的地址。在主器件輸出完整地讀操作碼之后,SI被忽略。然后,主器件發(fā)出8個(gè)時(shí)鐘脈沖,每個(gè)時(shí)鐘脈沖對(duì)應(yīng)于一位數(shù)據(jù)輸出,數(shù)據(jù)的內(nèi)部地址隨主器件不斷發(fā)出的時(shí)鐘增加而增加。如果地址到達(dá)1FFH,計(jì)數(shù)器回歸000H。讀首先讀MSB。在片選信號(hào)

的上升沿結(jié)束一次讀操作。圖9-18是存儲(chǔ)器讀的時(shí)序圖。54第54頁(yè)/共223頁(yè)圖9-18FM25040B的存儲(chǔ)器讀時(shí)序圖55第55頁(yè)/共223頁(yè)(8)總線掛起命令—HOLD引腳

用于中斷串行操作而不終止。若SCK=0,主器件將

拉低,則當(dāng)前操作暫停;若SCK=0,主器件將

拉高,則恢復(fù)操作。

必須在SCK=0時(shí)變化,而SCK則可在掛起狀態(tài)器件變化。FM25040B和AT89S52的接口 AT89S52沒(méi)有SPI接口,可以用普通I/O口模擬SPI口,如圖9-19所示。56第56頁(yè)/共223頁(yè)圖9-19AT89S52和FM25040B的接口57第57頁(yè)/共223頁(yè)589.38051的I/O接口擴(kuò)展

9.3.1I/O接口的功能

8051擴(kuò)展的I/O接口電路主要應(yīng)滿足以下幾項(xiàng)功能要求:1.實(shí)現(xiàn)和不同外設(shè)的速度匹配2.輸出數(shù)據(jù)鎖存和輸入數(shù)據(jù)三態(tài)緩沖3.CPU的負(fù)載能力和外圍設(shè)備端口選擇問(wèn)題第58頁(yè)/共223頁(yè)599.3.2端口的編址1.獨(dú)立編址方式獨(dú)立編址就是把I/O地址空間和數(shù)據(jù)存儲(chǔ)器地址空間分開(kāi)進(jìn)行編址。2.統(tǒng)一編址方式這種編址方式是把I/O端口的寄存器與數(shù)據(jù)存儲(chǔ)器單元同等對(duì)待,統(tǒng)一進(jìn)行編址。統(tǒng)一編址方式的優(yōu)點(diǎn)是不需要專門的I/O指令,直接使用訪問(wèn)數(shù)據(jù)存儲(chǔ)器的指令進(jìn)行I/O操作,簡(jiǎn)單、方便且功能強(qiáng)。第59頁(yè)/共223頁(yè)608051單片機(jī)使用的是統(tǒng)一編址方式,即I/O和外部數(shù)據(jù)存儲(chǔ)器RAM是統(tǒng)一編址的,用戶可以把外部64K字節(jié)的數(shù)據(jù)存儲(chǔ)器RAM空間的一部分作為擴(kuò)展的I/O接口的地址空間,每一個(gè)接口芯片中的一個(gè)功能寄存器(端口)的地址就相當(dāng)于一個(gè)RAM存儲(chǔ)單元,CPU可以象訪問(wèn)外部存儲(chǔ)器RAM那樣訪問(wèn)I/O接口芯片,對(duì)其功能寄存器進(jìn)行讀、寫操作。第60頁(yè)/共223頁(yè)619.3.3I/O數(shù)據(jù)的幾種傳送方式1.無(wú)條件傳送

無(wú)條件傳送類似于單片機(jī)和外部數(shù)據(jù)存儲(chǔ)器之間的數(shù)據(jù)傳送,比較簡(jiǎn)單。當(dāng)外設(shè)速度能和單片機(jī)的速度相比擬時(shí),常常采用無(wú)條件傳送方式。另外,當(dāng)外設(shè)的工作速度非常慢,以致人們?nèi)魏螘r(shí)候都認(rèn)為它已處于“準(zhǔn)備好”的狀態(tài)時(shí),也可以采用無(wú)條件傳送方式。第61頁(yè)/共223頁(yè)2.查詢狀態(tài)傳送查詢傳送方式下,單片機(jī)需要I/O接口為外設(shè)提供狀態(tài)和數(shù)據(jù)兩個(gè)端口,單片機(jī)通過(guò)狀態(tài)口查詢外設(shè)“準(zhǔn)備好”后就進(jìn)行數(shù)據(jù)傳送。查詢式傳送的優(yōu)點(diǎn)是通用性好,硬件連線和查詢程序十分簡(jiǎn)單,但是效率不是很高。為了提高單片機(jī)對(duì)外設(shè)的工作效率,通常采用中斷傳送I/O數(shù)據(jù)的方式。62第62頁(yè)/共223頁(yè)3.中斷傳送方式

中斷傳送方式是利用單片機(jī)本身的中斷功能和I/O接口的中斷功能來(lái)實(shí)現(xiàn)I/O數(shù)據(jù)的傳送。采用中斷方式可使單片機(jī)和外設(shè)并行工作。單片機(jī)只有在外設(shè)準(zhǔn)備好后才中斷主程序,而進(jìn)入外設(shè)的中斷服務(wù)程序,中斷服務(wù)完成后又返回主程序繼續(xù)執(zhí)行。因此,采用中斷方式可以大大提高單片機(jī)的工作效率。63第63頁(yè)/共223頁(yè)649.3.4可編程并行I/O芯片8255A

8255A具有3個(gè)8位并行I/O口,稱為PA口、PB口和PC口。其中PC口又分為高4位和低4位,通過(guò)控制字設(shè)定可以選擇三種工作方式:①基本輸入/輸出;②選通輸入/輸出;③PA口為雙向總線。

第64頁(yè)/共223頁(yè)65D7~D0:三態(tài)雙向數(shù)據(jù)線,與單片機(jī)數(shù)據(jù)總線連接,用來(lái)傳送數(shù)據(jù)信息;:片選信號(hào)線,低電平有效,表示芯片被選中;:讀出信號(hào)線,低電平有效,控制數(shù)據(jù)的讀出;:寫入信號(hào)線,低電平有效,控制數(shù)據(jù)的寫入;VCC:+5V電源;PA7~PA0:A口輸入/輸出線;PB7~PB0:B口輸入/輸出線;PC7~PC0:C口輸入/輸出線;RESET:復(fù)位信號(hào)線。A1~A0:地址線,用來(lái)選擇8255A內(nèi)部端口。1.

8255A的引腳第65頁(yè)/共223頁(yè)662.內(nèi)部結(jié)構(gòu)包括三個(gè)并行數(shù)據(jù)輸入/輸出端口,兩個(gè)工作方式控制電路,一個(gè)讀/寫控制邏輯電路和8位數(shù)據(jù)總線緩沖器。(1)8255A的三個(gè)8位并行口PA口:8位數(shù)據(jù)輸出鎖存器和緩沖器;一個(gè)8位數(shù)據(jù)輸入鎖存器。PB口:8位數(shù)據(jù)輸出鎖存器和緩沖器;一個(gè)8位數(shù)據(jù)輸入緩沖器(輸入不鎖存)。PC口:8位數(shù)據(jù)輸出鎖存器;一個(gè)8位數(shù)據(jù)輸入緩沖器(輸入不鎖存)。通常PA口、PB口作為輸入輸出口,PC口既可作為輸入輸出口,也可在軟件的控制下,分為兩個(gè)4位的端口,作為端口A、B選通方式操作時(shí)的狀態(tài)控制信號(hào)。第66頁(yè)/共223頁(yè)67圖9-218255A的內(nèi)部結(jié)構(gòu)圖9-208255A的引腳

第67頁(yè)/共223頁(yè)68(2)工作方式控制

工作方式控制電路有兩個(gè),一個(gè)是A組控制電路,另一個(gè)是B組控制電路。這兩組控制電路共有一個(gè)控制命令寄存器,用來(lái)接收中央處理器發(fā)來(lái)的控制字。A組控制電路用來(lái)控制A口和C口的上半部分(PC7~PC4)。B組控制電路用來(lái)控制B口和C口的下半部分(PC3~PC0)。第68頁(yè)/共223頁(yè)69(3)總線數(shù)據(jù)緩沖器總線數(shù)據(jù)緩沖器是一個(gè)三態(tài)雙向8位緩沖器,作為8255A與系統(tǒng)總線之間的接口,用來(lái)傳送數(shù)據(jù)、指令、控制命令以及外部狀態(tài)信息。(4)讀/寫控制邏輯電路

讀/寫控制邏輯電路接收CPU發(fā)來(lái)的控制信號(hào)、、、RESET、地址信號(hào)A1~A0等,然后根據(jù)控制信號(hào)的要求,將端口數(shù)據(jù)讀出,送往CPU或?qū)PU送來(lái)的數(shù)據(jù)寫入端口。各端口的工作狀態(tài)與控制信號(hào)的關(guān)系如表9-6所示。第69頁(yè)/共223頁(yè)70A1A0工作狀態(tài)00010A口數(shù)據(jù)→數(shù)據(jù)總線(讀端口A)01010B口數(shù)據(jù)→數(shù)據(jù)總線(讀端口B)10010C口數(shù)據(jù)→數(shù)據(jù)總線(讀端口C)00100數(shù)據(jù)總線→A口(寫端口A)01100數(shù)據(jù)總線→B口(寫端口B)10100數(shù)據(jù)總線→C口(寫端口C)11100數(shù)據(jù)總線→控制字寄存器(寫控制字)××××1數(shù)據(jù)總線為三態(tài)11010非法狀態(tài)××110數(shù)據(jù)總線為三態(tài)表9-68255A端口工作狀態(tài)選擇表第70頁(yè)/共223頁(yè)718255A的工作方式(方式0,方式1,方式2)方式0:基本輸入/輸出方式這種方式不需選通信號(hào)。PA,PB和PC中任一端口都可以通過(guò)方式控制字設(shè)定為輸入或輸出。第71頁(yè)/共223頁(yè)方式1:選通輸入/輸出方式共有3個(gè)口,被分為兩組。A組包括A口和PC7~PC4,A口可由編程設(shè)定為輸入或輸出,PC7~PC4作為輸入/輸出操作的選通信號(hào)和應(yīng)答信號(hào)。B組包括B口和PC3~PC0,這時(shí)C口作為8255A和外設(shè)或CPU之間傳送某些狀態(tài)信息及中斷請(qǐng)求信號(hào)。

72第72頁(yè)/共223頁(yè)73方式2:雙向傳送方式。

只有A口有方式2,此時(shí),A口為8位雙向傳送數(shù)據(jù)口,C口的高5位PC7~PC3用來(lái)作為指定A口輸入/輸出的控制聯(lián)絡(luò)線。第73頁(yè)/共223頁(yè)743.工作方式選擇控制字及C口置位/復(fù)位控制字(1)三種工作方式由寫入控制字寄存器的方式控制字來(lái)決定。方式控制字的格式如圖9-22所示。三個(gè)端口中C口被分為兩個(gè)部分,上半部分隨A口稱為A組,下半部分隨B口稱為B組。其中A口可工作于方式0,1和2,而B口只能工作在方式0和1。

例如,寫入工作方式控制字95H,可將8255A編程為:A口方式0輸入,B口方式1輸出,C口的上半部分(PC7~PC4)輸出,C口的下半部分(PC3~PC0)輸入。第74頁(yè)/共223頁(yè)75圖9-228255A的方式控制字第75頁(yè)/共223頁(yè)(2)C口8位中的任一位,可用一個(gè)寫入控制口的置位/復(fù)位控制字來(lái)對(duì)C口按位置“1”或清“0”。這個(gè)功能主要用于位控。C口按位置位/復(fù)位控制字的格式如圖9-23所示。

例如,07H寫入控制口,是PC3置1,08H寫入控制口,PC4清0。76第76頁(yè)/共223頁(yè)77圖9-23C口按位置位/復(fù)位控制字格式第77頁(yè)/共223頁(yè)4.8255A的三種工作方式:方式0、方式1、方式2(1)8255A方式0,是基本的輸入/輸出工作方式。在這種方式下,三個(gè)端口都可以由程序設(shè)置為輸入或者輸出,沒(méi)有固定的用于應(yīng)答的聯(lián)絡(luò)信號(hào)。方式0基本功能如下:具有兩個(gè)8位端口(A,B)和兩個(gè)4位端口(C口的上半部分和下半部分);任何一個(gè)端口都可以設(shè)定為輸入或者輸出。各端口的輸入、輸出可構(gòu)成16種組合;數(shù)據(jù)輸出時(shí)鎖存,輸入時(shí)不鎖存;78第78頁(yè)/共223頁(yè)8255A的A口、B口和C口均可設(shè)定為方式0,并可根據(jù)需要規(guī)定各端口為輸入方式或輸出方式。例如,設(shè)8255A的控制字寄存器地址為0FF7FH(見(jiàn)圖9-29),則令A(yù)口和C口高4位工作在方式0輸出以及B口和C口低4位工作于方式0輸入,初始化的程序?yàn)椋篗OVDPTR,#0FF7FH;控制字寄存器地址送DPTRMOVA,#83H ;方式控制字83H送(A)MOVX@DPTR,A ;83H送控制字寄存器。79第79頁(yè)/共223頁(yè)在方式0下,8051可對(duì)8255A進(jìn)行I/O數(shù)據(jù)的無(wú)條件傳送,例如,讀一組開(kāi)關(guān)的狀態(tài),控制一組指示燈的亮、滅。實(shí)現(xiàn)這些操作,并不需要應(yīng)答聯(lián)絡(luò)信號(hào)。外設(shè)的I/O數(shù)據(jù)可在8255A的各端口得到鎖存和緩沖,也可以把其中的某幾位指定為外設(shè)的狀態(tài)輸入位,CPU對(duì)狀態(tài)位查詢便可實(shí)現(xiàn)I/O數(shù)據(jù)的查詢方式傳送。因此,8255A的方式0屬于基本輸入/輸出方式。80第80頁(yè)/共223頁(yè)(2)8255A方式1,選通式輸入/輸出工作方式。A口和B口皆可獨(dú)立地設(shè)置成這種工作方式。在方式1下,8255A的A口和B口通常用于傳送和它們相連外設(shè)的I/O數(shù)據(jù),C口用作A口和B口的應(yīng)答聯(lián)絡(luò)線,以實(shí)現(xiàn)中斷方式傳送I/O數(shù)據(jù)。C口的PC7~PC0應(yīng)答聯(lián)絡(luò)線是在設(shè)計(jì)8255A時(shí)規(guī)定的,其各位分配見(jiàn)圖9-24和圖9-26,圖中,標(biāo)有I/O各位仍可用作基本輸入/輸出,不作應(yīng)答聯(lián)絡(luò)線用。81第81頁(yè)/共223頁(yè)1)方式1輸入當(dāng)任何一個(gè)端口按照工作方式1輸入時(shí),應(yīng)答聯(lián)絡(luò)信號(hào)如圖9-24所示,各應(yīng)答聯(lián)絡(luò)信號(hào)的功能如下:

:選通輸入,低電平有效。是由輸入設(shè)備送來(lái)的輸入信號(hào)。IBF:輸入緩沖器滿,高電平有效。表示數(shù)據(jù)已送入輸入鎖存器,它由

信號(hào)的下降沿置位,由

信號(hào)的上升沿復(fù)位。INTR:中斷請(qǐng)求信號(hào),高電平有效,由8255A輸出,向CPU發(fā)中斷請(qǐng)求。INTEA:口中斷允許信號(hào),由PC4的置位/復(fù)位來(lái)控制,INTEB由PC2的置位/復(fù)位來(lái)控制。82第82頁(yè)/共223頁(yè)圖9-248255A方式1輸入聯(lián)絡(luò)信號(hào)83第83頁(yè)/共223頁(yè)圖9-25A口方式1輸入工作示意圖84每個(gè)信號(hào)的發(fā)出者和承受者弄清各信號(hào)之間的因果關(guān)系第84頁(yè)/共223頁(yè)85第85頁(yè)/共223頁(yè)下面以A口的方式1輸入為例(A口方式1輸入工作示意圖見(jiàn)圖9-25),介紹方式1輸入的工作過(guò)程以及各控制聯(lián)絡(luò)信號(hào)的功能。當(dāng)輸入設(shè)備輸入一個(gè)數(shù)據(jù)并送到PA7~PA0上時(shí),輸入設(shè)備自動(dòng)在選通輸入線

上發(fā)送一個(gè)低電平選通信號(hào)。8255A收到

上負(fù)脈沖后自動(dòng)做兩件事:一是把PA7~PA0上輸入數(shù)據(jù)存入A口的輸入數(shù)據(jù)緩沖/鎖存器;二是使輸入緩沖器輸出線IBFA變?yōu)楦唠娖?,以通知輸入設(shè)備8255A的A口已收到它送來(lái)的輸入數(shù)據(jù)。8255A同時(shí)檢測(cè)到

變?yōu)楦唠娖?、IBFA為高電平時(shí)使INTRA變?yōu)楦唠娖剑駽PU發(fā)出中斷請(qǐng)求。CPU響應(yīng)中斷后,可以通過(guò)中斷服務(wù)程序從A口的“輸入數(shù)據(jù)緩沖/鎖存器”讀取輸入設(shè)備送來(lái)的輸入數(shù)據(jù)。當(dāng)輸入數(shù)據(jù)被CPU讀走后,8255A撤消INTRA上中斷請(qǐng)求,并使IBFA變?yōu)榈碗娖?,以通知輸入設(shè)備可以送下一個(gè)輸入數(shù)據(jù)。86第86頁(yè)/共223頁(yè)2)當(dāng)任何一個(gè)端口按照工作方式1輸出時(shí),應(yīng)答聯(lián)絡(luò)信號(hào)如圖9-26所示,各聯(lián)絡(luò)信號(hào)的功能如下::輸出緩沖器滿信號(hào),低電平有效,是8255A輸出給輸出設(shè)備的聯(lián)絡(luò)信號(hào)。表示CPU已把輸出數(shù)據(jù)送到指定端口,外設(shè)可以將數(shù)據(jù)取走。它由

信號(hào)的上升沿置“0”(有效),由

信號(hào)的下降沿置“1”(無(wú)效)。:外設(shè)響應(yīng)信號(hào),低電平有效。表示CPU輸出給8255A的數(shù)據(jù)已由輸出設(shè)備取走。87第87頁(yè)/共223頁(yè)INTR:中斷請(qǐng)求信號(hào),高電平有效。表示數(shù)據(jù)已被外設(shè)取走,請(qǐng)求CPU繼續(xù)輸出數(shù)據(jù)。中斷請(qǐng)求的條件是、

和INTE(中斷允許)為高電平,中斷請(qǐng)求信號(hào)由

的下降沿復(fù)位。INTEA:由PC6的置位/復(fù)位來(lái)控制。INTEB:由PC2的置位/復(fù)位來(lái)控制。圖9-27為B口工作于方式1輸出下的工作示意圖88第88頁(yè)/共223頁(yè)89圖9-26方式1輸出聯(lián)絡(luò)信號(hào)第89頁(yè)/共223頁(yè)90圖9-27方式1選通輸出示意圖第90頁(yè)/共223頁(yè)3)方式2只有A口才能設(shè)定。圖9-28為方式2下的工作過(guò)程示意圖。在方式2下,PA7~PA0為雙向I/O總線。當(dāng)作為輸入總線使用時(shí),PA7~PA0受

和IBFA控制,其工作過(guò)程和方式1輸入時(shí)相同;當(dāng)作為輸出總線使用時(shí),PA7~PA0受

控制,其工作過(guò)程和方式1輸出時(shí)相同。只適用于A口,且C口提供固定的聯(lián)絡(luò)信號(hào);當(dāng)A口工作在方式2,B口可工作在方式0或1;C口沒(méi)有被指定為聯(lián)絡(luò)信號(hào)的其他位可以工作在方式0,可選擇輸入/輸出。91第91頁(yè)/共223頁(yè)圖9-28A口在方式2下的工作示意圖92第92頁(yè)/共223頁(yè)935.8051單片機(jī)和8255A的接口

圖9-29AT89S52與8255A接口電路第93頁(yè)/共223頁(yè)94例題1:要求8255A工作在方式0,且A口作為輸入,B口、C口作為輸出,則樣例程序如下:MOVA,#90H;A口方式0輸入,B口,C口輸出的方式控制;字→AMOVDPTR,#0FF7FH ;控制寄存器地址→DPTRMOVX@DPTR,A ;方式控制字→控制寄存器MOVDPTR,#0FF7CH ;A口地址→DPTRMOVXA,@DPTR ;從A口讀數(shù)據(jù)MOVDPTR,#0FF7DH;B口地址→DPTRMOVA,#DATA1;要輸出的數(shù)據(jù)DATA1→AMOVX@DPTR,A;將DATA1送B口輸出MOVDPTR,#0FF7EH;C口地址→DPTRMOVA,#DATA2 ;DATA2→AMOVX@DPTR,A;將DATA2送C口輸出第94頁(yè)/共223頁(yè)958255A的C口8位中的任一位,均可用指令來(lái)置位或復(fù)位。1)如果想把C口的PC5置1,相應(yīng)的控制字為00001011B=0BH,程序如下:MOVDPTR,#FF7FH;控制口地址→DPTRMOVA,#0BH ;控制字→AMOVX@DPTR,A ;控制字→控制口,PC5=12)如果想把C口的第6位PC5復(fù)位,相應(yīng)的控制字為00001010B=0AH,程序如下:MOVDPTR,#0FF7FH ;控制口地址→DPTRMOVA,#0AH ;控制字→AMOVX@DPTR,A ;控制字送到控制口PC5=0第95頁(yè)/共223頁(yè)96例題9-2:圖9-30是AT89S52擴(kuò)展8255A與打印機(jī)接口的電路。8255A的片選線為P0.7,打印機(jī)與AT89S52采用查詢方式交換數(shù)據(jù)。打印機(jī)的狀態(tài)信號(hào)輸入給PC7,打印機(jī)忙時(shí)BUSY=1,打印機(jī)的數(shù)據(jù)輸入采用選通控制,當(dāng)出現(xiàn)負(fù)跳變時(shí)數(shù)據(jù)被打入,要求編寫向打印機(jī)輸出80個(gè)數(shù)據(jù)的程序。

設(shè)8255A的A、B、C和控制寄存器的口地址分別為:7CH、7DH、7EH和7FH。8255A的方式1中為低電平有效,而打印機(jī)要求下降沿選通。所以8255A采用方式0,由PC0模擬產(chǎn)生信號(hào)。因PC7輸入,PC0輸出,則方式選擇命令字為:10001110B=8EH。

第96頁(yè)/共223頁(yè)97圖9-30AT89S52擴(kuò)展8255A與打印機(jī)接口的電路第97頁(yè)/共223頁(yè)98自內(nèi)部RAM20H單元開(kāi)始向打印機(jī)輸出80個(gè)數(shù)據(jù)的程序如下:

MOVR0,#7FH ;R0指向控制口

MOVA,#8EH ;方式控制字為8EHMOVX@R0,A ;送方式控制字

MOVR1,#20H ;送內(nèi)部RAM數(shù)據(jù)塊首地址至指針R1MOVR2,#50H ;置數(shù)據(jù)塊長(zhǎng)度

LP:MOVR0,#7EH ;R0指向C口

LP1:MOVXA,@R0 ;讀PC7連接BUSY狀態(tài)

JBACC.7,LP1 ;查詢等待打印機(jī)

MOVR0,#7CH ;指向A口

MOVA,@R1 ;取RAM數(shù)據(jù)

MOVX@R0,A ;數(shù)據(jù)輸出到8255A口鎖存

INCR1 ;RAM地址加1第98頁(yè)/共223頁(yè)99 MOVR0,#7FH ;R0指向控制口

MOVA,#00H ;PC復(fù)位控制字

MOVX@R0,A ;PC0=0,產(chǎn)生下降沿

MOVA,#01H ;PC0置位控制字

MOVX@R0,A ;PC0=1,產(chǎn)生上升沿

DJNZR2,LP ;未完,則反復(fù) ……第99頁(yè)/共223頁(yè)1009.3.5用串行口擴(kuò)展并行I/O口

74LS165是8位并行置入移位寄存器,TXD(P3.1)作為移位脈沖輸出端與所有74LS165的移位脈沖輸入端CLK相連;RXD(P3.0)作為串行輸入端作74LS165的串行輸出端QH相連;P1.0用來(lái)控制74LS165的移位與置入而同相連;74LS165的時(shí)鐘禁止端(15腳)接地,表示允許時(shí)鐘輸入。當(dāng)擴(kuò)展多個(gè)8位輸入口時(shí),兩芯片的首尾(QH與SIN)相連。第100頁(yè)/共223頁(yè)101圖9-31利用串行口擴(kuò)展輸入口第101頁(yè)/共223頁(yè)102下面的程序是從16位擴(kuò)展口讀入5組數(shù)據(jù)(每組二個(gè)字節(jié)),并把它們轉(zhuǎn)存到內(nèi)部RAM20H開(kāi)始的單元中。 MOVR7,#05H;設(shè)置讀入組數(shù) MOVR0,#20H;設(shè)置內(nèi)部RAM數(shù)據(jù)區(qū)首址START: CLRP1.0 ;并行置入數(shù)據(jù)=0 SETBP1.0 ;允許串行移位,=1 MOVR1,#02H;設(shè)置每組字節(jié)數(shù),即外擴(kuò);74LS165的個(gè)數(shù)RXDATA:MOVSCON,#00010000B ;設(shè)串行口方式0, ;允許接收 ;啟動(dòng)接收過(guò)程第102頁(yè)/共223頁(yè)103WAIT:JNBRI,WAIT ;未接收完一幀,循環(huán)等待 CLRRI ;清RI標(biāo)志,準(zhǔn)備下次接收 MOVA,SBUF ;讀入數(shù)據(jù)

MOV@R0,A ;送至RAM緩沖區(qū)

INCR0 ;指向下一個(gè)地址

DJNZR1,RXDATA ;未讀完一組數(shù)據(jù),繼續(xù)

DJNZR7,START ;5組數(shù)據(jù)未讀完重新并行置入

……;對(duì)數(shù)據(jù)進(jìn)行處理第103頁(yè)/共223頁(yè)1049.4鍵盤與顯示器接口

9.4.1鍵盤接口鍵盤實(shí)際上是由排列成矩陣形式的一系列按鍵開(kāi)關(guān)組成,用戶通過(guò)鍵盤可以向CPU輸入數(shù)據(jù)、地址和命令。鍵盤按其結(jié)構(gòu)形式可分為:編碼式鍵盤和非編碼式鍵盤兩類。單片機(jī)系統(tǒng)中普遍使用非編碼式鍵盤,這類鍵盤主要解決以下幾個(gè)問(wèn)題:①鍵的識(shí)別;②如何消除鍵的抖動(dòng);③鍵的保護(hù)。

第104頁(yè)/共223頁(yè)1051.非編碼式鍵盤工作原理非編碼式鍵盤識(shí)別按鍵的方法有兩種:一是行掃描法,二是線反轉(zhuǎn)法。1)行掃描法通過(guò)行線發(fā)出低電平信號(hào),如果該行線所連接的鍵沒(méi)有按下的話,則列線所接的端口得到的是全“1“信號(hào),如果有鍵按下的話,則得到非全“1“信號(hào)。為了防止雙鍵或多鍵同時(shí)按下,往往從第0行一直掃描到最后1行,若只發(fā)現(xiàn)1個(gè)閉合鍵,則為有效鍵,否則全部作廢。找到閉合鍵后,讀入相應(yīng)的鍵值,再轉(zhuǎn)至相應(yīng)的鍵處理程序。第105頁(yè)/共223頁(yè)1062)線反轉(zhuǎn)法線反轉(zhuǎn)法也是識(shí)別閉合鍵的一種常用方法,該法比行掃描速度快,但在硬件上要求行線與列線外接上拉電阻。先將行線作為輸出線,列線作為輸入線,行線輸出全“0”信號(hào),讀入列線的值,然后將行線和列線的輸入輸出關(guān)系互換,并且將剛才讀到的列線值從列線所接的端口輸出,再讀取行線的輸入值。那么在閉合鍵所在的行線上值必為0。這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可讀到一對(duì)唯一的行列值。第106頁(yè)/共223頁(yè)107圖9-32

8255A擴(kuò)展的I/O口組成的行列式鍵盤第107頁(yè)/共223頁(yè)108;鍵盤接口匯編語(yǔ)言子程序:若鍵閉合,鍵值存入(A)中,鍵值的計(jì)算公式是:鍵值=行首鍵號(hào)+列號(hào);若無(wú)鍵閉合,則(A)=0FFHPA8255EQU7FFCH ;8255A的A口地址PB8255EQU7FFDH ;8255A的B口地址PC8255EQU7FFEH ;8255A的C口地址CC8255EQU7FFCH ;8255A的控制口地址KEY1:ACALLKS1 ;調(diào)用判斷有無(wú)鍵按下子程序 JNZLK1 ;有鍵按下時(shí),(A)≠0轉(zhuǎn)消顫延時(shí) AJMPKEY1 ;無(wú)鍵按下返回LK1: ACALLT12ms ;調(diào)12ms延時(shí)子程序 ACALLKS1 ;查有無(wú)鍵按下,若有則為鍵真實(shí)按 JNZ LK2 ;鍵按下(A)≠0轉(zhuǎn)逐列掃描 AJMPKEY1 ;不是鍵按下返回LK2: MOVR2,#0FEH ;首列掃描字入R2 MOV R4,#00H ;首列號(hào)入R4第108頁(yè)/共223頁(yè)109LK4: MOVDPTR,#PB8255 ;列掃描字送至8255PB口 MOVA,R2 MOVX@DPTR,A INCDPTR ;指向8255PC口 MOVXA,@DPTR ;8255PC口讀入行狀態(tài) JBACC.0,LONE ;第0行無(wú)鍵按下,轉(zhuǎn)查第1行 MOVA,#00H ;第0行有鍵按下,該行首鍵號(hào) ;#00H→(A) AJMPLKP ;轉(zhuǎn)求鍵號(hào)LONE:JBACC.1,LTWO;第1行無(wú)鍵按下,轉(zhuǎn)查第2行 MOVA,#08H ;第1行有鍵按下,該行首鍵號(hào) ;#08H→(A) AJMPLKP第109頁(yè)/共223頁(yè)110LTWO:JBACC.2,LTHR ;第2行無(wú)鍵按下,轉(zhuǎn)查第3行 MOVA,#10H ;第2行有鍵按下,該行首鍵號(hào) ;#10H→(A) AJMPLKPLTHR:JBACC.3,NEXT ;第3行無(wú)鍵按下,改查下一列 MOVA,#18H ;第3行有鍵按下該行首鍵號(hào) ;#18H→(A)LKP: ADDA,R4 ;求鍵號(hào)=行首鍵號(hào)+列號(hào) PUSHACC ;鍵號(hào)進(jìn)棧保護(hù)LK3: ACALLKS1 ;等待鍵釋放 JNZLK3 ;未釋放,等待 POPACC ;鍵釋放,鍵號(hào)→A RET ;鍵掃描結(jié)束,出口狀態(tài)(A)=鍵號(hào)第110頁(yè)/共223頁(yè)111NEXT:INCR4 ;指向下一列,列號(hào)加1 MOVA,R2 ;判斷8列掃描完沒(méi)有? JNBACC.7,KND ;8列掃描完,返回 RLA ;掃描字左移一位,轉(zhuǎn)變?yōu)橄乱涣袙呙枳諱OVR2,A ;掃描字入R2AJMPLK4 ;轉(zhuǎn)下一列掃KND: AJMPKEY1 ;判斷有沒(méi)有鍵按下第111頁(yè)/共223頁(yè)112;KS1為判鍵閉合的子程序,有鍵閉合時(shí)(A)≠0KS1:MOVDPTR,#PB8255 ;指向PB口MOVA,#00H ;全掃描字#0HMOVX@DPTR,A ;全掃描字入PB口INCDPTR ;指向PC口MOVXA,@DPTR ;讀入PC口行狀態(tài)CPLA ;變正邏輯,以高電平表示有鍵按下ANLA,#0FH ;屏蔽高4位 RET ;出口狀態(tài),(A)≠0時(shí)有鍵按;T12ms延時(shí)子程序,執(zhí)行一遍的時(shí)間約12msT12ms:MOVR7,#18H ;延遲12ms子程序TM: MOV R6,#0FFH DJNZR6,$ DJNZR7,TM RET 第112頁(yè)/共223頁(yè)1139.4.2七段式LED顯示器接口1.LED顯示器結(jié)構(gòu)與原理圖9-337段LED數(shù)碼顯示器第113頁(yè)/共223頁(yè)114代碼位D7D6D5D4D3D2D1D0顯示段dpgfedcba7段LED顯示器各段碼位的對(duì)應(yīng)關(guān)系如下:第114頁(yè)/共223頁(yè)115字型共陽(yáng)極編碼共陰極編碼字型共陽(yáng)極編碼共陰極編碼0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H滅FFH00H880H7FH—BFH40H表9-7七段LED字形編碼表第115頁(yè)/共223頁(yè)1162.七段式LED顯示器接口電路圖9-32

8255A擴(kuò)展的I/O口組成的行列式鍵盤顯示器接口電路第116頁(yè)/共223頁(yè)11789S52RAM中有6個(gè)顯示緩沖單元79H-7EH,分別存放6位顯示器的顯示數(shù)據(jù)。8255A的A口掃描輸出總有一位為高電平,8255A的B口輸出相應(yīng)位的顯示數(shù)據(jù)的段數(shù)據(jù),使某位顯示出一個(gè)字符,其余位為暗,依次改變A口輸出的高電平位及B口輸出對(duì)應(yīng)的段數(shù)據(jù),6位顯示器就顯示出緩沖器的顯示字符。顯示程序流程如右圖所示:圖9-34動(dòng)態(tài)顯示匯編語(yǔ)言子程序流程圖第117頁(yè)/共223頁(yè)118和圖9-33對(duì)應(yīng)的動(dòng)態(tài)顯示程序清單如下:

DIR:MOVR0,#79H ;顯示緩沖區(qū)首址送R0MOVR3,#01H ;使顯示器最右邊位亮MOVA,R3LD0:MOVDPTR,#7FFCH;掃描值送PA口 MOVX@DPTR,A INCDPTR ;指向PB口 MOVA,@R0 ;取顯示數(shù)據(jù) ADDA,#0DH ;加上偏移量第118頁(yè)/共223頁(yè)119MOVC A,@A+PC ;取出字形MOVX @DPTR,A ;送出顯示ACALL DL1 ;延時(shí)INCR0 ;緩沖區(qū)地址加1MOVA,R3JB ACC.5,LD1 ;掃到第6個(gè)顯示位了嗎?RL A ;沒(méi)有,R3左環(huán)移一位,掃描下一個(gè)顯示位MOVR3,AAJMPLD0LD1:RETRET第119頁(yè)/共223頁(yè)120;顯示段碼表DSEG0: DB3FH,06H,5BH,4FH,66H,6DHDSEG1: DB7DH,07H,7FH,6FH,77H,7CHDSEG2: DB39H,5EH,79H,71H,00H,73HDL1: MOVR7,#02H ;延時(shí)子程序DL: MOVR6,#0FFHDLA: DJNZR6,DLA DJNZR7,DL RET第120頁(yè)/共223頁(yè)1219.4.3LED點(diǎn)陣接口發(fā)光二極管點(diǎn)陣(LEDdotmatrix)用于顯示復(fù)雜的字符、圖形、漢字。通過(guò)單片機(jī)控制點(diǎn)陣的引腳來(lái)實(shí)現(xiàn)特定圓點(diǎn)的點(diǎn)亮。圖9-35發(fā)光二極管點(diǎn)陣

圖9-36LED點(diǎn)陣的顯示第121頁(yè)/共223頁(yè)1221.發(fā)光二極管點(diǎn)陣的結(jié)構(gòu)(a)共陽(yáng)型(b)共陰型圖9-378×8發(fā)光二級(jí)管點(diǎn)陣內(nèi)部結(jié)構(gòu)圖第122頁(yè)/共223頁(yè)123設(shè)使用的是共陽(yáng)型點(diǎn)陣,對(duì)字母T進(jìn)行編碼,用高電平1代表點(diǎn)亮的LED,低電平0代表熄滅的,則可以得到字母T在“橫向上”的編碼,轉(zhuǎn)換成十六進(jìn)制之后為0FFH、10H、10H、10H、10H、10H、10H和10H。這些編碼就是字母T的十六進(jìn)制編碼,如果向LED點(diǎn)陣的P0口輸入0FFH并向P2.0口輸入低電平,則LED點(diǎn)陣上將顯示出圖9-38中字母T的最上一行數(shù)據(jù)。接著,向LED點(diǎn)陣的P0口輸入10H,而向P2.1口輸入低電平,則顯示的是圖9-38中字母T的第二行數(shù)據(jù)。按照這種方法,在LED點(diǎn)陣的P0口輸入數(shù)據(jù)的同時(shí),在P2口的某一位輸入低電平,這樣掃描一遍之后就可以在點(diǎn)陣上看到字母T。第123頁(yè)/共223頁(yè)124

圖9-38共陽(yáng)極顯示字母T的點(diǎn)陣示意圖第124頁(yè)/共223頁(yè)1252.單個(gè)8×8的LED點(diǎn)陣與單片機(jī)的連接圖9-39共陽(yáng)型8×8發(fā)光二極管點(diǎn)陣與單片機(jī)的連接第125頁(yè)/共223頁(yè)1269.4.4字符LCD接口1.字符LCD液晶顯示屏(LCD)是智能儀器儀表、智能設(shè)備常用的另外一種顯示設(shè)備,消耗電流小,控制簡(jiǎn)單,在便攜式儀器和設(shè)備如移動(dòng)電話、計(jì)算器、臺(tái)式/筆記本計(jì)算機(jī)顯示器等場(chǎng)合得到廣泛應(yīng)用。字符LCD根據(jù)所能顯示的字符的個(gè)數(shù)多少而提供不同的器件以供開(kāi)發(fā)時(shí)選用。第126頁(yè)/共223頁(yè)127

圖9-40為字符16×2液晶屏,16×2表示該LCD能顯示兩行字符,每行能顯示16個(gè)字符,包括英文大寫字母、小寫字母、標(biāo)點(diǎn)符號(hào)和常用符號(hào)等。圖9-4016×2的字符液晶屏第127頁(yè)/共223頁(yè)128字符液晶屏是由一個(gè)一個(gè)的小顯示點(diǎn)陣構(gòu)成的,如圖9-41所示,16×2字符液晶屏有32個(gè)小顯示點(diǎn)陣,分布成2行,每行16個(gè),圖9-41顯示了字母J和S的小顯示點(diǎn)陣的放大圖。每一個(gè)小顯示點(diǎn)陣由5×7的點(diǎn)陣組成,小顯示點(diǎn)陣之間在顯示屏上有一定的距離,如果不留這一個(gè)小的空隙,那字符與字符之間會(huì)因?yàn)橘N得太緊而影響美觀。第128頁(yè)/共223頁(yè)129圖9-4116×2字符液晶屏中的小顯示點(diǎn)陣第129頁(yè)/共223頁(yè)1302.單片機(jī)與字符LCD的硬件連接圖9-42字符液晶屏與單片機(jī)的接口電路圖第130頁(yè)/共223頁(yè)13116×2的字符LCD有16個(gè)引腳,其功能描述如下:VCC、VSS、Vee(第2、1、3引腳):電源端。VCC與VSS分別與+5V和GND相連,為L(zhǎng)CD工作電源。Vee是LCD對(duì)比度調(diào)節(jié)引腳,其電位由一個(gè)電位器控制,調(diào)節(jié)電位器調(diào)整Vee引腳的電壓,從而調(diào)節(jié)了LCD的對(duì)比度。RS(第4引腳):命令/數(shù)據(jù)選擇線。當(dāng)RS=0時(shí),從DB0~DB7進(jìn)入LCD的信號(hào)為命令;當(dāng)RS=1時(shí),從DB0~DB7進(jìn)入LCD的信號(hào)為顯示數(shù)據(jù)。第131頁(yè)/共223頁(yè)132R/(第5引腳):讀/寫控制線。R/=0時(shí),寫數(shù)據(jù);R/=1時(shí),讀數(shù)據(jù)。E(第6引腳):LCD使能端。該引腳控制LCD從數(shù)據(jù)線上將數(shù)據(jù)讀入LCD。當(dāng)該引腳上的電位由1向0變化時(shí),DB0~DB7的數(shù)據(jù)被讀入LCD。DB0~DB7(第7~14引腳):數(shù)據(jù)線。第132頁(yè)/共223頁(yè)133+LED、-LED(第15、16引腳):背光供電端。給+LED通過(guò)一個(gè)20~30Ω的電阻供+5V,-LED接GND,液晶屏的背光點(diǎn)亮,這樣在光線很暗的情況下也能看到液晶屏的顯示內(nèi)容。當(dāng)然,點(diǎn)亮背光會(huì)提高系統(tǒng)功耗。如果不需要背光可以將這兩個(gè)管腳懸空。圖9-43

LCD背光的控制方法第133頁(yè)/共223頁(yè)1343.“Hello,world!”—字符LCD的程序控制下面通過(guò)在16×2的LCD上顯示“Hello,world!”,學(xué)習(xí)字符LCD的程序控制方法。LCD的RS引腳是命令/數(shù)據(jù)選擇線,從DB0~DB7向LCD送入命令之前,需要將RS引腳接低電平,此時(shí)出現(xiàn)在DB0~DB7上的信號(hào)被當(dāng)成是命令。同時(shí),R/引腳也接低電平,LCD接受命令的寫入。表9-8為字符液晶屏命令集。圖9-4416×2的LCD上顯示“Hello,world!”第134頁(yè)/共223頁(yè)13506H光標(biāo)右移光標(biāo)向右移動(dòng)1位05H畫面右移顯示畫面向右移動(dòng)07H畫面左移顯示畫面向左移動(dòng)08H關(guān)閉顯示顯示、光標(biāo)、閃爍關(guān)閉0AH打開(kāi)光標(biāo)只打開(kāi)光標(biāo),顯示、閃爍關(guān)閉0CH打開(kāi)顯示只打開(kāi)顯示,光標(biāo)、閃爍關(guān)閉0EH光標(biāo)不閃爍打開(kāi)光標(biāo),光標(biāo)不閃爍0FH光標(biāo)閃爍打開(kāi)顯示和光標(biāo),光標(biāo)閃爍10H光標(biāo)位置左移光標(biāo)位置向左移動(dòng)14H光標(biāo)位置右移光標(biāo)位置向右移動(dòng)18H整個(gè)畫面左移整個(gè)顯示畫面左移1位1CH整個(gè)畫面右移整個(gè)顯示畫面右移1位80H光標(biāo)回到第1行開(kāi)頭強(qiáng)制光標(biāo)回到第1行開(kāi)頭C0H光標(biāo)回到第2行開(kāi)頭強(qiáng)制光標(biāo)回到第2行開(kāi)頭38H顯示設(shè)定設(shè)定顯示為2行,5×7點(diǎn)陣DB0~DB7命令命令解釋01H清屏清除液晶屏顯示的數(shù)據(jù)02H歸位光標(biāo)、畫面回到起始位置04H光標(biāo)左移光標(biāo)向左移動(dòng)1位表9-8

字符液晶屏命令集第135頁(yè)/共223頁(yè)13616×2液晶屏系統(tǒng)顯示數(shù)據(jù)“H

溫馨提示

  • 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)論