“大神”叫你先上STM32,51是小朋友玩的,所以你就不學51了
初學者建議從51單片機開始,雖然很多人建議直接上STM32,但本人還是建議先學習51單片機,簡單且不容易打消積極性,很多人都是在積極性消退之后就會半途而廢,等熟悉了LED、串口、SPI、按鍵、中斷、IIC等這些基礎之后,如果對單片機還有興趣,不妨再去晉升學習STM32單片機,有了51單片機作為基礎,這時候學習STM32也是可以非常快的就能上手。
一般的寄存器的定制是從0開始定義,0000這個寄存器地址存放的是溫度的一個數據,然后0001這個采用的是濕度的數據,它們兩個數據的范圍都是0到65535,并且都是只讀的,所以它適用于的是03這個功能,組態地址就不用關心了,這個是PLC當中用的一個組態地址,實際上這個組態地址等于寄存器地址加上4001,要把它轉成十進制去加上4001,這個是一個規定,可以去設置自己的寄存器的地址,然后來說明你的寄存器里面存放的是什么值,別人讀的時候就知道怎么去讀了。
比如說想讀的是你當前的波特率,那我可以用03這個功能,從0067這個地址起始地址開始讀,讀一個寄存器是不是就讀的就是你的波特率,給一個校驗碼就應該就能夠響應什么是你的波特率的數據,同時波特率它也告訴我們,波特率它是可讀可寫的,既然可讀可寫,它應該提供的06功能碼,就可以寫單個寄存器,也可以用0六這個功能碼去對它進行操作,比如更改它的設備地址,修改它的波特率,這些都是可以的。
溫濕度傳感器USB接口和485信號,它們倆之間是肯定不能直接通信的,可以借助一個小模塊,USB轉485的模塊,這種模塊現在也不貴,感興趣的可以去入手一個,這里面有四根線,電源線,還有兩根信號線,然后A線接傳感器的A,B接傳感器的B,電路連好了之后就可以借助助手來實現這個通訊的功能的測試,它支持的是主機問詢,從機應答的一種方式,所以主機要去問它,它才會給你回答。
在這種主從系統當中,從機設備是不允許主動的發起通信的,我們要想通信必須由主機發起,我們可以去打開這個串口,然后去發送我們的問詢,讀兩個字節,從0000這個寄存器地址起始地址開始讀,讀寄存器在讀計算器,也就是把溫度和濕度都讀出來,這個時候還有一個校驗碼,校驗的話是CRC校驗,校驗碼不對它是肯定是不會響應的,這個時候它給出了一個響應0103,然后04,01代表01地址,03的功能碼,0四代表返回的數據長度四個字節,返回的值是048915B2,它這里面的數據的值都是16進制的。
16進制值首先要把它轉成十進制數,舉個例子0079,它轉成十進制是121,假設數據的倍率是100倍,這個值應該是1.21度,濕度也是一樣的,所以它這個地方有一個倍率是100,要控制一個485的一個接口芯片,首先轉成發送狀態,轉成發送狀態之后發送問詢幀,發送問詢之后立馬切換成接收狀態,然后接收這一幀數據,用超時的辦法去接收,接收完這么一包數據之后要解析這個數據,把這兩個數據取出來轉成十進制,然后按照它這個數據的方式把它再除以100,就可以轉成當前的溫度和濕度。
對單片機感興趣的可以查看往期分享內容,希望能幫助大家在學習單片機的路上少走一些彎路,想要入門單片機可以持續關注創為單片機編程,,回復“帶我學習”查看更多內容分享。
審核編輯:湯梓紅
-
寄存器
+關注
關注
31文章
5336瀏覽量
120230 -
STM32
+關注
關注
2270文章
10895瀏覽量
355739 -
51單片機
+關注
關注
274文章
5702瀏覽量
123491
發布評論請先 登錄
相關推薦
評論