数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 6300|回复: 107

[Arduino] 点亮一片低配NT7086 LCD单色液晶屏,并科普驱动原理(GEM-TECH GTG-3201283)

    [复制链接]
发表于 2023-7-16 19:00:02 | 显示全部楼层 |阅读模式
二手市场入手了几片超大单色液晶屏(GEM-TECH GTG-3201283),分辨率 320x128,在众多 12864 中算是鹤立鸡群。

然而价格低的离谱:每片 ¥19.99 包邮,要示例代码的话额外加钱。
一看这主控都有型号,自己测测也就点亮了,于是果断放弃要代码,准备自己搞。






然而大意了,这片液晶根本不是开往幼儿园的车,跳车都来不及。
为了点亮它我几乎复习了整个液晶的驱动原理,特写下来与大家分享。


【显示原理】

关于显示为啥要用点阵,大概就是用数字方块来模拟现实世界的一种方式吧,参考 minecraft。

首先考虑发光管 LED 点阵,就是满大街光污染的走字广告牌,显示电路大致如下图 (a) 所示:



行线(Commons) 与 列线(Segments) 同时使能时(=ON),对应交叉点的 LED 正向通电点亮。

然而这种方式对液晶 LCD 点阵无效,参考上图 (b). 液晶的每个像素相当于一个小电容,充电就“变黑”,放电就“透明”。
对于未使能的行线,即 Commons=OFF 状态,电容可能被反向充电,导致 LCD 像素意外“变黑”,显示出错。


为此需要用更复杂的波形驱动 LCD 点阵,如下图 (b) 所示。行线、列线上被加载了不同振幅、不同相位的交流信号,
只在行列均使能(=ON)的交叉点上,电容可以获得最高 Vpp 的交流信号,像素正确“变黑”。



其他像素虽有交流信号,但 Vpp 未达到“变黑”阈值,也就保持透明状态。
该阈值若匹配不当,就是点阵液晶常见的“暗淡”、“鬼影”现象。


【串行传输】

基于上述分析,工程上有常见的芯片组合实现相应驱动,如下图所示。



LED 点阵常用 HC595-HC164 组合,HC595 级联后加载列线(Segments),HC164 级联后加载行线(Commons);
LCD 点阵的芯片比较花,我这次入手的就是 NT7086 驱动,四片级联驱动列(320px),再两片级联驱动行(128px)。

从原理上来看,此次入手的液晶屏驱动时序应该与 LED 点阵相仿,需要单片机正确输出移位+锁存信号。


【为何没用u8g2】

说到玩屏,估计不少朋友都接触过 Arduino 以及 u8glib/u8g2 图形库,简单粗暴有疗效。
我起初也是这么想的,结果等理清了液晶电路,彻底傻眼:



传统的牛屎 12864 或者 FPC-COG 液晶如右侧所示,在 NT7086 或同类基础上多了一片 MPU,实现物理显存、总线适配。
这也是单片机访问完 12864 以后,可以去做其他工作的原因,例如 delay 完全卡死也不影响显示。

而这次的 320x240 液晶,完全拿掉了这片 MPU(左图),导致单片机得模拟这片 MPU 工作,得有显存,得有扫描时序...
更糟糕的是,液晶的 Commons 线有 128 根,扫描时序为 1/128 duty. 但凡驱动单片机停一下,液晶就变成一条亮线...

而 u8glib/u8g2 的 HAL 层,都是默认了有 MPU 的液晶模块;像这片需要手动扫描的,资源完全不够用(需要模拟MPU)。

不过这都不是问题,点亮屏幕才是关键。


【点屏】

分析到这里,基本确认了驱动方向:模拟 MPU 扫描,然后在适当的位置模拟个显存。

液晶的排线为 12PIN-FPC1.0MM,为此特地购入抽屉座、排线以及杜邦线板,连接也要优雅:





由于 NT7086 本质上是移位寄存器,因而应该有静态特性,先写个手动扫描固件压压惊:
通电测试下效果,加载列驱动时液晶没反应,再搞上行驱动,液晶顺利点亮一条亮线。

确认驱动逻辑没毛病后,写一个简单的周期图像:



至此只是显示了些马赛克,还没真正达到刷屏状态,目标刷一张 320x128 的位图。

需要一张二值图,GIMP 先搞起来,充斥着修图取模的艰辛:



最后取模完成,刷进去没白瞎研究这么久:



大合照,没有额外的负压生成器,于是得两套独立电源:




最后附上主固件,含NT7086 手册:




以上,点亮了一片低配的单色液晶,顺手科普下液晶驱动原理。

最后祝大家点屏愉快!





从晶体管讲起,科普下 NT7086 系列 LCD 液晶屏代码该怎么写
https://www.mydigit.cn/thread-403154-1-1.html



补充内容 (2023-7-26 17:32):
Arduino 直连版本的 PCB 已搞好,详见 92 楼

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 11家元 +302 收起 理由
springvirus + 30 原創內容
newnet1234 + 30 優秀文章
hongo + 30 優秀文章
lxvtag + 20 優秀文章
jf201006 + 30 優秀文章
200birds + 30
zzqqzzz + 30 给大佬递茶!( ̄▽ ̄)"
aping365 + 30 優秀文章
兰陵 + 30 謝謝分享
kkdkj + 30 謝謝分享

查看全部打赏

 楼主| 发表于 2023-7-16 19:57:27 | 显示全部楼层
wwb2002 发表于 2023-7-16 19:47
厉害,只是这个屏并不便宜,我买的12864只1元,还能并口能串口连接,按照5倍像素算楼主这个屏只值5元,还不 ...

哪里的 12864 能处理到这个白菜价,估计是 COG 软排线那种吧。

12864 这个分辨率太经典,各种实例也很多。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-16 20:21:22 | 显示全部楼层
whypyz 发表于 2023-7-16 19:29
太牛了,让我好好消化一下原理,不咋理解

受限于篇幅,科普性质好多没去细写。 但整体方向算是写了出来。

打赏

参与人数 1家元 +30 收起 理由
springvirus + 30

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-16 20:26:26 | 显示全部楼层
猪小呆 发表于 2023-7-16 19:59
这是一位单片机大神,大神你就是我的偶像,我要学哪些东西才能达到你现在的水平? ...

主要就是多写代码 + 多调试。

某宝入手液晶,刚开始需要店家资料才能点亮,代码多是拷贝;
慢慢脱离资料,只要有个主控+模块脚序,就能看手册点亮,代码需要自己写;
再慢慢连主控型号、脚序一概不知,店家也没资料,只是看眼缘就能点亮,代码全凭经验手写。

这样就差不多了。

打赏

参与人数 1家元 +30 收起 理由
springvirus + 30 楼主竟然有21篇精华!!!

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-16 21:01:22 | 显示全部楼层
猪小呆 发表于 2023-7-16 20:57
大神,这种很便宜但是没资料的屏,有没有办法让它正常显示?是夏普的屏
https://item.taobao.com/item.htm ...

彩屏主控比较乱,协议也大多是私有,一般得上逻辑分析仪才有可能。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 02:00:25 | 显示全部楼层
wwb2002 发表于 2023-7-16 23:53
有pcb的,间距2mm的,可惜现在没了,某宝老王电子diy,应该还有其他的1元多的,有个1.7元pos机还在,有个 ...

小屏都玩腻了,尤其那个超小OLED12864,唱戏机专用,费老半天劲还没个数码管效果好。

我比较喜欢玩 STN 大点阵,分辨率不要紧关键是屏要大,比如这种的:https://www.mydigit.cn/thread-245035-1-1.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:06:03 | 显示全部楼层

裸奔单干中...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:06:44 | 显示全部楼层
lmn2005 发表于 2023-7-16 21:18
能自己写驱动代码,那是大师级的!

感谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:07:57 | 显示全部楼层
dianziguan 发表于 2023-7-17 06:47
感觉是上个世纪九十年代的产品,很有年代感

就是看着这整齐的 TQFP 才入手的,实在点不亮练习拆焊也不错。

比起牛屎控,这个显得更有诚意,测量脚序也方便很多
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:09:10 | 显示全部楼层
mitcher 发表于 2023-7-17 08:03
这种是不是应该配单独的lcd驱动啊,很久以前弄个320*240的大屏。想弄个电脑的状况显示那个。
单独买个了爱 ...

按道理就是配一个专门的 LCD 驱动,例如 S1D 那个系列的。

相当于搞一片 MPU 图像协处理器。 可有好的型号推荐?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:09:58 | 显示全部楼层
hhxx 发表于 2023-7-17 08:05
我也就是来看看的,这些软件方面的有点困难

软件嘛就是看着手册写写时序,跟搞流水灯一样样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:11:32 | 显示全部楼层

相对于这个尺寸+分辨率来说,20 块已经很好了。

这价格大概相当于二手全功能 19264 点阵。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:15:52 | 显示全部楼层
tjf888301 发表于 2023-7-17 08:24
特别的厉害,曾经想过学着玩玩。

点屏一定要从带 MPU 的搞起,就是可以挑选 并行/穿行 总线那种。

像这个需要自刷新时序的屏,比一般的更需要耐心,因为几乎没资料。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:16:47 | 显示全部楼层
laipihou 发表于 2023-7-17 08:45
楼主是绝世高手,只是贴子写的太简单了点。感觉没学到什么东西

特意避免长篇大论,只挑框架写的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:17:04 | 显示全部楼层
wlhcq 发表于 2023-7-17 09:00
楼主钻研精神值得称赞!

感谢支持!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:18:48 | 显示全部楼层

感谢支持,欢迎交流!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 11:19:55 | 显示全部楼层
dh20042520 发表于 2023-7-17 10:17
折腾这些玩意,有钱是一方面,主要是得有闲,哈哈

哈哈的确是这样,也就周末了有闲心折腾一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 13:58:36 | 显示全部楼层
本帖最后由 t3486784401 于 2023-7-17 13:59 编辑
啊啊斑斑驳驳 发表于 2023-7-17 13:23
T6963C,RA6963,RA8835是这类显示屏常用的控制器,都是兼容的。淘宝和1688上这类显示屏基本都是使用这三种 ...


感谢推荐!

查了下手册,8835 应该不错,也有不少人做过类似的方案;
6963 系列可能和屏不太匹配:6963 和 LCD 的串行位宽是 1bit,液晶目前使用 4bit 通信。

这些方案都相当有年代感,还要捎带一片 62256 才能点亮。有机会了去打一套板玩玩。

负压方案么,单片机开个 IO 口就能搞,之前做 16V8 烧写器的时候干过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 14:15:27 | 显示全部楼层
zzqqzzz 发表于 2023-7-17 14:13
以前那个掌机GB 点阵的,大佬也会写驱动吧~

主要是得知道主控类型 / 型号,才能有方向;

现在点屏又多了一条:还得知道大体结构,不然带 MPU 不带 MPU 的屏完全是不同领域
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-17 14:19:51 | 显示全部楼层
啊啊斑斑驳驳 发表于 2023-7-17 13:23
T6963C,RA6963,RA8835是这类显示屏常用的控制器,都是兼容的。淘宝和1688上这类显示屏基本都是使用这三种 ...

找到了一家用 6963 做的 240x128 模块:https://huayuan-lcd.en.made-in-c ... 086-LCD-Module.html

背后我注释了下,可以很清楚看到原理:

1. 五片牛屎 NT7086 构成行列驱动:两个行驱动(80px+48px = 128px)、三个列驱动(80px+80px+80px = 240px)
2. RA6963 外挂一片 62256 系列 SRAM 构成 MPU 主控单元,用于对外适配并行/串行总线,并支持一定的总线指令;
3. 一块电感和周围(应该有boost芯片)构成负压发生器,板载 LM324 对负压进行分压+缓冲跟随,提供 NT7086 所需的 V0~V5 电压点。









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-18 19:20 , Processed in 0.156000 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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