高级会员 
 
主题
回帖0
积分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 
设置如下(取模方式跟程序编写有关) 
 
 |   
时钟,  12864,  电路,  PCB,  电阻,  PCB,  PCB,  PCB,  PCB,  PCB,  PCB,  PCB 
 
评分
- 
查看全部评分
 
 
 
 
 
 |