切换到宽版
  • 24949阅读
  • 47回复

[C51]驱动U盾LCD屏---代码初步解析 [复制链接]

上一主题 下一主题
离线ly7317090803
 

发帖
52
M币
5575
专家
58
粉丝
103
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2015-09-10
— 本帖被 發騷友 设置为精华,作者+3000M币+5专家(2015-10-23) —
相信很多人都驱动过 12864屏幕,对于串行的驱动来说主要有5根主要信号线:DATA数据、CLK时钟、A0寄存器选择、RST复位、CS片选,其中主要用到的为DATA、CLK、A0(A0:也就是你要写入的是控制命令还是数据),CS可以常为低(就是一直使能它),RST在开机瞬间拉低10ms后保持高电平。复位屏幕后,发送控制指令初始化,再依次写入数据,屏幕即可点亮,大部分LCD或OLED串行屏幕均可按此类方法驱动,下面对LCD屏幕驱动初步分析。

这个是我拆的U盾:


打开外壳后第一件事就是找那3.3V稳压管或芯片,放在放大镜下折腾了半个多小时最终还是没找到。沿着导线走,发现那EEPROM芯片也是统一电源,最后导线越来越细,最终接到主芯片19脚。


取下LCD屏后画的电路图:


上图是通过逻辑分析仪读取各端口数据得来的,具体方法如下:用逻辑分析仪分别接到LCD的6-10脚(未知的5根线),打开USBee Suite软件并开启捕捉,此时再将U盾通电,得到如下图形:


上图左侧写出了各为什么数据线,各线是各有特点的:
1.CLK线时8个一起很均匀的脉冲(上升沿),看到变化次数最多且8个在一起的就是时钟了。
2.RST是一个复位用的,一般低电平复位有效,因此大部分时间是处于高电平的(仅在开机时出现短暂低电平);
3.CS是使能控制,就是片选,一般低电平有效(表示正在工作中);

那么A0与DATA呢?DATA只在CLK变化时(就是那8个连续均匀脉冲间)有变化,而A0是在CLK停止时变化(就是两个连续的8个CLK脉冲之间,也就是CLK暂时停止的间隙那),如下图,可见


A0=0表示写入控制指令,B0表示写入第0行(共有8行,每行又分8子小行,后面有画图表示),B1表示写入第1行,10 及00 表示第0列,最后一个00,实则无意义,例如要写入第20列(16进制为0x14)则要发送 11 04 (16进制的,0x表示16进制数),即把0x14的高4位1加上0x10,低四位则去掉高四位后即可。

其实驱动串行LCD,主要第一找对线:主要是DATA、CLK、A0三根,CS可直接接地,RST脚可以仿照STC51单片机复位电路,加个上拉电阻,再接一个合适电容到GND,这样上电瞬间为低,之后就会恢复高电平。

第二:写好初始化代码,也就是A0=0,发送初始控制指令给LCD,每8个CLK传送一字节DATA,DATA在CLK由低变为高之前设置好,例如要传送0x90,第一个CLK上升沿(由低电平变为高电平)之前需把DATA变位高,第二个CLK上升沿之前变为低·····。

第三:就是要变黑的点,就是绘出要显示的东西。


第一点按照他们各自规律很容易找到(示波器也行)。
第二、这个初始化指令在没有LCD技术手册时,部分指令还是无法翻译,比如本次拆的这个初始化依次发送了:0xE2  0xA2  0xA0  0xC8 0xA4 0xA6 0x24 0x81 0x20 0xF8 0x00 0x2C 0x2E 0x2F 0x40 0xAF. 下面列出常用的部分控制指令:
0xB0~B7 表示写入第几页(分了8大行):


0x1?为写入列数的高四位,0x0?为写入列数的低四位,如上图要在第2页第2列写入0x91,则步骤:先将A0=0,发送 0xB2 0x10 0x02 ,再将A0=1,发送0x91即可。也就是先设置要写的坐标,再发送数值。
0x81 0x??:0x81表示要设置对比度,后面那个字节表示1-256个等级对比度
0xA6:表示正常显示;0xA7表示逆显示
0xAE表示显示关闭;0xAF:开启显示
0x26:水平向右滚动显示;0x27:水平向左滚动显示。之后还要发送6字节数据:第一字节为00,第二字节:0x00--0x07,定义要滚动页开始的地址;第三字节:设置时间,0x00-0x07;第四字节:0x00-0x07,定义要滚动的页的结束地址,即从第几页到第?页为滚动的。第5字节为00,第6字节为0xFF
0x29:垂直和向右滚动 0x2A:垂直和向左滚动,也是和0x26/0x27设置一样的。
0x2E:停止滚动显示;0x2F开始滚动显示
0x20-0x23 设置内存寻址模式,也就是会影响你写入数据的方向,会影响显示图像的方向。
       其余的可参看对应的LCD技术规格书,其次不同的LCD部分控制指令会有所不同(不代表所以LCD均可按此指令信息,实在不行就用逻辑分析仪读取DATA、CLK、A0数据,并抄下。便宜的逻辑分析仪才20多,不过能读取红外等各种数据了),注意写控制指令时A0=0。
        第三点就是传输数据,也就是将各点显示为深色还是为空的信息告诉LCD,此时A0=1。正常模式下,先设置好药显示的起始地址后,再依次发送n个数据给LCD,LCD会根据依次传来的数据从显示起始处依次填充下去(从左往右)。如:A0=0时发送 0xB1 0x10 0x08,再A0=1,发送0x54,0x38,0x11·····,LCD会从第1页的第8列开始依次在第1页从左往右填充对应的数值。


显示的字可以用字模提取软件提取,图片也是一样的,如下图:


关于绘制线条等,由于写入数据是一字节一字节地写入的,故一次会影响 到某页(Page)竖列的8个点,最理想的办法是在写入之前先读取此LCD寄存器的值,再将要写入的值和其相 “与 --‘|’ ”,即把要变为黑点的位置加入原有的即可,这样绘制再多也不会影响原有的图案,但工作量会大点。或者将各寄存器的值存在EEPROM内(8页,每页128个,共1024字节),先改好后再一起发送到LCD里,这样掉电也不会保持最后一次的图案。
绘制直线主要是依着X轴或Y轴找到对应Y轴或X轴的值,逐点描绘即可:


驱动这LCD本来打算用STC15F104,但为保证测试稳定就先用了一个mega8最小系统。STC这8脚单片机,不需外部电路,且引脚刚好合适(可以再接个温度传感器之类的)。但注意一点别用5V给LCD供电,我用5V单片机驱动LCD后,发现LCD微微有点变黄了,所以要么加限流电阻,要么全用3.3V的。
  



单片机程序及波形图见附件:

波形图需USBee Suite软件打开,其中U盾在初始化时搞了2次清屏(全部填充0),且设置地址时为4字节,如 B1 10 00 00,其实B1 10 00即可,最后一个无用。






U盾LCD屏驱动相关文章:

成功驱动农行、工行U盾屏,排线丝印TSE1G6012或FPC-QFG12864
http://bbs.mydigit.cn/read.php?tid=1425394
成功驱动工行U盾12864屏,排线丝印FM92031ACT6
http://bbs.mydigit.cn/read.php?tid=1425706
终于点亮了工行U盾,12864B LCD接口定义图
http://bbs.mydigit.cn/read.php?tid=1262646
U盾DIY GPS万年历兼谈STC EEPROM的使用:
http://bbs.mydigit.cn/read.php?tid=1283320
坛友的 农行U盾液晶屏再利用DIY(附代码)
http://bbs.mydigit.cn/read.php?tid=1268821
成功驱动农行超小U盾的屏幕,排线丝印FPC14570A
http://bbs.mydigit.cn/read.php?tid=1448992
坛友的 建行e路通19264点阵屏改液晶模块,顺利点亮
http://bbs.mydigit.cn/read.php?tid=1235754
教大家如何点亮建行网银盾的液晶屏(附代码指令)
http://bbs.mydigit.cn/read.php?tid=1295119
教大家如何点亮建行网银盾的液晶屏2.0(以代码为主)
http://bbs.mydigit.cn/read.php?tid=1448258
成功驱动建行U盾19264点阵屏,但是逻辑分析仪抓的数据令人费解
http://bbs.mydigit.cn/read.php?tid=1443276
在大神们的带领下,stm8s103 点亮中行U盾12864屏
http://bbs.mydigit.cn/read.php?tid=2329368
分享U盾19264三平台驱动程序 51 cortex-m3 cortex-m0
http://bbs.mydigit.cn/read.php?tid=2339786
折腾建行U盾12864 LCD屏,制成小型带红外遥控温度计的时钟
http://bbs.mydigit.cn/read.php?tid=2349938
NUC505驱动建行E路通屏成功:
http://bbs.mydigit.cn/read.php?tid=2449341
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共31条打赏 ,M币+99
离线985552

发帖
4455
M币
725
专家
10
粉丝
121
只看该作者 1楼 发表于: 2015-09-10
请登录后查看
离线小小布丁
发帖
235
M币
2270
专家
2
粉丝
16
只看该作者 2楼 发表于: 2015-09-10
请登录后查看
离线benli

发帖
33704
M币
6633
专家
91
粉丝
488
只看该作者 3楼 发表于: 2015-09-10
离线lailai518

发帖
1056
M币
4113
专家
4
粉丝
21
只看该作者 4楼 发表于: 2015-09-10
请登录后查看
离线elecfun

发帖
1330
M币
164
专家
12
粉丝
87
只看该作者 5楼 发表于: 2015-09-10
请登录后查看
离线panleen

发帖
1741
M币
72
专家
15
粉丝
129
只看该作者 6楼 发表于: 2015-09-10
请登录后查看
离线桃源客

发帖
3451
M币
762
专家
18
粉丝
245
只看该作者 7楼 发表于: 2015-09-11
请登录后查看
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共1条打赏 ,M币+3
离线czthisme
发帖
950
M币
944
专家
1
粉丝
56
只看该作者 8楼 发表于: 2015-09-11
请登录后查看
离线lmaq

发帖
406
M币
344
专家
0
粉丝
42
只看该作者 9楼 发表于: 2015-09-13
请登录后查看
快速回复
限80 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个