高级会员
 
主题
帖子
积分1848
阅读权限30
注册时间2009-4-7
最后登录1970-1-1
在线时间 小时
|
这个好DD买回来好久了,一直没有时间去具体玩,只是根据朋友们的资料简单的把IO口线和控制线引出来玩了下,这几个晚上我事不多,整理“垃圾堆”时翻出了这个屏,于是拿来研究下串行方式驱动。
照着坛子上的资料图:确定了D0-D7;PSB;AO,REST,等,
官方资料说明:D6:串行时钟;D7:串行数据;AO命令/数据选择;REST复位;CS1芯片选择,此屏只有一个芯片,所以CS1固定不用改变。接着把电路板上的PSB线跟电源线断开后接地,
和实验板连上杜邦线,写了简单的测试程序,可是,,无显示,修改时序,无显示,,换成并口,正常显示,,,就这样搞了两个晚上,没有结果。郁闷,今晚回头再看资料,对比了一些其他资料的管脚图,好像有区别,特别是数据D7旁边的那个PSB引脚,再过去就是电容脚位,而资料上的是D7过去是电源正负极,
另一张是另一张图
对比可以看出有区别,再结合其他pdf的资料,可以确定是PSB引脚有误,以下是修改过程:
把原来引出的“PSB”线(现在确定是正电源线)再接到电源正极。
断开真正的PSB与电源的铜皮走线,加一根线引出接地,
重新上电,哈哈,
赶紧固定好,用热熔胶,呵呵
这样,除去电源线,4根线就可以驱动,简单,而且速度很快,官方资料描述是各个指令响应均小于1μS,ns级别。
最后修改下程序,
另外,这张图应该是错的,
中间位置跟电容连接的应该是正极吧?我不敢肯定,电容的接法有多种也不一定。
本来要画PCB图重新做成模块的,但这个屏买回来时我已经拆下过一次了,感光干膜制板失败后又把屏装回去,软排线焊得不成样子,现在再拆的话,恐怕就。。。杯具了,仅有一个,呵呵不敢再乱来了,嘿嘿,改天再进几个。
以下是显示一行汉字的程序,汇编的,还没学C,惭愧
XPOS EQU 20H;页地址;
YPOS EQU 21H;列地址
HZ_NUM EQU 22H;
;======================点阵接口定义=================================
LCD_DATA BIT P1.3 ;液晶数据接口
LCD_SCL BIT P1.2; 串行时钟接口;
LCD_AO BIT P1.1 ;液晶数据指令选择
LCD_RST BIT P1.0 ;液晶复位RST
ORG 0000H;
JMP START;
ORG 0030H;
START:
LCALL LCD_INIT;
LCALL CLR_LCD;
;============第一行显示8个汉字==================================
MOV XPOS,#0;范围:0-7对应1-8页;
MOV YPOS,#0;范围:0-127;对应1-128列
MOV HZ_NUM,#8;显示汉字数;
MOV DPTR,#HZ_TAB;载入汉字点阵数据首址
LCALL HZ_PLAY;
JMP $
;======16*16点阵数据发送程序===============================================
;纵向取模,字节倒序方式
HZ_PLAY:
;MOV XPOS,#0;范围:0-7对应1-8页;
;MOV YPOS,#0;范围:0-127;对应1-128列
;MOV HZ_NUM,#8;显示汉字数;
;MOV DPTR,#HZ_TAB;载入汉字点阵数据首址
HZ: CALL POS_SEND; 定位页列坐标
MOV R3,#2;一个汉字分上下部分
HZ1: MOV R2,#16;一部分16个数据
HZ2: CLR A;
MOVC A,@A+DPTR;;
LCALL W_LCD_DAT;
INC DPTR;
INC YPOS;同步跟踪列地址,用于发送多个汉字时调整列地址;
DJNZ R2,HZ2; 等待半个汉字数据发送完
;=========修改行,列=======================
DJNZ R3,HZ3; 显示完一个汉字?
JMP HZ4;
HZ3: INC XPOS;
MOV A,YPOS;
SUBB A,#16;
MOV YPOS,A;
CALL POS_SEND;
JMP HZ1;继续发送下半部分汉字数据
HZ4: DJNZ HZ_NUM,HZ5;汉字数显示完成
RET;
HZ5: DEC XPOS;
CALL POS_SEND;
JMP HZ;
;=============行列调整发送===================
;先发送页地址;再发送列高4位地址;接着发送列第四位地址;
POS_SEND:
MOV A,XPOS;
ADD A,#0B0H;
CALL W_LCD_COM;
MOV A,YPOS;
PUSH ACC;
ANL A,#11110000B;屏蔽低位列地址;
SWAP A;
ADD A,#10H;
CALL W_LCD_COM;
POP ACC;
ANL A,#00001111B;屏蔽高位列地址;
CALL W_LCD_COM;
RET;
;===================写液晶控制命令=====================
;串行方式,高位在前,下降沿输入。
W_LCD_COM:
CLR LCD_AO ;写的是命令;
MOV R4,#8;
SEND_COM: ;
CLR C;
RLC A;
MOV LCD_DATA,C;
CLR LCD_SCL;
SETB LCD_SCL;
DJNZ R4,SEND_COM;
RET
;====================写液晶数据=========================
;串行方式,高位在前,下降沿输入。
W_LCD_DAT:
SETB LCD_AO; 写的是数据;
MOV R4,#8;
SEND_DAT: ;
CLR C;
RLC A;
MOV LCD_DATA,C;
CLR LCD_SCL;
SETB LCD_SCL;
DJNZ R4,SEND_DAT;
RET
;================初始化=========================================
LCD_INIT:
CLR LCD_RST
NOP
NOP
SETB LCD_RST
MOV A,#0E2H ;复位;
ACALL W_LCD_COM;
MOV A,#0AFH ;0AEH/0AFH 关/开液晶显示
CALL W_LCD_COM
MOV A,#0A2H ;0A2H/0A3H (1/9)/(1/7) LCD偏压比率设置
CALL W_LCD_COM
MOV A,#23H ;20H-27H V5电压调整器的内部电阻比设置
CALL W_LCD_COM
MOV A,#81H ;可编程电压调整模式设置
CALL W_LCD_COM
MOV A,#30H ;0H-3FH 电压调整模设置寄存器指令数据V5小-大
CALL W_LCD_COM
MOV A,#0D2H ;驱动模式设置
CALL W_LCD_COM
MOV A,#0 ;0C0H/0/40H/80H 1/2/3/4 模式选择寄存器设置
CALL W_LCD_COM
MOV A,#2FH ;28H/2CH/2EH/2FH;电源电路功能
CALL W_LCD_COM ;推进电路/电压调节电路/电压跟随电路
MOV A,#0C0H ;0C0H/0C8H 行输出模式选择正向/反向
CALL W_LCD_COM
MOV A,#0A0H ;0A0H/0A1H 列地址方向选择
CALL W_LCD_COM
MOV A,#0A4H ;0A4H/0A5H 全屏正常显示/全点亮指令
CALL W_LCD_COM
MOV A,#0A6H ;0A6H/0A7H 正相反相显示控制指令,RAM中数据不变
CALL W_LCD_COM
;MOV A,#0ACH ;0ACH/0ADH OFF/ON 静态指示器控制指令
;CALL W_LCD_COM
;MOV A,#0H ;0/1/2/3
;CALL W_LCD_COM
;MOV A,#0B0H ;0B0-0B8H 设置显示起始页地址
;CALL W_LCD_COM
;MOV A,#40H ;40H-7FH 设置显示起始行对应RAM行号
;CALL W_LCD_COM
RET
;====================清屏====================================
CLR_LCD:MOV R0,#8
D1: MOV A,#0B0H-1
ADD A,R0
CALL W_LCD_COM;写液晶控制命令
MOV A,#00H;;;;;;;;;列低四位;
CALL W_LCD_COM;写液晶控制命令
MOV A,#10H;液晶Y地址控制指令+10H;列高四位;
CALL W_LCD_COM;写液晶控制命令
MOV R1,#128
D2: MOV A,#00H;
CALL W_LCD_DAT;写液晶数据
DJNZ R1,D2
DJNZ R0,D1
RET
HZ_TAB:
;想显示什么自己加吧
END
用的字幕提取软件:zimo221
设置如下(取模方式跟程序编写有关)
|
评分
-
查看全部评分
|