- 零基礎學單片機C語言程序設計
- 趙建領 薛園園等編著
- 1713字
- 2018-12-31 21:41:27
2.1 51系列單片機的最小硬件系統
51系列單片機的最小硬件系統是指能讓單片機正常工作的最小硬件電路。對于8051系列單片機及其兼容的型號,其電路的最小系統大致相同,這里以AT89S52為例,介紹典型的51系列單片機最小硬件電路,如圖2.1所示。該電路圖中所使用的元器件的參數及數量如表2.1所示。

圖2.1 單片機最小系統圖
表2.1 元器件列表

該電路能夠讓單片機程序順利運行。其中,P0端口放置了10K的上拉電阻,外接24MHz晶振通過兩個30pF的電容接地來構成振蕩電路,同時采用了手動加上電復位電路。AT89S52單片機工作需要5V的電壓,對于其他一些類型的單片機可能需要3.3V或者更低的工作電壓。整個電路的關鍵部分是單片機的時鐘振蕩電路和復位電路,下面分別進行介紹。
2.1.1 時鐘振蕩電路
時鐘振蕩電路用于產生單片機正常工作時所需要的時鐘信號。51系列單片機可以采用兩種方式的時鐘振蕩電路:內部振蕩電路和外部振蕩電路。下面分別介紹這兩種方式。
1. 內部振蕩電路
內部振蕩電路是采用單片機內部振蕩器來產生工作所需的時鐘。51系列單片機內部包含一個高增益的單級反相放大器,引腳XTAL1和XTAL2分別為片內反相放大器的輸入端口和輸出端口。當單片機工作于內部振蕩模式的時候,只需在XTAL1引腳和XTAL2引腳連接一個晶體振蕩器或者陶瓷振蕩器,并通過兩個電容后接地即可,如圖2.2所示。使用時,對于電容的選擇有一定的要求。

圖2.2 內部時鐘模式
?當外接晶體振蕩器的時候,接地電容一般選擇C1=C2=30±10pF。
?當外接陶瓷振蕩器的時候,接地電容一般選擇C1=C2=40±10pF。
在實際的硬件電路板設計時,應該保證外接的振蕩器和電容盡可能靠近單片機的XTAL1和XTAL2引腳。這樣可以減少寄生電容的影響,使振蕩器能夠穩定可靠地為單片機CPU提供時鐘信號。如果振蕩器連接不當,會導致電路不起振,沒有時鐘信號產生。
2. 外部振蕩電路
外部振蕩電路是采用外部振蕩器產生時鐘信號直接供單片機使用。對于不同結構的單片機,外部振蕩電路的方式有所不同,如圖2.3所示。

圖2.3 外部振蕩電路
對于普通的8051單片機,外部時鐘信號由XTAL2引腳接入后直接送到單片機內部的時鐘發生器,而引腳XTAL1則應直接接地。這里需要注意,由于XTAL2引腳的邏輯電平不是TTL信號,因此建議外接一個上拉電阻。
對于CMOS型的80C51、80C52、AT89S52等單片機,其內部的時鐘發生器的信號取自于反相放大器的輸入端。因此,外部的時鐘信號應該接到單片機的XTAL1引腳,而XTAL2引腳則懸空即可。
另外,無論采用內部振蕩電路還是外部振蕩電路,振蕩電路的頻率應該滿足單片機的工作頻率要求,比如對于AT89S52單片機,其工作頻率為0~33MHz。
2.1.2 單片機的復位電路
單片機的復位電路使單片機進入復位狀態。通過復位操作可以完成單片機的初始化,也可使處于死機狀態下的單片機程序重新開始運行。
1. 單片機復位的原理
單片機復位的原理是,在時鐘電路開始工作后,在單片機的RST復位引腳施加24個以上的時鐘振蕩脈沖的高電平,單片機便可以實現復位。當RST引腳從高電平跳變為低電平后,單片機便從0000H地址開始執行程序。
單片機的復位電路可以有上電復位、手動加上電復位、看門狗復位以及一些復雜的復位電路。在實際應用中,一般采用外部復位電路來進行單片機復位。此時,在RST引腳保持10ms以上的高電平即可保證單片機能夠可靠地復位。
2. 復位電路
最典型的上電復位電路如圖2.4所示,其基本原理是利用RC電路的充放電效應。當單片機上電的時候,復位電路通過電容加載RST引腳一個短暫的高電平信號,這個高電平信號隨著電容的充電而逐漸降低,這個高電平持續的時間和RC電路的充放電時間有關。用戶在使用時,需要選擇合適的電容和電阻來使高電平的持續時間大于單片機的復位時間。

圖2.4 上電復位電路
在實際應用的電路中經常需要手工復位,因此使用最多的便是既可以手動復位又可以上電復位的電路,如圖2.5所示。上電復位部分的原理同樣是RC電路的充放電效應。當按下復位開關的時候,VCC通過一個電阻之間連接到RST引腳,給RST一個高電平,按鍵松開的時候,RST引腳恢復為低電平,從而完成復位。

圖2.5 手動加上電復位電路
在一些復雜的單片機系統中,還經常用到定時監視器復位,它采用單片機內部的看門狗來實現復位操作。應用程序在運行過程中,由于外界的干擾而進入非正常工作狀態時,WDT定時計數器產生溢出信號,復位單片機,重新恢復正常運行。對于自身不帶看門狗WDT功能的單片機,可以采用專門的復位電路芯片來實現。
- Functional Python Programming
- Learning LibGDX Game Development(Second Edition)
- Android 9 Development Cookbook(Third Edition)
- Python零基礎快樂學習之旅(K12實戰訓練)
- Java面向對象程序開發及實戰
- 小程序開發原理與實戰
- Building RESTful Python Web Services
- 微服務架構深度解析:原理、實踐與進階
- C語言從入門到精通
- Java程序員面試筆試寶典(第2版)
- C++反匯編與逆向分析技術揭秘(第2版)
- MySQL程序員面試筆試寶典
- Mastering Adobe Captivate 7
- 交互式程序設計(第2版)
- 多媒體技術及應用