51單片機知識大匯總看你了解有多少
基于51單片機的函數信號發(fā)生器利用單片機AT89C52 采用程序設計方法產(chǎn)生鋸齒波、三 角波、正弦波、方波四種波形,再通過(guò)D/A 轉換器DAC0832 將數字信號轉換成模擬信號,濾波放大,最終由示波器顯示出來(lái),能產(chǎn)生 10Hz—10kHz 的波形。下面就對51單片機進(jìn)行詳細論述。
本文引用地址:http://dyxdggzs.com/article/226884.htm1.取指譯碼執行模型:首先我們來(lái)看看單片機是如何工作的,我們拿電腦的主板來(lái)作為對比,我們買(mǎi)電腦時(shí),總是追求處理器的主頻。處理器的工作原理是從存儲器上取出一條指令,然后對指令譯碼,譯碼完后執行。然后取下一條指令,譯碼,執行。它為什么能這么有序的工作?是因為它有一個(gè)工作時(shí)鐘,在這個(gè)工作時(shí)鐘的統一管理下,處理器有序的工作,這里的主頻就是工作時(shí)鐘的速度,當然,現在你可能也知道主頻越高,取指譯碼速度越快,性能越好。那么你可能會(huì )問(wèn),這跟51單片機有什么關(guān)系,OK,切入正題,單片機的工作也是這個(gè)原理,從存儲器上取指,譯碼,執行。但是單片機的存儲器在哪?在單片機的內部,對于電腦來(lái)說(shuō),是把處理器,內存集中在一塊主板上。而現在你應該很明確,對于單片機它就相當于一塊電腦主板,把處理器,存儲器集中到一塊芯片內部。從這個(gè)宏觀(guān)的角度看,所有的單片機是不是都是一個(gè)原理,服從于取指,譯碼,執行的基本模型。OK,繼續……
2. 51單片機的外設:我們在學(xué)習單片機時(shí),所做的第一個(gè)實(shí)驗都是一樣的,點(diǎn)燈。也許你已經(jīng)學(xué)會(huì )了用單片機做出好看的花樣燈,或者用單片機驅動(dòng)數碼管顯示出數字或字母?;蛘呖梢詸z測按鍵了。不錯,我們仔細想想這些是什么,無(wú)非,你就是控制那一排排引腳輸出高低電平,我們稱(chēng)這些引腳叫I/O口,輸入輸出,按鍵是輸入,點(diǎn)燈是輸出。其實(shí)你以為你學(xué)了三樣東西,其實(shí),你只學(xué)了一樣東西,I/O控制。所以這些內容并不是單片機的內容,我們稱(chēng)之為單片機的外設,現在你應該很明確了,所謂的LCD液晶,AD芯片什么的都是單片機的外設。但是我們?yōu)槭裁匆獙W(xué)習這些單片機的外設呢?還是為了熟悉單片機,你驅動(dòng)的芯片多了,自然對編程模型就熟悉了。其實(shí),我們用單片機就是在驅動(dòng)外設,然后你問(wèn)那定時(shí)器,中斷,串口通信又是什么?對于中斷,現在單片機在做一件事,突然,我給個(gè)信號,現在出了一個(gè)意外,你趕快去做另一件事,做完另一件再回來(lái),就是這樣。對于定時(shí)器,我舉個(gè)例子,現在對于一盞燈,我要他每天晚上六點(diǎn)打開(kāi),每天早上六點(diǎn)關(guān)閉,我們會(huì )怎么做?設定一個(gè)計時(shí)器,假設當前是晚上六點(diǎn),現在我讓I/O口輸出高電平點(diǎn)燈,同時(shí)打開(kāi)計時(shí)器,定12個(gè)小時(shí),12個(gè)小時(shí)一到,給一個(gè)中斷,去把I/O口取反,關(guān)燈,是不是這樣控制的。所以中斷,定時(shí)器只是為了更好的讓單片機進(jìn)行控制工作?,F在你應該很熟悉了,單片機就是一款自動(dòng)控制的芯片。注意,是芯片,你做的工作就是如何編程來(lái)是這款芯片工作,是這款芯片在規定的程序下干活……怎么讓單片機干活呢?五個(gè)字,配置寄存器。3.配置寄存器:學(xué)習51單片機,不管你是剛剛開(kāi)始學(xué),還是學(xué)習有一段時(shí)間了,你應該很熟悉的字眼,寄存器。我想說(shuō)單片機的基本思想就是五個(gè)字:配置寄存器。單片機怎么工作,比如,你讓I/O口輸出高電平,怎么輸出,在C語(yǔ)言里,你是通過(guò)P1=0xFF來(lái)實(shí)現的,為什么這么寫(xiě),你去看看頭文件reg51.h里的內容,它定義了一個(gè)寄存器為P1,然后你向這個(gè)寄存器里寫(xiě)入了8個(gè)1,于是輸出高電平。你是通過(guò)配置寄存器的內容來(lái)控制I/O口的。我們再想一下,定時(shí)器你是怎么配置的,同樣的原理,你是通過(guò)配置TMOD,TCON,TH,TL等若干個(gè)寄存器完成的吧,然后給單片機定了一個(gè)時(shí)間,當然,你說(shuō)這些是簡(jiǎn)單的,還有復雜的呢?那我就再舉個(gè)例子吧,只要是寫(xiě)單片機程序,你基本都是在配置寄存器,例如,STC系列的單片機帶了PWM功能,你如何讓單片機輸出一個(gè)符合你要求的PWM信號呢,你絕對是通過(guò)給某個(gè)寄存器寫(xiě)入一個(gè)值,這個(gè)值控制頻率。再給一個(gè)寄存器寫(xiě)入一個(gè)值,這個(gè)值控制占空比,然后通過(guò)哪個(gè)腳輸出,你又是通過(guò)一個(gè)寄存器來(lái)控制的。所以整個(gè)過(guò)程都是控制寄存器。那么你說(shuō),51是這樣的,其他的呢?stm32,高端的單片機,工作起來(lái)也是配置寄存器,STM32時(shí)鐘信號的選擇,是通過(guò)控制RCC,I/O的控制是通過(guò)控制GPIO,當然,它采用的方式是存儲器統一編址,就是你定義某個(gè)寄存器不再是51的sfr和sbit,而是用指針直接訪(fǎng)問(wèn)地址的方式,比如訪(fǎng)問(wèn)某個(gè)寄存器,從器件手冊上查找該寄存器的地址為0xXXXXXXXX,那么配置時(shí)使用*(long unsigned *)(0xXXXXXXXX)=0xFFFFFFFF的方式,本質(zhì)不變。這樣看來(lái),那么msp430,PIC都是這樣的,只是他們的寄存器不同,配置方式不同,寫(xiě)入的值不同而已。如果你真的懂了51單片機,真的懂了單片機配置寄存器的原理。你只要花兩個(gè)小時(shí)看懂芯片手冊,熟悉了開(kāi)發(fā)環(huán)境,一天就能上手新的芯片……題外話(huà)就是,看arm等等芯片很高端,如果是裸機編程的話(huà),那么跟也是配置寄存器,原理一樣,當然加了操作系統就不同了,操作系統的框架就是重要的了。
4.關(guān)于通信協(xié)議:對于任何單片機來(lái)說(shuō),最為難的問(wèn)題就是通信協(xié)議了,對于這個(gè)問(wèn)題,我不想說(shuō)的太多,畢竟不是在做通信原理,只是要說(shuō)明的一點(diǎn)就是,“有通信就有協(xié)議,這是什么意思?就是說(shuō)單片機在驅動(dòng)任何芯片的時(shí)候,必須要服從這款芯片的的時(shí)序,比如先使能這個(gè)芯片,然后給出寫(xiě)信號或者讀信號,然后芯片在發(fā)出響應信號,再對芯片進(jìn)行操作。為什么要這樣呢?首先,對于芯片來(lái)說(shuō),它有自己的操作方式,如果沒(méi)有固定的方式,那就亂套了,其實(shí)聯(lián)想到人身上也是這樣的,中國人和美國人交流時(shí),如果沒(méi)有翻譯,就需要打手勢,這個(gè)手勢雙方都能懂,于是就能通信。芯片協(xié)議也是這樣的,單片機和芯片都能理解,于是他們都能工作。還有一點(diǎn)就是像有些芯片帶了SPI的協(xié)議,IIC的協(xié)議等等,如果它自帶了,那么他協(xié)議已經(jīng)設置好了,回歸到本質(zhì),使用這個(gè)協(xié)議又是配置寄存器了。比如51單片機的串口協(xié)議,你是通過(guò)配置寄存
51單片機相關(guān)文章:51單片機教程
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
負離子發(fā)生器相關(guān)文章:負離子發(fā)生器原理
評論