新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機外圍功能電路控制的基礎知識

        單片機外圍功能電路控制的基礎知識

        作者: 時間:2017-10-14 來源:網絡 收藏

          在《嵌入式編程之的基本構成、工作原理》《嵌入式編程之的外圍功能電路》的編程語言和開發環境》,我們一起學習了單片機的硬件和編程語言以及開發環境等。本文將帶大家學習單片機的外圍功能電路控制的基礎知識。

        本文引用地址:http://www.104case.com/article/201710/366330.htm

          () Special Function Registers

          單片機中有象箱子功能一樣的地方,我們稱為寄存器,用來暫存數據。寄存器的種類有程序計數器、通用寄存器、以及(特殊功能寄存器)等。

          主要用來設定外圍功能電路(計數器或串行端口、通用I/O等)的工作方式,確認其工作狀況,并對其進行控制的。也就是說SFR并非僅僅只是用來保存數據的“箱子”。通過改變保存在“箱子”里的數據,不僅可以改變外圍功能電路的動作方式,而且“箱子”里的數據也將隨著外圍功能電路的工作狀況而改變。

          控制外圍功能電路的基礎知識

          下面以通用I/O為例來說明單片機對外圍功能電路的控制。通用I/O具有以下功能:

          輸出功能:可以輸出高電平電壓或低電平電壓

          輸入功能:可以讀出輸入到引腳的電壓電平

          首先來看輸出功能的控制。圖1中的引腳A是一個通用I/O。

          如果向引腳A的寄存器(SFR)

          寫入0,則引腳A的輸出電壓將為低電平(0V)。

          寫入1,則引腳A的輸出電壓將為高電平(5V)。

          

          圖1: 通用I/O的輸出功能

          如果將圖1的引腳A連接一個LED,就可以構成一個控制LED的電路(見圖2)。此時,向寄存器(SFR)寫入0則LED亮燈,輸入1則LED熄滅。雖然這是一種很簡單的動作,但卻反映了單片機對各種外圍功能電路進行控制的基本原理。利用這種功能,就可以完成象電機的ON/OFF一樣的開關作用(由于通常的單片機上不能流過驅動電機運行的大電流,所以還需另行準備用FET或晶體管作成的電機驅動電路)。另外,如果使用多個通用I/O端口,就可以完成更加復雜的控制。

          

          圖2:通用I/O的LED控制電路

          接下來看輸入功能(圖3)。

          如果向引腳A輸入低電平電壓(0V),就會從寄存器(SFR)讀出0。

          如果向引腳A輸入高電平電壓(5V),就會從寄存器(SFR)讀出1。

          即,讀取寄存器(SFR)的值,就可以判斷外部電壓是低電平電壓還是高電平電壓。

          

          圖3:通用I/O的輸入功能

          圖4:通用IO輸入功能構成的開關電路

          使用通用I/O的輸入功能構成圖4所示的電路,單片機就可以判斷出開關(S)的狀態。

          當開關(S)斷開時,電源電壓通過上拉電阻(R),連接到引腳A(相當于輸入高電平電壓),寄存器(SFR)將的值變為1。

          當開關(S)關閉時,引腳A被連接到低電平電壓,寄存器(SFR)的值變為0。

          單片機通過讀取引腳A的寄存器(SFR)的值,是“1”還是“0”,可以判斷外部開關(S)是斷開還是關閉狀態。

          

          圖4:通用IO輸入功能構成的開關電路

          單片機上搭載了各種功能的SFR。通過程序來更改或讀出這些功能寄存器的值,就可獲知單片機的信息,而對進行控制。所以可以說,SFR就象是單片機的五官或者手腳。



        關鍵詞: 單片機 SFR 外圍電路

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 二连浩特市| 兴国县| 蓝山县| 武城县| 兴安盟| 抚顺市| 松潘县| 合肥市| 类乌齐县| 嵊泗县| 温宿县| 尼勒克县| 安宁市| 健康| 高碑店市| 垣曲县| 庆安县| 固阳县| 策勒县| 钟山县| 烟台市| 大同县| 岑巩县| 岳阳县| 河津市| 聂拉木县| 思南县| 太和县| 凌源市| 潞西市| 涟水县| 榕江县| 上栗县| 兴仁县| 鹤岗市| 龙南县| 桂林市| 贞丰县| 日土县| 高阳县| 苍南县|