![]() |
發(fā)布時間: 2022-3-6 11:45
正文摘要:本帖最后由 wanli2018 于 2022-3-6 17:25 編輯 請問一下這個程序怎樣讓 write_com(0x82); lcm_w_word("—名稱設(shè)置"); 名稱設(shè)置 反白就是字是空白的 空白區(qū)添沖 ... |
wanli2018 發(fā)表于 2022-3-9 23:27 R1/R0,就是1到4行的行號。00,表示第一行,11表示第4行。 反白指令是雙穩(wěn)態(tài),第一次使用對應(yīng)行反白,再一次使用,又不反白了。 |
write_com(0x04)——write_com(0x07) 分別代表1——4行的反顯。你查擴展命令就知道了。 |
wanli2018 發(fā)表于 2022-3-9 13:36 應(yīng)該 是要先設(shè)定為擴展指令,然后再使用反白指令。至于是先顯示再反白,還是先反白再顯示要試一下。 ![]() ![]() |
具體這個程序怎樣更改呢?比喻這個程序最后顯示 lcm_w_word("您好!"); 把您好 顯示取反 #ifndef __LCD12864_H__ #define __LCD12864_H__ #include "zk.h" #include <delay.h> #define uchar unsigned char #define uint unsigned int /*-----------------------------定義12864液晶屏數(shù)據(jù)線---------------------------------*/ sbit LCM_RS = P5^0; //模式位,為0輸入指令,為1輸入數(shù)據(jù) sbit LCM_RW = P5^1; //讀寫位,為0讀,為1寫 sbit LCM_EN = P5^2; //使能位,高脈沖 sbit LCD12864_PSB_PORT = P5^4; #define Lcd_Bus P4 //LCM12864數(shù)據(jù)總線,P0.0--P0.7對應(yīng)連接DB0--DB7 /*------------------------------------------------------------------------------------*/ /*12864液晶顯示屏并口驅(qū)動程序--------------------------------------------------------*/ //檢查忙位 void chk_busy() { LCM_RS=0; LCM_RW=1; LCM_EN=1; Lcd_Bus=0xff; while(Lcd_Bus&0x80); LCM_EN=0; } /*寫指令到LCD------------------------------------------------------------------------*/ void write_com(uchar cmdcode) { chk_busy(); LCM_RS=0; LCM_RW=0; LCM_EN=1; Lcd_Bus=cmdcode; DelayUs2x(5); LCM_EN=0; DelayUs2x(5); } /*寫數(shù)據(jù)到LCD------------------------------------------------------------------------*/ void write_data(uchar Dispdata) { chk_busy(); LCM_RS=1; LCM_RW=0; LCM_EN=1; Lcd_Bus=Dispdata; DelayUs2x(5); LCM_EN=0; DelayUs2x(5); } /*向LCM發(fā)送一個字符串,長度64字符之內(nèi)-------------------------------------------------*/ void lcm_w_word(uchar *s) { while(*s>0) { write_data(*s); s++; } //應(yīng)用:lcm_w_word("您好!"); } |
名字不是重點 發(fā)表于 2022-3-7 00:22 具體程序怎樣更改呢困擾很久了 #ifndef __LCD12864_H__ #define __LCD12864_H__ #include "zk.h" #include <delay.h> #define uchar unsigned char #define uint unsigned int /*-----------------------------定義12864液晶屏數(shù)據(jù)線---------------------------------*/ sbit LCM_RS = P5^0; //模式位,為0輸入指令,為1輸入數(shù)據(jù) sbit LCM_RW = P5^1; //讀寫位,為0讀,為1寫 sbit LCM_EN = P5^2; //使能位,高脈沖 sbit LCD12864_PSB_PORT = P5^4; #define Lcd_Bus P4 //LCM12864數(shù)據(jù)總線,P0.0--P0.7對應(yīng)連接DB0--DB7 /*------------------------------------------------------------------------------------*/ /*12864液晶顯示屏并口驅(qū)動程序--------------------------------------------------------*/ //檢查忙位 void chk_busy() { LCM_RS=0; LCM_RW=1; LCM_EN=1; Lcd_Bus=0xff; while(Lcd_Bus&0x80); LCM_EN=0; } /*寫指令到LCD------------------------------------------------------------------------*/ void write_com(uchar cmdcode) { chk_busy(); LCM_RS=0; LCM_RW=0; LCM_EN=1; Lcd_Bus=cmdcode; DelayUs2x(5); LCM_EN=0; DelayUs2x(5); } /*寫數(shù)據(jù)到LCD------------------------------------------------------------------------*/ void write_data(uchar Dispdata) { chk_busy(); LCM_RS=1; LCM_RW=0; LCM_EN=1; Lcd_Bus=Dispdata; DelayUs2x(5); LCM_EN=0; DelayUs2x(5); } /*向LCM發(fā)送一個字符串,長度64字符之內(nèi)-------------------------------------------------*/ void lcm_w_word(uchar *s) { while(*s>0) { write_data(*s); s++; } //應(yīng)用:lcm_w_word("您好!"); } |
顯示取漢字字模的時候,將字模的0、1反向一下即可。 或者再建一個反向字模庫,此庫與原字庫0、1相反。 方法很多。 我在寫程序時,會設(shè)立以下標(biāo)記: 1、閃標(biāo)記:B_FLASH,=0/1 = 正常顯示/閃動顯示 2、反白標(biāo)記:B_INV,=0/1 = 正常顯示/反白顯示 這樣,在顯示時只要改變對應(yīng)位置的標(biāo)記,就可以決定顯示的反白與閃動。(當(dāng)然,標(biāo)記不止兩個) 此時,輸出字模的方案是: (字模 XOR B_INV) AND (B_FLASH * B_300MS OR /B_FLASH ) 其中: B_300MS 在定時中斷服務(wù)程序中,每0.3秒反轉(zhuǎn)一次0/1。顯示切換也是,每0.3秒一次 大多數(shù)人采用的方式是:輸出字模 = 字模,樓主也是這樣的方式。 各有各的好處,供樓主參考。 |
7920有個反白顯示的指令,你查一下手冊 |
aidianzi 發(fā)表于 2022-3-6 13:40 就是指令沒有看懂這個程序是別人的 我移植過來的 能詳細(xì)說說嗎 加Q 364470601 |
看看是否有專門指令 若沒有可以把要寫入LCD的數(shù)據(jù)部分0和1取反就行了 |
Powered by 單片機教程網(wǎng)