欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5719|回復: 12
收起左側

關于51單片機接收十六進制串口發送十進制程序

[復制鏈接]
ID:964131 發表于 2021-9-5 08:35 | 顯示全部樓層 |閱讀模式
做一個粉塵傳感器,但是粉塵傳感器接收的是十六進制的24位的數據,想知道如何讓單片機只讀取24位中第 14位的數據,圖片中畫紅圈圈的09,讓單片機只讀取09,并轉換成10進制 以串口的形式發送,請問程序怎么寫,謝謝!


51hei圖片20210905081414.png
回復

使用道具 舉報

ID:624769 發表于 2021-9-5 18:33 | 顯示全部樓層
一個雙16進制  0xff  是8位數據,一個字節。
你說的24位數據, 到底是 3個字節數據,還是24個字節?
你要取得第14位數據,到底是第14個字節還是第2字節的第5位的 0或1?

然后,你要讓別人告訴你如何只讀取 某個東西 至少要把 你用來讀取的函數拿出來看吧? 如果是直接在Eeprom 的 直接一個 MOVC 不就出來了?如果是在 Flash 里 可能需要 SPI 可能需要 IIC 都不好說啊。空對空跟你說,都讀出來,取第14?
回復

使用道具 舉報

ID:748788 發表于 2021-9-5 22:08 | 顯示全部樓層
將24個數放進一個數組,然后想取哪個數隨你
回復

使用道具 舉報

ID:960726 發表于 2021-9-5 22:18 | 顯示全部樓層
最好是得到傳感器的資料,協議解析好,發出的十進制數也要處理,方便應用。24個HEX,取第14個HEX,轉換成10進制發。字面的處理,并不難:1、合法的24個字符的幀判斷,取出第14個;2、計算這個HEX轉換成十進制數的三位數(百位、十位、個位);3、連續發出這三個字符,建議額外增加字符信息,不然接收方也是暈的
回復

使用道具 舉報

ID:883242 發表于 2021-9-5 23:36 | 顯示全部樓層
你的數據到底是什么,你想發送的十進制數據又是什么?
假設原始數據是00 09 00,你想發送“1”還是發送2304?
回復

使用道具 舉報

ID:964131 發表于 2021-9-6 10:45 來自觸屏版 | 顯示全部樓層
wwh2382 發表于 2021-9-5 22:08
將24個數放進一個數組,然后想取哪個數隨你

24個組是數 都是隨機變換不是固定的
回復

使用道具 舉報

ID:964131 發表于 2021-9-6 10:48 來自觸屏版 | 顯示全部樓層
Hephaestus 發表于 2021-9-5 23:36
你的數據到底是什么,你想發送的十進制數據又是什么?
假設原始數據是00 09 00,你想發送“1”還是發送230 ...

傳感器發送24組十六進制的數據 但是要轉化成十進制,才能得出真實的數據,但是我只要第14組的數據,其他組的數據不需要,將14組的數據轉化為十進制 在通過串口發送給電腦
回復

使用道具 舉報

ID:624769 發表于 2021-9-6 16:10 | 顯示全部樓層
yyou588 發表于 2021-9-6 10:48
傳感器發送24組十六進制的數據 但是要轉化成十進制,才能得出真實的數據,但是我只要第14組的數據,其他 ...

你的描述中,有很多不明白的地方。
比如,你說的10進制是什么? 09 可以認為是 16進制0x09 也可以認為是10進制 9,他是符合 BCD(十進制)標準的一種格式。
在計算機領域中(包含單片機),10進制的表示有多種,常用的有 8421碼(即BCD碼)和 余三碼 以及 2421碼,另外還有不太常用的,5211碼,7321碼。 同時BCD碼 還分全碼和半碼。
所以,所謂要10進制其實就是轉碼,那么,問題是你要轉哪個碼?

然后,你說將第14組數據轉為10進制,那么 第14組數據你會拿了么?你能把 第14組數據 保存到 變量 Temp 里的話,你前面一大堆描述就不用了。不能得話,你得描述你現在能做到什么程度。你現在的終點,將會是我們給你想辦法的起點。你明白嗎?
回復

使用道具 舉報

ID:964429 發表于 2021-9-6 18:22 | 顯示全部樓層
這個確實有點讓人摸不著頭腦呀,,哎,,,難過
回復

使用道具 舉報

ID:883242 發表于 2021-9-6 23:12 | 顯示全部樓層
yyou588 發表于 2021-9-6 10:48
傳感器發送24組十六進制的數據 但是要轉化成十進制,才能得出真實的數據,但是我只要第14組的數據,其他 ...

算了吧,你的描述能力太有限,你把24組數據寫出來,指出第14組數據是什么,然后想輸出什么樣的結果,都具體的說出來。
回復

使用道具 舉報

ID:964131 發表于 2021-9-7 11:01 來自觸屏版 | 顯示全部樓層
Hephaestus 發表于 2021-9-6 23:12
算了吧,你的描述能力太有限,你把24組數據寫出來,指出第14組數據是什么,然后想輸出什么樣的結果,都具 ...

這么清楚的描述 還好意思怪別人描述不清楚 我一說別人就懂了
回復

使用道具 舉報

ID:964308 發表于 2021-9-7 11:12 來自觸屏版 | 顯示全部樓層
用一個for循環把串口接受到的內容全部存放進字符數組里,單獨拿出09那個位的,定義一個整形變量強制轉換就好了
回復

使用道具 舉報

ID:213173 發表于 2021-9-7 11:43 | 顯示全部樓層
粉塵傳感器是根據制造商選定通訊協議輸出一幀24字節數據,樓主只需望要選取第14字節當做有效數據。樓主必須編程把一幀24字節數據全部完整的接收保存并判斷是否正確。然后才能根據需要選取第14字節當做有效數據做后續處理。單片機只懂二進制,十六進制、十進制都是給人看的。一個字節數據范圍是0~255。樓主要根據選取的字節預判可能在多大范圍變化來確定轉換方式,假設該數據<100,可以這樣處理:a=0x09/10+'0'; b=0x09%10+'0'; ,用串口發送a和b,上位機就得到ASCII碼0 9兩個字符。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表