我試圖發送轉換後的溫度讀數從我的DS1820到我的電腦使用PIC16F877 uart。我正在使用MPLABX和XC8編譯器,該編譯器在usart.h中有一個內部版本,不過它只對PIC18系列有用,所以我使用usart_pic16.h,它已經被第三方編寫用於PIC16系列。發送轉換後的DS1820溫度超過PIC16 uart
我成功從DS1820採集其十六進制形式的溫度,並將其轉換爲人類可讀的浮點數,但是我找不到通過UART將浮點值轉發到PC的方法。
的usart_pic16.h庫允許使用以下方法直接發送的字符,字符串,線和整數在USART: -
- 空隙USARTWriteChar(炭CH);
- void USARTWriteString(const char * str);
- void USARTWriteLine(const char * str);
- void USARTWriteInt(int16_t val,int8_t field_length);
我一直在尋找一種方法來發送跨越uart使用這個庫,其中包括提取和發送一個小數點的浮動值。
我曾嘗試發送一個字符串是這樣的: -
- USARTWriteString( 「TempC =%7.3f攝氏度\ r \ n」 個,temp_c);
其中temp_c是temp的float值,但在編譯時出現「太多函數參數」錯誤。可能很明顯,那些在那裏的c大師,我很遺憾不是:(
也許一種方法是從浮點提取每個值,並將其作爲一個int發送,除了小數點可能找到每個值的'如果'檢查,然後當發現小數點只是發送它作爲字符例如USARTWriteChar('。'),它可以工作。不幸的是,我不知道如何提取單個浮點值或者如果它做到這一點的最好辦法。
我不知道,如果是需要我的代碼來解決這個所以以爲我會避免,除非有人問濫發它。
任何幫助將是巨大的。
謝謝。
完成這項工作,非常感謝您的幫助和快速響應。我最終可能會看到代碼中的流,但現在我只是喜歡前進:)。問候。 – Markus