當(dāng)單片機(jī)內(nèi)部功能不能滿足應(yīng)用系統(tǒng)的要求,經(jīng)需要在片外連接相應(yīng)的外圍芯片以滿足應(yīng)用系統(tǒng)的要求的過(guò)程,叫做系統(tǒng)擴(kuò)展。
通過(guò)外圍接口技術(shù),可以通過(guò)單片機(jī)來(lái)控制LED數(shù)碼管、鍵盤、LCD顯示屏等外部設(shè)備以及進(jìn)行A/D、D/A轉(zhuǎn)換,使單片機(jī)應(yīng)用在更為廣泛的領(lǐng)域。
系統(tǒng)擴(kuò)展51單片機(jī)中集成了CPU、I/O口、定時(shí)器、中斷系統(tǒng)、存儲(chǔ)器等計(jì)算機(jī)的基本部件,外加電源、復(fù)位電路和時(shí)鐘單路等簡(jiǎn)單的輔助電路即構(gòu)成一個(gè)能夠正常工作的最小系統(tǒng),電路如下圖所示:
51單片機(jī)有很強(qiáng)外部拓展能力,大部分常規(guī)芯片都可作為單片機(jī)的外圍擴(kuò)展電路,可進(jìn)行的拓展有存儲(chǔ)器擴(kuò)展、I/O口擴(kuò)展、串行總線接口存儲(chǔ)器擴(kuò)展等。
總線(Bus)是計(jì)算機(jī)內(nèi)部CPU、內(nèi)存、輸入、輸出等設(shè)備傳遞信息的公用通道,它是由導(dǎo)線組成的傳輸線束, 主機(jī)的各個(gè)部件通過(guò)它相連接,外部設(shè)備通過(guò)相應(yīng)的接口電路再與總線相連接,從而形成了計(jì)算機(jī)硬件系統(tǒng)。按照計(jì)算機(jī)所傳輸?shù)男畔⒎N類,計(jì)算機(jī)的總線可以劃分為地址總線(Address Bus)、數(shù)據(jù)總線(Data Bus)及控制總線(Control Bus),分別用來(lái)傳輸數(shù)據(jù)、數(shù)據(jù)地址和控制信號(hào)。
單片機(jī)的系統(tǒng)擴(kuò)展法有并行擴(kuò)展法及串行擴(kuò)展法,并行擴(kuò)展法是用單片機(jī)的地址總線、數(shù)據(jù)總線及控制總線進(jìn)行系統(tǒng)擴(kuò)展,而串行擴(kuò)展法是用SPI(Serial Peripheral Interface)總線或者I2C(Inter-Integrated Circuit)總線進(jìn)行系統(tǒng)擴(kuò)展。
系統(tǒng)總線擴(kuò)展 總線信號(hào) 對(duì)應(yīng)引腳 擴(kuò)展總線信號(hào)名 信號(hào)含義P0口鎖存輸出 A0~A7 地址總線低8位
P2口 A8~A15 地址總線高8位
P0口 D0~D7 8位數(shù)據(jù)總線
ALE ALE 控制信號(hào),地址鎖存使能
PSEN PSEN 控制信號(hào),程序存儲(chǔ)器ROM使能,低電平有效
EA EA/VPP 控制信號(hào),外部訪問(wèn)使能,低電平有效
RD RD(P3.7) 控制信號(hào),讀信號(hào),低電平有效
WR WR(P3.8) 控制信號(hào),寫信號(hào),低電平有效
51單片機(jī)包含的系統(tǒng)總線信號(hào)如上表所示,為了減少引腳數(shù)量,51系列單片機(jī)的擴(kuò)展總線中,數(shù)據(jù)線和地址線采用了分時(shí)復(fù)用技術(shù)。
P0口除了作一般I/O口外,還可以分時(shí)復(fù)用傳送地址總線信號(hào)的低8位(A0~A7)和數(shù)據(jù)總線信號(hào)(D0~D7),它在某一時(shí)刻傳送的是低8位地址信號(hào)還是數(shù)據(jù)信號(hào)由ALE引腳的電平狀態(tài)指明。 P2口除了作一般I/O口外,還可傳輸?shù)刂房偩€信號(hào)的高8位(A8~A15)。其他系統(tǒng)總線信號(hào)都為控制信號(hào),在執(zhí)行不同指令時(shí),隨硬件產(chǎn)生。
實(shí)際使用時(shí),通過(guò)外接一個(gè)8位鎖存器,可以實(shí)現(xiàn)地址信號(hào)和數(shù)據(jù)信號(hào)分離,如下圖中使用74LS373實(shí)現(xiàn)信號(hào)分離電路原理圖:
進(jìn)行總線擴(kuò)展時(shí),由于地址總線的寬度為16位,故外部ROM或RAM的最大直接尋址范圍都為64KB,同時(shí)它們的地址可以重疊使用。
地址譯碼法進(jìn)行總線擴(kuò)展時(shí),首先要進(jìn)行的是分配地址空間,就是把64KB的尋址空間通過(guò)地址譯碼的方法分成若干個(gè)大小相同的頁(yè)面,其中低位地址線用來(lái)選擇頁(yè)內(nèi)單元,高位地址線則用于頁(yè)面的選擇,不同的外部設(shè)備占用不同的頁(yè)面。分配完成后,就要想辦法進(jìn)行地址譯碼,以方便單片機(jī)進(jìn)行尋址。常用的地址譯碼方法有全地址譯碼法及“部分地址譯碼法”。
全地址譯碼是指所有的地址線都參與譯碼,所得到的地址空間是連續(xù)的,每一個(gè)數(shù)據(jù)單元與地址是一一對(duì)應(yīng)的,其電路的結(jié)構(gòu)一般比較復(fù)雜。例如一個(gè)存儲(chǔ)頁(yè)面大小為8KB,要把64KB的存儲(chǔ)空間分成8個(gè)頁(yè)面,則所有高位地址A13~A15都必須參與譯碼,產(chǎn)生8個(gè)獨(dú)立的頁(yè)面選擇信號(hào),形成一個(gè)連續(xù)的地址段,一般采用3-8譯碼器來(lái)實(shí)現(xiàn),如下圖:
部分譯碼是指只有一部分地址參與譯碼,所得到的地址空間是非連續(xù)的地址段,沒(méi)有覆蓋整個(gè)可尋址空間,一個(gè)數(shù)據(jù)單元可能與幾個(gè)地址對(duì)應(yīng)。如下圖:
還有一種線選法是部分譯碼法的特殊形式,即對(duì)地址線不進(jìn)行譯碼,直接用地址線來(lái)選通數(shù)據(jù)單元,其得到的地址空間也是非連續(xù)的。比如,不用外加譯碼電路,僅用高位地址線就把64KB的尋址空間區(qū)分成若干區(qū),如圖下圖所示:
存儲(chǔ)器擴(kuò)展 ROM擴(kuò)展51單片機(jī)訪問(wèn)外部ROM時(shí),其控制總線僅由ALE、PSEN和EA組成。當(dāng)EA = 1,單片機(jī)要訪問(wèn)的地址的超出片內(nèi)ROM的范圍時(shí),將自動(dòng)轉(zhuǎn)向進(jìn)行片外ROM尋址。可以通過(guò)“MOVC A, @A+DPTR”這條指令訪問(wèn)外部ROM。指令執(zhí)行過(guò)程中控制信號(hào)的邏輯關(guān)系和時(shí)序如下圖:
采用2764擴(kuò)展32KB ROM時(shí),接線圖如下:
RAM擴(kuò)展51單片機(jī)訪問(wèn)外部RAM時(shí),控制總線由ALE、PSEN、RD及WR組成。當(dāng)執(zhí)行“MOVX A, @DRTP”、”MOVX @DPTR, A“”指令時(shí),進(jìn)行讀、寫外部RAM的操作,指令執(zhí)行過(guò)程中控制信號(hào)的邏輯關(guān)系和時(shí)序如下圖:
采用SRAM芯片61128擴(kuò)展32KB RAM時(shí),接線圖如下:
并行擴(kuò)展I/O口的方法,與擴(kuò)展RAM的方法基本一致。
外圍接口技術(shù) LED顯示器LED(Light Emitting Diode)顯示器是若干個(gè)發(fā)光二極管組成的顯示字段的顯示器件。常用的LED顯示器有七段數(shù)碼顯示器。
七段LED數(shù)碼顯示器由8個(gè)發(fā)光二極管組成,根據(jù)內(nèi)部LED的連接形式不同,可分為共陰極和共陽(yáng)極兩種。共陰極發(fā)光二極管的陰極連接在一起,共陽(yáng)極則陽(yáng)極連接在一起,其電路連接如下圖:
選用共陰極的數(shù)碼管時(shí),所有LED的陰極連接在一起接地,當(dāng)某個(gè)LED的陽(yáng)極接高電平則對(duì)應(yīng)的LED便點(diǎn)亮。共陽(yáng)極數(shù)碼管則相反,當(dāng)某個(gè)LED的陰極接低電平則對(duì)應(yīng)的LED便點(diǎn)亮。每次把某些特定的LED點(diǎn)亮,就能使數(shù)碼管用來(lái)顯示一些數(shù)字或符號(hào),LED數(shù)碼管共8位,正好是一個(gè)字節(jié),習(xí)慣上以“a”段對(duì)應(yīng)段碼字節(jié)為最低位,這樣,只需要輸入不同的段碼,就能獲得不同的顯示。
LED數(shù)碼管的顯示方式一般都采用動(dòng)態(tài)顯示,這種方法節(jié)省I/O口,然而在這種方法在任意時(shí)刻只有一位顯示器能被點(diǎn)亮,顯示位數(shù)較多時(shí),需要采用動(dòng)態(tài)掃碼,動(dòng)態(tài)掃描的頻率有一定要求,要使人眼無(wú)法察覺(jué)。頻率過(guò)低的話,LED將會(huì)出現(xiàn)閃爍現(xiàn)象,而頻率太高,每個(gè)LED點(diǎn)亮的時(shí)間太短,LED的亮度太低,肉眼無(wú)法看清。程序上常采用的是調(diào)用延時(shí)子程序的方法,選通某一位LED使其點(diǎn)亮并保持幾個(gè)ms左右的時(shí)間。
鍵盤在單片機(jī)應(yīng)用系統(tǒng)中,往往需要向單片機(jī)輸入一些指令或參數(shù),而單片機(jī)的運(yùn)行結(jié)果有時(shí)也需要通過(guò)外部顯示器或打印機(jī)輸出出來(lái),以供操作者及時(shí)了解和掌握單片機(jī)的運(yùn)行狀況。這樣就構(gòu)成了一種人機(jī)的交互接口。由于單片機(jī)本身的特點(diǎn)決定了其無(wú)法具備鍵盤、顯示器、打印機(jī)等人機(jī)交互部件,所以只能通過(guò)其I/O口來(lái)擴(kuò)展這些功能。
鍵盤可分為編碼鍵盤和非編碼鍵盤。編碼鍵盤上閉合鍵的識(shí)別由專門的硬件實(shí)現(xiàn),非編碼鍵盤則通過(guò)軟件來(lái)即時(shí)實(shí)別。單片機(jī)一般都采用的是非編碼鍵盤。
單片機(jī)系統(tǒng)中所使用的鍵盤都是機(jī)械式的彈性按鍵,因?yàn)榇嬖跈C(jī)械觸點(diǎn)的彈性作用,在按鍵閉合和彈起的瞬間都會(huì)出現(xiàn)抖動(dòng),按鍵抖動(dòng)一般會(huì)持續(xù)5~10ms,為使一次按鍵僅被處理一次,必須消除按鍵抖動(dòng)。消除按鍵抖動(dòng)可以采用軟件消抖或硬件消抖。
硬件消抖通常采用RS觸發(fā)器來(lái)實(shí)現(xiàn),需要在電路上改進(jìn),較為復(fù)雜。軟件消抖更為簡(jiǎn)單,在檢測(cè)到有按鍵閉合時(shí),延時(shí)一小段時(shí)間之后再次檢測(cè),如果仍然檢測(cè)到按鍵閉合,則認(rèn)為按鍵真正閉合。
鍵盤的連接單片機(jī)接口的方式有獨(dú)立式和矩陣式。獨(dú)立式鍵盤的每個(gè)鍵都單獨(dú)與一個(gè)I/O口相連,各鍵的輸入狀態(tài)互不影響。單片機(jī)通過(guò)檢測(cè)對(duì)應(yīng)I/O口的電平高低就可以判斷出是哪個(gè)鍵被按下,然而當(dāng)按鍵數(shù)目較多時(shí),占用的I/O口也較多。
需要的按鍵數(shù)量較多時(shí),通常都采用矩陣式的連接方式。矩陣式鍵盤由行線和列線組成,所以有時(shí)也稱行列式鍵盤。按鍵位于行、列線的交叉點(diǎn)上,行、列線又分別與I/O端口相連。其連接方式如下圖:
矩陣式鍵盤的識(shí)別方法通常采用掃描法。先令某根列線,例如0號(hào)列線輸出為“0”,其余三根列線輸出為“1”。再依次掃描行線的狀態(tài),如有某根行線為“0”則表示該行線與0號(hào)列線交叉處的鍵被按下。如果行線都為“1”,則沒(méi)有鍵被按下。同樣,可以依次將下一根列線置“0”,同時(shí)其余列線“1”,并掃描行線,這樣就可以判斷出被按鍵的位置。
更新歷史:
* 2017.11.28 完成初稿
原文鏈接
評(píng)論