没资料的屏幕怎么点亮?思路分享

news2024/11/13 9:56:02

这次尝试调通一个没资料的屏幕,型号是HYT13264,这个是淘宝上面的老王2.9元屏,成色很好但是长期库存没有资料和代码能点亮,仅仅只有一个引脚定义。这里我使用Arduino Nano作为控制器尝试点亮这个模块。

首先,已知别人找出来的线序如下

1 - CS
2 - RST	
3 - DC
4 - SCK
5 - SDA
6 - VCC
7 - GND
8 - K5
9 - K4
10 - LEDA 需接100欧左右限流电阻
11 - K3
12 - K2
13 - K1
14 - NC

根据这个打板,引出所有的线用于测试

那么这里对于控制芯片是未知的,所以直接按照SPI的先接上再说,电压VCC=5V
 

#define OLED_MOSI   11

#define OLED_CLK   13

#define OLED_DC    8

#define OLED_CS    10

#define OLED_RESET 9

此类点阵LCD屏幕模块,常见的主控芯片主要有这几个,ST7920,SSD1306,SSD1312,SH1106,其中前两者最多。

先测试ST7920,这里是使用Adafruit的代码demo,结果就是完全没有效果,屏幕上面根本没反应

然后测试,换用Adafruit的SSD1306的demo,使用的代码居然有反应了,但是乱码,根本看不见有什么,说明很接近,但不是

 

接着我又去搜索,发现13264其实是比较少见的一个规格,所以我发现还有一种主控是ST7567以及类似型号ST7565,ST7567的代码根本不能用,连清屏都做不到

尝试使用ST7565,我发现可以用了,但是有问题,对比度被设置到了最高,而且图片也显示的不太对劲,很明显是因为图片的buffer是根据12864来设置的。

 使用的ST7565库的代码,我做了一下调试,发现是屏幕实例化 begin 时候就发送了一个对比度设置指令,导致变成这种黑屏,查找和搜索发现就在最下面部分,setContrast(contrast)这一句是设置对比度,我看示例代码还以为是设置DAT引脚,因为引脚D13是Arduino Nano的MISO

void ST7565_LCD::begin(uint8_t contrast)
{
  if (isHardwareSPI())
  {
    // Setup hardware SPI.
    SPI.begin();
    SPI.setClockDivider(ST7565_SPI_CLOCK_DIV);
    SPI.setDataMode(SPI_MODE3);
    SPI.setBitOrder(MSBFIRST);
  }
  else
  {
    // Setup software SPI.
    pinMode(sid, OUTPUT);
    pinMode(sclk, OUTPUT);

    // Set software SPI ports and masks.
    clkport = portOutputRegister(digitalPinToPort(sclk));
    clkpinmask = digitalPinToBitMask(sclk);
    mosiport = portOutputRegister(digitalPinToPort(sid));
    mosipinmask = digitalPinToBitMask(sid);
  }

  pinMode(a0, OUTPUT);
  pinMode(rst, OUTPUT);
  if (cs > 0)
  {
    pinMode(cs, OUTPUT);
    digitalWrite(cs, HIGH);
  }

  // reset the ST7565 display controller
  digitalWrite(rst, LOW);
  delay(500);
  digitalWrite(rst, HIGH);

  // LCD bias select
  command(CMD_SET_BIAS_7);
  // ADC select
  command(CMD_SET_ADC_NORMAL);
  // SHL select
  command(CMD_SET_COM_NORMAL);
  // Initial display line
  command(CMD_SET_DISP_START_LINE);

  // turn on voltage converter (VC=1, VR=0, VF=0)
  command(CMD_SET_POWER_CONTROL | 0x4);
  // wait for 50% rising
  delay(50);

  // turn on voltage regulator (VC=1, VR=1, VF=0)
  command(CMD_SET_POWER_CONTROL | 0x6);
  // wait >=50ms
  delay(50);

  // turn on voltage follower (VC=1, VR=1, VF=1)
  command(CMD_SET_POWER_CONTROL | 0x7);
  // wait
  delay(10);

  // set lcd operating voltage (regulator resistor, ref voltage resistor)
  command(CMD_SET_RESISTOR_RATIO | 0x6);
  command(CMD_DISPLAY_ON);
  command(CMD_SET_ALLPTS_NORMAL);
  setContrast(contrast);
  setRotation(0);
}

在库的头文件里面,重新配置分辨率并且上传后,屏幕太黑的问题解决了!显示的图案不对,极大可能是因为预置的图片是128x64的。

 

 经过了一些调整后,现在可以显示方块


#include <SPI.h>
#include <Adafruit_GFX.h>
#include <ST7565_LCD.h>

// ST7565 LCD connection with Arduino board using software SPI
// #define LCD_DIN    11
// #define LCD_SCLK   13
// #define LCD_A0     8
// #define LCD_RESET  9
// #define LCD_CS     10
// ST7565_LCD display = ST7565_LCD(LCD_DIN, LCD_SCLK, LCD_A0, LCD_RESET, LCD_CS);

// Comment out above, uncomment this block to use hardware SPI
// connect LCD 'DIN' & 'SCLK' to board's hardware SPI pins
#define LCD_A0     8
#define LCD_RESET  9
#define LCD_CS     10
ST7565_LCD display = ST7565_LCD(LCD_A0, LCD_RESET, LCD_CS);


#define NUMFLAKES     10 // Number of snowflakes in the animation example

#define LOGO_HEIGHT   16
#define LOGO_WIDTH    16


void setup()   {                
  Serial.begin(9600);

  // initialize the ST7565 LCD display with contrast = 12 (0 <= coontrast <= 63)
  display.begin(3);

  display.display();
  delay(2000); // Pause for 2 seconds

 // testscrolldisplay();    // scroll whole display in different directions

  // Clear the buffer
  display.clearDisplay();
  display.drawRect(20,20,20,20,0);
  display.drawRect(0,0,40,50,0);
  display.display();


}

// main loop (nothing here!)
void loop() {
}

但是我发现显示的还是不对,怎么会从中间分开来了呢,明显是buff部分写入的代码还有问题。

  display.clearDisplay();
  display.drawRect(20,20,20,20,0);
  display.display();

 这种问题有可能是因为地址错位,或者是页面地址错位引起的,所以搜索后发现是在头文件里面定义。但是修改后发现没有改善,所以可能并不是这个引起

#define CMD_SET_COLUMN_UPPER 0x10

#define CMD_SET_COLUMN_LOWER 0x00

#define CMD_SET_PAGE 0xB0

继续查找其他部分,发现列地址其实是对的,但起始行不对,所以直接修改命令

command(CMD_SET_DISP_START_LINE);

检测发现,是向上偏移了32,所以我们进行修正,最终可以实现正确的显示设置的方块

 command(CMD_SET_DISP_START_LINE | 32);

 需要修改好的库,从这里下载:https://download.csdn.net/download/u012388993/89724021

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当水泵遇上物联网:智能水务新时代的浪漫交响

在当代科技的宏伟乐章中&#xff0c;物联网&#xff08;IoT&#xff09;技术宛如一位技艺高超的指挥家&#xff0c;引领着各行各业迈向智能化的新纪元。当这股创新浪潮涌向古老的水务行业时&#xff0c;一场前所未有的“智能水务”革命便悄然上演&#xff0c;而水泵——这一传统…

vue3 自定义指令 directive

1、官方说明&#xff1a;https://cn.vuejs.org/guide/reusability/custom-directives 除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。 我们已经介绍了两种在 Vue 中重用代码的方式&#xff1a;组件和…

828华为云征文 | 华为云Flexusx实例,高效部署Servas书签管理工具的优选平台

需要了解 本文章主要讲述在 华为云Flexus X 实例上使用docker快速部署Servas&#xff0c;一款功能强大的自托管书签管理工具&#xff0c;专为追求高效与个性化的用户设计。选择合适的云服务器&#xff1a; 本文采用的是 华为云服务器 Flexus X 实例&#xff08;推荐使用&#x…

Vue 中 watch 和 watchEffect 的区别

watch 和 watcheffect 都是 vue 中用于监视响应式数据的 api&#xff0c;它们的区别在于&#xff1a;watch 用于监视特定响应式属性并执行回调函数。watcheffect 用于更通用的响应式数据监视&#xff0c;但回调函数中不能更新响应式数据。Vue 中 watch 和 watchEffect 的区别 …

C++ 日历计算器的实现

日历计算器 创建一个日期类对运算符进行重载代码 创建一个日期类 年月日为类的成员变量&#xff0c;所以放到私有区域&#xff0c;又因为成员变量为内置类型&#xff0c;编译器自动生成的默认构造函数对其不做处理&#xff0c;所以需要我们显示定义一个构造函数&#xff0c;而…

亿发:中小型制造企业数字化转型典型场景、痛点、解决方案

随着全球制造业的不断发展&#xff0c;中小型制造企业正面临前所未有的挑战和机遇。数字化转型成为了企业提升竞争力、优化生产效率、应对市场变化的关键路径。然而&#xff0c;对于资源相对有限的中小型制造企业而言&#xff0c;数字化转型并非易事。他们在推进转型的过程中往…

视频的编码与传输 学习笔记2 信息论

说白了&#xff0c;关键点就三个&#xff1a;信源&#xff0c;压缩与信道 DMS就是无记忆的信源&#xff0c;该输出什么就输出什么。 马尔卡夫信源&#xff0c;准确来讲是m马尔卡夫&#xff0c;会受到前m个状态的影响。&#xff08;妈的&#xff0c;马尔卡弗还在追我&#xff0c…

【工具分享】针对加解密综合利用后渗透工具 - DecryptTools

下载地址&#xff1a; 链接: https://pan.quark.cn/s/2e451bd65d79工具介绍 支持22种OA、CMS 加解密密码查询功能 万户OA 用友NC 金蝶EAS 蓝凌OA 致远OA 宏景ERP 湖南强智 金和jc6 瑞友天翼 金和C6 Navicat 华天动力 FinalShell 亿赛通 帆软报表 H3C CAS Weblogic 金蝶云星空…

基于SSM+Vue+MySQL的可视化高校公寓管理系统

系统展示 管理员界面 宿管界面 学生界面 系统背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。这样的…

51单片机-第十二节-LCD1602液晶显示屏

一、LCD1602介绍&#xff1a; LCD1602是一种字符型液晶显示屏&#xff0c;可以显示ASCII码的标准字符和其他的内置特殊字符。 显示容量&#xff1a;16*2个字符&#xff0c;每个字符为5*7点阵。 二、引脚及应用电路&#xff1a; 其中&#xff1a;D0-7这8位数据是接在P0引脚上…

聚焦2024数博会|与天空卫士一起探索AI与数据安全的融合应用

中国国际大数据产业博览会&#xff08;简称数博会&#xff09;&#xff0c;是全球首个以大数据为主题的博览会&#xff0c;自2015年创办以来&#xff0c;经过多年的深厚沉淀&#xff0c;数博会已发展成为国际知名、引领前沿趋势的专业展示合作平台。 2024年8月28日至30日&#…

T1打卡——mnist手写数字识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 1.定义GPU import tensorflow as tfgpustf.config.list_physical_devices("GPU")if gpus:gpu0gpus[0]tf.config.experimental.set_memort_groth(gp…

重卡换电连接器的应用

电动汽车换电模式涉及在专门充电站集中存储和充电大量电池&#xff0c;实现统一配送&#xff0c;并在换电站对电动汽车进行快速电池更换服务&#xff0c;或整合充电、物流、调配和换电服务。新能源汽车面临续航限制和配套设施不完善等问题&#xff0c;影响了其大规模推广。电池…

Java创建线程(5种方法)

操作系统提供api操作线程 线程本身是操作系统提供的&#xff0c;操作系统提供API让我们操作线程&#xff0c;JVM对操作系统api进行了封装&#xff0c;在线程这一部分&#xff0c;就提供了Thread类&#xff0c;表示线程。 创建线程 创建一个MyThread类&#xff08;类的名字不…

基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PI控制算法的异步感应电机转速控制系统simulink建模与仿真。PI控制器是一种经典的线性控制器&#xff0c;它通过将控制量的比例部分和积分部分相结合来实现对系统输出的调…

【C-实践】网络聊天室(1.0)

概述 使用了 tcp epoll &#xff0c;实现网络聊天室 1.0 版&#xff0c;用户的显示框和输入框在一起 2.0 版&#xff0c;用户的显示框与输入框分离 功能 主要功能&#xff1a;用户连接服务器&#xff0c;就会自动进入网络聊天室与其他在线用户一起聊天 服务器搭建 创建用户数…

探索EasyCVR与AI技术深度融合:视频汇聚平台的新增长点

随着5G、AI、边缘计算、物联网&#xff08;IoT&#xff09;、云计算等技术的快速发展&#xff0c;万物互联已经从概念逐渐转变为现实&#xff0c;AIoT&#xff08;物联网人工智能&#xff09;的新时代正在加速到来。在这一背景下&#xff0c;视频技术作为信息传输和交互的重要手…

常见Python GUI库分析

引言 在Python环境下进行桌面编程时&#xff0c;选择合适的GUI&#xff08;图形用户界面&#xff09;库至关重要。在Python环境下进行桌面编程GUI开发时&#xff0c;有多个优秀的库可供选择。以下是一些推荐的GUI库&#xff0c;包括它们的推荐理由、优劣势以及简单的demo示例。…

【论文阅读】SwiftTheft: A Time-Efficient Model Extraction Attack Framework(2024)

完整标题 SwiftTheft: A Time-Efficient Model Extraction Attack Framework Against Cloud-Based Deep Neural Networks 摘要 With the rise of artificial intelligence(人工智能) and cloud computing(云计算), machine-learning-as-a-service platforms(机器学习即…

SpringMVC基于注解使用:JSON

01-json处理--介绍 json数据格式回顾&#xff1a; 在pom.xml导入依赖 在web.xml里面导入配置文件 ResponseBody 注解是将返回值作为文本返回到客户端了而不是字符串了 当我们想返回bean对象的json数据的时候我们需要先导入jackson依赖在pom.xml里面 然后创建User类&#xff0c…