这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » (SSD1289液晶寄存器说明)anmko

共77条 4/8 |‹ 2 3 4 5 6 7 ›| 跳转至
高工
2012-07-09 18:16:28     打赏
31楼
帖子整理的不错哈

高工
2012-07-25 00:05:55     打赏
32楼
14、LCD的显示
        这个SSD1289折腾了我很久,淘宝卖家给的源程序就有问题,屏怎么着都不能正常运行起来,怀疑屏问题,赶紧上坛子里下了个UGI的可执行文件下载进去,证明屏是好的,只要屏是好的,那就好办,慢慢来怎能把它弄好。于是接着在坛子里找SSD1289的驱动代码,总算能打点划线了,可是就是不能显示字符,看着各种代码,那个凌乱啊,,还是别偷懒了,好好看数据手册吧,,于是,,,SSD1289的数据手册有点坑爹,,于是,,看完之后,自己重新写代码,,,终于弄好了,,上图

这个是以横屏和竖屏两种方式显示的矩形、圆和直线


接下来图片显示,上张小清新的照片


再上一张,显示字符,横竖屏显示、有无底色显示

上一张群魔乱舞的给大家


可执行文件就不上了,下回我把SSD1289的数据手册总结的知识点和LCD的驱动整理一下发上来。
        太晚了,,真的该睡觉了。。

高工
2012-07-26 09:35:02     打赏
33楼
对介个小清新表示羡慕嫉妒恨~

高工
2012-07-26 09:50:33     打赏
34楼
你怀念了吧~~~

助工
2012-07-26 20:20:54     打赏
35楼
不错~5个字

高工
2012-08-02 11:17:39     打赏
36楼
15、SSD1289液晶寄存器说明。
          前些日子LCD试验的一些小心的给大家分享一下。这里主要介绍一下寄存器和开窗、横屏竖屏的设置问题。

R00h 晶振使能,0x0001打开晶振,0x0000关闭晶振。

R01h(6B3F 293F 2B3F 6B3F 7A3F)我用的是2B3F

REV:控制液晶显示的反转,等于0时反转;

CAD:建立基于保留电容配置的液晶面板,0为常见模式,1为门模式

BGR:0为RGB数据模式;1为BGR数据模式

SM:栅极扫描模式,0为左右交换扫描;1为左扫描再右扫描

TB:选择栅极驱动器输出的移位方向。TB=1时G0到G319;TB=0时G319到G0;也就是说TB可以控制显示的上下反转(自我观点)。

RL:选择源极驱动器输出的移位方向。RL=1时S0到S319;RL=0时S319到S0;也就是说RL可以控制显示的左右反转(自我观点)。

寄存器的其它位默认3F处理。



R02h LCD驱动计数控制。默认0000处理。

R03h 官方默认的事6664,我随大流家用的是A8A4

DCT[3:0]:设置8色模式下升压电路的工作频率。

BT[2:0]:控制升压电路升压因子。

DCT[3:0]:设置256K色模式下升压电路的工作频率。

AP[2:0]:控制电流的。

 

R05h-R06h 比较寄存器。这个就用默认的0000h处理。

R07h 显示控制,配合部分屏显示应用。

VLE[2:1]:当VLE1=1或者VLE2=1时(只开了一个屏),屏的垂直滚动由R41寄存器的VL17-0控制;当VLE1=1和VLE2=1时(开了两个屏),第一屏和第二屏的垂直滚动分别由VL1[8:0]和VL2[8:0]控制。

CM:8色模式设置。CM=1,8色模式打开;CM=0,8色模式关闭

 

R0Bh 帧扫描周期控制,官方默认为5308h

F=Fosc/(DIV[1:0]*(RTN[3:0]+16)*(MUX[8:0]+VBP[7:0]+VFT[7:0]+3))

其中MUX[8:0]=319;官方默认为R0Bh=5308h,得出F=65。

R0Ch电源控制2,官方给的建议值是0004h,也有用0000h的,试了一下都行。

R0Dh电源控制3,官方给的建议值是0009h

R0Eh电源控制4,官方给的建议值是3200h

 

R0Fh栅极扫描开始地址。G0—G319

 

R10h睡眠设置。SLP=1,进入睡眠模式;SLP=0,离开睡眠模式

 

 

 

 

 


高工
2012-08-02 11:30:44     打赏
37楼

R11h

VSMode:当VSMode=1,Dmode[1:0]=”00”,帧频率由VSYNC.决定。

DFM[1:0]:设置颜色显示模式FM[1:0]=”11”,65K色。FM[1:0]=10”,262K色。

OEDefOEDef=1OE决定显示窗口;OEDef=0,由R4EhR4Fh决定显示窗口

WMode:设置数据写入方式。0,正常数据线;1,常规借口

DMode[1:0]:这个设置帧频率的,写“00”即可

TY[1:0]RAM数据吸入的三种类型,B模式没的选。

ID[1:0]和AM是设置GDDRAN地址计数器的计数方式的。红色标记为常用模式。

R15h常用接口控制,这个好像没用到

 

R16h:

XL[7:0]:设置每行有效像素的数目。每行有效像素数等于到XL[7:0]+1。默认为EF

HBP[7:0]:设置HSYNC下降沿到第一个有效数据的延迟时间。默认为1C

 

R17h:

VFP[6:0]:设置下一帧从最后有效的行到VSYNC下降沿的延迟时间。

VBP[7:0]:设置VSYNC下降沿到第一个有限行的延迟时间。

 

R23h-R24hRAM写入数据屏蔽。默认0000h处理。

R30h-R3Bh:伽马控制。与我用的没多大关联,这个没细看。

R41h-R42h垂直滚动控制,与R07配合使用。如果只开一屏的话就默认0000h处理吧。

R44h水平RAM的起始-结束地址位置 (00~EF)

 

R45h垂直RAM的起始地址 00

R46h垂直RAM的结束地址 13F‘
R44h-R46h开窗用的,后面细讲。

 

R48h第一个局部显示的起始位置 SS1[8:0]

R49h第一个局部显示的结束位置SE1[8:0]  SS1<SE1<13EF

 

R4Ah-R4Bh第二局部显示起始、结束位置

 

R4fh设置GDDRAM Y的计数地址。

R4eh设置GDDRAM X的计数地址。
R4eh-R4fh实际上就是设置光标。

R25h帧频率控制。我用的是0x8000h,红色标记的


高工
2012-08-02 11:33:00     打赏
38楼
这个是我寄存器初始化用的函数  
  LCD_WriteReg(0x0000,0x0001);//打开晶振
  LCD_WriteReg(0x0003,0xA8A4);//0xA8A4
  LCD_WriteReg(0x000C,0x0000);   
  LCD_WriteReg(0x000D,0x080C);  
  LCD_WriteReg(0x000E,0x2B00);   
  LCD_WriteReg(0x001E,0x00B0);   
  LCD_WriteReg(0x0001,0x2B3F);//驱动输出控制320*240  0x6B3F 293F 2B3F 6B3F 7A3F
  LCD_WriteReg(0x0002,0x0600);
  LCD_WriteReg(0x0010,0x0000);
 
  LCD_WriteReg(0x0011,0x6070);
 
  LCD_WriteReg(0x0005,0x0000); 
  LCD_WriteReg(0x0006,0x0000); 
  LCD_WriteReg(0x0016,0xEF1C);  //设置每行有效像素的数目。每行有效像素数等于到XL[7:0]+1
  LCD_WriteReg(0x0017,0x0003); 
  LCD_WriteReg(0x0007,0x0233); //0x0233      
  LCD_WriteReg(0x000B,0x5308); //帧周期控制 65
  LCD_WriteReg(0x000F,0x0000); //栅极扫描开始地址
  LCD_WriteReg(0x0041,0x0000); //垂直滚动控制
  LCD_WriteReg(0x0042,0x0000); //垂直滚动控制 
  LCD_WriteReg(0x0048,0x0000);  //第一个局部显示的起始位置 SS1[8:0]
  LCD_WriteReg(0x0049,0x013F);  //第一个局部显示的结束位置SE1[8:0]  SS1<SE1<13EF
  LCD_WriteReg(0x004A,0x0000);  //第二个局部显示的起始位置
  LCD_WriteReg(0x004B,0x0000);  //第二个局部显示的结束位置
  LCD_WriteReg(0x0044,0xEF00); //水平RAM的起始-结束地址位置 (00~EF)
  LCD_WriteReg(0x0045,0x0000);  //垂直RAM的起始地址 00
  LCD_WriteReg(0x0046,0x013F); //垂直RAM的结束地址 13F
  LCD_WriteReg(0x0030,0x0707); 
  LCD_WriteReg(0x0031,0x0204); 
  LCD_WriteReg(0x0032,0x0204); 
  LCD_WriteReg(0x0033,0x0502); 
  LCD_WriteReg(0x0034,0x0507); 
  LCD_WriteReg(0x0035,0x0204); 
  LCD_WriteReg(0x0036,0x0204); 
  LCD_WriteReg(0x0037,0x0502); 
  LCD_WriteReg(0x003A,0x0302); 
  LCD_WriteReg(0x003B,0x0302); 
  LCD_WriteReg(0x0023,0x0000); //RAM写入数据
  LCD_WriteReg(0x0024,0x0000);  //RAM写入数据
  LCD_WriteReg(0x0025,0x8000); //帧频率 510K
  LCD_WriteReg(0x004f,0);        //设置GDDRAM Y的计数地址
  LCD_WriteReg(0x004e,0);        //设置GDDRAM X的计数地址
 

高工
2012-08-02 12:01:23     打赏
39楼

接下来说横屏竖屏显示设置
横屏竖屏的设置一个要用到这几个寄存器:R11h、R4eh、R4fh、R44h、R45h、R46h。(R44h-R46h只有在你开窗了的才需要设置,画点的话可以不用设置。)

R11h中的ID[1:0]AM设置GDDRAN地址计数器的计数方式。从上面的图中,红色标记的两种模式就是我们所谓的竖屏和横屏。
1、AM=0、ID=11,竖屏

接下来的设置
R4fhGDDRAM Y的计数地址。
R4ehGDDRAM X的计数地址。
从上图看以看出竖屏的话没有坐标系的变化,
  LCD_WriteReg(0X004E, Xpos);
  LCD_WriteReg(0X004F, Ypos); 
直接写入你要设定的地址即可,(Xpos,Ypos)为坐标。
如果你开窗了的话也可以直接写入你要开窗的起始地址就OK了
   LCD_WriteReg(0x0044,xs+(xe<<8));
   LCD_WriteReg(0x0045,ys);
   LCD_WriteReg(0x0046,ye);
(xs,ys)为起始地址,(xe,ye)结束地址


2、AM=1、ID=01,横屏

接下来的设置
R4fhGDDRAM Y的计数地址。
R4ehGDDRAM X的计数地址。
从上图可以就看出横屏的坐标系有了变化,所以坐标系要变换一下。
  LCD_WriteReg(0X004E, Ypos);
  LCD_WriteReg(0X004F, 319-Xpos);  
(Xpos,Ypos)为坐标。

如果你开窗了的话
   LCD_WriteReg(0x0044,ys+(ye<<8)); ;
   LCD_WriteReg(0x0045,319-xe); 
   LCD_WriteReg(0x0046,319-xs);
(xs,ys)为起始地址,(xe,ye)结束地址。


高工
2012-08-02 13:31:23     打赏
40楼
SSD1289液晶驱动程序下载http://share.eepw.com.cn/share/download/id/78454
明天要放假了,后面的我慢慢补上

共77条 4/8 |‹ 2 3 4 5 6 7 ›| 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]