LCD12864读取GDRAM数据异常

news/2025/2/6 4:33:27/

LCD12864读取GDRAM数据异常

  • 环境
  • 程序流程
    • 流程粗述
    • 读取数据函数流程细述
  • 异常情况描述
  • 可疑点
  • 最后

环境

	arduino IDEarduino unolcd4位通讯接法

程序流程

流程粗述

1.写GDRAM地址,选择第10行第7列的字(每字2字节)
2.向GDRAM写入数据0x0A0C(执行完后显示器正确显示像素)
3.写GDRAM地址,选择第10行第7列的字
4.读取GDRAM数据,并在arduino串口监视器打印读取到的数据

代码:

#include "TwkLiquidCrystalDisplay.h"
lcd disp;
uc8 dPin[] = {11,10,9,8};
void setup() {Serial.begin(9600);lcd12864Config(&disp, 5,6,7, dPin,FOURBIT, 0);lcdCurOff(&disp);lcd12864GpOn(&disp);lcd12864Clr(&disp);lcd12864WriteWordAdr(&disp,7,10);//设置地址,从0开始数(编址),7表示第7列,10表示第十行lcd12864WriteWord(&disp,0x0A0C);//写入0x0A0Clcd12864WriteWordAdr(&disp,7,10);  //设置地址Serial.println(lcd12864ReadWord(&disp));//读取数据并打印
}void loop() {
//nothing
}

LCD显示:
在这里插入图片描述

读取数据函数流程细述

这里对lcd12864ReadWord函数做详细流程说明

  1. 更改LCD的数据引脚d7d6d5d4与arduino相连的IO口模式为INPUT,并且拉高。对每个数据引脚执行:
    pinMode(dPin,INPUT);
    digitalWrite(dPin,HIGH);

  2. 从LCD读取高4位数据,从LCD读取低4位数据,此步骤为假读(dummy)

  3. 从LCD读取高4位数据,然后从LCD读取低4位数据,此步骤为读取GDRAM指定字的高8位,将读取的数据存至一个unsigned int变量的高8位

  4. 从LCD读取高4位数据,然后从LCD读取低4位数据,此步骤为读取GDRAM指定字的低8位,将读取的数据存至同一个unsigned int变量的低8位

  5. 恢复数据引脚模式为OUTPUT,返回unsigned int变量

异常情况描述

读取的数据在0x0A0C和0x0C0A这两种结果之间跳变,比如某次读取到0x0A0C,第二次就是0xA0C0,第三次又变成0x0A0C,第四次又是0xA0C0

可疑点

  1. 是否我对假读的理解是错误的?在4位通讯下,是读取1字节还是只要读取高4位,才算作一次假读。

最后

指望CSDN的大佬能给我点指导,这个bug我整了好几天了都不成,浪费我许多时间


http://www.ppmy.cn/news/534871.html

相关文章

C51单片机驱动LCD1602显示字符串

之前做了好多外设,都只是玩玩,并不曾记录一下,时间久了,竟也都忘记了,周末无事,重新写了一下LCD1602的驱动函数,给有需要的人做一个参考: 硬件电路: 其中,RS…

arduino串口监视器显示nan_arduino+dht11+lcd1602

有大佬可以帮我看一下吗? 我将arduino uno 和dht11还有lcd连接起来,但是lcd和串口监视器里面显示的温湿度值都是nan 这是我的代码 #include <DHT.h> #include <DHT_U.h>#include <LiquidCrystal.h>#define DHTPIN 8 #define DHTTYPE DHT11 DHT dht(DHTPIN,…

Linux 命令行 LCD唤醒,如何确定是否从Linux命令行打开LCD监视器

VESA DDC连接是一个I2C连接&#xff0c;可用于查询监视器的存在。 Linux暴露了I2C设备&#xff0c;用户程序可以直接与监视器通信&#xff0c;代码如http://jaffar.cs.msu.su/oleg/ddcci/ 请注意以下内容&#xff1a;Control 0xe1: /1/1 [SAM: Power control (0 - off/1 - on)]…

ChatGPT的回答是否可以被验证和验证准确性?

ChatGPT的回答可以通过一些方法进行验证&#xff0c;但验证其准确性是一个复杂的问题。以下是对ChatGPT回答验证和准确性验证的详细分析&#xff1a; 1. 基于事实的验证&#xff1a;对于涉及事实的问题&#xff0c;可以通过查阅可靠的来源或权威的知识库来验证ChatGPT的回答。…

(十一)CSharp-LINQ-LINQToXML(4)

一、XML 类 1、创建、保存、加载和显示 XML 文档 static void Main(string[] args){XDocument employees1 new XDocument(//创建 XML 文档new XElement("Employees",//创建根元素new XElement("Name", "Box Smith"),//创建元素new XElement(&qu…

开发之路,穷且益坚,不坠青云之志

引言 2023毕业季&#xff0c;距离笔者毕业已过2年有余。 互联网从业环境由盛转衰&#xff0c;互联网从业者数量剧增&#xff0c;市场竞争异常激烈&#xff0c;原本的利润空间被不断挤压&#xff0c;以至于很多开发者对互联网已经失去了信心与激情。 互联网的市场份额依旧是占…

POSTEK标签打印机跳纸问题解决

在开机后的正常待机状态下&#xff0c;请长按FEED键不放&#xff0c;等到标签走动后即松手&#xff0c;机器往外走纸大概20-30厘米再停止&#xff0c;就可以完整打印机的测纸。

Delphi制作打印面签案例

一、 在主窗体添加frxReport1、OpenPictureDialog1、Button1三个组件。 二、Button1的OnClick单击事件 procedure TForm1.Button1Click(Sender: TObject); begin if OpenPictureDialog1.execute then begin TfrxPictureView(frxReport1.FindObject(Picture1)).Picture.loadf…