1.3 單片機最小應用系統
1.單片機最小系統的組成
所謂最小系統就是指由單片機和一些基本的外圍電路所組成的一個可以工作的單片機系統。一般來說,它包括單片機、晶振電路和復位電路。
1)晶振電路
AT89S52片內有一個由高增益反相放大器構成的振蕩電路。XTAL1和XTAL2分別為振蕩電路的輸入、輸出端。其振蕩電路有兩種組成方式:片內振蕩器和片外振蕩器。
片內振蕩器如圖1.6(a)所示。在XTAL1和XTAL2引腳兩端跨接石英晶體振蕩器和兩個微調電容構成振蕩電路,通常C1和C2取30pF,晶振頻率的取值在(1.2~12)MHz之間。
片外振蕩器如圖1.6(b)所示。XTAL1是外部時鐘信號的輸入端,XTAL2可懸空。由于外部時鐘信號經過片內一個二分頻的觸發器進入時鐘電路,因此對外部時鐘信號的占空比沒有嚴格要求,但高、低電平的時間寬度應不小于20ns。

圖1.6 AT89S52振蕩器電路
2)CPU時序的概念
CPU的時序是指CPU在執行指令過程中,其控制器所發出的一系列特定的控制信號在時間上的相互關系。
時序常用定時單位來說明。時序定時單位共有四個:振蕩周期、時鐘周期、機器周期、指令周期。
(1)振蕩周期
振蕩周期也稱時鐘周期,是指晶體振蕩器直接產生的振蕩信號的周期,是振蕩頻率的倒數。
(2)時鐘周期
時鐘周期又稱狀態周期,用S表示,是振蕩周期的2倍。每個時鐘周期分為P1和P2兩個節拍,P1節拍完成算術邏輯操作,P2節拍完成內部寄存器間數據的傳遞。
1個時鐘周期=2個振蕩周期
(3)機器周期
機器周期是機器的基本操作周期。
1個機器周期=6個時鐘周期=12個振蕩周期
(4)指令周期
指令周期是執行一條指令所占用的全部時間。一個指令周期通常由1~4個機器周期組成。在AT89S52系統中,有單周期指令、雙周期指令和四周期指令。例如:
外接晶振頻率fosc=12 MHz,則4個基本周期的具體數值如下。
① 振蕩周期=1/12 μs。
② 時鐘周期=1/6 μs。
③ 機器周期=1 μs。
④ 指令周期=1~4 μs。
3)復位電路
AT89S52單片機的復位電路如圖1.7所示。在RST輸入端出現高電平時實現復位和初始化。
在振蕩運行的情況下,要實現復位操作,必須使RST引腳至少保持2個機器周期(24個振蕩周期)的高電平。CPU在第2個機器周期內執行內部復位操作,以后每一個機器周期重復一次,直至RST端電平變低。復位期間不產生ALE及PSEN信號,復位后,各內部寄存器狀態如表1.3所示。
如圖1.7(a)所示為上電自動復位電路。加電瞬間,RST端的電位與VCC相同,隨著RC電路充電電流的減小,RST的電位下降,只要RST端保持10 ms以上的高電平就能使AT89S52單片機有效地復位,復位電路中RC的參數通常由實驗調整。當振蕩頻率選用6 MHz時,電容的大小選22 μF,電阻的大小選1 k?,便能可靠地實現上電自動復位。
如圖1.7(b)所示為手動復位電路。

圖1.7 AT89S52單片機復位電路
2.單片機最小系統常用控制器件
單片機最小系統只是單片機能工作的最低要求,它不能對外完成控制任務,實現人機對話。要進行人機對話還要一些輸入、輸出部件,做控制時還要有執行部件。常見的輸入部件有開關、按鈕、鍵盤、鼠標等,輸出部件有指示燈、數碼管、顯示器等,執行部件有繼電器、電磁閥等,下面只介紹幾個簡單的部件。
1)繼電器
繼電器是用低電壓控制高電壓的器件,它包括線圈、鐵芯、銜鐵和觸點。觸點有常開觸點、常閉觸點之分。在開關特性上有單刀單置、雙刀單置、單刀雙置、雙刀雙置、單刀多置、雙刀多置之分。圖1.8(a)為繼電器的符號,圖中只列了四種類型的繼電器,方框代表線圈,圓圈代表觸點,直線代表刀。左下圖為單刀單置,右下圖為單刀雙置,左上圖為雙刀雙置,右上圖為雙刀單置。
工作過程:線圈得電時,常開觸點閉合,常閉觸點斷開;線圈失電時,常開觸點斷開,常閉觸點閉合。電路連接時,由于繼電器所需驅動電流較大,一般情況下需要增加電流放大電路,最簡單的電路是將繼電器的線圈一端接到相應的正電源,另一端接到三極管集電極上,三極管的基極接單片機的輸出端口,發射極接地,并在繼電器的線圈上反并聯一個二極管。以單刀單置為例,將220V相線斷開接觸點兩端(相當于在相線上接一個開關),220V線上再接電氣設備。這樣只要用軟件控制單片機的該輸出口線為高電平時,線圈得電,常開觸點閉合,電氣設備工作(設定高電平工作);用軟件控制單片機的該輸出口線為低電平時,線圈失電,常開觸點斷開,電氣設備停止工作(設定低電平停止)。
2)光耦
光耦在電路中起隔離作用,由光作為信號傳遞媒介,將單片機和外部設備在電氣上隔離。光耦可分為三極管型光耦(又分帶基極型和不帶基極型)、可控硅型光耦(又分單向可控和雙向可控)。如圖1.8(b)所示光耦的工作過程:有電流通過內部發光管,發光管發光,所對應的內部三極管導通;無電流通過內部發光管,發光管不發光,所對應的內部三極管斷開。一般接法是內部發光管陽極接高電平(電源正極),與單片機同電源。陰極接單片機的某一輸出口線,內部三極管對外的兩端接外部設備,這就將單片機和外部設備在電氣上分隔開。當用軟件控制單片機的該輸出口線為低電平時,內部發光管發光,所對應的內部三極管導通,外部設備工作(設定低電平工作);用軟件控制單片機的該輸出口線為高電平時,內部發光管不發光,所對應的內部三極管不導通,外部設備就停止工作(設定高電平停止)。

圖1.8 繼電器和光耦工作過程
3)發光二極管
發光二極管常用做指示燈,其正向壓降為1.4~3.0 V,加正向電壓發光,反之不發光。一般接法是陽極接高電平,電源正極,陰極接單片機的某一輸出口線。當該輸出口線為低電平時,指示燈亮;該輸出口線為高電平時,指示燈不亮。這樣只要編程控制單片機的該輸出口,就可控制指示燈亮或滅。在實際應用中,多增加電流驅動電路。
項目實施1 閃光燈電路的硬件與軟件設計
閃光燈電路是學習單片機的入門知識,可為后續其他章節的學習打基礎。
1.硬件電路設計
閃光燈電路是AT89S52單片機的一種最簡單電路,它包含3個部分:晶振電路、上電復位電路和用戶電路。閃光燈電路原理圖如圖1.9所示。

圖1.9 閃光燈電路原理圖
由于只使用內部程序存儲器,AT89S52的EA端接電源正極。
選用驅動能力較強的P0口中的第一個端口P0.0控制一只LED。當P0.0輸出為1時, LED無電流不發光。當P0.0輸出為0時,流過LED的電流為

LED的控制方法如下所示。

2.元器件清單
元器件清單如表1.5所示。
表1.5 元器件清單

3.軟件設計
單片機控制系統與傳統的模擬和數字控制系統的最大區別在于:單片機系統除了硬件以外還必須有程序支持,即設計軟件程序。
1)程序設計步驟
(1)分析任務,確定算法和解題思路。
(2)根據算法和解題思路畫出程序流程圖。
(3)根據流程圖編寫程序。
(4)上機調試程序。
2)畫流程圖
(1)流程圖的符號如表1.6所示。
表1.6 流程圖符號

(2)閃光燈電路的流程圖如圖1.10所示。

圖1.10 閃光燈電路流程圖
3)程序清單
ORG 0000H L1: CPL P0.0 MOV R6,#00H ;1個機器周期 L2: MOV R7,#00H ;1個機器周期 L3: NOP ;1個機器周期 DJNZ R7,L3 ;2個機器周期 DJNZ R6,L2 ;2個機器周期 SJMP L1 ;2個機器周期 END
4)軟件延時時間計算方法
總延時時間:1+[1+(1+2)×256]×256+2×256=197377個機器周期
如果振蕩頻率=6MHz,即一個機器周期=2 μs,則延時時間為:
2 μs×197377=394754 μs=394.754 ms
振蕩頻率=12MHz,即一個機器周期=1μs,則延時時間為:
1 μs×197377=197377 μs=197.377 ms
調整寄存器R6和R7的值,可改變延時時間。如果執行指令“MOV R6, #80H”,振蕩頻率=12MHz,則延時時間為1+[1+(1+2)×256]×128+2×128=98816×1μs=98816μs≈98.816ms。
4.制作與調試
(1)在用戶板上按圖1.9所示的電路原理圖安裝元器件,元器件清單見表1.5。(40分)
(2)檢查無誤后接通電源,觀察LED顯示情況。 (10分)
(3)分析程序中是哪一條指令使LED的狀態發生變化(閃光)的。 (10分)
(4)畫出流程圖。 (20分)
(5)計算延時時間并編寫一個延時12ms的程序。 (20分)
5.成績評定

項目訓練1 設計一只會閃光的燈
1.目的要求
(1)掌握單片機最小系統硬件電路組成。
(2)掌握硬件電路設計方法。
2.任務目標
用面包板、元器件搭建一個單片機最小系統,控制一只發光管,使發光二極管可以亮、滅,延時時間自己設定,I/O口也自己設定。
3.工具器材
直流穩壓電源、面包板、跳線、元器件等。
4.實訓環節
(1)用面包板組裝最小系統。 (40分)
(2)在計算機中輸入程序并調試,記錄調試中存在的問題。 (20分)
(3)使用下載軟件將程序文件傳送到用戶板中,觀察效果。 (20分)
(4)寫出操作步驟、設計流程。 (20分)
5.成績評定

- 用“芯”探核:龍芯派開發實戰
- ATmega16單片機項目驅動教程
- 龍芯應用開發標準教程
- Python GUI Programming:A Complete Reference Guide
- 計算機組裝與系統配置
- 數字道路技術架構與建設指南
- 電腦常見故障現場處理
- 數字邏輯(第3版)
- Artificial Intelligence Business:How you can profit from AI
- Rapid BeagleBoard Prototyping with MATLAB and Simulink
- 電腦高級維修及故障排除實戰
- WebGL Hotshot
- Blender Game Engine:Beginner's Guide
- Instant Website Touch Integration
- The Applied Artificial Intelligence Workshop