生活中的許多電器都使用了單片機,例如:手機、電視機、冰箱、洗衣機、兒童玩具。那么,單片機在這些電器中究竟做了些什么呢?
單片機是這些電器動作的關鍵,是指揮硬件運行的。例如:接收按鈕或按鍵的輸入信號,按照事先編好的程序,指揮馬達和LCD的外圍功能電路動作。
單片機的構成如下圖所示。
單片機是由CPU、內存、外圍功能等部分組成的。如果將單片機比作人,那么CPU是負責思考的,內存是負責記憶的,外圍功能相當于視覺的感官系統及控制手腳動作的神經系統。
盡管我們說CPU相當于人的大腦,但它不能像人的大腦一樣自發思考。CPU只能依次讀取并執行事先存儲在內存中的指令組合。當然CPU執行的指令并不是“走路”、“講話”等高難度命令,而是一些非常簡單的指令,象從內存的某個地方“讀取數據”或把某個數據“寫入”內存的某個地方,或做加法、乘法和邏輯運算等。關于CPU的加法,請移步此文:CPU如何進行數字加法。然而這些簡單指令的組合,卻能實現許多復雜的功能。
會思考的CPU
讓我們從CPU的構成來了解它的作用吧,如下圖所示。
程序計數器
CPU讀取指令時需要知道要執行的指令保存在內存的什么位置,這個位置信息稱為地址(相當于家庭住址)。程序計數器(PC)就是存儲地址的寄存器。通常,PC是按1遞增設計的,也就是說,當CPU執行了0000地址中的指令后,PC會自動加1,變成0001地址。每執行一條指令PC都會自動加1,指向下一條指令的地址。可以說,PC決定了程序執行的順序。
指令解碼電路
指令解碼電路是解讀從內存中讀取的指令的含義。運算電路是根據解碼結果操作的。確切地講,指令解碼電路就是我們在“數字電路入門(2)”中學過的解碼電路,只不過電路結構稍微復雜些,所以,指令解碼電路的工作原理就是從被符號化(被加密)的指令中,還原指令。
運算電路
運算電路也稱為ALU(Arithmetic and Logic Unit),是完成運算的電路。能進行加法、乘法等算術運算、也能進行AND、OR 、BIT-SHIFT等邏輯運算。運算是在指令解碼電路的控制下進行的。通常運算電路的構成都比較復雜。
CPU內部寄存器
CPU內部寄存器是存儲臨時信息的場所。有存儲運算值和運算結果的通用寄存器,也有一些特殊寄存器,比如存儲運算標志的標志寄存器等。也就是說,運算電路進行運算時,并不是在內存中直接運算的,而是將內存中的數據復制到通用寄存器,在通用寄存器中進行運算的。
CPU的工作原理
讓我們通過一個具體運算3+4,來說明CPU的操作過程吧。
假設保存在內存中的程序和數據如下。
步驟1:
當程序被執行時,CPU就讀取當前PC指向的地址0000中的指令(該操作稱為指令讀取)。經過解碼電路解讀后,這條指令的意思是“讀取0100地址中的內容,然后,保存到寄存器1”。于是CPU就執行指令,從0100地址中讀取數據,存入寄存器1。
寄存器1:0→3(由0變為3)
由于執行了1條指令,因此,PC的值變為0001
步驟2:
由于PC的值為0001,因此CPU就讀取0001地址中的指令,經解碼電路解碼后,CPU執行該指令。然后PC再加1。
寄存器2:0→4(由0變為4)
PC:0001→0000
步驟3:
由于PC的值為0002,因此CPU從0002地址中讀取指令,送給指令解碼電路。解碼結果是:將寄存器1和寄存器2相加,然后將結果存于寄存器1。
寄存器1:3→7
PC:2→3
于是3+4的結果7被存于寄存器1,加法運算結束。CPU就是這樣,依次處理每一條簡單的指令。
能記憶的內存
內存是單片機的記憶裝置,主要記憶程序和數據,大體上分為ROM和RAM兩大類相關文章:單片機中的RAM vs ROM。
ROM
ROM(Read Only Memory)是只讀內存的簡稱。保存在ROM中的數據不能刪除,也不會因斷電而丟失。ROM主要用于保存用戶程序和在程序執行中保持不變的常數。
大多數瑞薩(Renesas)的單片機都用閃存作為ROM。這是因為閃存不僅可以象ROM一樣,即使關機也不會丟失數據,而且還允許修改數據。
RAM
RAM(Random Access Memory)是可隨機讀/寫內存的簡稱。可以隨時讀寫數據,但關機后,保存在RAM中的數據也隨之消失。主要用于存儲程序中的變量。
在單芯片單片機中(*1),常常用SRAM作為內部RAM。SRAM允許高速訪問,但是,內部結構太復雜,很難實現高密度集成,不適合用作大容量內存。
除SRAM外,DRAM也是常見的RAM。DRAM的結構比較容易實現高密度集成,因此,比SRAM的容量大。但是,將高速邏輯電路和DRAM安裝于同一個晶片上較為困難,因此,一般在單芯片單片機中很少使用,基本上都是用作外圍電路。
(*1)單芯片單片機是指:將CPU,ROM,RAM,振蕩電路,定時器和串行I/F等集成于一個LSI的微處理器。單芯片單片機的基礎上再配置一些系統的主要外圍電路,而形成的大規模集成電路稱為系統LSI。
“為何要使用單片機……”
為什么很多電器設備都要使用單片機呢?
讓我們用一個點亮LED的電路為例,來說明。如下圖所示,不使用單片機的電路是一個由LED,開關和電阻構成的簡單電路。
使用單片機的電路如下圖所示。
很顯然,使用單片機的電路要復雜得多,而且設計電路還要花費精力與財力。好象使用單片機并沒有什么優點。
但是,現在下結論還為時尚早。
如果我們讓這個電路做一些比較復雜的操作,會怎么樣呢。例如:如果希望LED在按下開關后,經過一段時間再點亮或熄滅,那么,對于安裝有單片機的電路來說,只需更改單片機中的程序就可以了,并不需更改原電路。另一方面,對于沒有單片機的電路來說,就必須在元電路中加入定時器IC,或者用標準邏輯IC和FPGA構成邏輯電路,才能實現這個功能。
也就是說,在更改和添加新功能時,帶有單片機的電路顯然更加容易實現。這正是電器設備使用單片機的原因。單片機可真是個方便的東西哦!
審核編輯 :李倩
-
電路
+關注
關注
172文章
5915瀏覽量
172258 -
單片機
+關注
關注
6037文章
44558瀏覽量
635356
原文標題:為什么很多電器設備都要使用單片機?
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論