標(biāo)題: 請(qǐng)教大佬關(guān)于LCD12864反白顯示程序問題 [打印本頁]

作者: wanli2018    時(shí)間: 2022-3-6 11:45
標(biāo)題: 請(qǐng)教大佬關(guān)于LCD12864反白顯示程序問題
本帖最后由 wanli2018 于 2022-3-6 17:25 編輯

請(qǐng)問一下這個(gè)程序怎樣讓  write_com(0x82); lcm_w_word("—名稱設(shè)置");  名稱設(shè)置  反白就是字是空白的 空白區(qū)添沖  顯示成圖三

51hei圖片20220306114454.png (85.64 KB, 下載次數(shù): 61)

51hei圖片20220306114454.png

51hei圖片20220306114441.png (20.06 KB, 下載次數(shù): 63)

51hei圖片20220306114441.png

51hei圖片_20220306172527.png (447.59 KB, 下載次數(shù): 56)

51hei圖片_20220306172527.png

作者: aidianzi    時(shí)間: 2022-3-6 13:40
看看是否有專門指令 若沒有可以把要寫入LCD的數(shù)據(jù)部分0和1取反就行了
作者: wanli2018    時(shí)間: 2022-3-6 17:24
aidianzi 發(fā)表于 2022-3-6 13:40
看看是否有專門指令 若沒有可以把要寫入LCD的數(shù)據(jù)部分0和1取反就行了

就是指令沒有看懂這個(gè)程序是別人的 我移植過來的  能詳細(xì)說說嗎 加Q 364470601

作者: 名字不是重點(diǎn)    時(shí)間: 2022-3-7 00:22
7920有個(gè)反白顯示的指令,你查一下手冊(cè)

作者: yzwzfyz    時(shí)間: 2022-3-7 16:32
顯示取漢字字模的時(shí)候,將字模的0、1反向一下即可。
或者再建一個(gè)反向字模庫,此庫與原字庫0、1相反。
方法很多。
我在寫程序時(shí),會(huì)設(shè)立以下標(biāo)記:
1、閃標(biāo)記:B_FLASH,=0/1 = 正常顯示/閃動(dòng)顯示
2、反白標(biāo)記:B_INV,=0/1 = 正常顯示/反白顯示
這樣,在顯示時(shí)只要改變對(duì)應(yīng)位置的標(biāo)記,就可以決定顯示的反白與閃動(dòng)。(當(dāng)然,標(biāo)記不止兩個(gè))
此時(shí),輸出字模的方案是: (字模 XOR B_INV) AND (B_FLASH * B_300MS OR  /B_FLASH )
其中: B_300MS 在定時(shí)中斷服務(wù)程序中,每0.3秒反轉(zhuǎn)一次0/1。顯示切換也是,每0.3秒一次

大多數(shù)人采用的方式是:輸出字模 = 字模,樓主也是這樣的方式。
各有各的好處,供樓主參考。
作者: wanli2018    時(shí)間: 2022-3-9 13:36
名字不是重點(diǎn) 發(fā)表于 2022-3-7 00:22
7920有個(gè)反白顯示的指令,你查一下手冊(cè)

具體程序怎樣更改呢困擾很久了
#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對(duì)應(yīng)連接DB0--DB7
/*------------------------------------------------------------------------------------*/
/*12864液晶顯示屏并口驅(qū)動(dòng)程序--------------------------------------------------------*/
//檢查忙位
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ā)送一個(gè)字符串,長(zhǎng)度64字符之內(nèi)-------------------------------------------------*/
void lcm_w_word(uchar *s)
{
        while(*s>0) { write_data(*s); s++; }  //應(yīng)用:lcm_w_word("您好!");
}

作者: wanli2018    時(shí)間: 2022-3-9 13:37
具體這個(gè)程序怎樣更改呢?比喻這個(gè)程序最后顯示 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對(duì)應(yīng)連接DB0--DB7
/*------------------------------------------------------------------------------------*/
/*12864液晶顯示屏并口驅(qū)動(dòng)程序--------------------------------------------------------*/
//檢查忙位
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ā)送一個(gè)字符串,長(zhǎng)度64字符之內(nèi)-------------------------------------------------*/
void lcm_w_word(uchar *s)
{
        while(*s>0) { write_data(*s); s++; }  //應(yīng)用:lcm_w_word("您好!");
}
作者: 名字不是重點(diǎn)    時(shí)間: 2022-3-9 16:06
wanli2018 發(fā)表于 2022-3-9 13:36
具體程序怎樣更改呢困擾很久了
#ifndef __LCD12864_H__
#define __LCD12864_H__

應(yīng)該 是要先設(shè)定為擴(kuò)展指令,然后再使用反白指令。至于是先顯示再反白,還是先反白再顯示要試一下。






作者: glinfei    時(shí)間: 2022-3-9 16:44
write_com(0x04)——write_com(0x07) 分別代表1——4行的反顯。你查擴(kuò)展命令就知道了。
作者: wanli2018    時(shí)間: 2022-3-9 23:27
glinfei 發(fā)表于 2022-3-9 16:44
write_com(0x04)——write_com(0x07) 分別代表1——4行的反顯。你查擴(kuò)展命令就知道了。

請(qǐng)問一下這個(gè)反白里 R1 和R0代表是什么意思這個(gè)有點(diǎn)看不懂  功能設(shè)定里的X 是代表0 還是多少?求大佬指教

51hei截圖20220309232353.jpg (18.79 KB, 下載次數(shù): 49)

51hei截圖20220309232353.jpg

作者: 名字不是重點(diǎn)    時(shí)間: 2022-3-10 00:44
wanli2018 發(fā)表于 2022-3-9 23:27
請(qǐng)問一下這個(gè)反白里 R1 和R0代表是什么意思這個(gè)有點(diǎn)看不懂  功能設(shè)定里的X 是代表0 還是多少?求大佬指教 ...

R1/R0,就是1到4行的行號(hào)。00,表示第一行,11表示第4行。
反白指令是雙穩(wěn)態(tài),第一次使用對(duì)應(yīng)行反白,再一次使用,又不反白了。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1