-
不知道你用的是什麼型號的LCD,好像不是1602。
如果該值小於 1000,則正常顯示十個白色數字的數字,例如 345; 如果大於 1000,則所有 3 個分配都0x39,即 ASCII 字元“9”,結果將顯示在 LCD 上,指示範圍大於 1000。
猜想REQ是寫入LCD的控制訊號,busy是LCD返回的“忙”訊號,迴圈16次是將LCDTEM字元陣列中的16個字元寫入LCD進行顯示。
-
大致的意思就是:首先你要明白,它是怎麼儲存在微控制器裡的,其實他儲存了000,小數點在哪裡顯示是你人為確定的,微控制器不能計算小數位,所以溫度是儲存在000--999的,而不是,明白了嗎? 當它大於或等於1000時,將顯示相同的內容,即為0x39對應的內容。
因為無非是將 lcdtem 的內容一一傳送出去。 我說到這個程度,你應該能夠理解,如果你還不明白,**強大的基礎積累。 我也是初學者出身,我知道這並不容易,所以看到來就幫你分析,其實不是每個人都有耐心幫你分析,你要比較獨立分析,你不問能不能......不要問
-
樓上說得很對,我想補充以下幾點:
unsigned char lcdtem=0xf9,0x06,0x08,0x30,0xf9,0x07,0x08,0x30,0xf9,0x08,0x08,0x2e,0xf9,0x09,0x08,0x30};
0xf9,它可能是乙個顯示寫入命令; 0x06,它可能是顯示器的第 6 列; 下乙個0x08可能是顯示器的第 8 行; 0x30 是此行中要顯示的資料,即 ASCII 程式碼; 0xf9、0x06、0x08,0x30組成一套完整的命令,這裡有4組,其中第三組的最後一組是0x2e,是小數點的ASCII碼。
因此,它將在顯示屏上顯示的內容將如下所示:
在顯示屏的第 8 行中,第 6 列開始顯示溫度的百位、小數位、小數點和小數位。
-
if 語句是 C 語言中的選擇語句,這個過程的意思是,如果溫度 (if) 滿足 “=1000”,則將值 0x39 分別分配給 lcdtem[3]、lcdtem[7] 和 lcdtem[15],0x39 是 ASCII 字元“9”,所以 LCD 上顯示的結果是,如果溫度大於 1000,則條件不滿足, 陣列 lcdtem 中的 10 個資料將正常顯示。
在for迴圈中,REQ用於控制LCD顯示,1為true,0為FLASE,I=0; i<16;i++ 將此操作迴圈 16 次。
-
在數字系統中,字元有其編碼,例如,如果你在LCD上顯示7,這個7的含義是乙個棗字,那麼你就得加乙個引號,因為加了乙個引號後,編譯器就會知道它是乙個“字元”而不是乙個數字(其實 引號 7 將被編譯器翻譯成 37h,對應於 ASIIIC 程式碼 7)。為什麼一定要用“字元”,因為液晶屏只識別字元,它只顯示“字元”,就像上面的例子一樣,液晶屏知道37h是字元7,所以會顯示文字魯子7。 如果不使用引號,那麼編譯器只需將其作為常量傳送,當涉及到 LCD 時,LCD 就會“看起來”。"到 07h,它肯定不會顯示字元 7 出來。
要從 PC 顯示陣列,請重寫函式,如下所示:
void lcd_printstr(unsigned char * pch)
unsigned char chnum=20;乙個字串中最多有幾個字元,這裡有 20 個,可以更改。
while(chnum!=0)當字串不能超過 20 個時迴圈獲取字元,以防止陷入無限迴圈。
if (*pch)!=0x0d ;陣列中的字串以0x0d結尾,即回車符,如果不是回車符,則表示字串的末尾還沒有到達,從PC傳出的字串應該以0x0d結尾,當然是別的東西。
特殊字元也可用。
lcd_write_data(* pch);顯示字元。
如果上面的函式在顯示後沒有自動向右移動,請新增乙個函式來移動角色的位置。
pch++;指向知道下乙個角色的角色。
chnum--;字元數為負 1
週期結束。 例如,如果將字元陣列儲存在 unsgiend char str 中,則可以按如下方式呼叫該函式:
lcd_printstr(&str);
丹丰吉祥,龍呈,紅桃歡,杏迎春,人間充滿祝福。
如果你真的想學習,你不需要買開發板。 找到乙個最小的系統板,然後學習一些東西,購買元件並自己構建小電路。 自己經營電子市場,自己搭電路,為了知道問題,為了學習一些東西,買一塊開發板,按照說明書上的電路,然後把程式放進去,然後程式基本理解了,這不叫學習...... >>>More