找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

請教大佬關(guān)于LCD12864反白顯示程序問題

查看數(shù): 2615 | 評論數(shù): 10 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2022-3-6 11:45

正文摘要:

本帖最后由 wanli2018 于 2022-3-6 17:25 編輯 請問一下這個程序怎樣讓  write_com(0x82); lcm_w_word("—名稱設(shè)置");  名稱設(shè)置  反白就是字是空白的 空白區(qū)添沖   ...

回復(fù)

ID:824490 發(fā)表于 2022-3-10 00:44
wanli2018 發(fā)表于 2022-3-9 23:27
請問一下這個反白里 R1 和R0代表是什么意思這個有點看不懂  功能設(shè)定里的X 是代表0 還是多少?求大佬指教 ...

R1/R0,就是1到4行的行號。00,表示第一行,11表示第4行。
反白指令是雙穩(wěn)態(tài),第一次使用對應(yīng)行反白,再一次使用,又不反白了。
ID:844772 發(fā)表于 2022-3-9 16:44
write_com(0x04)——write_com(0x07) 分別代表1——4行的反顯。你查擴展命令就知道了。
ID:824490 發(fā)表于 2022-3-9 16:06
wanli2018 發(fā)表于 2022-3-9 13:36
具體程序怎樣更改呢困擾很久了
#ifndef __LCD12864_H__
#define __LCD12864_H__

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





ID:265485 發(fā)表于 2022-3-9 13:37
具體這個程序怎樣更改呢?比喻這個程序最后顯示 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("您好!");
}
ID:265485 發(fā)表于 2022-3-9 13:36
名字不是重點 發(fā)表于 2022-3-7 00:22
7920有個反白顯示的指令,你查一下手冊

具體程序怎樣更改呢困擾很久了
#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("您好!");
}
ID:123289 發(fā)表于 2022-3-7 16:32
顯示取漢字字模的時候,將字模的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ù)人采用的方式是:輸出字模 = 字模,樓主也是這樣的方式。
各有各的好處,供樓主參考。
ID:824490 發(fā)表于 2022-3-7 00:22
7920有個反白顯示的指令,你查一下手冊
ID:265485 發(fā)表于 2022-3-6 17:24
aidianzi 發(fā)表于 2022-3-6 13:40
看看是否有專門指令 若沒有可以把要寫入LCD的數(shù)據(jù)部分0和1取反就行了

就是指令沒有看懂這個程序是別人的 我移植過來的  能詳細(xì)說說嗎 加Q 364470601
ID:41656 發(fā)表于 2022-3-6 13:40
看看是否有專門指令 若沒有可以把要寫入LCD的數(shù)據(jù)部分0和1取反就行了

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表