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