小編推薦:51單片機(jī)知識(shí)大匯總

2013-11-14 22:33 來源:電子信息網(wǎng) 作者:和靜

基于51單片機(jī)的函數(shù)信號(hào)發(fā)生器利用單片機(jī)AT89C52 采用程序設(shè)計(jì)方法產(chǎn)生鋸齒波、三 角波、正弦波、方波四種波形,再通過D/A 轉(zhuǎn)換器DAC0832 將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),濾波放大,最終由示波器顯示出來,能產(chǎn)生 10Hz—10kHz 的波形。下面就對(duì)51單片機(jī)進(jìn)行詳細(xì)論述。

1.取指譯碼執(zhí)行模型:首先我們來看看單片機(jī)是如何工作的,我們拿電腦的主板來作為對(duì)比,我們買電腦時(shí),總是追求處理器的主頻。處理器的工作原理是從存儲(chǔ)器上取出一條指令,然后對(duì)指令譯碼,譯碼完后執(zhí)行。然后取下一條指令,譯碼,執(zhí)行。它為什么能這么有序的工作?是因?yàn)樗幸粋€(gè)工作時(shí)鐘,在這個(gè)工作時(shí)鐘的統(tǒng)一管理下,處理器有序的工作,這里的主頻就是工作時(shí)鐘的速度,當(dāng)然,現(xiàn)在你可能也知道主頻越高,取指譯碼速度越快,性能越好。那么你可能會(huì)問,這跟51單片機(jī)有什么關(guān)系,OK,切入正題,單片機(jī)的工作也是這個(gè)原理,從存儲(chǔ)器上取指,譯碼,執(zhí)行。但是單片機(jī)的存儲(chǔ)器在哪?在單片機(jī)的內(nèi)部,對(duì)于電腦來說,是把處理器,內(nèi)存集中在一塊主板上。而現(xiàn)在你應(yīng)該很明確,對(duì)于單片機(jī)它就相當(dāng)于一塊電腦主板,把處理器,存儲(chǔ)器集中到一塊芯片內(nèi)部。從這個(gè)宏觀的角度看,所有的單片機(jī)是不是都是一個(gè)原理,服從于取指,譯碼,執(zhí)行的基本模型。OK,繼續(xù)……

2. 51單片機(jī)的外設(shè):我們?cè)趯W(xué)習(xí)單片機(jī)時(shí),所做的第一個(gè)實(shí)驗(yàn)都是一樣的,點(diǎn)燈。也許你已經(jīng)學(xué)會(huì)了用單片機(jī)做出好看的花樣燈,或者用單片機(jī)驅(qū)動(dòng)數(shù)碼管顯示出數(shù)字或字母。或者可以檢測(cè)按鍵了。不錯(cuò),我們仔細(xì)想想這些是什么,無非,你就是控制那一排排引腳輸出高低電平,我們稱這些引腳叫I/O口,輸入輸出,按鍵是輸入,點(diǎn)燈是輸出。其實(shí)你以為你學(xué)了三樣?xùn)|西,其實(shí),你只學(xué)了一樣?xùn)|西,I/O控制。所以這些內(nèi)容并不是單片機(jī)的內(nèi)容,我們稱之為單片機(jī)的外設(shè),現(xiàn)在你應(yīng)該很明確了,所謂的LCD液晶,AD芯片什么的都是單片機(jī)的外設(shè)。但是我們?yōu)槭裁匆獙W(xué)習(xí)這些單片機(jī)的外設(shè)呢?還是為了熟悉單片機(jī),你驅(qū)動(dòng)的芯片多了,自然對(duì)編程模型就熟悉了。其實(shí),我們用單片機(jī)就是在驅(qū)動(dòng)外設(shè),然后你問那定時(shí)器,中斷,串口通信又是什么?對(duì)于中斷,現(xiàn)在單片機(jī)在做一件事,突然,我給個(gè)信號(hào),現(xiàn)在出了一個(gè)意外,你趕快去做另一件事,做完另一件再回來,就是這樣。對(duì)于定時(shí)器,我舉個(gè)例子,現(xiàn)在對(duì)于一盞燈,我要他每天晚上六點(diǎn)打開,每天早上六點(diǎn)關(guān)閉,我們會(huì)怎么做?設(shè)定一個(gè)計(jì)時(shí)器,假設(shè)當(dāng)前是晚上六點(diǎn),現(xiàn)在我讓I/O口輸出高電平點(diǎn)燈,同時(shí)打開計(jì)時(shí)器,定12個(gè)小時(shí),12個(gè)小時(shí)一到,給一個(gè)中斷,去把I/O口取反,關(guān)燈,是不是這樣控制的。所以中斷,定時(shí)器只是為了更好的讓單片機(jī)進(jìn)行控制工作?,F(xiàn)在你應(yīng)該很熟悉了,單片機(jī)就是一款自動(dòng)控制的芯片。注意,是芯片,你做的工作就是如何編程來是這款芯片工作,是這款芯片在規(guī)定的程序下干活……怎么讓單片機(jī)干活呢?五個(gè)字,配置寄存器。

3.配置寄存器:學(xué)習(xí)51單片機(jī),不管你是剛剛開始學(xué),還是學(xué)習(xí)有一段時(shí)間了,你應(yīng)該很熟悉的字眼,寄存器。我想說單片機(jī)的基本思想就是五個(gè)字:配置寄存器。單片機(jī)怎么工作,比如,你讓I/O口輸出高電平,怎么輸出,在C語言里,你是通過P1=0xFF來實(shí)現(xiàn)的,為什么這么寫,你去看看頭文件reg51.h里的內(nèi)容,它定義了一個(gè)寄存器為P1,然后你向這個(gè)寄存器里寫入了8個(gè)1,于是輸出高電平。你是通過配置寄存器的內(nèi)容來控制I/O口的。我們?cè)傧胍幌?,定時(shí)器你是怎么配置的,同樣的原理,你是通過配置TMOD,TCON,TH,TL等若干個(gè)寄存器完成的吧,然后給單片機(jī)定了一個(gè)時(shí)間,當(dāng)然,你說這些是簡(jiǎn)單的,還有復(fù)雜的呢?那我就再舉個(gè)例子吧,只要是寫單片機(jī)程序,你基本都是在配置寄存器,例如,STC系列的單片機(jī)帶了PWM功能,你如何讓單片機(jī)輸出一個(gè)符合你要求的PWM信號(hào)呢,你絕對(duì)是通過給某個(gè)寄存器寫入一個(gè)值,這個(gè)值控制頻率。再給一個(gè)寄存器寫入一個(gè)值,這個(gè)值控制占空比,然后通過哪個(gè)腳輸出,你又是通過一個(gè)寄存器來控制的。所以整個(gè)過程都是控制寄存器。那么你說,51是這樣的,其他的呢?stm32,高端的單片機(jī),工作起來也是配置寄存器,STM32時(shí)鐘信號(hào)的選擇,是通過控制RCC,I/O的控制是通過控制GPIO,當(dāng)然,它采用的方式是存儲(chǔ)器統(tǒng)一編址,就是你定義某個(gè)寄存器不再是51的sfr和sbit,而是用指針直接訪問地址的方式,比如訪問某個(gè)寄存器,從器件手冊(cè)上查找該寄存器的地址為0xXXXXXXXX,那么配置時(shí)使用*(long unsigned *)(0xXXXXXXXX)=0xFFFFFFFF的方式,本質(zhì)不變。這樣看來,那么msp430,PIC都是這樣的,只是他們的寄存器不同,配置方式不同,寫入的值不同而已。如果你真的懂了51單片機(jī),真的懂了單片機(jī)配置寄存器的原理。你只要花兩個(gè)小時(shí)看懂芯片手冊(cè),熟悉了開發(fā)環(huán)境,一天就能上手新的芯片……題外話就是,看arm等等芯片很高端,如果是裸機(jī)編程的話,那么跟也是配置寄存器,原理一樣,當(dāng)然加了操作系統(tǒng)就不同了,操作系統(tǒng)的框架就是重要的了。

4.關(guān)于通信協(xié)議:對(duì)于任何單片機(jī)來說,最為難的問題就是通信協(xié)議了,對(duì)于這個(gè)問題,我不想說的太多,畢竟不是在做通信原理,只是要說明的一點(diǎn)就是,“有通信就有協(xié)議,這是什么意思?就是說單片機(jī)在驅(qū)動(dòng)任何芯片的時(shí)候,必須要服從這款芯片的的時(shí)序,比如先使能這個(gè)芯片,然后給出寫信號(hào)或者讀信號(hào),然后芯片在發(fā)出響應(yīng)信號(hào),再對(duì)芯片進(jìn)行操作。為什么要這樣呢?首先,對(duì)于芯片來說,它有自己的操作方式,如果沒有固定的方式,那就亂套了,其實(shí)聯(lián)想到人身上也是這樣的,中國人和美國人交流時(shí),如果沒有翻譯,就需要打手勢(shì),這個(gè)手勢(shì)雙方都能懂,于是就能通信。芯片協(xié)議也是這樣的,單片機(jī)和芯片都能理解,于是他們都能工作。還有一點(diǎn)就是像有些芯片帶了SPI的協(xié)議,IIC的協(xié)議等等,如果它自帶了,那么他協(xié)議已經(jīng)設(shè)置好了,回歸到本質(zhì),使用這個(gè)協(xié)議又是配置寄存器了。比如51單片機(jī)的串口協(xié)議,你是通過配置寄存器來設(shè)置波特率,校驗(yàn)位的吧……萬變不離其宗……


51單片機(jī)

一周熱門