?
對于時間充裕想系統(tǒng)的開始學習的朋友,雖然stm32更強大,但還是建議按老辦法走一遍51好,不用花很長時間,一個寒假,用最經(jīng)典的郭老師10天學會51單片機課程,兩周時間邊看邊實踐把51過一遍,這算是培養(yǎng)概念和手感,有條件的朋友可以找一對一的更容易上手,51過了就直接入stm32,這時候你已經(jīng)掌握了一定的電路基礎,怎么去操作,相關原理,學會了看手冊,學習能力有了很大提升,跟著一對一的教程和學習路線走,然后多動手做點小項目提升自己,做硬件最重要的就是要勤動手,這個要牢記。
關于51單片機基礎知識波特率的設定簡單了解一下就行,如果不是考試不要求具體來算,通過工具就可以去配置它,或者通過查表也可以查到波特率,做通訊的時候是先確定波特率,比如9600,把公式等于9600,通過9600的設定來找到T1的溢出率,T1的溢出率就是定時計數(shù)器溢出的次數(shù)就是他的溢出率,比如定時時間是T,這T分之一就是它的溢出率,就是每過這么長時間它溢出一次就是他的溢出率。
所以一旦確定了波特率,通過公式就可以計算出溢出率,然后把溢出率取到手就可以計算出來定時時間,有了這個定時時間,借助于公式有了初值,一旦打開定時計數(shù)器,它就會在這個初值的基礎上來進行計數(shù),每來一個機器周期進行計數(shù),靠這個東西就能夠產(chǎn)生波特率,在做通信的時候是先確定波特率,然后由波特率的這個計算公式得到T1的溢出率,由T1的溢出率得到定時時間,由定時時間來配置定時計數(shù)器的定時的初值從而去產(chǎn)生波特率,這個過程不要搞反,不是先有的溢出率然后再去確定波特率,是先有的波特率,然后確定溢出率,由溢出率確定時間,由定時時間確定這個定時計數(shù)器的初值,由這個初值來去產(chǎn)生這個波特率。
當SMOD在PCON當中把它設置成一的時候就是二的一次方就是波特率翻倍,如果是0 ,2的0次方就是1就是沒有翻倍,通常使用的晶振是12MHz或者是11.059MHz,想做串行通信一般推薦使用11.059MHz的晶振,用11.0592MHz晶振的時候計算初值的時候計算出來這個數(shù)值是一個整數(shù),如果用12MHz晶振或者6MHz的晶振計算初值會有小數(shù),有小數(shù)就會有四舍五入,波特率它就會有誤差,簡單的通信不會出問題,但是大數(shù)據(jù)量的通信的話,會有累積誤差產(chǎn)生到一定程度的時候就會引起通信出錯,確定的波特率,借助這個就可以算出來溢出率,由這個溢出率取倒數(shù)就能得到一個小T,有這個小T就可以計算出來定時初值,在這個基礎上打開定時計數(shù)器就能夠產(chǎn)生波特率,需要注意一定是用的T1,波特率的產(chǎn)生,常用的波特率可以通過查表或者用工具來配置,沒有必要去一個一個的去算。
當選用11.0592MHz晶振的時候誤差都是0%,也就是說你計算的波特率的誤差是0%,但是如果選用12MHz的累計誤差在不同波特率的時候也不一樣,如果沒有特殊的要求,最好就是選11.059MHz晶振,在取波特率的時候通常是取的標稱值,在用晶振的時候剛好計算出來T1的定時初值,它是一個非常準確的一個整數(shù),推薦大家做串行通訊的時候要選用這個時鐘晶振。
前面這個步驟就是設置波特率,接下來就是設置你的工作方式,然后啟動定時計數(shù)器,作為不特定的信號發(fā)生器,然后就可以做發(fā)送和接收了,當然可以用中斷的方式,或者說是查詢的方式,普通的51單片機只有一個串行口,這個時候你要想用到多個串行口就要選內部在多個串口的單片機,如果編程能力比較強的話可以用單片機的I/O口來仿幀串口,這個對你的編程能力的要求就比較高,不妨還是選一個帶多個串口的單片機來的更為實際一點。
或者說更為簡單一點,同時這種單片機可以借助于工具,比如如果說你選的是STC的單片機,可以看到它的選型工具當中來勾選,要用到串行口找到選型這個地方,大部分單片機都是有一個串行口,在做通信的時候很多情況下會有用到多個串口的情況,比如用到GPS,或者用藍牙,模塊用到一個串口,同時還需要用到串口和計算機之間進行數(shù)據(jù)交互,就是和上位機之間進行交換信息,一個串口肯定達不到來調度能夠完成多個任務,最好的方法那就是用多個串口來解決,所以很多單片機會有多個串行口,大家感興趣的話,如果以后用到多個串口,不妨就選內部在多個串行口的,這種實際上比較好用。
對單片機感興趣的可以查看往期分享內容,希望能幫助大家在學習單片機的路上少走一些彎路,想要入門單片機可以持續(xù)關注創(chuàng)為單片機編程,回復“帶我學習”查看更多內容分享。
審核編輯:湯梓紅
評論
查看更多