Jag har en SSD1906 liggande, sannolikt ung. samma krets men inte med fullt så mycket minne.
I grunden är den krets att betrakta som ett vanligt RAM-minne där man skriver vissa data till vissa platser, detta ställer in skärmstorlek i X och Y osv. Jag har ett exempel till SSD1906:
Kod: Markera allt
;Init Controller SSD1906
BEGIN
MOV FSTATUS,#11110000B
MOV BUS_DATA,FSTATUS ;Disable All Flash ROM
SETB FLASH
CLR FLASH
MOV CSTATUS,#00000000B ;Enable SSD1906 DB6
MOV BUS_DATA,CSTATUS ;A0=0 Command DB5
SETB FUNCT ;DB3 DATA OUT from MPU
CLR FUNCT
MOV ADD1906,#00000000B
MOV BUS_DATA,ADD1906 ;ADD16, ADD17 = 00
SETB SSDADD
CLR SSDADD
MOV BUSH,#00H ;Memory Clock
MOV BUSL,#04H ;
MOV WORD,#00000000B ;DB5,DB4
CALL WRITE_COMMAND ;BCLK=MCLK 00
MOV BUSH,#00H ;REG[05H]
MOV BUSL,#05H ;Pixel Clock
MOV WORD,#00100011B ;PCLK=AUXCLK
; MOV WORD,#01000011B ;PCLK=AUXCLK/8
; MOV WORD,#00110011B ;PCLK=AUXCLK/4
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[10H]
MOV BUSL,#10H ;Panel Type
MOV WORD,#01100001B ;TFT 18-bits
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[11H]
MOV BUSL,#11H ;MOD Rate (M)
MOV WORD,#00010011B ;
CALL WRITE_COMMAND ;DB5->DB0
MOV BUSH,#00H ;REG[12H]
MOV BUSL,#12H ;Horizontal Total
MOV WORD,#50 ;(408/8)-1=50
CALL WRITE_COMMAND ;HT Max.=1024 pixel
MOV BUSH,#00H ;REG[14H]
MOV BUSL,#14H ;Horizontal Display Size
MOV WORD,#39 ;(320/8)-1=39
CALL WRITE_COMMAND ;HDP
MOV BUSH,#00H ;REG[16H]
MOV BUSL,#16H ;Horizontal Period Start
MOV WORD,#63 ;DB7->DB0 HDPS
CALL WRITE_COMMAND ;bit7->bit0
;HDPS offset 22->CSTN
MOV BUSH,#00H ;REG[17H]
MOV BUSL,#17H ;Horizontal Period Start
MOV WORD,#00000000B ;DB1->DB0 HDPS
CALL WRITE_COMMAND ;bit9->bit8
;HT > HDP+HDPS
MOV BUSH,#00H ;REG[18H]
MOV BUSL,#18H ;Vertical Total
MOV WORD,#06H ;DB7->DB0 VT
CALL WRITE_COMMAND ;bit7->bit0 Max. 1024
MOV BUSH,#00H ;REG[19H]
MOV BUSL,#19H ;Vertical Total
MOV WORD,#01H ;DB1->DB0 VT
CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[1CH]
MOV BUSL,#1CH ;Vertical Display Size
MOV WORD,#239 ;DB7->DB0 VDP 320*240
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[1DH]
MOV BUSL,#1DH ;Vertical Display Size
MOV WORD,#00000000B ;DB1->DB0 VDP
CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[1EH]
MOV BUSL,#1EH ;Vertical Period Start
MOV WORD,#18 ;DB7->DB0 VDPS
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[1FH]
MOV BUSL,#1FH ;Vertical Period Start
MOV WORD,#00000000B ;DB1->DB0 VDPS
CALL WRITE_COMMAND ;bit9->bit8
;VT > VDP+VDPS
MOV BUSH,#00H ;REG[20H]
MOV BUSL,#20H ;LLINE Pulse Width
MOV WORD,#00011101B ;HPW
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[22H]
MOV BUSL,#22H ;LLINE Pulse Start
MOV WORD,#00 ;DB7->DB0 HPS
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[23H]
MOV BUSL,#23H ;LLINE Pulse Start
MOV WORD,#00000000B ;DB1->DB0 HPS
CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[24H]
MOV BUSL,#24H ;LFRAME Pulse Width
MOV WORD,#00011101B ;VPW
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[26H]
MOV BUSL,#26H ;LFRAME Pulse Start
; MOV WORD,#01 ;DB7->DB0
MOV WORD,#00 ;DB7->DB0 VPS
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[27H]
MOV BUSL,#27H ;LFRAME Pulse Start
MOV WORD,#00000000B ;DB1->DB0 VPS
CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[30H]
MOV BUSL,#30H ;LFRAME Pulse Start Offset
MOV WORD,#00000000B ;DB7->DB0
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[31H]
MOV BUSL,#31H ;LFRAME Pulse Start Offset
MOV WORD,#00000000B ;DB1->DB0
CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[34H]
MOV BUSL,#34H ;LFRAME Pulse Stop Offset
MOV WORD,#00000000B ;DB7->DB0
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[35H]
MOV BUSL,#35H ;LFRAME Pulse Stop Offset
MOV WORD,#00000000B ;DB1->DB0
CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[45H]
MOV BUSL,#45H ;STN Color Depth Control
MOV WORD,#00000001B ;DB0
CALL WRITE_COMMAND ;1-> 256K 0->32K
MOV BUSH,#00H ;REG[50H]
MOV BUSL,#50H ;Dithering/FRC Control
MOV WORD,#00000000B ;
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[70H]
MOV BUSL,#70H ;Display Mode
MOV WORD,#00000100B ;64K
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[71H]
MOV BUSL,#71H ;Special Effects
MOV WORD,#01000000B ;
CALL WRITE_COMMAND ;
MOV BUSH,#00H ;REG[74H]
MOV BUSL,#74H ;Main Windows address Start
MOV WORD,#000 ;DB7->DB0
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[75H]
MOV BUSL,#75H ;Main Windows address Start
MOV WORD,#00000000B ;DB7->DB0
CALL WRITE_COMMAND ;bit15->bit8
MOV BUSH,#00H ;REG[76H]
MOV BUSL,#76H ;Main Windows address Start
MOV WORD,#00000000B ;DB0
CALL WRITE_COMMAND ;bit16
MOV BUSH,#00H ;REG[78H]
MOV BUSL,#78H ;Main Windows Offset Address
MOV WORD,#160 ;DB7->DB0 320*240 CSTN
; MOV WORD,#120 ;DB7->DB0 240*160 CSTN
CALL WRITE_COMMAND ;bit7->bit0
MOV BUSH,#00H ;REG[79H]
MOV BUSL,#79H ;Main Windows Offset Address
MOV WORD,#00000000B ;DB1->DB0
CALL WRITE_COMMAND ;bit9->bit8
; MOV BUSH,#00H ;REG[7CH]
; MOV BUSL,#7CH ;Floating Windows Start
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[7DH]
; MOV BUSL,#7DH ;Floating Windows Start
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit15->bit8
; MOV BUSH,#00H ;REG[7EH]
; MOV BUSL,#7EH ;Floating Windows Start
; MOV WORD,#00000000B ;DB0
; CALL WRITE_COMMAND ;bit16
; MOV BUSH,#00H ;REG[80H]
; MOV BUSL,#80H ;Float Windows Offset
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[81H]
; MOV BUSL,#81H ;Float Windows Offset
; MOV WORD,#00000000B ;DB1->DB0
; CALL WRITE_COMMAND ;bit9->bit8
; MOV BUSH,#00H ;REG[84H]
; MOV BUSL,#84H ;Float Start Position X
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[85H]
; MOV BUSL,#85H ;Float Start Position X
; MOV WORD,#00000000B ;DB1->DB0
; CALL WRITE_COMMAND ;bit9->bit8
; MOV BUSH,#00H ;REG[88H]
; MOV BUSL,#88H ;Float Start Position Y
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[89H]
; MOV BUSL,#89H ;Float Start Position Y
; MOV WORD,#00000000B ;DB1->DB0
; CALL WRITE_COMMAND ;bit9->bit8
; MOV BUSH,#00H ;REG[8CH]
; MOV BUSL,#8CH ;Float End Position X
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[8DH]
; MOV BUSL,#8DH ;Float End Position X
; MOV WORD,#00000000B ;DB1->DB0
; CALL WRITE_COMMAND ;bit9->bit8
; MOV BUSH,#00H ;REG[90H]
; MOV BUSL,#90H ;Float End Position Y
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[91H]
; MOV BUSL,#91H ;Float End Position Y
; MOV WORD,#00000000B ;DB1->DB0
; CALL WRITE_COMMAND ;bit9->bit8
MOV BUSH,#00H ;REG[A0H]
MOV BUSL,#A0H ;Power Saving
MOV WORD,#00000000B ;
CALL WRITE_COMMAND ;
; MOV BUSH,#00H ;REG[A2H]
; MOV BUSL,#A2H ;Software Reset
; MOV WORD,#00000000B ;DB1->DB0
; CALL WRITE_COMMAND ;bit9->bit8
; MOV BUSH,#00H ;REG[A4H]
; MOV BUSL,#A4H ;Scratch Pad
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit7->bit0
; MOV BUSH,#00H ;REG[A5H]
; MOV BUSL,#A5H ;Scratch Pad
; MOV WORD,#00000000B ;DB7->DB0
; CALL WRITE_COMMAND ;bit15->bit8
;***************************************************************************
När denna initiering är klar skulle resten tydligen "bara" vara att skriva rätt pixeldata på rätt plats i minnesdelen av kretsen, sedan skulle det hela fungera.