Помогите с ILI9341
Добавлено: Ср сен 21, 2016 07:40:58
Приветствую всех! Нарисовалась проблема, а именно, не могу победить дисплей с контроллером ILI9341. Дисплей подключен к ATmega128 посредством программного SPI, частота 11.0592 МГц. Дисплей запитан от 5В, ATmega128 от 3.3В, масса обоих источников одна. После инициализации дисплей моргнет однократно и весь заливается синеватым фоном, что-то нарисовать не получается. Привожу код программки на ассемблере, кто в теме про ILI9341, проверьте код, может где накосячил или недописал чего, сил больше нет, голову всю сломал, ПОМОГИТЕ!!!!!
Инициализация дисплея:
CONFIG_LCD:
; Аппаратный сброс LCD +++++++++++++
sbi PORTB,LCD_RES; +5V на RESET
nop
nop
cbi PORTB,LCD_RES; Сброс LCD
call pause10mks
sbi PORTB,LCD_RES; +5V на RESET
; Инициализация LCD +++++++++++++++++++++++++++
ldi r20,$01; Программый сброс LCD
call LCD_CMD
call pause120ms; пауза 120мс для программного сброса дисплея
call pause120ms
call pause120ms
call pause120ms
call pause120ms
ldi r20,$CB; Power control A (CBh)
call LCD_CMD
ldi r20,$39
call LCD_DATA
ldi r20,$2C
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$34
call LCD_DATA
ldi r20,$02
call LCD_DATA
ldi r20,$CF; Power control B (CFh)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$C1
call LCD_DATA
ldi r20,$30
call LCD_DATA
ldi r20,$E8; Driver timing control A (E8h)
call LCD_CMD
ldi r20,$85
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$78
call LCD_DATA
ldi r20,$EA; Driver timing control B (EAh)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$ED; Power on sequence control (EDh)
call LCD_CMD
ldi r20,$64
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$12
call LCD_DATA
ldi r20,$81
call LCD_DATA
ldi r20,$F7; Pump ratio control (F7h)
call LCD_CMD
ldi r20,$20
call LCD_DATA
ldi r20,$C0; Power control,VRH[5:0] (C0h)
call LCD_CMD
ldi r20,$23
call LCD_DATA
ldi r20,$C1; Power control,SAP[2:0];BT[3:0] (C1h)
call LCD_CMD
ldi r20,$10
call LCD_DATA
ldi r20,$C5; Vcm control (C5h)
call LCD_CMD
ldi r20,$3E
call LCD_DATA
ldi r20,$28
call LCD_DATA
ldi r20,$C7; Vcm control 2 (C7h)
call LCD_CMD
ldi r20,$86
call LCD_DATA
ldi r20,$36; Memory access control (36h)
call LCD_CMD
ldi r20,$48
call LCD_DATA
ldi r20,$3A; Pixel format (3Ah)
call LCD_CMD
ldi r20,$55
call LCD_DATA
ldi r20,$B1; Frameration control,normal mode full colours (B1h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$18
call LCD_DATA
ldi r20,$B6; Display function control (B6h)
call LCD_CMD
ldi r20,$08
call LCD_DATA
ldi r20,$82
call LCD_DATA
ldi r20,$27
call LCD_DATA
ldi r20,$F2; 3gamma function disable (F2h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$26; Gamma curve selected (26h)
call LCD_CMD
ldi r20,$01
call LCD_DATA
ldi r20,$E0; Set positive gamma correction (E0h)
call LCD_CMD
ldi r20,$0F
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$2B
call LCD_DATA
ldi r20,$0C
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$08
call LCD_DATA
ldi r20,$4E
call LCD_DATA
ldi r20,$F1
call LCD_DATA
ldi r20,$37
call LCD_DATA
ldi r20,$07
call LCD_DATA
ldi r20,$10
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$09
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$E1; Set negative gamma correction (E1h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$14
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$11
call LCD_DATA
ldi r20,$07
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$C1
call LCD_DATA
ldi r20,$48
call LCD_DATA
ldi r20,$08
call LCD_DATA
ldi r20,$0F
call LCD_DATA
ldi r20,$0C
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$36
call LCD_DATA
ldi r20,$0F
call LCD_DATA
ldi r20,$11; Exit sleep (11h)
call LCD_CMD
call pause120ms
ldi r20,$29; Display on (29h)
call LCD_CMD
ldi r20,$2C; Записываем (2Ch)
call LCD_CMD
; Установка курсора, определяем область для рисования
ldi r20,$2A; Столбцы (2Ah)
call LCD_CMD
ldi r20,0
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,$2B; Строки (2Bh)
call LCD_CMD
ldi r20,0
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,$2C; Записываем (2Ch)
call LCD_CMD
ldi r20,$2D; Код цвета (2Dh)
call LCD_CMD
AA: ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$2C; Записываем (2Ch)
call LCD_CMD
ret
Инициализация дисплея:
CONFIG_LCD:
; Аппаратный сброс LCD +++++++++++++
sbi PORTB,LCD_RES; +5V на RESET
nop
nop
cbi PORTB,LCD_RES; Сброс LCD
call pause10mks
sbi PORTB,LCD_RES; +5V на RESET
; Инициализация LCD +++++++++++++++++++++++++++
ldi r20,$01; Программый сброс LCD
call LCD_CMD
call pause120ms; пауза 120мс для программного сброса дисплея
call pause120ms
call pause120ms
call pause120ms
call pause120ms
ldi r20,$CB; Power control A (CBh)
call LCD_CMD
ldi r20,$39
call LCD_DATA
ldi r20,$2C
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$34
call LCD_DATA
ldi r20,$02
call LCD_DATA
ldi r20,$CF; Power control B (CFh)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$C1
call LCD_DATA
ldi r20,$30
call LCD_DATA
ldi r20,$E8; Driver timing control A (E8h)
call LCD_CMD
ldi r20,$85
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$78
call LCD_DATA
ldi r20,$EA; Driver timing control B (EAh)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$ED; Power on sequence control (EDh)
call LCD_CMD
ldi r20,$64
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$12
call LCD_DATA
ldi r20,$81
call LCD_DATA
ldi r20,$F7; Pump ratio control (F7h)
call LCD_CMD
ldi r20,$20
call LCD_DATA
ldi r20,$C0; Power control,VRH[5:0] (C0h)
call LCD_CMD
ldi r20,$23
call LCD_DATA
ldi r20,$C1; Power control,SAP[2:0];BT[3:0] (C1h)
call LCD_CMD
ldi r20,$10
call LCD_DATA
ldi r20,$C5; Vcm control (C5h)
call LCD_CMD
ldi r20,$3E
call LCD_DATA
ldi r20,$28
call LCD_DATA
ldi r20,$C7; Vcm control 2 (C7h)
call LCD_CMD
ldi r20,$86
call LCD_DATA
ldi r20,$36; Memory access control (36h)
call LCD_CMD
ldi r20,$48
call LCD_DATA
ldi r20,$3A; Pixel format (3Ah)
call LCD_CMD
ldi r20,$55
call LCD_DATA
ldi r20,$B1; Frameration control,normal mode full colours (B1h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$18
call LCD_DATA
ldi r20,$B6; Display function control (B6h)
call LCD_CMD
ldi r20,$08
call LCD_DATA
ldi r20,$82
call LCD_DATA
ldi r20,$27
call LCD_DATA
ldi r20,$F2; 3gamma function disable (F2h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$26; Gamma curve selected (26h)
call LCD_CMD
ldi r20,$01
call LCD_DATA
ldi r20,$E0; Set positive gamma correction (E0h)
call LCD_CMD
ldi r20,$0F
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$2B
call LCD_DATA
ldi r20,$0C
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$08
call LCD_DATA
ldi r20,$4E
call LCD_DATA
ldi r20,$F1
call LCD_DATA
ldi r20,$37
call LCD_DATA
ldi r20,$07
call LCD_DATA
ldi r20,$10
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$09
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$E1; Set negative gamma correction (E1h)
call LCD_CMD
ldi r20,$00
call LCD_DATA
ldi r20,$0E
call LCD_DATA
ldi r20,$14
call LCD_DATA
ldi r20,$03
call LCD_DATA
ldi r20,$11
call LCD_DATA
ldi r20,$07
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$C1
call LCD_DATA
ldi r20,$48
call LCD_DATA
ldi r20,$08
call LCD_DATA
ldi r20,$0F
call LCD_DATA
ldi r20,$0C
call LCD_DATA
ldi r20,$31
call LCD_DATA
ldi r20,$36
call LCD_DATA
ldi r20,$0F
call LCD_DATA
ldi r20,$11; Exit sleep (11h)
call LCD_CMD
call pause120ms
ldi r20,$29; Display on (29h)
call LCD_CMD
ldi r20,$2C; Записываем (2Ch)
call LCD_CMD
; Установка курсора, определяем область для рисования
ldi r20,$2A; Столбцы (2Ah)
call LCD_CMD
ldi r20,0
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,$2B; Строки (2Bh)
call LCD_CMD
ldi r20,0
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,15
call LCD_DATA
ldi r20,$2C; Записываем (2Ch)
call LCD_CMD
ldi r20,$2D; Код цвета (2Dh)
call LCD_CMD
AA: ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$00
call LCD_DATA
ldi r20,$2C; Записываем (2Ch)
call LCD_CMD
ret