“大神”叫你先上STM32,51是小朋友玩的,所以你就不學51了
初學者建議從51單片機開始,雖然很多人建議直接上STM32,但本人還是建議先學習51單片機,簡單且不容易打消積極性,很多人都是在積極性消退之后就會半途而廢,等熟悉了LED、串口、SPI、按鍵、中斷、IIC等這些基礎(chǔ)之后,如果對單片機還有興趣,不妨再去晉升學習STM32單片機,有了51單片機作為基礎(chǔ),這時候?qū)W習STM32也是可以非常快的就能上手。
一般的寄存器的定制是從0開始定義,0000這個寄存器地址存放的是溫度的一個數(shù)據(jù),然后0001這個采用的是濕度的數(shù)據(jù),它們兩個數(shù)據(jù)的范圍都是0到65535,并且都是只讀的,所以它適用于的是03這個功能,組態(tài)地址就不用關(guān)心了,這個是PLC當中用的一個組態(tài)地址,實際上這個組態(tài)地址等于寄存器地址加上4001,要把它轉(zhuǎn)成十進制去加上4001,這個是一個規(guī)定,可以去設(shè)置自己的寄存器的地址,然后來說明你的寄存器里面存放的是什么值,別人讀的時候就知道怎么去讀了。
比如說想讀的是你當前的波特率,那我可以用03這個功能,從0067這個地址起始地址開始讀,讀一個寄存器是不是就讀的就是你的波特率,給一個校驗碼就應(yīng)該就能夠響應(yīng)什么是你的波特率的數(shù)據(jù),同時波特率它也告訴我們,波特率它是可讀可寫的,既然可讀可寫,它應(yīng)該提供的06功能碼,就可以寫單個寄存器,也可以用0六這個功能碼去對它進行操作,比如更改它的設(shè)備地址,修改它的波特率,這些都是可以的。
溫濕度傳感器USB接口和485信號,它們倆之間是肯定不能直接通信的,可以借助一個小模塊,USB轉(zhuǎn)485的模塊,這種模塊現(xiàn)在也不貴,感興趣的可以去入手一個,這里面有四根線,電源線,還有兩根信號線,然后A線接傳感器的A,B接傳感器的B,電路連好了之后就可以借助助手來實現(xiàn)這個通訊的功能的測試,它支持的是主機問詢,從機應(yīng)答的一種方式,所以主機要去問它,它才會給你回答。
在這種主從系統(tǒng)當中,從機設(shè)備是不允許主動的發(fā)起通信的,我們要想通信必須由主機發(fā)起,我們可以去打開這個串口,然后去發(fā)送我們的問詢,讀兩個字節(jié),從0000這個寄存器地址起始地址開始讀,讀寄存器在讀計算器,也就是把溫度和濕度都讀出來,這個時候還有一個校驗碼,校驗的話是CRC校驗,校驗碼不對它是肯定是不會響應(yīng)的,這個時候它給出了一個響應(yīng)0103,然后04,01代表01地址,03的功能碼,0四代表返回的數(shù)據(jù)長度四個字節(jié),返回的值是048915B2,它這里面的數(shù)據(jù)的值都是16進制的。
16進制值首先要把它轉(zhuǎn)成十進制數(shù),舉個例子0079,它轉(zhuǎn)成十進制是121,假設(shè)數(shù)據(jù)的倍率是100倍,這個值應(yīng)該是1.21度,濕度也是一樣的,所以它這個地方有一個倍率是100,要控制一個485的一個接口芯片,首先轉(zhuǎn)成發(fā)送狀態(tài),轉(zhuǎn)成發(fā)送狀態(tài)之后發(fā)送問詢幀,發(fā)送問詢之后立馬切換成接收狀態(tài),然后接收這一幀數(shù)據(jù),用超時的辦法去接收,接收完這么一包數(shù)據(jù)之后要解析這個數(shù)據(jù),把這兩個數(shù)據(jù)取出來轉(zhuǎn)成十進制,然后按照它這個數(shù)據(jù)的方式把它再除以100,就可以轉(zhuǎn)成當前的溫度和濕度。
對單片機感興趣的可以查看往期分享內(nèi)容,希望能幫助大家在學習單片機的路上少走一些彎路,想要入門單片機可以持續(xù)關(guān)注創(chuàng)為單片機編程,,回復“帶我學習”查看更多內(nèi)容分享。
審核編輯:湯梓紅
-
寄存器
+關(guān)注
關(guān)注
31文章
5369瀏覽量
121275 -
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357770 -
51單片機
+關(guān)注
關(guān)注
274文章
5705瀏覽量
124393
發(fā)布評論請先 登錄
相關(guān)推薦
單片機教程七:單片機的特殊功能寄存器
![<b class='flag-5'>單片機</b>教程七:<b class='flag-5'>單片機</b>的特殊<b class='flag-5'>功能</b><b class='flag-5'>寄存器</b>](https://file1.elecfans.com//web2/M00/A4/E8/wKgZomUMNimAQLxNAADNgnWuelo090.jpg)
51單片機的21個特殊功能寄存器的詳細資料說明
![51<b class='flag-5'>單片機</b>的21個特殊<b class='flag-5'>功能</b><b class='flag-5'>寄存器</b>的詳細資料說明](https://file.elecfans.com/web1/M00/A6/0F/o4YBAF13ZnSAaUitAA9hZ0OgrN4370.png)
51單片機經(jīng)常使用的寄存器功能總結(jié)
![51<b class='flag-5'>單片機</b>經(jīng)常使用的<b class='flag-5'>寄存器</b><b class='flag-5'>功能</b>總結(jié)](https://file.elecfans.com/web1/M00/A4/AA/o4YBAF1nR_iAJdqfAAmhaZ3EXxA419.png)
51單片機的21個特殊功能寄存器詳細資料概述
![51<b class='flag-5'>單片機</b>的21個特殊<b class='flag-5'>功能</b><b class='flag-5'>寄存器</b>詳細資料概述](https://file.elecfans.com/web1/M00/9B/3C/o4YBAF0kCvKAVHgKAAbbe0U4HNo226.png)
[單片機]STM32 Flash寄存器
![[<b class='flag-5'>單片機</b>]<b class='flag-5'>STM32</b> Flash<b class='flag-5'>寄存器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32的寄存器操作
![<b class='flag-5'>STM32</b>的<b class='flag-5'>寄存器</b>操作](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
單片機定時器的寄存器
![<b class='flag-5'>單片機</b>定時<b class='flag-5'>器</b>的<b class='flag-5'>寄存器</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論