單片機(jī)外圍功能電路控制的基礎(chǔ)知識(shí)
在《嵌入式編程之單片機(jī)的基本構(gòu)成、工作原理》、《嵌入式編程之單片機(jī)的外圍功能電路》和《單片機(jī)的編程語(yǔ)言和開(kāi)發(fā)環(huán)境》,我們一起學(xué)習(xí)了單片機(jī)的硬件和編程語(yǔ)言以及開(kāi)發(fā)環(huán)境等。本文將帶大家學(xué)習(xí)單片機(jī)的外圍功能電路控制的基礎(chǔ)知識(shí)。
本文引用地址:http://www.biyoush.com/article/201710/366330.htm?。?a class="contentlabel" href="http://www.biyoush.com/news/listbylabel/label/SFR">SFR) Special Function Registers
單片機(jī)中有象箱子功能一樣的地方,我們稱(chēng)為寄存器,用來(lái)暫存數(shù)據(jù)。寄存器的種類(lèi)有程序計(jì)數(shù)器、通用寄存器、以及SFR(特殊功能寄存器)等。
SFR主要用來(lái)設(shè)定外圍功能電路(計(jì)數(shù)器或串行端口、通用I/O等)的工作方式,確認(rèn)其工作狀況,并對(duì)其進(jìn)行控制的。也就是說(shuō)SFR并非僅僅只是用來(lái)保存數(shù)據(jù)的“箱子”。通過(guò)改變保存在“箱子”里的數(shù)據(jù),不僅可以改變外圍功能電路的動(dòng)作方式,而且“箱子”里的數(shù)據(jù)也將隨著外圍功能電路的工作狀況而改變。
控制外圍功能電路的基礎(chǔ)知識(shí)
下面以通用I/O為例來(lái)說(shuō)明單片機(jī)對(duì)外圍功能電路的控制。通用I/O具有以下功能:
輸出功能:可以輸出高電平電壓或低電平電壓
輸入功能:可以讀出輸入到引腳的電壓電平
首先來(lái)看輸出功能的控制。圖1中的引腳A是一個(gè)通用I/O。
如果向引腳A的寄存器(SFR)
寫(xiě)入0,則引腳A的輸出電壓將為低電平(0V)。
寫(xiě)入1,則引腳A的輸出電壓將為高電平(5V)。
圖1: 通用I/O的輸出功能
如果將圖1的引腳A連接一個(gè)LED,就可以構(gòu)成一個(gè)控制LED的電路(見(jiàn)圖2)。此時(shí),向寄存器(SFR)寫(xiě)入0則LED亮燈,輸入1則LED熄滅。雖然這是一種很簡(jiǎn)單的動(dòng)作,但卻反映了單片機(jī)對(duì)各種外圍功能電路進(jìn)行控制的基本原理。利用這種功能,就可以完成象電機(jī)的ON/OFF一樣的開(kāi)關(guān)作用(由于通常的單片機(jī)上不能流過(guò)驅(qū)動(dòng)電機(jī)運(yùn)行的大電流,所以還需另行準(zhǔn)備用FET或晶體管作成的電機(jī)驅(qū)動(dòng)電路)。另外,如果使用多個(gè)通用I/O端口,就可以完成更加復(fù)雜的控制。
圖2:通用I/O的LED控制電路
接下來(lái)看輸入功能(圖3)。
如果向引腳A輸入低電平電壓(0V),就會(huì)從寄存器(SFR)讀出0。
如果向引腳A輸入高電平電壓(5V),就會(huì)從寄存器(SFR)讀出1。
即,讀取寄存器(SFR)的值,就可以判斷外部電壓是低電平電壓還是高電平電壓。
圖3:通用I/O的輸入功能
圖4:通用IO輸入功能構(gòu)成的開(kāi)關(guān)電路
使用通用I/O的輸入功能構(gòu)成圖4所示的電路,單片機(jī)就可以判斷出開(kāi)關(guān)(S)的狀態(tài)。
當(dāng)開(kāi)關(guān)(S)斷開(kāi)時(shí),電源電壓通過(guò)上拉電阻(R),連接到引腳A(相當(dāng)于輸入高電平電壓),寄存器(SFR)將的值變?yōu)?。
當(dāng)開(kāi)關(guān)(S)關(guān)閉時(shí),引腳A被連接到低電平電壓,寄存器(SFR)的值變?yōu)?。
單片機(jī)通過(guò)讀取引腳A的寄存器(SFR)的值,是“1”還是“0”,可以判斷外部開(kāi)關(guān)(S)是斷開(kāi)還是關(guān)閉狀態(tài)。
圖4:通用IO輸入功能構(gòu)成的開(kāi)關(guān)電路
單片機(jī)上搭載了各種功能的SFR。通過(guò)程序來(lái)更改或讀出這些功能寄存器的值,就可獲知單片機(jī)外圍電路的信息,而對(duì)外圍電路進(jìn)行控制。所以可以說(shuō),SFR就象是單片機(jī)的五官或者手腳。
評(píng)論