PG12864F的控制芯片是T6963C,也是个单片机。接口提供了两个8位寄存器,一个是命令寄存器,一个是数据寄存器,因此一般分配两个地址。分别是C(命令寄存器地址)和D(数据寄存器地址),读C则读出状态内容(就是所说的状态寄存器内容),写C就是写命令。
写字节先将数据写入D,然后将写字节命令写入C。
读字节先将命令写入C,然后读D得到数据。
12864本身有个VRAM显示内存,一般4到8K。里面除了显示地址外,还有个指针,指示读写时该字节在VRAM的位置。这个指针的值也是可命令设置的。
8051单片机以总线方式连接PG12864F电路图
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 LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LCALL lcd_wb LJMP lcd_end lwait: ORL DPH, #02H lwait0: movx A,@DPTR jnb ACC.0,lwait0; test STB0 jnb ACC.1,lwait0; test STB1 ret ;读写字节 lcd_fwb: ; PARA:r1=data use:A,DPTR,r0 return:none mov DPH, #80H mov r0, #0C0H lcd_wb: LCALL lwait ANL DPH, #0FDH; #11111101B mov A,r1; r1, data movx @DPTR,A LCALL lwait mov A,r0; r0, command. for write:C0H+1,C2H-1,C4H movx @DPTR,A ret lcd_frb: ; PARA:none use:A,DPTR,r0 return:ACC=data mov DPH, #80H mov r0, #0C1H lcd_rb: LCALL lwait mov A,r0; r0, command. for read: C1H+1,C3H-1,C5H movx @DPTR,A LCALL lwait ANL DPH, #0FDH; #11111101B movx A,@DPTR ret
;写单字命令 lcd_c: LCALL lwait mov A,r0 movx @DPTR,A ret
;写三字命令 lcd_c3: LCALL lwait ANL DPH, #0FDH; #11111101B mov A,r0 movx @DPTR,A LCALL lwait ANL DPH, #0FDH; #11111101B mov A,r1 movx @DPTR,A LCALL lwait mov A,r2 movx @DPTR,A ret ;
lcd_end:
T6963C命令全表
Commands
D7
D6
D5
D4
D3
D2
D1
D0
Description
ExecuteTime
PointerSet
0
0
1
0
0
N2
N1
N0
Status check
0
0
1
Cursor Pointer Set
0
1
0
Offset Register Set
1
0
0
Address Pointer Set
Control Word Set Commands
0
1
0
0
0
0
N1
N0
32x1/fosc
0
0
Text Home Address Set
0
1
Text Area Set
1
0
Graphic Home Address Set
1
1
Graphic Area Set
Mode Set
1
0
0
0
CG
N2
N1
N0
32x1/fosc
0
CG ROM Mode
1
CG RAM Mode
0
0
0
"OR" Mode
0
0
1
"EXOR" Mode
0
1
1
"AND" Mode
1
0
0
Text only (attribute capability)
Display Modes
1
0
0
1
N3
N2
N1
N0
32x1/fosc
0
Graphics Off
1
Graphics On
0
Text Off
1
Text On
0
Cursor Off
1
Cursor On
0
Cursor Blink Off
1
Cursor blink On
Cursor Pattern Select
1
0
1
0
0
N2
N1
N0
N2~N0:No. Of lines for cursor +1
32x1/fosc
0
0
0
Bottom Line cursor
0
0
1
2 line ursor
...
1
1
1
8 line cursor (block cursor)
Data Auto Read/Write
1
1
0
0
0
0
N1
N0
32x1/fosc
0
0
Data Auto Write Set
0
1
Data Auto Read Set
1
0
Auto reset(并将pointer自动加1)
Data Read/Write
单字节
1
1
0
0
0
N2
N1
N0
0
Address Pointer up/down
1
Address Pointer unchanged
0
Address Pointer up
1
Address Pointer down
0
Data Write
1
Data Read
Screen Peeking
1
1
1
0
0
0
0
0
Read Displayed Data
Status
Screen Copy (Note3)
1
1
1
0
1
0
0
0
Copies 1 line of displayed data whose Address is indicated by the Address Pointer to Graphic RAM area
Status check
Bit Set/Reset
1
1
1
1
N3
N2
N1
N0
N2~N0 Indicates the bit in the pointed address
Status check
0
Bit Reset
1
Bit Set
0
0
0
Bit 0(LSB)
0
0
1
Bit 1
...
1
1
1
Bit 7(MSB)
