C語(yǔ)言小學(xué)生都能學(xué)會(huì),你還說(shuō)單片機(jī)很難,難道你連小學(xué)生都不如嗎
我是很認(rèn)真的,沒(méi)有在跟你吹水,前段時(shí)間有鄰居知道我是攻城獅,閑聊的時(shí)候想讓我?guī)呐畠簩W(xué)習(xí)單片機(jī),當(dāng)時(shí)我就拒絕了,因?yàn)樵谖业恼J(rèn)知范圍里這個(gè)年紀(jì)的小朋友很難學(xué)的會(huì),而且女孩子家家學(xué)做什么攻城獅,心中一百個(gè)白眼翻上天,后來(lái)她說(shuō)她女兒之前學(xué)了C++,有點(diǎn)基礎(chǔ),當(dāng)時(shí)我就愣住了,現(xiàn)在的小學(xué)生都那么牛X的嗎。不過(guò)最后我還是讓她回去慎重考慮一下,畢竟我這里培訓(xùn)的定位是那些學(xué)習(xí)完之后想找到工作的,我們課程也是以項(xiàng)目驅(qū)動(dòng)去學(xué)習(xí),年紀(jì)這么小的學(xué)生學(xué)校里的科目課程就已經(jīng)眼花繚亂了,還是留一點(diǎn)童年給人家吧。
關(guān)于單片機(jī)要想修改它的設(shè)備地址寄存器地址,可以用后面的指令去修改,比如說(shuō)要想改地址,可以用0106這個(gè)功能去修改它,比如說(shuō)想改成02,就可以去按照它這個(gè)方式來(lái)去修改一下,比如說(shuō)一個(gè)產(chǎn)品,從需要用兩個(gè)點(diǎn)的溫濕度傳感器,這個(gè)時(shí)候就用兩個(gè),不可能讓它兩個(gè)都是用同一個(gè)地址,所以要改,比如買了一個(gè)產(chǎn)品,它默認(rèn)的是01,要把它地址改成02,用00這個(gè)功能碼修改,它是寫單個(gè)寄存器,01可以是06,然后要更改這個(gè)設(shè)備地址,設(shè)備地址寄存器地址是0066,所以要是0066,接下來(lái)要改地址,要改的地址要給它個(gè)數(shù)據(jù)。
比如說(shuō)要改成02,最后是校驗(yàn),這個(gè)時(shí)候給它發(fā)這個(gè)指令,它就會(huì)把這個(gè)地址改成02,點(diǎn)擊發(fā)送,對(duì)于一個(gè)正確的命令幀它會(huì)響應(yīng),手冊(cè)當(dāng)中也會(huì)指出來(lái)它要說(shuō)什么,它會(huì)響應(yīng)修改后的設(shè)備地址02,然后功能碼00,接著是寄存器地址0066,最后是目標(biāo)地址,修改的這個(gè)目標(biāo)地址0002這個(gè)時(shí)候就修改好了,接下來(lái)如果說(shuō)還用原來(lái)的這個(gè)地址去讀它,肯定就讀不出來(lái)了,可以試一下,再用01,03,然后用0000,然后0002,這個(gè)時(shí)候再去讀它的時(shí)候它就沒(méi)有響應(yīng)。
它沒(méi)有響應(yīng),原因是什么?因?yàn)檫@個(gè)設(shè)備它的地址已經(jīng)不符了,發(fā)給它01的時(shí)候,它的設(shè)備地址是02,它第一次比較這個(gè)地址的時(shí)候,它就知道不是發(fā)給它的,所以它后面的數(shù)據(jù)是不會(huì)去解析處理,它就不會(huì)給你返回?cái)?shù)據(jù),它只有對(duì)于正確的應(yīng)詢問(wèn)詢真它才會(huì)給出響應(yīng),要用0二,CRC校驗(yàn)也要正確,然后功能碼03,然后連著讀兩個(gè)寄存器,從00這個(gè)寄存器開(kāi)始讀,還是讀的溫度和濕度,這個(gè)地址對(duì)于這個(gè)位尋幀,它的交易碼可以通過(guò)工具,可以用這個(gè)來(lái)計(jì)算一下獲取,給出了具體的一個(gè)響應(yīng),功能碼返回字節(jié)數(shù),后面是校驗(yàn),這時(shí)候就得到了溫度和濕度的數(shù)據(jù)。
這個(gè)時(shí)候每次都要計(jì)算校驗(yàn)碼,不太方便,一些朋友手頭上可能沒(méi)有溫濕度傳感器,也沒(méi)有USB轉(zhuǎn)485的設(shè)備或者轉(zhuǎn)換器,可以用工具來(lái)模擬,可以用作為從機(jī)來(lái)模擬一下,用它作為主機(jī)如何去讀取溫濕度傳感器的數(shù)據(jù),首先把串口槍給它關(guān)掉,然后先連接一下打開(kāi)串口COM5,然后900波特率八位數(shù)據(jù)位沒(méi)有機(jī)構(gòu)校驗(yàn),停止位點(diǎn)擊OK,要讀溫濕度傳感器,但是設(shè)備地址是二,從0開(kāi)始讀寄存器,就是0讀兩個(gè)寄存器,然后點(diǎn)擊OK,這個(gè)時(shí)候它就把溫濕度傳感器讀過(guò)來(lái)了,讀過(guò)來(lái)之后可以看到它已經(jīng)把它轉(zhuǎn)成了十進(jìn)制來(lái)顯示了。
它具體的發(fā)的數(shù)據(jù)是什么?先把它停止,然后把這個(gè)數(shù)據(jù)拷貝出來(lái)報(bào)備,可以對(duì)照一下,把發(fā)送的拷貝出來(lái),返回的值實(shí)際上也是一樣的,借助工具就很方便,不再需要單獨(dú)的去找一個(gè)網(wǎng)站去計(jì)算CRC校驗(yàn)碼了,可以借助它來(lái)實(shí)現(xiàn)相關(guān)的操作,當(dāng)然也可以用它來(lái)實(shí)現(xiàn)修改地址,它一般就提供兩個(gè)功能碼,可以用功能碼去讀寫多個(gè)寄存器,可以去讀寫多個(gè)寄存器,實(shí)際上就是提供兩個(gè)功能碼03和06,對(duì)一個(gè)層級(jí)設(shè)備來(lái)說(shuō),要么就是說(shuō)可以去讀它的數(shù)據(jù),它返回?cái)?shù)據(jù)給我們,要么就是去修改它的一些設(shè)置或者一些參數(shù),所以這兩個(gè)功能碼一般的產(chǎn)品來(lái)說(shuō)基本上都是足夠了。
對(duì)單片機(jī)感興趣的可以查看往期分享內(nèi)容,希望能幫助大家在學(xué)習(xí)單片機(jī)的路上少走一些彎路,想要入門單片機(jī)可以持續(xù)關(guān)注創(chuàng)為單片機(jī)編程,,回復(fù)“帶我學(xué)習(xí)”查看更多內(nèi)容分享。
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44973瀏覽量
650045 -
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124331 -
設(shè)備
+關(guān)注
關(guān)注
2文章
4665瀏覽量
71713
發(fā)布評(píng)論請(qǐng)先 登錄
單片機(jī)如何清零寄存器某一位,操作方法解析
對(duì)寄存器操作方法的經(jīng)驗(yàn)和其總結(jié)

寄存器操作方法_對(duì)寄存器操作的通用方法總結(jié)
寄存器的名稱和地址的映射詳細(xì)資料分析

如何進(jìn)行寄存器名稱和地址的映射分析

STM32單片機(jī)修改寄存器的位操作方法(全網(wǎng)最全)

芯片與寄存器

STM32寄存器的簡(jiǎn)介、地址查找,與直接操作寄存器

STM32的寄存器操作

修改寄存器默認(rèn)值的方法
修改寄存器默認(rèn)值的方法有哪些

單片機(jī)工作寄存器作用 單片機(jī)常用專用寄存器
應(yīng)用筆記|直接修改寄存器來(lái)輸出內(nèi)部時(shí)鐘的方法

直接修改寄存器來(lái)輸出內(nèi)部時(shí)鐘的方法

評(píng)論