半導(dǎo)體存儲(chǔ)器及其應(yīng)用微型計(jì)算機(jī)使用半導(dǎo)體存儲(chǔ)器作為主存儲(chǔ)器_第1頁(yè)
半導(dǎo)體存儲(chǔ)器及其應(yīng)用微型計(jì)算機(jī)使用半導(dǎo)體存儲(chǔ)器作為主存儲(chǔ)器_第2頁(yè)
半導(dǎo)體存儲(chǔ)器及其應(yīng)用微型計(jì)算機(jī)使用半導(dǎo)體存儲(chǔ)器作為主存儲(chǔ)器_第3頁(yè)
半導(dǎo)體存儲(chǔ)器及其應(yīng)用微型計(jì)算機(jī)使用半導(dǎo)體存儲(chǔ)器作為主存儲(chǔ)器_第4頁(yè)
半導(dǎo)體存儲(chǔ)器及其應(yīng)用微型計(jì)算機(jī)使用半導(dǎo)體存儲(chǔ)器作為主存儲(chǔ)器_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章

8051單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù)

第一節(jié)

8051單片機(jī)系統(tǒng)擴(kuò)展概述第二節(jié)

單片機(jī)外部存儲(chǔ)器擴(kuò)展第三節(jié)單片機(jī)輸入輸出〔I/O〕口擴(kuò)展及應(yīng)用第四節(jié)

LED顯示器接口電路及顯示程序第五節(jié)

單片機(jī)鍵盤(pán)接口技術(shù)第六節(jié)單片機(jī)與數(shù)模〔D/A〕及模數(shù)〔A/D〕轉(zhuǎn)換一.半導(dǎo)體存儲(chǔ)器的分類(lèi)第一節(jié)

8051單片機(jī)系統(tǒng)擴(kuò)展概述一、總線1、地址總線〔AddressBus,簡(jiǎn)寫(xiě)為AB〕2、數(shù)據(jù)總線〔DataBus,簡(jiǎn)寫(xiě)為DB〕3、控制總線〔ControlBus,簡(jiǎn)寫(xiě)為CB〕總線3、控制總線〔ControlBus,簡(jiǎn)寫(xiě)為CB〕控制總線實(shí)際上就是一組控制信號(hào)線,包括單片機(jī)發(fā)出的,以及從其它部件送給單片機(jī)的各種控制或聯(lián)絡(luò)信號(hào)。對(duì)于一條控制信號(hào)線來(lái)說(shuō),其傳送方向是單向的,但是由不同方向的控制信號(hào)線組合的控制總線那么表示為雙向的??偩€結(jié)構(gòu)形式大大減少了單片機(jī)系統(tǒng)中連接線的數(shù)目,提高了系統(tǒng)的可靠性,增加了系統(tǒng)的靈活性。此外,總線結(jié)構(gòu)也使擴(kuò)展易于實(shí)現(xiàn),各功能部件只要符合總線標(biāo)準(zhǔn),就可以很方便地接入系統(tǒng),實(shí)現(xiàn)單片機(jī)擴(kuò)展。1、地址總線〔AddressBus,簡(jiǎn)寫(xiě)為AB〕地址總線可傳送單片機(jī)送出的地址信號(hào),用于訪問(wèn)外部存儲(chǔ)器單元或I/O端口。A地址總線是單向的,地址信號(hào)只是由單片機(jī)向外發(fā)出。B地址總線的數(shù)目決定了可直接訪問(wèn)的存儲(chǔ)器單元的數(shù)目。例如N位地址,可以產(chǎn)生2N個(gè)連續(xù)地址編碼,因此可訪問(wèn)2N個(gè)存儲(chǔ)單元,即通常所說(shuō)的尋址范圍為2N個(gè)地址單元。MCS—51單片機(jī)有十六位地址線,因此存儲(chǔ)器展范圍可達(dá)216=64KB地址單元。C掛在總線上的器件,只有地址被選中的單元才能與CPU交換數(shù)據(jù),其余的都暫時(shí)不能操作,否那么會(huì)引起數(shù)據(jù)沖突。2、數(shù)據(jù)總線〔DataBus,簡(jiǎn)寫(xiě)為DB〕數(shù)據(jù)總線用于在單片機(jī)與存儲(chǔ)器之間或單片機(jī)與I/O端口之間傳送數(shù)據(jù)。A單片機(jī)系統(tǒng)數(shù)據(jù)總線的位數(shù)與單片機(jī)處理數(shù)據(jù)的字長(zhǎng)一致。例如MCS—51單片機(jī)是8位字長(zhǎng),所以數(shù)據(jù)總線的位數(shù)也是8位。B數(shù)據(jù)總線是雙向的,即可以進(jìn)行兩個(gè)方向的數(shù)據(jù)傳送。二、單片機(jī)總線構(gòu)成MCS—51單片機(jī)的P0口,是一個(gè)地址/數(shù)據(jù)分時(shí)復(fù)用口。即在某些時(shí)鐘周期時(shí),P0口傳送低八位地址,這時(shí)ALE為高電平有效;而在其它時(shí)鐘周期時(shí)傳送數(shù)據(jù),這時(shí)ALE為無(wú)效的低電平。利用P0口輸出低八位地址和ALE同時(shí)有效的條件,即可用鎖存器〔74LS373〕把低八位地址鎖存下來(lái)。所以系統(tǒng)的低八位地址是從鎖存器輸出端送出的.而P0口本身那么又可直接傳送數(shù)據(jù)。高八位地址總線那么是直接由P2口組成的。CPU的每一條控制信號(hào)引腳的組合,即構(gòu)成了控制總線。8位地址鎖存器74LS373、8282例:程序存儲(chǔ)器的擴(kuò)展第二節(jié)

單片機(jī)外部存儲(chǔ)器擴(kuò)展7-2-1

隨機(jī)讀寫(xiě)存儲(chǔ)器RAM7-2-2

只讀存儲(chǔ)器ROM7-2-3

存儲(chǔ)器的連接DRAM動(dòng)態(tài)RAM:使用電容作存儲(chǔ)元件,需要刷新電路。集成度高,反響快,功耗低,但需要刷新電路。7-2-1

隨機(jī)讀寫(xiě)存儲(chǔ)器(RAM) 存儲(chǔ)器中的信息可讀可寫(xiě),但失電后會(huì)喪失信息。1.雙極型:由TTL電路組成根本存儲(chǔ)單元,存取速度快。(((((SRAM:靜態(tài)RAM。存儲(chǔ)單元使用雙穩(wěn)態(tài)觸發(fā)器,可帶電信息可長(zhǎng)期保存。7-2-1-1常見(jiàn)數(shù)據(jù)存儲(chǔ)器-靜態(tài)RAMIntel6116、6264INTEL公司62系列MOS型靜態(tài)隨機(jī)存儲(chǔ)器產(chǎn)品有:6264,62128,62256,62512等。6264是容量為8K×8位的靜態(tài)隨機(jī)存儲(chǔ)器芯片,6116的容量?jī)H2K×8位注意存儲(chǔ)容量的計(jì)算7-2-2 只讀存儲(chǔ)器〔ROM〕工作時(shí),ROM中的信息只能讀出,要用特殊方式寫(xiě)入(固化信息),失電后可保持信息不喪失。1.掩膜ROM:不可改寫(xiě)ROM由生產(chǎn)芯片的廠家固化信息。在最后一道工序用掩膜工藝寫(xiě)入信息,用戶(hù)只可讀。2.PROM:可編程ROM用戶(hù)可進(jìn)行一次編程。存儲(chǔ)單元電路由熔絲相連,當(dāng)參加寫(xiě)脈沖,某些存儲(chǔ)單元熔絲熔斷,信息永久寫(xiě)入,不可再次改寫(xiě)。7-2-2 只讀存儲(chǔ)器〔ROM〕3.EPROM:可擦除PROM用戶(hù)可以屢次編程。編程加寫(xiě)脈沖后,某些存儲(chǔ)單元的PN結(jié)外表形成浮動(dòng)?xùn)?,阻擋通路,?shí)現(xiàn)信息寫(xiě)入。用紫外線照射可驅(qū)散浮動(dòng)?xùn)?,原有信息全部擦除,便可再次改?xiě)。4.EEPROM:可電擦除PROM既可全片擦除也可字節(jié)擦除,可在線擦除信息,又能失電保存信息,具備RAM、ROM的優(yōu)點(diǎn)。但寫(xiě)入時(shí)間較長(zhǎng)。

7-2-2-1常見(jiàn)程序存儲(chǔ)器-EPROMINTEL公司只讀存儲(chǔ)器芯片〔EPROM〕的產(chǎn)品有:2716,2732,2764,27128,27256,27512等。2764具有8K〔1024×8〕字節(jié)容量,共需要有13根地址線〔213=8192〕A12—A0進(jìn)行尋址,加上8條數(shù)據(jù)線D7—D0、一條片選信號(hào)線CE、一條數(shù)據(jù)輸出選通線OE、一條編程電源線Vpp及編程脈沖輸入線PGM,另外有一條正電源線UCC及接地線GND,其第26號(hào)引腳為NC,使用時(shí)應(yīng)接高電平。在非編程狀態(tài)時(shí)UPP及PGM端應(yīng)接高電平。其中片選信號(hào)為保證多片存貯系統(tǒng)中地址的正確選擇,數(shù)據(jù)輸出選通線保證時(shí)序的配合,編程電源線及編程脈沖輸入線可實(shí)現(xiàn)程序的電編程。注意容量計(jì)算,系列數(shù)字27后面的數(shù)據(jù)除以8即為該芯片的K數(shù)。如:27256為32K容量。7-2-2-2常見(jiàn)程序存儲(chǔ)器-EEPROM2816、2817、28647-2-3-1存儲(chǔ)器與單片機(jī)的連接存儲(chǔ)器與微型機(jī)三總線的一般連接方法和存儲(chǔ)器讀寫(xiě)時(shí)序。1.數(shù)據(jù)總線與地址總線為兩組獨(dú)立總線。

DB0~n

AB0~ND0~nA0~N

ABN+1CSR/WR/W微型機(jī)存儲(chǔ)器DB0~n地址輸出數(shù)據(jù)有效數(shù)據(jù)采樣R/WAB0~N

7-2-3

存儲(chǔ)器的連接通常把擴(kuò)展的ROM稱(chēng)之為外部ROM,把擴(kuò)展RAM稱(chēng)之為外部RAM。7-2-3-1

存儲(chǔ)器與單片機(jī)的連接2.微型機(jī)復(fù)用總線結(jié)構(gòu)數(shù)據(jù)與地址分時(shí)共用一組總線。單片機(jī)

AD0~n

ALER/WD0~nA0~nR/W存儲(chǔ)器Di

QiG地址鎖存器ALE地址鎖存地址鎖存地址輸出數(shù)據(jù)有效地址輸出數(shù)據(jù)有效AD0~n數(shù)據(jù)采樣數(shù)據(jù)采樣R/W8位地址鎖存器74LS373、8282MCS—51單片機(jī)的P0口,是一個(gè)地址/數(shù)據(jù)分時(shí)復(fù)用口。即在某些時(shí)鐘周期時(shí),P0口傳送低八位地址,這時(shí)ALE為高電平有效;而在其它時(shí)鐘周期時(shí)傳送數(shù)據(jù),這時(shí)ALE為無(wú)效的低電平。利用P0口輸出低八位地址和ALE同時(shí)有效的條件,即可用鎖存器〔74LS373〕把低八位地址鎖存下來(lái)。所以系統(tǒng)的低八位地址是從鎖存器輸出端送出的.而P0口本身那么又可直接傳送數(shù)據(jù)。高八位地址總線那么是直接由P2口組成的。CPU的每一條控制信號(hào)引腳的組合,即構(gòu)成了控制總線。MCS-51用于擴(kuò)展存儲(chǔ)器的外部總線信號(hào):P0.0~0.7: 8位數(shù)據(jù)和低8位地址信號(hào),復(fù)用總線AD0~7。P2.0~2.7: 高8位地址信號(hào)AB8~15ALE: 地址鎖存允許控制信號(hào)PSEN: 片外程序存儲(chǔ)器讀控制信號(hào)RD: 片外數(shù)據(jù)存儲(chǔ)器讀控制信號(hào)WR: 片外數(shù)據(jù)存儲(chǔ)器寫(xiě)控制信號(hào)EA: 程序存儲(chǔ)器選擇7-2-3-2 存儲(chǔ)器與單片機(jī)的連接實(shí)例7-2-3-2 存儲(chǔ)器與單片機(jī)的連接實(shí)例一.擴(kuò)展程序存儲(chǔ)器電路:8031擴(kuò)展2KBEPROMIntel2716常用EPROM芯片:Intel2716(2K×8位)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)、27512(64KB)。8051擴(kuò)展程序存儲(chǔ)器2764二.擴(kuò)展數(shù)據(jù)存儲(chǔ)器電路:常用EPROM芯片:Intel6116(2KB)、6264(8KB)、62256(32KB)。8031擴(kuò)展2KBRAMIntel61168051擴(kuò)展數(shù)據(jù)存儲(chǔ)器器6264注意關(guān)于地址重疊四.單片機(jī)擴(kuò)展存儲(chǔ)器實(shí)用電路單片機(jī)連接8KBEPROM2764和8KBRAM6264各一片7-2-3-3存儲(chǔ)器芯片的擴(kuò)充用多片存儲(chǔ)器芯片組成微型計(jì)算機(jī)系統(tǒng)所要求的存儲(chǔ)器系統(tǒng)。要求擴(kuò)充后的存儲(chǔ)器系統(tǒng)引出線符合微型計(jì)算機(jī)機(jī)的總線結(jié)構(gòu)要求。一.擴(kuò)充存儲(chǔ)器位數(shù)例用2K×8位存儲(chǔ)器芯片組成2K×16位存儲(chǔ)器系統(tǒng)。例三片8KB的存儲(chǔ)器芯片組成24KB容量的存儲(chǔ)器。確定各存儲(chǔ)器芯片的地址空間:D0~7R/WCEA0~12D0~7R/WCE1A0~12CE2D0~7R/WCEA0~12D0~7R/WCEA0~12CE3ⅠⅡⅢ設(shè)CE1、CE2、CE3分別連接微型機(jī)的高位地址總線AB13、AB14、AB15 ABi15141312

1110987654

3210~15141312

111098

7654

3210 Ⅰ:1100000000000000~1101111111111111=C000H~DFFFHⅡ:1010000000000000~1011111111111111=A000H~BFFFHⅢ:0110000000000000~0111111111111111=6000H~7FFFH掌握要點(diǎn)什么情況下需要擴(kuò)展數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器?鎖存器的作用,何時(shí)需要,如何應(yīng)用連線?數(shù)據(jù)存儲(chǔ)器容量計(jì)算及其與地址線的關(guān)系?程序存儲(chǔ)器容量計(jì)算及其與地址線的關(guān)系?EA腳的作用?程序存儲(chǔ)器擴(kuò)展時(shí)的連線,特別是控制線?數(shù)據(jù)存儲(chǔ)器擴(kuò)展時(shí)的連線,特別是控制線?程序存儲(chǔ)器地址重疊問(wèn)題第三節(jié)單片機(jī)輸入輸出〔I/O〕口擴(kuò)展及應(yīng)用§概述一、I/O接口電路把CPU與外設(shè)連接起來(lái)的電路。二、CPU與外設(shè)之間通過(guò)I/O口交換的信息1、數(shù)據(jù)信息2、控制信息3、狀態(tài)信息

三、I/O接口的作用

消除CPU與外設(shè)之間的差異。1、速度協(xié)調(diào)?!?〕數(shù)據(jù)鎖存?!?〕三態(tài)緩沖。2、數(shù)據(jù)格式轉(zhuǎn)換。3、電平轉(zhuǎn)換。四、數(shù)據(jù)交換的方式1、無(wú)條件傳送方式定時(shí)的簡(jiǎn)單外設(shè)。2、條件傳送方式〔查詢(xún)方式〕定時(shí)未知的中低外設(shè)。3、中斷方式4、DMA方式五、通信方式主機(jī)與外設(shè)之間信息交換稱(chēng)為通信。1、并行通信數(shù)據(jù)的各位同時(shí)傳送,并行接口實(shí)現(xiàn)。2、串行通信數(shù)據(jù)的各位分時(shí)一位一位順序傳送,串行接口實(shí)現(xiàn)。六、I/O接口的編址方式1、統(tǒng)一編址方式外部I/O接口與外部RAM統(tǒng)一編址,共用一個(gè)地址空間。用訪問(wèn)外部RAM的指令MOVX訪問(wèn)外部I/O口。2、獨(dú)立編址方式外部I/O接口有獨(dú)立的地址空間,有專(zhuān)用的I/O接口輸入/輸出指令。第三節(jié)單片機(jī)輸入輸出〔I/O〕口擴(kuò)展及應(yīng)用7-3-1單片機(jī)簡(jiǎn)單I/O口應(yīng)用及擴(kuò)展7-3-28155作單片機(jī)的I/O擴(kuò)展一、8155引腳RESET:復(fù)位信號(hào)線,高電平有效。CE:片選端,低電平有效。該端加一低電平時(shí),芯片被選中,可以與單片機(jī)交換信息。AD7─AD0:三態(tài)地址/數(shù)據(jù)總線,分時(shí)傳送8位地址信號(hào)和數(shù)據(jù)號(hào)。ALE:地址鎖存器啟用信號(hào)線,高電平有效,其有效信號(hào)可將AD7─AD0的地址信號(hào)、以及片選信CE,IO/M信號(hào)鎖存起來(lái)。

IO/M:I/O口和RAM選擇信號(hào)線,高電平選擇I/O口,低電平選擇RAM。RD:讀信號(hào)線,低電平有效,當(dāng)片選信號(hào)與RD有效時(shí),此時(shí)如果IO/M為低電平,那么RAM的內(nèi)容讀至AD7─AD0;如果IO/M為高電平,那么選中的I/O口的內(nèi)容讀到AD7─AD0。TIN:定時(shí)/計(jì)數(shù)器輸入信號(hào)線,定時(shí)/計(jì)數(shù)器的計(jì)數(shù)脈沖由此輸入。TOUT:定時(shí)/計(jì)數(shù)器輸出信號(hào)線,輸出信號(hào)為方波還是脈沖那么由定時(shí)/計(jì)數(shù)器的工作方式而定。VCC:電源線,接+5V直流電源。VSS:接地線。WR:寫(xiě)信號(hào)線,低電平有效,當(dāng)片選信號(hào)和WR信號(hào)有效時(shí),AD7─AD0上的數(shù)據(jù)將根據(jù)IO/M的極性寫(xiě)入RAM或I/O口中PB7─PB0:端口B的輸入輸出信號(hào)線,通用的8位I/O口,輸入/輸出方向通過(guò)命令/狀態(tài)存放器的編程來(lái)選擇。PC5─PC0:端口C的輸入/輸出線,6位可編程I/O口,也可用作A和B的控制信號(hào)線,通過(guò)對(duì)命令/狀態(tài)存放器編程來(lái)選擇。PA7─PA0:輸入/輸出口A的信號(hào)線,通用8位I/O口,輸入/輸出的方向通過(guò)對(duì)命令/狀態(tài)存放器的編程來(lái)選擇。二、結(jié)構(gòu)地址(AD7—AD0)A7A6A5A4A3A2A1A0寄存器XXXXX000XXXXX001XXXXX010XXXXX011XXXXX100XXXXX101*內(nèi)部命令/狀態(tài)寄存器A口(PA7—PA0)B口(PB7—PB0)C口(PC5—PC0)定時(shí)器低8位定時(shí)器高6位和2位計(jì)時(shí)器方式位三、8155的RAM和I/O口尋址8155在8051系統(tǒng)中的RAM和I/O口是按外部存儲(chǔ)器統(tǒng)一編址的,為16位地址。其高8位提供和輸入信號(hào)。低8位地址由8051的P0口送到8155芯片地址線AD0~AD7確定。當(dāng)為0時(shí),單片機(jī)對(duì)8155RAM讀/寫(xiě),RAM低8位編址為00H~FFH;當(dāng)為1時(shí),單片機(jī)對(duì)I/O口進(jìn)行讀寫(xiě),8155內(nèi)部I/O及定時(shí)器的低8位編址如表四、8155存放器8155內(nèi)部共有7個(gè)存放器,其中命令存放器〔只寫(xiě)〕和狀態(tài)存放器〔只讀〕共用一個(gè)地址XXXXX000B,故稱(chēng)命令/狀態(tài)存放器,由讀寫(xiě)指令來(lái)區(qū)別,定時(shí)器存放器的高8位和低8位各有其地址,XXXXX101B和XXXXX100B1命令存放器〔COMMAND,只寫(xiě)〕可以把一個(gè)命令寫(xiě)入XXXXX000B地址中改變命令存放器的內(nèi)容實(shí)現(xiàn)編程,即控制I/O接口的工作方式和數(shù)據(jù)流向。工作方式控制字的格式及功能如下圖2狀態(tài)存放器〔STATUS,只讀〕狀態(tài)存放器和命令存放器的地址相同,當(dāng)讀地址XXXXX000B的內(nèi)容時(shí),那么可查詢(xún)I/O口和定時(shí)/計(jì)數(shù)器的狀態(tài)。狀態(tài)存放器中各位的意義如表所示:D7D6D5D4D3D2D1D0—TIMERINTEBBFBINTRBINTEABFAINTRA6定時(shí)/計(jì)數(shù)器8155片內(nèi)的定時(shí)/計(jì)數(shù)器是一個(gè)14位的減法計(jì)數(shù)器,另外兩位是用于確定輸出方式。因此它是兩個(gè)8位存放器。低8位地址為XXXXX100B和高8位地址為XXXXX101B。計(jì)數(shù)初值由程序預(yù)置,每次預(yù)置一個(gè)字節(jié),該存放器的0—13位規(guī)定了下一次計(jì)數(shù)的長(zhǎng)度,14、15位規(guī)定了定時(shí)/計(jì)數(shù)器的輸出方式,該存放器的定義如表所示。M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0輸出方式計(jì)數(shù)長(zhǎng)度高6位計(jì)數(shù)長(zhǎng)度低8位兩個(gè)存放器有雙重作用,在寫(xiě)操作時(shí),可送入定時(shí)常數(shù)和輸出方式的指令;在讀操作時(shí),可把定時(shí)/計(jì)數(shù)器的當(dāng)前值和方式位讀出。上述讀寫(xiě)均要分兩次傳送進(jìn)行。對(duì)定時(shí)器編程首先要計(jì)數(shù)常數(shù)和定時(shí)器的方式字送入地址口04H和05H。定時(shí)常數(shù)范圍:2H~3FFFH。定時(shí)/計(jì)數(shù)器的啟動(dòng)和停止命令送命令存放器〔00H〕的最高位。定時(shí)/計(jì)數(shù)器是遞減計(jì)數(shù)器,定時(shí)/計(jì)數(shù)器對(duì)TIN端的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),并在到達(dá)最后計(jì)數(shù)值〔TC〕終值時(shí)給出一個(gè)方波或脈沖。高字節(jié)存放器中的M1和M2是輸出波形控制位。波形如下圖。五、8155的使用1、作片外256字節(jié)RAM2、作擴(kuò)展I/O口使用3、作定時(shí)器擴(kuò)展用IO/M腳接低電平,8155作片外RAM用,地址高8位接片選端CE和IO/M端,低8位為00H~FFH,與其它片外數(shù)據(jù)存儲(chǔ)器統(tǒng)一編址。IO/M腳接高電平,8155作擴(kuò)展I/O口用,此時(shí)PA、PB、PC口的口地址低等位分別為01H、02H、03H〔設(shè)無(wú)關(guān)位為0〕。I/O方式的選擇是對(duì)命令存放器〔命令口〕設(shè)定命令控制字。定時(shí)器的方式選擇定時(shí)器的編程六、MCS—51芯片和8155的連接和編程1、連接方法2、8155軟件設(shè)下例中按上圖連接課本例子現(xiàn)用8155作為外部256個(gè)RAM擴(kuò)展及六位LED顯示器接口電路,要求外部RAM地址范圍是0200H-02FFH;A口輸出,作為L(zhǎng)ED顯示器八位段控輸出口,地址是0301H;C口輸出,作為六位LED的位控輸出口,地址是0303H,試設(shè)計(jì)硬件電路并寫(xiě)出初始化程序。解:由題意可得硬件電路如7─19所示:由圖可得:P2.1=1,CE=0時(shí)芯片選中;P2.0=0,選中RAM單元;P2.0=1,選中I/O口。顯然地址信號(hào)在0200H—02FFH范圍內(nèi)可選中8155中256個(gè)RAM單元?!睵2.1P2.0=10,A7─A0從00000000—11111111B變化〕,8155中六個(gè)I/O地址如下:

又根據(jù)題意可得8155控制字如下:初始化程序如下:MOVDPTR,#0300H ;指向命令存放器地址。MOVA,#05H ;控制字送A。MOVX@DPTR,A ;控制字送命令存放器?!っ顮顟B(tài)存放器地址:0300H〔P2.1,P2.0=11,A2A1A0=000〕口A地址:0301H〔P2.1,P2.0=11,A2A1A0=001〕口C地址:0303H〔P2.1,P2.0=11,A2A1A0=011〕第四節(jié)LED顯示器接口電路及顯示程序一.LED顯示器工作原理LED顯示器用于顯示工業(yè)控制參數(shù)、過(guò)程狀態(tài)。1.LED數(shù)碼管 共陰極LED和共陽(yáng)極LED當(dāng)LED字段引線與數(shù)據(jù)線連接,每個(gè)顯示字形對(duì)應(yīng)一個(gè)字形碼。COM

P1.0~1.7MCS-51afbge

cdhabhD7D6D5D4D3D2D1D0hgfedcba

abhCOM二、LED顯示器與單片機(jī)的接口電路顯示多位數(shù)據(jù)的兩種電路:1.靜態(tài)顯示2.動(dòng)態(tài)顯示多位LED共用一個(gè)8位字段口,各位LED公共端用字位口控制,掃描輸出顯示不同字形。每個(gè)LED需要一個(gè)8位并行口

abhCOMafbge

cdh

abhCOM

abhCOMCOMhCOMD7…D1D0D0D1D2hbbhCOMafbge

cdhaaba例:8155接6位LED動(dòng)態(tài)顯示三、顯示程序任務(wù):1.設(shè)置顯示緩沖區(qū),存放待顯示數(shù)據(jù)和字符〔位置碼〕。2.顯示譯碼:程序存儲(chǔ)器中建立字形碼常數(shù)表,查表得出對(duì)應(yīng)數(shù)據(jù)和字符的字形碼。3.輸出顯示:輸出字形碼到顯示端口。COM

P1.0~1.7MCS-51afbge

cdhabh

對(duì)應(yīng)字位線:D0D1D2D3D4D51、顯示緩沖區(qū)與多位LED對(duì)應(yīng)關(guān)系:例: MOVDPTR,#WTAB;指向字形碼表首地址 MOVA,@R0 ;取顯示緩沖區(qū)中數(shù)據(jù) MOVCA,@A+DPTR;查表顯示譯碼 MOVP1,A ;輸出顯示 … WTAB: DB 3FH,06H,5BH;字形碼表 … 2、譯碼3、顯示程序:DIS:MOVR0,#7AH ;指向顯示緩沖區(qū)起始單元 MOVR3,#01H ;字位碼初值→R3 MOV A,R3 ;取字位碼DLP:MOVDPTR,#PAAR;指向字位口(PA口) MOVX@DPTR,A ;輸出字位碼,顯示其中1位 MOV A,@R0 ;取一個(gè)顯示數(shù)據(jù) ADD A,#0CH ;查表偏移量 MOVCA,@A+PC ;取出字形碼 INC DPTR ;指向字段口(PB口) MOVX@DPTR,A ;輸出字形碼 ACALLDLY1MS ;延時(shí)1ms INC R0 ;指向顯緩區(qū)下一單元 MOV A,R3 ;修改字位碼 RL A ;顯示下一位 MOV R3,A JNB ACC.6,DLP;未顯示到最右邊LED,繼續(xù)顯示 RET ;全部掃描一遍,結(jié)束DTAB:DB0C0H,0F9H,0A4H;字形表,共陽(yáng)極LED DB0B0H,99H, DLY1MS:… ;延時(shí)1ms子程序課本例子1.建立顯示緩沖區(qū)通常在內(nèi)部RAM中開(kāi)辟顯示緩沖區(qū),顯緩區(qū)單元個(gè)數(shù)與LED位數(shù)相同。例如對(duì)六位LED顯示器,可設(shè)顯示緩沖區(qū)單元為79H─7EH,對(duì)應(yīng)關(guān)系如下:顯示緩沖區(qū)中可按顯示次序放入所顯示字符的編碼,或直接放入所顯示的字符,然后再通過(guò)查字形代碼表找出相應(yīng)字符編碼作為段控碼送LED顯示器。2.編寫(xiě)顯示程序現(xiàn)用六位LED顯示〞008031〞六個(gè)字符,設(shè)A口地址為0301H,C口地址為0303H,用查表方式來(lái)求得相應(yīng)編碼并顯示。可事先在顯示緩沖區(qū)中依次放入待顯示字符如下:例:8155接6位LED動(dòng)態(tài)顯示顯示參考程序如下:〔考慮反相驅(qū)動(dòng)器反相作用〕DIS:MOVR1,#79H ;指向顯緩區(qū)首址。MOVR2,#00000001B ;從右面第一位開(kāi)始顯示。LD0:MOVA,#00HMOVDPTR,#0303H;送字形前先關(guān)顯示。MOVX@DPTR,AMOVA,@R1;取顯示字符。MOVDPTR,TABLE;指向字符代碼表首址。MOVCA,@A+DPTR;取字符相應(yīng)編碼。MOVDPTR,#0301H ;指向段控口。MOVX@DPTR,A;字符編碼送A口〔段控口〕。MOVA,R2;位控碼送A。MOVDPTR,#0303H;指向位控口。MOVX@DPTR,A;位控碼送C口〔位控口〕。ACALLDELAY;延時(shí)。INCR1 ;指向下一顯緩單元。MOVA,R2;取當(dāng)前位控碼。JBACC.5,LD1, ;是否掃描到最左邊,是返回。RLA ;否,左移一位。MOVR2,A;保存位控碼。AJMPLD0 ;繼續(xù)掃描顯示。LD1:RET ;返回。

ORG3000H ;依次建立字符代碼表。TABLE:DB0C0H;0DB0F9H ;1DB0A4H ;2DB0B0H ;3DB99H ;4DB92H ;5. .. .. .幾點(diǎn)說(shuō)明:1.單片機(jī)定期調(diào)用上述顯示子程序,使字符顯示穩(wěn)定。2.由于考慮反相驅(qū)動(dòng)器的反相因素,所以用共陽(yáng)極LED字符代碼表。同時(shí)設(shè)位控端為〞1〞時(shí)對(duì)應(yīng)LED點(diǎn)亮。3.如不用查表方式求得字符編碼,也可直接向顯示緩沖區(qū)中寫(xiě)入待顯示字符編碼,再將上述程序稍加修改后即可。第五節(jié) 鍵盤(pán)與單片機(jī)接口1.鍵輸入檢查鍵盤(pán)是否有鍵被按下,消除按鍵抖動(dòng)。確定被按鍵的鍵號(hào),獲取鍵號(hào)。硬件電路消除抖動(dòng)或軟件消除抖動(dòng)。&I/O接口&+5v+5v消除抖動(dòng)電路開(kāi)關(guān)單片機(jī)抖動(dòng)時(shí)間<10ms開(kāi)關(guān)動(dòng)作時(shí)間>100ms“1”“0”<10ms延時(shí)等待10ms仍有按鍵信號(hào)?Y有按鍵信號(hào)?NYN鍵盤(pán)處理

按鍵釋放?NY鍵盤(pán)處理程序任務(wù)2.鍵譯碼鍵號(hào)為鍵盤(pán)位置碼,根據(jù)鍵號(hào)查表得出被按鍵的鍵值。鍵值:數(shù)字鍵0~9、字符鍵0AH~0FH、功能鍵10H~。3.鍵處理根據(jù)鍵值轉(zhuǎn)移到不同程序段。假設(shè)鍵值屬于數(shù)字、字符鍵,那么調(diào)用顯示數(shù)字和字符的子程序。假設(shè)鍵值屬于功能鍵,那么進(jìn)行多分支轉(zhuǎn)移,執(zhí)行各個(gè)功能程序段。7-5-1 獨(dú)立式鍵盤(pán)電路7-5-2矩陣式鍵盤(pán)

0

1+5vC0C1R0R1鍵盤(pán)I/O接口1.掃描法列線輸出,行線輸入。列線逐行輸出0,某行有按鍵,行線輸入有0,假設(shè)無(wú)按鍵,行線輸入全部為1。2.反轉(zhuǎn)法行列線交換輸入、輸出,兩步獲取按鍵鍵號(hào)。P1.0P1.1P1.7+5v每個(gè)按鍵單獨(dú)占有一根I/O接口引線。按鍵處理程序:延時(shí)消抖鍵掃描求鍵號(hào)延時(shí)等待鍵譯碼求鍵值修改顯示緩沖區(qū)跳轉(zhuǎn)各功能程序有按鍵輸入?確有按鍵?按鍵釋放?是數(shù)字鍵?課本舉例三、獨(dú)立式按鍵獨(dú)立式按鍵是指直接用I/0口線構(gòu)成的單個(gè)按鍵電路。每個(gè)獨(dú)立式按鍵單獨(dú)占有一根I/O口線,每根I/O口線上的按鍵的工作狀態(tài)不會(huì)影響其它1/0口線的工作狀態(tài)。圖7—23為一種獨(dú)立式四按鍵電路,鍵值由軟件用中斷或查詢(xún)方式獲得。1、K0—K3四個(gè)按鍵在沒(méi)有按下時(shí),P1.0—P1.3均處于高電平狀態(tài);只要有鍵按下,那么相應(yīng)的I/O口線就變成低電平;一個(gè)按鍵與一根I/O口線狀態(tài)相對(duì)應(yīng)。3、顯然,在中斷效勞程序中,應(yīng)設(shè)計(jì)鍵盤(pán)去抖動(dòng)延時(shí)程序和讀鍵值程序。4、等待鍵釋放以后,再退出中斷效勞程序,轉(zhuǎn)向各鍵定義的各功能程序。這樣可以防止發(fā)生一鍵按下、屢次處理的現(xiàn)象。2.在圖中,為了使CPU能及時(shí)處理鍵盤(pán)功能,四根鍵盤(pán)狀態(tài)輸出線被送到四與門(mén)輸入端。這樣,只要有任一鍵按下,該四與門(mén)輸出端便由高電平變成低電平,再通過(guò)INT0向CPU發(fā)出中斷請(qǐng)求。ORG0000HAJMPMAIN ;轉(zhuǎn)向主程序。ORG0003HAJMPJSB ;設(shè)置鍵識(shí)別中斷效勞程序入口。ORG0030HMAIN:MOVSP,#30H;設(shè)置堆棧。SETBEA ;開(kāi)中斷。SETBEX0 ;允許INT0中斷。MOVP1,#0FFH ;設(shè)P1口為輸入方式。HERE:SJMPHERE ;等待鍵閉合。鍵識(shí)別中斷效勞程序:ORG0120HJSB:PUSHACC ;保護(hù)現(xiàn)場(chǎng)。CLREA;暫時(shí)關(guān)中斷。MOVA,P1 ;取P1口當(dāng)前狀態(tài)。ANLA,#0FH ;屏蔽高4位。CJNEA,#0FH,KEY ;有鍵按下,轉(zhuǎn)鍵處理KEY。SETBEA;開(kāi)中斷。POPACC ;現(xiàn)場(chǎng)恢復(fù)。RETI ;返回。KEY:MOVB,A ;保存鍵閉合信息到B。LCALLDELAY10 ;延時(shí)10ms,消去鍵閉合抖動(dòng)。LOOP:MOVA,P1 ;取P1口狀態(tài)。ANLA,#0FH ;屏蔽高4位。CJNEA,#0FH,LOOP ;等待鍵釋放。LCALLDELAY10 ;延遲10ms,消去鍵釋放抖動(dòng)。MOVA,B ;取鍵閉合信息。JNBACC.0,KEY0 ;假設(shè)K0按下,轉(zhuǎn)鍵處理程序KEY0。JNBACC.1,KEY1 ;假設(shè)K1按下,轉(zhuǎn)鍵處理程序KEY1。JNBACC.2,KEY2 ;假設(shè)K2按下,轉(zhuǎn)鍵處理程序KEY2。AJMPKEY3 ;轉(zhuǎn)鍵處理程序KEY3。四、行列式鍵盤(pán)行列式鍵盤(pán)必須由軟件來(lái)判斷按下鍵盤(pán)的鍵值。其判別方法是這樣的:如圖7—24所示,首先由CPU從PA口輸出一個(gè)全為0的數(shù)據(jù),也就是說(shuō),這時(shí)PA.7—PA.0全部為低電平,這時(shí)如果沒(méi)有鍵按下,那么PB.0—PB.3全部處于高電平。所以當(dāng)CPU去讀8155PB口時(shí),PB.3—PB.0全為1說(shuō)明這時(shí)無(wú)鍵按下。從硬件圖中我們可以看到,只要是第4列鍵按下,CPU讀8155PB口時(shí)PB.3始終為0。其PB口的讀得值為XXXX0111B,這就是第4列鍵按下的特征。如果此時(shí)讀得PB口值為XXXX1101B,顯然可以斷定是第2列鍵被按下?,F(xiàn)在我們假設(shè)第5行第4列鍵是按下的〔即圖中箭頭指著的那個(gè)鍵〕。由于該鍵被按下,使第4根列線與第5根行線導(dǎo)通,原先處于高電平的第4根列線被第5根行線箝位到低電平。所以這時(shí)CPU讀8155PB口時(shí)PB.3=0;列值這種操作方式,就好似PA口為0的這根線,從最低位開(kāi)始逐位移動(dòng)〔稱(chēng)作掃描〕,直到PA.7為0為止。很明顯,對(duì)于我們上例中的第5行第4列鍵按下,必然有:在PA口輸出為11101111B時(shí)PB.0—PB.3不全為1,而是XXXX0111B。讀取被按鍵盤(pán)的行值,可用掃描方法。即首先使8155PA口輸出僅PA.0為0、其余位都是1然后去讀PB口的值,如讀得PB.3—PB.0為全1;那么接著使PA.1為0其余位都是1,再讀PB口,假設(shè)仍為全1;再繼續(xù)使PA.2為0,其余位為1,再讀PB口…直到讀出PB.0—PB.3不全為1或0位移到PA.7為0為止。行值鍵值此時(shí)行輸出數(shù)據(jù)和列輸入數(shù)據(jù)中0位置,即表示了該鍵的鍵值。綜上所述,行-列式鍵盤(pán)的掃描鍵值可歸結(jié)為二個(gè)步驟:判斷有無(wú)鍵按下;判斷按下鍵的行、列號(hào),并求出鍵值,鍵值=行號(hào)×10H+列號(hào)假設(shè)求得鍵值,那么可利用散轉(zhuǎn)指令,去執(zhí)行鍵盤(pán)各自的功能程序。假設(shè)在圖7-23硬件圖中,設(shè)定:行號(hào)=0,1,2,3,4,5,6,7;列號(hào)=0,1,2,3;可得鍵值如下圖:下面是圖7-24所示電路的鍵盤(pán)掃描及識(shí)別程序〔JSB〕算法及清單〔約定FFH為無(wú)效鍵值,設(shè)8155A口地址為FE01H,B口地址為FE02H〕〕:2.程序清單;JSB:ACALLKSl;調(diào)用按鍵判斷子程序,判斷是否有鍵按下。JNZLK1;有鍵按下時(shí),〔A≠0〕轉(zhuǎn)去抖動(dòng)延時(shí)。MOVA,#0FFHAJMPFH;無(wú)鍵按下返回。LK1:ACALLDELAY12;延時(shí)12MS。ACALLKS1;查有無(wú)鍵按下,假設(shè)有,那么為鍵真實(shí)按下。JNZLK2;鍵按下〔A≠0〕轉(zhuǎn)逐列掃描。MOVA,#0FFHAJMPFH;沒(méi)有鍵按下,返回。LK2:M0VR2,#OFEH;首行掃描字送R2。M0VR4,#00H;首行號(hào)送R4。LK4:M0VDPTR,#FE01H;指向A口。MOVA,R2M0VX@DPTR,A;行掃描字送至8155PA口。INCDPTR;指向8155PB口。MOVXA,@DPTR;8155PB口讀入列狀態(tài)。

JBACC·0,LONE;假設(shè)第0列無(wú)鍵按下,轉(zhuǎn)查第1列。M0VA,#00H;第0列有鍵按下,將列首鍵號(hào)00H送A。AJMPLKP;轉(zhuǎn)求鍵值。LONE:JBACC.1,LTWO;假設(shè)第1列無(wú)鍵按下,轉(zhuǎn)第2列。M0VA,#01H;第1列有鍵按下,將列號(hào)01H送A。AJMPLKP;轉(zhuǎn)求鍵值。LTWO:JBACC.2,LTHR;假設(shè)第2列無(wú)鍵按下,轉(zhuǎn)查第3列。M0VA,#02H;第2列有鍵按下,將列號(hào)02H送A。AJMPLKP;轉(zhuǎn)求鍵值。LTHR:JBACC.3,NEXT;假設(shè)第3列無(wú)鍵按下,改掃描下一行。M0VA,#03H;第3列有鍵按下,將列號(hào)03H送A。LKP:MOVR5,A;列號(hào)存R5。MOVA,R4;取回行號(hào)。MOVB,10HMULAB;乘10H。ADDA,R5;求得鍵號(hào)(行號(hào)*10H+列號(hào))。PUSHACC;鍵號(hào)進(jìn)棧保護(hù)。LK3:ACALLKS1;等待鍵釋放。JNZLK3;末釋放,繼續(xù)等待。POPACC;鍵釋放,鍵號(hào)送A。FH:RETI;鍵掃描結(jié)束,出口狀態(tài)為〔A〕=鍵號(hào)。NEXT:INCR4;指向下一行,行號(hào)加1。M0VA,R2;判8行掃描完沒(méi)有?JNBACC.7,KND;8行掃描完,返回。RLA;末完,掃描字左移一位。MOVR2,A;暫存A中。AJMPLK4;轉(zhuǎn)下一行掃描。KND:MOVA,#0FFHJMPFH按鍵判斷子程序KS1:KS1:MOVDPTR,#FE01H;指向PA口。MOVA,#00H;全掃描字#00H=00000000B。M0VX@DPTR,A;全掃描字送PA口。INCDPTR;指向PB口。MOVXA,@DPTR;讀入PB口狀態(tài)。CPLA;變正邏輯,以高電平判定是否有鍵按下。ANLA,#0FH;屏蔽高4位。RET;返回。7-6

A/D轉(zhuǎn)換器接口7-6-1

集成A/D轉(zhuǎn)換器ADC0809/0808為8路輸入通道、8位逐次逼近式A/D轉(zhuǎn)換器,可分時(shí)轉(zhuǎn)換8路模擬信號(hào)。一.結(jié)構(gòu)一個(gè)8位逐次逼近式A/D轉(zhuǎn)換器、8路模擬轉(zhuǎn)換開(kāi)關(guān)、3-8地址鎖存譯碼器和三態(tài)輸出數(shù)據(jù)鎖存器。二.引腳8路模擬量輸入信號(hào)端: IN0~I(xiàn)N78位數(shù)字量輸出信號(hào)端: D0~D7通道選擇地址信號(hào)輸入端: ADDA、ADDB、ADDC多路轉(zhuǎn)換開(kāi)關(guān)ABCIN0IN1IN7A/D轉(zhuǎn)換三.ADC0809與單片機(jī)連接A/D轉(zhuǎn)換程序:

MOVDPTR,#0FE00H;ADC口地址 MOVA,#00 ;轉(zhuǎn)換IN0 MOVX@DPTR,A ;啟動(dòng)A/D轉(zhuǎn)換 LCALLDELAY ;等待轉(zhuǎn)換結(jié)束 MOVXA,@DPTR ;取轉(zhuǎn)換結(jié)果AD0~7ALEINT0WRP2.0RDD0~7ADDABC

CLKEOCALES

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論