- 51單片機應用基礎(C51版)
- 胡進德 丁如春 劉愛榮
- 6263字
- 2019-11-27 11:56:39
學習單元二 構建與測試單片機基本硬件電路
單片機正常工作的基本條件是:
(1)有電源電路:單片機像其他電子器件一樣,需要電源才能工作。
(2)有時鐘電路:單片機內部是時序邏輯電路,時鐘電路為單片機提供時鐘信號,保證單片機內部各部件同步工作。
(3)有復位電路:復位電路為單片機提供復位信號,使單片機接通電源后從程序存儲器ROM的第一個存儲單元(即0000 H單元)開始執行指令。
(4)有程序存儲器(ROM)。ROM用來存放單片機運行所必須的程序和表格數據。
(5)有數據存儲器(RAM)。RAM用來存放各類數據運算的中間結果和運算的最終結果。
(6)程序存儲器選擇電路。用來確定單片機是從內部ROM(俗稱片內ROM)中0000H單元開始執行指令,還是從外部ROM(俗稱片外ROM)中0000H單元開始執行指令。
(7)有程序:這是單片機作為人的“大腦”控制外部器件的“思想”基礎。
上述前6項是單片機正常工作的硬件基礎,即單片機正常工作時硬件電路必須滿足的最基本的條件,由這6項所組成的硬件電路常稱為單片機最小系統。構建單片機基本硬件電路,就是要構建單片機最小應用系統。由于單片機最小系統是單片機正常工作必須滿足的最基本的前提條件,因而掌握單片機最小系統的搭建與測試方法顯得非常重要,它是每個單片機初學者必須熟練掌握的基本功。現代新型51系列單片機中,單片機內部一般都集成了一定容量的ROM和RAM,如STC89C51RC單片機片內含有4kb(1 kb=1024字節)的Flash ROM和512字節的RAM,其他同系列的單片機片內含有更大容量的ROM和RAM(見附表4-1),因此通常沒有必要在新型51系列單片機外部擴展ROM和RAM,在單片機外部擴展ROM和RAM主要是針對早期無ROM的單片機如8031、8032等(見表1-2)。目前,無ROM的單片機早已不再生產,因此,構建單片機最小應用系統時,重點針對前4項:電源電路、時鐘電路、復位電路和程序存儲器選擇電路。
一、認識引腳功能
在進行硬件電路搭建之前,必須先弄清楚單片機的引腳功能和應用特性,以便正確連線。DIP封裝的單片機如圖2-1所示。

圖2-1 DIP封裝的51單片機外形和引腳名稱
(a)DIP封裝外形用引腳序號(b)引腳名稱
圖中各引腳功能如下:
(1)電源引腳Vcc和GND
Vcc(40腳):正電源腳,接+5V電源。
GND(20腳):負電源腳,接電源地。
通常在Vcc和GND引腳之間接0.1μF高頻濾波電容。
(2)時鐘電路引腳XTAL1和XTAL2
XTAL2(18腳):內部振蕩電路反向放大器的輸出端。采用內部振蕩方式時,該引腳接外部晶振和微調電容的一端。采用外部振蕩方式時,該引腳懸空。
XTALl(19腳):內部振蕩電路反向放大器的輸入端。采用內部振蕩方式時,該引腳接外部晶振和微調電容的另一端。采用外部振蕩方式時,外部振蕩脈沖從該引腳輸入。
(3)地址鎖存允許ALE/
當單片機訪問外部存儲器時,該引腳的輸出信號ALE用于鎖存P0口輸出的低8位地址,從而實現數據與低位地址的復用。當單片機上電正常工作后,ALE端就周期性地輸出正脈沖信號,ALE的輸出頻率為時鐘振蕩頻率的1/6。
(4)外部程序存儲器讀選通信號
是讀外部程序存儲器的選通信號,低電平有效。當單片機訪問片外擴展程序存儲器時,該引腳輸出讀外部程序存儲器的選通信號。
(5)允許訪問外部程序存儲器控制信號/Vpp
/Vpp是允許訪問外部程序存儲器控制腳,低電平有效。如果程序保存在片內ROM中,應該將該引腳接高電平;如果程序保存在片外ROM中,應該將它接地。
(6)復位信號輸入端RST
該信號外接復位電路,高電平有效。在RST輸入端保持至少2個機器周期的高電平后,就可以完成復位操作。
(7)輸入/輸出端口P0、P1、P2和P3
P0口:其引腳標識P0.0~P0.7,它是8位并行、雙向數據端口,此時P0口可工作在I/O應用模式,用于控制外部器件或感受外部器件的狀態。其標識AD0~AD7表示它又是低8位地址線,此時P0口工作在總線應用模式,用于在單片機外部擴展存儲器,它是8位數據線和低8位地址線的復用端口。
P1口:其引腳標識P1.0~P1.7,它是8位并行、雙向數據端口,只能工作在I/O應用模式。
P2口:其引腳標識P2.0~P2.7,它是8位并行、雙向數據端口,此時P2口可工作在I/O應用模式。其標識AD8~AD15表示它又是高8位地址線,此時P2口工作在總線應用模式。
P3口:其引腳標識P3.0~P3.7,它是8位并行、雙向數據端口,此時P3口可工作在I/O應用模式。其他標識表示P3口除了作為一般的I/O口使用之外,還具有其他特殊功能,我們稱之為第二功能。P3口的第二功能見表2-1,這在后續的學習情境中將逐步深入介紹。
表2-1 P3口的第二種功能

二、構建電源電路
單片機的工作電源為+5V直流電源,將GND(20腳)接電源地,Vcc(40腳)接+5V電源,就構成了單片機的供電電路。+5V電源可由5V直流穩壓電源直接提供,也可以用6~9V直流電經LM7805穩壓后產生,如圖2-2所示。LM7805是三端集成穩壓芯片,其外形及引腳序號如圖(a)所示。用LM7805輸出的5V穩壓電源電路如圖(b)所示。圖2-2中,電容C1和C2是濾波電容,用來穩定LM7805輸出的5V電源,C1可取0.33μF, C2可取0.1μF。

圖2-2 由LM7805構成的5V直流穩壓電源
(a)LM7805的外形及引腳序號(b)LM7805輸出5V電源
三、構建時鐘電路
單片機的每一條指令的執行都是由若干個基本的微動作組合而成的。例如由取指令、指令譯碼、指令執行等微動作組合而成。這些微動作在時間上存在嚴格的先后順序,要想這些動作有條不紊地執行,就必須有一個時間基準來同步各部件的動作。單片機的時鐘信號就是用來提供單片機內部各個微動作的時間基準。
1.時鐘信號的產生
根據硬件電路的不同,單片機時鐘信號的產生有內部振蕩方式和外部振蕩方式兩種,實際使用中主要是采用內部振蕩方式。在單片機的XTAL1引腳和XTAL2引腳之間并接一個晶體振蕩器(簡稱晶振)就構成了內部振蕩方式,電路如圖2-3所示。圖中,單片機內部有一個高增益的反相放大器,XTAL1為內部反相放大器的輸入端,XTAL2為內部反相放大器的輸出端,在其兩端接上晶振后,就構成了自激振蕩電路以產生振蕩脈沖,振蕩電路輸出的脈沖信號的頻率就是晶振的固有頻率。在實際應用中通常還要在晶振的兩端和地之間各連一個小電容。電容C1和C2常稱為微調電容,其作用有三個:快速起振、穩定振蕩頻率、微調振蕩頻率。C1和C2可取5~33 pF。不同型號的單片機其晶振頻率范圍不同,如STC89C51RC單片機允許外接0~48 MHz的晶振,AT89S51單片機允許外接0~33 MHz的晶振。

圖2-3 內部振蕩方式電路圖
2.時鐘電路的安裝與焊接
為了減少寄生電容,保證振蕩器穩定可靠地工作,在安裝、焊接時鐘電路時,晶振XT、電容C1和C2應盡可能地安裝在單片機XTALl和XTAL2引腳附近。
3.基本時序單位
所謂時序,即單片機執行一條指令時各個微動作所遵循的時間順序。時序單位即執行指令時單個微動作所花費的時間。單片機所涉及的時序單位主要有振蕩周期、狀態周期、機器周期和指令周期。
(1)振蕩周期
即晶體振蕩周期,也稱為晶振周期或時鐘周期,是指為單片機提供時鐘脈沖信號的振蕩源的周期,是單片機的最小時序單位,單片機片內的各個微動作都以它為基準。
(2)狀態周期
每個狀態周期為時鐘周期的2倍,由振蕩周期經二分頻后得到。
(3)機器周期
機器周期是單片機完成一個基本操作所需要的時間。大多數5l系列單片機的一個機器周期包括12個振蕩周期。
(4)指令周期
單片機執行一條指令所需要的時間稱為指令周期。5l系列單片機有單周期指令、雙周期指令和四周期指令,也就是說單片機執行這些指令分別需要一個機器周期、兩個機器周期和四個機器周期。
以上4個時序單位中,振蕩周期和機器周期是經常要用到的時序單位。各時序單位的關系如下:
假設晶體振蕩器的振蕩頻率為fosc,則:
振蕩周期=1/fosc
狀態周期=2/fosc
機器周期=12/fosc
指令周期=1、2、4個機器周期
例如,若單片機外接12MHz晶振,則振蕩周期為0.083 3μs,機器周期為1μs。
四、構建復位電路
復位電路的作用是產生復位信號RST,5l系列單片機要求RST引腳(9腳)保持至少2個機器周期的高電平才能完成復位操作。復位操作使單片機的各功能部件回復到一個確定的初始狀態。單片機復位后從程序存儲器0000 H地址單元取指令并執行指令。
1.復位電路
復位電路有2種基本方式:上電復位和按鍵復位。
(1)上電復位
所謂上電復位就是單片機只要接通電源就自動實現復位操作。常用的上電復位電路如圖2-4(a)所示。單片機接通電源(即上電)時,電解電容C1正極的電壓瞬間變為+5V,電容C1對于這個瞬間的電壓突變相當于短路,于是+5V高電平相當于直接加到了單片機RST引腳,正是這個加到RST引腳上的瞬間高電平使單片機實現了復位操作。很快,電容C1充滿了電,在電路中相當于斷路,于是RST引腳所加電壓由高電平轉為低電平,單片機開始執行程序。

圖2-4 復位電路
(a)上電復位電路(b)組合復位電路
從圖中可以看出,單片機上電時,電阻R1對電解電容C1充電,RST引腳高電平持續時間取決于RC電路的充電時間常數。只要合理選擇C1和R1的參數,就可以實現上電復位。上電后,晶體振蕩電路起振要經歷一個振蕩建立時間,采用不同頻率的晶體振蕩器,振蕩建立時間不同。所以不同振蕩頻率下,C1和R1的參數不同。通常要求上電時RST引腳持續10ms以上高電平。C1和R1的取值一般為:
C1=10~30μF, R1=l~10kΩ
當晶振頻率為6MHz時,可取R1=1kΩ; C1=22μF;
當晶振頻率為12MHz時,可取R1=8.2~10kΩ; C1=10μF。
(2)按鍵復位
按鍵復位也稱按鈕復位或者開關復位,是指通過接通按鈕開關,使單片機進入復位狀態。按鍵復位電路一般不單獨使用。在單片機硬件電路設計中,若需要使用按鍵復位電路,一般的做法是將按鍵復位與上電復位組合在一起形成組合復位電路,這種組合復位電路如圖2-4(b)所示。圖中,上電復位電路完成上電復位功能,按鍵復位電路由人按開關K實現復位。R2取值一般為200Ω。
2.單片機復位后的工作狀態
單片機內部各功能電路模塊由特殊功能寄存器控制,而程序的運行由程序計數器PC(Program Counter)管理。PC用于存放單片機下一條要執行的指令地址,是一個16位的專用寄存器,可尋址范圍是0000H~FFFFH共64 kb。復位不改變單片機片內RAM中的內容,但使單片機各特殊功能寄存器的內容回復到初始值。程序計數器PC和特殊功能寄存器在單片機復位后的初始值見表2-2。這些特殊功能寄存器的功能和使用方法將在后續學習單元中逐步介紹。
表2-2 程序計數器PC和特殊功能寄存器的復位狀態

注:“×”表示無關位,是一個隨機數。
3.單片機復位后執行程序的過程
單片機到底是如何執行程序的?這是初學者都想知道而且是必須知道的。計算機其實非常笨,它根本不會自己靈活地做任何事情,它運行程序依賴于程序指針PC,這個程序指針指到哪一條指令就必須執行哪一條指令,單片機根本不會變通!在單片機通電復位后,程序計數器PC中的值一定為“0000”(除非它壞了),所以程序總是從ROM中0000 H單元開始執行。一般情況下,程序計數器PC存放有下一條將要執行的指令的地址,且程序計數器PC還具有計數功能,即自動加一功能:從存儲器ROM中每取出指令的一個字節后,其內容又自動加1,指向下一個字節的地址。所以存放在ROM中的程序一旦被啟動,則程序段中的指令便會一條接一條地被順序讀出執行,只有遇到跳轉指令它才轉到其他地方執行程序。
一般來說,單片機的程序通常是一個無限循環結構,目的就是在單片機不斷電時讓程序一直不斷地執行,從而實現對外部器件的控制。
五、構建程序存儲器選擇電路
單片機/Vpp引腳是程序存儲器選擇控制腳:當
/Vpp引腳接低電平時,片內ROM無效,單片機復位后從片外程序存儲器0000 H單元開始取指令并執行指令;當
/Vpp引腳接高電平時,片內ROM有效,單片機復位后從片內程序存儲器0000 H單元開始取指令并執行指令。現代新型51系列單片機內部都集成了一定容量的ROM,一般不需要在單片機外部擴展ROM,程序就存放在片內ROM中,此時應將
/Vpp引腳接高電平。
六、單片機最小系統的構建與測試實例
在圖1-9中,如要用單片機的P1.0引腳控制LED發光二極管閃亮,其基本硬件電路應如何構建呢?
1.基本硬件電路的構建
一種單片機最小系統硬件電路如圖2-5(a)所示。

圖2-5(a)一種單片機最小系統硬件電路
圖2-5(a)是自行開發的51MCU-2型單片機教具[如圖2-5(b)]的一部分簡化電路,本書所涉及的絕大部分實訓項目都可通過此教具完成。圖2-5(a)中所用的元器件清單(含器件標號、名稱、參數和功能)如表2-3所示。
表2-3 一種單片機最小系統元器件清單

圖2-5(a)中單片機采用STC89C51 RC,它可通過RS232串口型下載線燒寫程序。圖中單片機P1端口的8個引腳分別驅動8個發光二極管L0~L7,例如,用P1.0引腳控制發光二極管L0閃亮。由于單片機I/O引腳的驅動能力有限,通常借助單片機外部電源驅動發光二極管,因而將發光二極管的正極與外部正電源Vcc(一般為+5V)相連,發光二極管的負極接單片機I/O引腳。為保證發光二極管工作電流適中(如發光二極管的工作電流太大會燒壞發光二極管),通常發光二極管需串聯一個電阻以限制電流大小,此電阻稱為限流電阻,圖中限流電阻為680Ω。
當我們按圖2-5(a)焊接好電源電路、振蕩電路、復位電路和程序存儲器選擇電路后,就完成了單片機最小系統硬件電路的構建。另外,為了讓單片機驅動LED發光二極管閃亮,為了借助RS232串口型下載線燒寫單片機程序,還需要按圖2-5(a)焊接好其他電路。
2.基本硬件電路的測試
最小系統構建是否成功直接關系到單片機能否正常工作,因此有必要對構建的圖2-5(a)硬件電路進行測試。單片機基本硬件電路測試方法如下:
(1)測試電源電路:用萬用表或示波器測試單片機正電源腳和負電源腳的工作電壓是否與單片機器件資料中給出的工作電壓范圍相符合,一般正電源Vcc為4.5~5.5V。
(2)測試振蕩電路:用示波器測試單片機XTAL1引腳和XTAL2引腳是否有振蕩波形,此波形為正弦波。正弦波經單片機內部電路轉換為時鐘信號——方波。
(3)測試復位電路:用示波器測試單片機RST引腳在上電的瞬間是否有10ms以上高電平;用示波器或萬用表測試單片機RST引腳在按鍵S1閉合時是否有高電平,在按鍵S1斷開時是否有低電平。
(4)測試程序存儲器選擇電路:用萬用表或示波器測試單片機/Vpp腳是否為高電平。
3.51MCU-2型單片機教具簡介
51MCU-2型單片機教具電路板如圖2-5(b)。它既可采用獨立的5V直流穩壓電源,也可通過電腦的USB口供電。它可通過電腦的串行口或打印機并行口直接在電路板上燒寫程序,使用非常靈活、便捷、可靠。教具提供主電路板、指示燈模塊、數碼管模塊、LCD模塊、鍵盤模塊、IC卡模塊、微型打印機模塊等,可完成十多種單片機實訓項目。主要實訓內容如下:

圖2-5(b)51MCU-2型單片機教具電路板
(1)單片機I/O口實訓:如單燈閃亮、跑馬燈等。
(2)定時/計數器實訓:含查詢方式與中斷方式。
(3)中斷實訓:含外部中斷、定時器/計數器中斷和串行口中斷。
(4)串行通信實訓:如單片機與電腦通信、單工與雙工通信、多機通信。
(5)按鍵實訓:涉及單個按鍵和鍵盤矩陣。
(6)LED數碼管實訓:如靜態和動態掃描、電子萬年歷。
(7)LCD實訓:采用19264模塊。
(8)串行A/D實訓:采用TLC549。
(9)I2C總線實訓:如AT24C0X系列實訓項目。
(10)微型打印機實訓。
(11)IC卡實訓。
(12)蜂鳴器實訓。
(13)實時時鐘:采用HT1380。
(14)可擴展的其他實訓項目。
4.編寫程序
硬件電路搭建好后,單片機還必須寫有程序才能讓發光二極管閃亮。如要讓P1.0引腳控制發光二極管L0閃亮,其完整的程序如下。
【例2-1】 單片機控制單個發光二極管閃亮。硬件電路見圖2-5(a),程序如下。
ORG 0000 H ;復位后,程序的起始地址 SJMP MAIN ;程序轉移至MAIN處 ORG 0030H ;0000~002FH處有固定用途,程序一般從 0030H 單元開始存放 MAIN:;指令標號,也稱符號地址 SETB P1.0 ; P1.0輸出高電平 LCALL DELAY ;通過調用延時子程序實現延時 CLR P1.0 ; P1.0輸出低電平 LCALL DELAY ;延時 AJMP MAIN ;跳轉至MAIN處再循環 DELAY:;延時子程序符號地址 MOV R0, #200;將立即數200傳送給寄存器R0 LOOP1:;標號 MOV R1, #250;將立即數250傳送給寄存器R1 DJNZ R1, $ ; R1減1后不為0則再次執行此指令,“$”代表“本 行”或本行的標號。 DJNZ R0, LOOP1; R0減 1 后再判斷R0的內容是否為0,不為0則轉 移至LOOP1 RET ;延時子程序返回 END ;程序結束標志
這里先對以上程序有個初步認識,有待后面逐步深入學習。