附录3 液晶屏PG12864F及其控制芯片T6963C
PG12864F的控制芯片是T6963C,也是个单片机。接口提供了两个8位寄存器,一个是命令寄存器,一个是数据寄存器,因此一般分配两个地址。分别是C(命令寄存器地址)和D(数据寄存器地址),读C则读出状态内容(就是所说的状态寄存器内容),写C就是写命令。
写字节先将数据写入D,然后将写字节命令写入C。
读字节先将命令写入C,然后读D得到数据。
12864本身有个VRAM显示内存,一般4到8K。里面除了显示地址外,还有个指针,指示读写时该字节在VRAM的位置。这个指针的值也是可命令设置的。
PG12864F图形模式初始化汇编程序。包括字节读写,块写,命令写,状态读子功能。这些子程序没有优化,实际使用时要适当修改。
; init t6963c
; 128*64/8=1024bytes,读写任何一字节动作之前要检查STA1&STA0(不包括自动模式内数据读写)
;上面电路图中,命令地址为82XXH,数据地址为80XXH
; reset = "L" 1ms VCC>4.75V
;movx CCCC, #11111xxxB; pointer字节某位置位
;movx CCCC #11110xxxB; pointer字节某位清零
;movx CCCC, #0B0H; 自动写模式(内部检查STA3,这个地方注意,写只检查这一个,读同理只检查STA2)
;movx CCCC, #0B1H; 自动读模式(内部检查STA2)
;movx CCCC, #0B2H; 结束自动读写模式
lcd_init:
mov DPTR, #8000H
mov r0,#9BH; mode GRA On,TEXT OFF,cursor blink
LCALL lcd_c
clr A
mov r0,A; low addr
mov r1,A; high addr
mov r2,#42H; set GRA home addr
LCALL lcd_c3
mov r2,#24H; set VRAM w/r pointer
LCALL lcd_c3
mov r0,#10H; columns 16 bytes,16*8=128
mov r2,#43H; set GRA area
LCALL lcd_c3
; lcd_init_end.
mov r0,#0C0H
mov r1,#07FH
LCALL lcd_wb
LCALL lcd_wb
LCALL lcd_wb
LCALL lcd_wb
LCALL lcd_wb
LCALL lcd_wb
LCALL lcd_wb
LCALL lcd_wb