切换到宽版
  • 60440阅读
  • 68回复

教大家如何点亮建行网银盾的液晶屏(附代码指令) [复制链接]

上一主题 下一主题
离线ifm
 

发帖
129
M币
6579
专家
25
粉丝
64
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2015-07-01
几天前无意中看到论坛里有人点亮了某行网银盾的液晶屏,心血来潮,然后自己也弄了几个,来尝试一下。
这是原文:http://bbs.mydigit.cn/read.php?tid=1235754



这种网银盾的外形几乎一样,但是内部电路却不同。
坛友点亮的是最右边的那种,今天我来教大家点亮另外两种。
先说明一下,
这种屏幕是3.3V的
这种屏幕是3.3V的
这种屏幕是3.3V的
重要的事情说三遍!!!
最高电压3.6V,如果接5V,嗯,你有钱,你任性。
从图中可以看到,另外两种的电路板基本是相同的,屏幕排线略有不同。



把芯片拆了,飞线。



按照图中这种方向定义引脚从左到右分别是12脚到1脚

引脚定义如下,

1 升压输出
2 电容1
3 电容2
4 电容2
5 电容1
6 vcc
7 gnd
8 cs片选
9 cd(rs)寄存器选择
10 rst复位
11 sck
12 sda
不同批次的液晶屏,引脚排列可能不同。前五个引脚就不说了,看电路板很容易看出来,vcc和gnd用万用表量一下就行了,与那个8引脚芯片的5、6脚相连的肯定是sck和sda,剩下3个引脚的就算顺序全部打乱,排列组合只用6种,全都试一遍,绝对能得出结论。


把线连好,写程序。



最后点亮的效果如下。




下面说点有用的,这个液晶屏的操作指令和坛友给的资料上的不同,我是在某宝上找的英文资料,硬着头皮看下来的。

估计大家没心情看英文资料,我把比较重要的指令翻译一下。
0x81 设置对比度,后必须紧跟对比度的数值,范围0-255
0xeb 设置偏压比,采用默认值,不要动!
0xaf 启动液晶屏,
0xae 关闭液晶屏,
0xax 0-3,设置帧数,0:76fps,1:95fps,2:132fps,3:168fps
0xa5 开启全部显示,说人话就是黑屏
0xa7 反色显示
0xbx x取值0-7,设置页,8行为一个页,一共8页。
0x0x 设置低四位列地址
0x1x 设置高四位列地址

0x88 不自动换行。
0x89 写满一行后自动换行。

0xc0 默认扫描顺序
0xc2 翻转x
0xc4 翻转y
0xc6 翻转xy


资料里有的我就不说了,想研究的自己看资料。
程序的注释里写了很多有用的东西,我就不在这里重复了,你们自己看。液晶屏的品牌在资料里面能看到,如果有不懂得地方,某宝是个找资料的好地方,他们的店里还有教学视频。而且他们的12864带字库的屏幕比常用的那种墨绿色的屏幕便宜,我觉得不错。

简单说一下调试的方法:
如果屏幕不显示,可以单独给屏幕发送“开启显示”的指令以后,测一下升压输出引脚有没有7v以上的电压,如果有就证明能工作,屏幕上没有显示可能是对比度太低,看不见;也可能是屏幕坏了。如果没有电压,很可能是引脚定义顺序不同,把他们换一换,再试试,当然也有可能是坏了。升压输出引脚上的电容电阻,还有另外两个电容一定要接!!
如果屏幕能工作,在没有给屏幕发送任何数据以前,屏幕上会显示雪花点,而且每次开机的雪花点都不一样。


懒得下载资料的可以直接复制我的源码。


  1. #include<intrins.h>
  2. void delay();void timer(unsigned int t);
  3. void wlc(unsigned char dat);//写入液晶屏指令,write lcd command。
  4. void wld(unsigned char dat);//写入液晶屏数据,write lcd data。
  5. void InitLCD();//初始化液晶屏。
  6. void CleanLCD();//清屏。
  7. sbit SDAT = P1^0;//数据
  8. sbit SCLK = P1^1;//时钟
  9. sbit CD = P1^2;//寄存器选择,高电平传输数据,低电平传输指令
  10. sbit RS = P1^3;//复位,低电平复位,复位完成后,回到高电平
  11. sbit CS = P1^4;//片选,低电平片选
  12. void delay(){
  13.     _nop_();    
  14. _nop_();
  15.     _nop_();    
  16. _nop_();
  17.     _nop_();}
  18. void timer(unsigned int t){
  19.     unsigned int i;    unsigned char j;
  20.     for(i=0; i<t; i++)        
  21. for(j=0; j<200; j++);
  22. }
  23. //初始化液晶屏void InitLCD()
  24. {    timer(1000);//复位前的延时必须大于3ms
  25.     RS = 0;    timer(1000);//RS置低时间必须大于3us
  26.     RS = 1;    timer(1000);//复位完成后写入操作命令前的延时必须大于150ms
  27.         wlc(0xE2);//系统设置复位,这一句必须有
  28.     timer(100);//这个延时可以去掉
  29.   //以下注释中的参数在系统设置复位后均置为默认值,可以不用更改  
  30. /*      
  31.     wlc(0x2e);//设置电源为内部升压、电荷泵工作电流1.4mA    
  32. wlc(0xeb);//设置偏压比,采用默认值,不要更改!
  33.     wlc(0xa1);//设置帧数,采用默认值,0:76fps,1:95fps,2:132fps,3:168fps        
  34. wlc(0x89);//自动换行
  35. */
  36.     wlc(0x81);//设置对比度,该命令后必须紧跟对比度的值,取值范围0-255    
  37. wlc(0x78);//设置对比度的值为0x78
  38.     wlc(0xc2);//设置行列扫描顺序,c0 默认扫描顺序,c2 翻转x,c4 翻转y,c6 翻转xy    
  39. wlc(0xAF);//开启显示
  40.     timer(1000);}
  41. //写入液晶屏指令,write lcd command。
  42. void wlc(unsigned char dat)
  43. {    unsigned char i;
  44.         CS = 0;
  45.     CD = 0;    
  46.     for(i=0; i<8; i++)    {
  47.         dat = dat << 1;        
  48. SCLK = 0;
  49.         //delay();//数据手册中的要求是保持时间大于100ns,51的速度比这个慢,可以不要延时
  50. SDAT = CY;
  51.         //delay();//同上      
  52. SCLK = 1;
  53.         //delay();//同上    }
  54. }
  55. //写入液晶屏数据,write lcd data。
  56. void wld(unsigned char dat)
  57. {    unsigned char i;
  58.         CS = 0;
  59.     CD = 1;    
  60.     for(i=0; i<8; i++)    {
  61.         dat = dat << 1;        
  62.         SCLK = 0;        //delay();//数据手册中的要求是保持时间大于100ns,51的速度比这个慢,可以不要延时
  63.         SDAT = CY;        //delay();//同上
  64.         SCLK = 1;        //delay();//同上
  65.     }
  66. }
  67. //清屏void CleanLCD()
  68. {    unsigned int i = 0;
  69.     wlc(0xB0);  
  70. wlc(0x00);
  71.     wlc(0x10);
  72.     CS = 0;    
  73. CD = 1;
  74.     SDAT = 0;    
  75. SCLK = 0;
  76.         while(i < 24576)
  77.     {        
  78. SCLK = ~SCLK ;
  79.         i++;    }
  80. }



代码发上来格式全乱了,大家复制到IDE里用自动对齐功能整理一下就行。VC,eclipse甚至一些功能比较丰富的编辑器都有这个功能。

下面是资料:








U盾LCD屏驱动相关文章:

教大家如何点亮建行网银盾的液晶屏2.0(以代码为主)
http://bbs.mydigit.cn/read.php?tid=1448258

U盾DIY GPS万年历兼谈STC EEPROM的使用:
http://bbs.mydigit.cn/read.php?tid=1283320

驱动U盾LCD屏---代码初步解析
http://bbs.mydigit.cn/read.php?tid=1374894

坛友的 农行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

成功驱动农行、工行U盾屏,排线丝印TSE1G6012或FPC-QFG12864
http://bbs.mydigit.cn/read.php?tid=1425394

成功驱动工行U盾12864屏,排线丝印FM92031ACT6
http://bbs.mydigit.cn/read.php?tid=1425706

成功驱动建行U盾19264点阵屏,但是逻辑分析仪抓的数据令人费解
http://bbs.mydigit.cn/read.php?tid=1443276

分享stm32单片机驱动u盾液晶屏代码
http://bbs.mydigit.cn/read.php?tid=2275070
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共38条打赏 ,M币+260 ,专家+2
关键词: U盾12864USB-Key
离线fei1526

发帖
490
M币
1040
专家
1
粉丝
13
只看该作者 1楼 发表于: 2015-07-01
请登录后查看
离线78996544

发帖
1769
M币
3963
专家
85
粉丝
299
只看该作者 2楼 发表于: 2015-07-01
请登录后查看
离线s123467106

发帖
3852
M币
5581
专家
1
粉丝
76
只看该作者 3楼 发表于: 2015-07-01
请登录后查看
离线潜隆

发帖
56083
M币
220
专家
1050
粉丝
983
只看该作者 4楼 发表于: 2015-07-01
请登录后查看
离线天使之音

发帖
6329
M币
4330
专家
3
粉丝
59
只看该作者 5楼 发表于: 2015-07-01
请登录后查看
离线chenlei1910

发帖
11032
M币
1444
专家
2
粉丝
40
只看该作者 6楼 发表于: 2015-07-01
请登录后查看
离线铁木珍

发帖
11823
M币
6790
专家
170
粉丝
13907
只看该作者 7楼 发表于: 2015-07-01
请登录后查看
离线eversun

发帖
73
M币
66
专家
6
粉丝
13
只看该作者 8楼 发表于: 2015-07-01
请登录后查看
离线ifm

发帖
129
M币
6579
专家
25
粉丝
64
只看该作者 9楼 发表于: 2015-07-01
回 s123467106 的帖子
请登录后查看
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个