找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

请教大佬关于LCD12864反白显示程序问题

查看数: 2730 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-3-6 11:45

正文摘要:

本帖最后由 wanli2018 于 2022-3-6 17:25 编辑 请问一下这个程序怎样让  write_com(0x82); lcm_w_word("—名称设置");  名称设置  反白就是字是空白的 空白区添冲   ...

回复

ID:824490 发表于 2022-3-10 00:44
wanli2018 发表于 2022-3-9 23:27
请问一下这个反白里 R1 和R0代表是什么意思这个有点看不懂  功能设定里的X 是代表0 还是多少?求大佬指教 ...

R1/R0,就是1到4行的行号。00,表示第一行,11表示第4行。
反白指令是双稳态,第一次使用对应行反白,再一次使用,又不反白了。
ID:844772 发表于 2022-3-9 16:44
write_com(0x04)——write_com(0x07) 分别代表1——4行的反显。你查扩展命令就知道了。
ID:824490 发表于 2022-3-9 16:06
wanli2018 发表于 2022-3-9 13:36
具体程序怎样更改呢困扰很久了
#ifndef __LCD12864_H__
#define __LCD12864_H__

应该 是要先设定为扩展指令,然后再使用反白指令。至于是先显示再反白,还是先反白再显示要试一下。





ID:265485 发表于 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液晶屏数据线---------------------------------*/
sbit LCM_RS  = P5^0;   //模式位,为0输入指令,为1输入数据
sbit LCM_RW  = P5^1;   //读写位,为0读,为1写
sbit LCM_EN  = P5^2;   //使能位,高脉冲   
sbit LCD12864_PSB_PORT = P5^4;
#define Lcd_Bus P4     //LCM12864数据总线,P0.0--P0.7对应连接DB0--DB7
/*------------------------------------------------------------------------------------*/
/*12864液晶显示屏并口驱动程序--------------------------------------------------------*/
//检查忙位
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);
}
/*写数据到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发送一个字符串,长度64字符之内-------------------------------------------------*/
void lcm_w_word(uchar *s)
{
        while(*s>0) { write_data(*s); s++; }  //应用:lcm_w_word("您好!");
}
ID:265485 发表于 2022-3-9 13:36
名字不是重点 发表于 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液晶屏数据线---------------------------------*/
sbit LCM_RS  = P5^0;   //模式位,为0输入指令,为1输入数据
sbit LCM_RW  = P5^1;   //读写位,为0读,为1写
sbit LCM_EN  = P5^2;   //使能位,高脉冲   
sbit LCD12864_PSB_PORT = P5^4;
#define Lcd_Bus P4     //LCM12864数据总线,P0.0--P0.7对应连接DB0--DB7
/*------------------------------------------------------------------------------------*/
/*12864液晶显示屏并口驱动程序--------------------------------------------------------*/
//检查忙位
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);
}
/*写数据到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发送一个字符串,长度64字符之内-------------------------------------------------*/
void lcm_w_word(uchar *s)
{
        while(*s>0) { write_data(*s); s++; }  //应用:lcm_w_word("您好!");
}
ID:123289 发表于 2022-3-7 16:32
显示取汉字字模的时候,将字模的0、1反向一下即可。
或者再建一个反向字模库,此库与原字库0、1相反。
方法很多。
我在写程序时,会设立以下标记:
1、闪标记:B_FLASH,=0/1 = 正常显示/闪动显示
2、反白标记:B_INV,=0/1 = 正常显示/反白显示
这样,在显示时只要改变对应位置的标记,就可以决定显示的反白与闪动。(当然,标记不止两个)
此时,输出字模的方案是: (字模 XOR B_INV) AND (B_FLASH * B_300MS OR  /B_FLASH )
其中: B_300MS 在定时中断服务程序中,每0.3秒反转一次0/1。显示切换也是,每0.3秒一次

大多数人采用的方式是:输出字模 = 字模,楼主也是这样的方式。
各有各的好处,供楼主参考。
ID:824490 发表于 2022-3-7 00:22
7920有个反白显示的指令,你查一下手册
ID:265485 发表于 2022-3-6 17:24
aidianzi 发表于 2022-3-6 13:40
看看是否有专门指令 若没有可以把要写入LCD的数据部分0和1取反就行了

就是指令没有看懂这个程序是别人的 我移植过来的  能详细说说吗 加Q 364470601
ID:41656 发表于 2022-3-6 13:40
看看是否有专门指令 若没有可以把要写入LCD的数据部分0和1取反就行了

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表