今天在調試過程中碰到的最頭疼的問題就是在數字與字符串轉換的問題,在網上找到相關的函數sprintf(),但一直出問題,原始代碼:
本文引用地址:http://www.eepw.com.cn/article/201611/316471.htm
unsigned char *s;
sprintf(s,"Value=%f.3",tmp); // tmp為一浮點數
DispStr(0,2,s);
在sprintf函數處出現一個警告,但能通過。下載至單片機,LCD2004在指定位置沒有顯示。
改進後的代碼
char s[20];
sprintf(&s[0],"Value=%f.3",tmp); // tmp為一浮點數
DispStr(0,2,(unsigned char *)s);
下載至單片機一切正常,只不過在小數點後面還有多餘的字符,不知道如何處理掉…
後來發現問題所在:"Value=%f.3"應改為"Value=%.3f"
還有一個問題是ATMega16單片機PC口作為輸出時PC2,PC3,PC4口始終為高電平,不知何故。當時使用了定時器T0