萌新的51之旅

2021-10-23 09:39:07 字數 2959 閱讀 1678

本人是微控制器學習的萌新一枚,學習微控制器等知識目的就是提公升自己專業方面的綜合的素質修養,我將會把自己的每次的學習的內容和心理歷程記錄下來,分享給大家的同時也加深自己的理解。

眾所周知,微控制器的入門51是再好不過的選擇,對於我這種剛剛接觸微控制器的人來說,我覺得51微控制器還是十分容易接受的,首先相對於其他微控制器來說,它的結構相對簡單,相對而言更容易讓我們理解,而且上手實驗性強,比起簡單地只去了解相關的理論知識來說,自己買一塊51的實驗板,自己動手去實驗更加的有趣和有成就感,並且在不斷地動手操作後還能更加清晰的了解和掌握51的相關理論知識。同時51對於硬體的要求低,且開發板的**相對便宜,是乙個不錯的選擇。

初學者選擇51的理由:

1:簡單易懂並且方便了解原理。

2:動手實踐性強,門檻要求低。

3:硬體要求低,經濟實惠。

現在來談談微控制器的第一步所需要的掌握的知識,c語言想必大家都學過,只需要簡單地c語言就可以熟練的應用到51微控制器之中。其他的知識包括進製轉換啦,一些邏輯語句與,或,非啦等等…再有就是你需要通過學習了解到微控制器到底是乙個什麼東西,了解了這些,你就已經具備了學習好微控制器的基本要求了。

首先,對於我來說,微控制器就是乙個控制器,它可以根據你設定的需求去控制其引腳和埠的電平來起到訊號的傳遞的效果,所以說對於我們來說,我們就是需要掌握微控制器的語言和行事規則,從而能夠更好地與其溝通,從而使它更好地解決我們所需要達到的控制效果。具體來說,微控制器就像是一台電腦,能夠完**類不能短時間完成的準確的計算和計數操作的乙個強大的機器,只不過他現在被集成為乙個很小的晶元,便於儲存和攜帶。

就像我剛剛入門,我按照我的方式了解了大概之後就先動手實驗,我只簡單地了解了微控制器上的led燈和數字屏的簡單控制語句和原理,又了解了一些關於中斷的概念和定時/計數器的操作要求,就開始了實驗。

led燈

led燈其實就是乙個個小部件整合在電路中,只不過是由微控制器的晶元來簡單控制電路的通斷從而控制其亮滅,大多數微控制器接通了高電平,低電平由微控制器的晶元控制,從而當對應的低電平接通時,led燈就構成了乙個通路,從而他就被對應點亮。

定時器定時器其實就是一塊表,只不過能夠和微控制器的內部進行資訊的交流,它其實就是根據石英的具體震動來確定時間的基礎,通過微控制器二進位制的進製來積累時間,漸漸從量變達到質變,形成準確的單位時間,而且他還具有中斷的功能,到達預定時間之後可以進行中斷來終止這項操作,或者跳躍到另一優先順序更高的的工作。

從這兩個簡單的器件開始我們就可以開始做乙個簡單的實驗,大家可能會疑惑,我只是單單理解了這兩個器件,其他的幾乎都不懂,甚至連中斷是什麼都不了解,就能做實驗嗎?

我的回答是沒錯,已經可以做實驗了,當然還需要掌握定時器的操作所需要的程式**和led的**。我們先來分享乙個實驗然後我再對具體的**進行分析:

實驗要求是這樣的,控制乙個led燈,使它每3s點亮一次,點亮時間為1s。並且如此迴圈下去。

這個實驗聽起來相當的簡單,但操作起來也是如此,我們先上**:

include/*模組一,定義階段

#define uchar unsigned char

#define uint unsigned int

uint t0=0,t1=0;

sbit d1=p2^0; */

void main()/模組二主函式內定時器初始化階段

if(t1==20)

}}*/

void timer0() interrupt 1/模組四兩個定時器的時間單位校準和迴圈階段

void timer1() interrupt 3

/下面我們來談談**和一些主要的內容,從而達到掌握定時器中斷和led的目的:

模組一首先兩個define定義了兩個關鍵字,便於下面對程式的定義。

然後又使用sbit定義,sbit是特殊位的定義說明,也就是對微控制器的某個埠的電平狀況進行操作時進行的相關定義

題中的定義是根據微控制器led1的原理圖進行的。

在下面就是定義了兩個變數,是為了控制時間。

模組二

這是一系列的對於定時器的相關操作,首先tmod=0x11是開啟了兩個定時器的門鎖,

th0=(65536-50000)/256;

tl0=(65536-50000)%256;

th1=(65536-50000)/256;

tl1=(65536-50000)%256;

這四個**是給定時器0,1的高四位和低四位確定時間基礎,因為機器的時間不可能是都是整數,而這些二進位制的定時器開啟的16位模式,總的是65536,而我們要想更加準確的控制時間,我們就需要給它湊個整,這樣我們把不是整數的初值給定時器填進去,那麼定時器的乙個週期就是整數了,也就是50ms。

ea=1;開啟定時器總開關

et0=1

et1=1;

tr0=1;

這些語句就是分別開啟定時器0的所有開關,但是定時器1還有tr1沒有開啟,這就跟我們所要編寫的程式的邏輯緊密的相關聯了。因為控制開關的tr1要在下面的玄幻語句中控制著定時器1的工作與關閉。

while(1)/*模組三主函式內led迴圈點亮階段

if(t120)

}}*/

這個模組三便是整個程式能夠控制微控制器執行的靈魂

t060表示微控制器執行了整整60個週期,也就是5s

然後點亮了led1並且關閉了當前定時器0,開啟了控制led1工作時間的定時器1

從而程式開始執行定時器1

當t1==20也就是經過了1s後,關閉led1,關閉定時器0,開啟定時器1,又開始進入了新的迴圈之中。

模組4

便是對定時器呼叫的函式,由於該函式特殊,不需要進行宣告

只需要簡單地初始化和在迴圈之中放入變數即可。

程式實踐的效果。

這便是這個程式的整體思路和解讀,想必你會對定時器中斷和微控制器有了新的了解和認識。

本次的分享就到這裡結束了,希望大家繼續努力,在實踐中尋找興趣,不放棄,我會繼續更新學習成果的!!!

萌新的51之旅 串列埠通訊(2)

串列埠通訊的介面標準 一 rs 232c介面 1 機械特性 rs232c介面規定使用25針聯結器,聯結器的尺寸及每個插針的排列位置都有明確地定義。rs232c標準介面主要引腳定義 pgnd 保護接地 txd 傳送資料 rxd 接收資料 rts 請求傳送 cts 允許傳送 dsr 資料建立就緒 sgn...

萌新的51之旅 AD轉換(2)

線性度 線性度有時又稱為非線性度,它是指轉換器實際的轉換特性與理想直線的最大偏差。絕對精度 在乙個轉換器中,任何數碼所對應的實際模擬量輸入與理論模擬量輸入之差的最大值,稱為絕對精度,對adc而言,可以在每乙個階梯的水平中點進行測量,它包括了所有的誤差。轉換速率 adc的轉換速率是能夠重複進行資料轉換...

萌新的51之旅 IIC(3)

匯流排資料傳送的模擬 主機可以採用不帶iic匯流排介面的微控制器,如80c51 at 89c2051等微控制器,利用軟體實現iic匯流排的資料傳送,及軟體與硬體結合的訊號模擬 典型訊號模擬 為了保證資料傳送的可靠性,標準的iic匯流排的資料傳送有嚴格的時序要求,iic,匯流排的起始訊號終止訊號傳送零...