新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)知識大匯總看你了解有多少

51單片機(jī)知識大匯總看你了解有多少

作者: 時間:2014-01-16 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://butianyuan.cn/article/226884.htm

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

2. 51單片機(jī)的外設(shè):我們在學(xué)習(xí)單片機(jī)時,所做的第一個實(shí)驗(yàn)都是一樣的,點(diǎn)燈。也許你已經(jīng)學(xué)會了用單片機(jī)做出好看的花樣燈,或者用單片機(jī)驅(qū)動數(shù)碼管顯示出數(shù)字或字母?;蛘呖梢詸z測按鍵了。不錯,我們仔細(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ū)動的芯片多了,自然對編程模型就熟悉了。其實(shí),我們用單片機(jī)就是在驅(qū)動外設(shè),然后你問那定時器,中斷,串口通信又是什么?對于中斷,現(xiàn)在單片機(jī)在做一件事,突然,我給個信號,現(xiàn)在出了一個意外,你趕快去做另一件事,做完另一件再回來,就是這樣。對于定時器,我舉個例子,現(xiàn)在對于一盞燈,我要他每天晚上六點(diǎn)打開,每天早上六點(diǎn)關(guān)閉,我們會怎么做?設(shè)定一個計(jì)時器,假設(shè)當(dāng)前是晚上六點(diǎn),現(xiàn)在我讓I/O口輸出高電平點(diǎn)燈,同時打開計(jì)時器,定12個小時,12個小時一到,給一個中斷,去把I/O口取反,關(guān)燈,是不是這樣控制的。所以中斷,定時器只是為了更好的讓單片機(jī)進(jìn)行控制工作。現(xiàn)在你應(yīng)該很熟悉了,單片機(jī)就是一款自動控制的芯片。注意,是芯片,你做的工作就是如何編程來是這款芯片工作,是這款芯片在規(guī)定的程序下干活……怎么讓單片機(jī)干活呢?五個字,配置寄存器。3.配置寄存器:學(xué)習(xí)51單片機(jī),不管你是剛剛開始學(xué),還是學(xué)習(xí)有一段時間了,你應(yīng)該很熟悉的字眼,寄存器。我想說單片機(jī)的基本思想就是五個字:配置寄存器。單片機(jī)怎么工作,比如,你讓I/O口輸出高電平,怎么輸出,在C語言里,你是通過P1=0xFF來實(shí)現(xiàn)的,為什么這么寫,你去看看頭文件reg51.h里的內(nèi)容,它定義了一個寄存器為P1,然后你向這個寄存器里寫入了8個1,于是輸出高電平。你是通過配置寄存器的內(nèi)容來控制I/O口的。我們再想一下,定時器你是怎么配置的,同樣的原理,你是通過配置TMOD,TCON,TH,TL等若干個寄存器完成的吧,然后給單片機(jī)定了一個時間,當(dāng)然,你說這些是簡單的,還有復(fù)雜的呢?那我就再舉個例子吧,只要是寫單片機(jī)程序,你基本都是在配置寄存器,例如,STC系列的單片機(jī)帶了PWM功能,你如何讓單片機(jī)輸出一個符合你要求的PWM信號呢,你絕對是通過給某個寄存器寫入一個值,這個值控制頻率。再給一個寄存器寫入一個值,這個值控制占空比,然后通過哪個腳輸出,你又是通過一個寄存器來控制的。所以整個過程都是控制寄存器。那么你說,51是這樣的,其他的呢?stm32,高端的單片機(jī),工作起來也是配置寄存器,STM32時鐘信號的選擇,是通過控制RCC,I/O的控制是通過控制GPIO,當(dāng)然,它采用的方式是存儲器統(tǒng)一編址,就是你定義某個寄存器不再是51的sfr和sbit,而是用指針直接訪問地址的方式,比如訪問某個寄存器,從器件手冊上查找該寄存器的地址為0xXXXXXXXX,那么配置時使用*(long unsigned *)(0xXXXXXXXX)=0xFFFFFFFF的方式,本質(zhì)不變。這樣看來,那么msp430,PIC都是這樣的,只是他們的寄存器不同,配置方式不同,寫入的值不同而已。如果你真的懂了51單片機(jī),真的懂了單片機(jī)配置寄存器的原理。你只要花兩個小時看懂芯片手冊,熟悉了開發(fā)環(huán)境,一天就能上手新的芯片……題外話就是,看arm等等芯片很高端,如果是裸機(jī)編程的話,那么跟也是配置寄存器,原理一樣,當(dāng)然加了操作系統(tǒng)就不同了,操作系統(tǒng)的框架就是重要的了。

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

51單片機(jī)相關(guān)文章:51單片機(jī)教程


c語言相關(guān)文章:c語言教程


單片機(jī)相關(guān)文章:單片機(jī)教程


單片機(jī)相關(guān)文章:單片機(jī)視頻教程


單片機(jī)相關(guān)文章:單片機(jī)工作原理


負(fù)離子發(fā)生器相關(guān)文章:負(fù)離子發(fā)生器原理

上一頁 1 2 下一頁

關(guān)鍵詞: 51單片機(jī)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉