官术网_书友最值得收藏!

1.2 認識單片機

單片機系統中的核心部分是單片機。

我們在學校、家庭中都使用PC,也稱為電腦。電腦的基本組成是:CPU、內存、硬盤、主板、接口等,如果將這些部件濃縮到一塊芯片上,就稱之為單片機,當然單片機的運算位數和運算速度比不上PC,但其應用的場合是PC所做不到的,例如家用電器、機電一體化設計、工業控制現場、工業控制網絡,等等。單片機的實物圖如圖1.5所示。

圖1.5 單片機實物圖

從圖1.5中不難看出,從外形上來說,單片機與普通的集成電路沒有什么不同,只是在內部結構上有區別。這就要從單片機的組成說起。

一個比較完整的單片機應該包括:中央處理器(CPU)、片內數據存儲器(RAM)、片內程序存儲器(ROM)、輸入/輸出接口(I/O口)、可編程串行口、定時/計數器、中斷系統及特殊功能寄存器(SFR)。

隨著電子技術的發展,芯片集成度不斷提高,使得單片機的功能越來越強大。現在市面上流行的單片機內還增加了很多部件,如閃速存儲器(Flash存儲器)、模擬/數字轉換器(A/D轉換器)、數字/模擬轉換器(D/A轉換器)、I2 C總線接口、USB總線接口、CAN總線接口、“看門狗”電路(WDT),等等,使單片機的應用領域越來越寬,用包含這些部件的單片機組成的單片機系統的體積越來越小。

下面以AT89S51單片機為例,簡單了解一下單片機的基本組成部件。

1.2.1 CPU

CPU是單片機的核心部分,它的作用是讀入和分析每條指令,根據每條指令的功能要求,控制各個部件執行相應的操作。CPU的運算位數決定單片機的位數。AT89S51為8位單片機。

CPU中包含運算器和控制器。運算器主要用來實現數據的傳送、數據的算術運算以及布爾(位)運算等。控制器主要用來統一指揮和控制計算機進行工作的部件。

1.2.2 片內寄存器

在MCS-51系列(Intel公司生產)單片機的片內有256B(隨機存儲器)RAM和4KB(只讀存儲器)ROM,而在AT89S51單片機內除了同樣具有256B RAM外,還具有4KB的Flash存儲器,這種存儲器允許在線編程(這部分將在第7章中詳細介紹)。

由于目前大部分的單片機系統都不再使用“三總線”結構,系統的程序全部都放在單片機的片內,所以片外的ROM幾乎不再擴展,除非有十分特殊的要求。另外,在實驗室或參加全國大學生電子設計競賽時,常常需要快速編程,并下載到單片機中,以往的紫外線擦除方式和電擦除方式已經顯得十分笨拙,取而代之的方法是在線編程方式。應用這種方法,單片機可以不必從電路板上取下,而是直接編寫程序,十分方便、簡單。

單片機(除一些特殊型號的單片機外)片內的RAM容量始終比較小,當我們進行運算的數據較少,并且RAM單元足夠使用時,可以不進行擴展。但是,當單片機的運算量較大,RAM單元不夠使用時,常常需要進行擴展。如圖1.6所示為單片機片內RAM的結構示意圖。圖中灰色區域為用戶RAM區。

圖1.6 單片機片內RAM的結構示意圖

1.2.3 輸入/輸出接口(I/O口)

AT89S51單片機與MCS-51系列單片機相同,都具有4個8位的并行輸入/輸出接口(I/O口),記作P0、P1、P2和P3,共占用單片機的32個引腳。

單片機的輸入/輸出接口具有多種功能,其中的一種功能是連接成“三總線”形式,如圖1.7所示。由于現在的大部分系統不采用“三總線”結構,所以這里不再詳細說明。

圖1.7 單片機引腳“三總線”結構圖

目前的單片機系統中,大部分是利用I/O口的輸入/輸出功能,在使用這些功能之前,必須先要了解這些I/O口的特性。

1. P0口

P0口是一個8位、漏極開路的雙向I/O口。由其內部結構決定,當P0口作輸出口時,必須外接上拉電阻,如圖1.8所示。上拉電阻的大小需要根據負載的阻抗進行匹配,一般情況下為1~10kΩ。

圖1.8 P0口在作輸出口時的連接方法

當P0口作輸入口時,必須先向P0口輸出高電平,即“寫1”操作,方能正確地讀取該端口上的外部數據。

由于P0口為漏極開路輸出,所以每個引腳可驅動8個LS型TTL負載。

2. P1口

P1口只能用做普通的I/O口,是一個8位的、可進行位尋址的I/O端口,在端口的內部具有一個20~40kΩ的上拉電阻,所以在使用P1口時,不需連接上拉電阻。

當P1口作輸入口時,必須先向P1口執行“寫1”操作,方能正確地讀取該端口上的外部數據。由于P0口為漏極開路輸出,所以每個引腳可驅動4個LS型TTL負載。

3. P2口

P2口既可以用做“三總線”結構中的“地址線的高8位”,又可用做普通的I/O口,在端口內部有一個20~40kΩ的上拉電阻,所以在使用P2口時,無須連接上拉電阻。

當P2口作輸入口時,必須先向P2口執行“寫1”操作,方能正確地讀取該端口上的外部數據。由于P2口為漏極開路輸出,所以每個引腳可驅動4個LS型TTL負載。

4. P3口

P3口是一個多功能端口,除了具有準雙向I/O端口的功能外,還具有第二功能,如表1.1所示。

表1.1 P3口第二功能表

在P3口的端口內部有一個20~40kΩ的上拉電阻,所以在使用P3口時,不需要連接上拉電阻。

當P3口作普通I/O口的輸入口時,必須先向P3口執行“寫1”操作,方能正確地讀取該端口上的外部數據。由于P3口為漏極開路輸出,所以每個引腳可驅動4個LS型TTL負載。

1.2.4 特殊功能寄存器(SFR)

如圖1.6所示,SFR位于單片機片內RAM的高128個字節當中,反映了單片機的狀態,實際上就是單片機的狀態字和控制字寄存器,分為兩大類:一類與單片機芯片的引腳有關,另一類作內部控制用。在圖1.6中我們看到,在128個字節當中,只使用了21個字節用于存放不同的寄存器,其余的部分主要是留給生產廠商進行不同的開發時使用。

這21個特殊功能寄存器是最基本的寄存器,凡是與MCS-51系列單片機兼容的型號(AT89C1051、AT89C2051和AT89C4051使用的數量少于21個)都具有這21個寄存器,只是不同的單片機型號,對應增加功能的同時,也會增加特殊功能寄存器的數量,如AT89S51增加了片內“看門狗”電路(WDT),所以增加了一個WDTRST(WDT復位寄存器);增加了2個輔助寄存器AUXR和AUXR1;增加了一個數據指針寄存器DPTR1等。這些新增的寄存器全部被安放在片內RAM的高128B中。

這些特殊功能寄存器在使用時有一個特點:凡是寄存器所在的單元地址尾數為“0”和“8”的,都可以進行位尋址,如ACC、B、PSW等。

在SFR中有兩個寄存器與片內RAM低128B有關:一個是PSW,狀態字寄存器,一個是SP,堆棧指針寄存器。PSW中的D4和D3決定了用戶當前所能使用的工作寄存器組(第0組~第3組)。SP用于標定堆棧的棧底,SP的值設為多少,堆棧的棧底就是多少。所謂堆棧是指用于保護現場值和斷點地址值的區域。在單片機內堆棧屬于向上生長型,即有數據壓棧時,堆棧指針SP加一,當在單片機上電復位時(不包括手動復位),SP的默認值為07H,即棧底為07H,這個地址剛好占用了第1組工作寄存器,隨著堆棧的不斷向上生長,將逐一的占用第2組工作寄存器、第3組工作寄存器和位尋址區,在圖1.6中能夠清晰地看到。所以,在使用堆棧前,通常都要對SP重新賦值,一般的設定在30H以上,這樣才不會影響正常使用工作寄存器組和位尋址區,同時可以提高堆棧的安全性。

其余的特殊功能寄存器,這里就不再贅述了。

1.2.5 定時/計數器

AT89S51單片機內有兩個16位的定時/計數器T0和T1,都具有兩種功能:定時功能和計數功能。

這兩種功能最基本的實現方法都是“計數”。

所謂定時功能,是對固定時間間隔的計數,這個過程好比我們平時的“數秒”,由于秒的間隔是固定的,每經過1秒,將計數值加一,所以“數秒”最后可以反映出時間的概念。在單片機內最穩定的就是振蕩器脈沖的時間間隔,振蕩器脈沖經過12分頻后,由計數器進行計數,計數值就是時間。

所謂計數功能,是對任意時間間隔的計數,由于這個時間間隔不固定,所以用于對單片機片外的脈沖信號進行計數,這個脈沖信號通過P3.4(T0)和P3.5(T1)引腳引入到單片機的片內。需要注意的是外部脈沖信號的頻率不能低于晶振振蕩頻率經過12分頻后的頻率值,否則將無法完成準確的計數。

如圖1.9所示為定時功能和計數功能的示意圖。

圖1.9 定時功能和計數功能示意圖

定時/計數器T1在定時功能中還有一個用途:就是為串行通信作波特率發生器。當T1用做波特率發生器時,只需要設定好初值并將T1啟動即可,這常常要關閉T1的中斷請求,防止誤操作。有關定時/計數器的設置請查閱其他有關單片機的書籍。

1.2.6 串行通信接口

在單片機內,目前所使用的串行通信接口的種類較多,如UART、I2 C、SPI、USB等。不同型號的單片機內使用的串行通信接口不同,如AT89系列單片機內使用的是UART,C8051F系列單片機內有的具有UART和SPI,有的具有UART和USB,等等,所以我們可以根據自己的需要選擇相應的單片機,在有些場合如果單片機沒有需要的串行通信接口,可以通過單片機的I/O口進行模擬,這部分將在第5章中詳細介紹。

在MSC-51和AT89系列單片機中使用的是全雙工UART(異步串行通信接口),I/O端口位P3.0和P3.1也是一個很通用的通信接口。在單片機內這個接口被定義成了兩種工作狀態:同步串行通信狀態和異步串行通信狀態。

同步串行通信雖然傳輸速率較高,但由于其硬件電路復雜,并且無論是在發射狀態還是在接收狀態都要同時使用兩條信號線,這就致使在單片機上進行同步通信只能使用單工方式或半雙工方式,很不方便。單片機上的串行口在同步方式下除了可以用于通信外,還可以用于I/O口的擴展,當與74LS164聯合使用時,可以擴展成并行輸出口;當與74LS165聯合使用時,可以擴展成并行輸入口,等等。

異步串行通信技術比較簡單,雖傳輸速率不高(這里指的是單片機的串行口),但應用卻很廣泛,并且方便與其他的通信標準進行銜接。這在第5章中也會詳細介紹。

1.2.7 中斷系統

中斷技術是計算機中一個很重要的技術,它既與硬件電路有關,也與軟件有關。正是因為有了中斷功能,才能夠很好地解決快速CPU與慢速外設之間的矛盾;才能夠隨時響應外部設備提出的請求;才能夠及時處理計算機在運行過程中出現的故障,保障計算機的安全。

在單片機中,中斷系統并不是獨立存在的,而是與其他部分相關聯。中斷系統被分成三大類:外部中斷、定時中斷和串行中斷。外部中斷有兩個中斷源(也可以稱之為中斷向量),占用I/O端口中的P3.2和P3.3;定時中斷有兩個中斷源,當定時/計數器計滿溢出時便會產生中斷;串行中斷只有一個中斷源,但無論是發送中斷還是接收中斷,都只使用同一個中斷源(主要是由于發送SBUF與接收SBUF為同一個寄存器),當產生中斷后需要進行判別。

中斷系統在使用時有一些問題需要注意:

①中斷優先級的設置;

②中斷允許位的設置;

③中斷發生后,現場的保護、中斷的屏蔽;

④中斷返回前,現場的恢復、中斷的重新允許等。

主站蜘蛛池模板: 沂南县| 大渡口区| 馆陶县| 沙河市| 山丹县| 商都县| 成都市| 天台县| 大埔县| 兴宁市| 汝南县| 景洪市| 象山县| 南雄市| 富宁县| 读书| 凤台县| 临颍县| 高清| 陕西省| 融水| 海丰县| 连南| 庐江县| 徐水县| 德昌县| 新邵县| 柳河县| 齐齐哈尔市| 绵竹市| 泸溪县| 寻乌县| 深泽县| 天峨县| 金门县| 盐亭县| 托克逊县| 来宾市| 巫溪县| 昭通市| 榆社县|