Перейти к содержанию

Lcd Ili9320 + Atmega8, Ассемблер


Рекомендуемые сообщения

Добрый день!

Есть несколько китайских дисплеев с тачскрином 320*240 на контроллере ili9320. В интернете нашел множество библиотек и примеров с 16/8 битной шиной на си. Но почему-то ни один из них не работает. Решил написать сам, процедуру инициализации и вывести точку на экран. Но дисплей никак не реагирует. Получается читать модель контроллера, а вот вывести ничего не могу. И самое главное - не знаю, как найти ошибку. Подскажите, в каком направлении копать.

Контроллер Atmega8. Вот так выглядит дисплей http://zagruzitfoto.com/IxS Подключен к порту B и D. Распиновку дисплея и даташит контроллера прилагаю. Работаю в AtmelStudio, ассемблер. Read_register считывает модель контроллера и пишет в eeprom.

/*
* ili9320.asm
*
* Created: 12.02.2015 16:24:38
* Author: lncognito
*/

.equ LCD_RS = 0
.equ LCD_WR = 1
.equ LCD_RD = 2
.equ LCD_RES = 3
.equ LCD_CS = 4

.def temp = r16;
.def cmd1 = r17;
.def cmd2 = r18;
.def cmd3 = r19;
.macro read_register
ldi cmd1,@0
ldi cmd2,@1
rcall read_reg
.endmacro
.macro write_register
ldi cmd1,@0
ldi cmd2,@1
ldi cmd3,@2
rcall write_reg
.endmacro
.org 0
rjmp reset
bus_input: ;Порт B и D на вход
ldi temp,0x00
out ddrb,temp	
out ddrd,temp
ret
bus_output: ;Порт B и D на выход
ldi temp,0xFF
out ddrb,temp	
out ddrd,temp
ret
reset:
ldi temp,HIGH(RAMEND) ;Загрузка указателя стека
out SPH,temp
ldi temp,LOW(RAMEND) ;Загрузка указателя стека
out SPL,temp
ldi temp,1<<ACD
out ACSR,temp ;выкл. аналог. компаратор
rcall bus_output
out ddrc,temp
ldi temp,0x00
out portb,temp
out portd,temp
out portc,temp
rcall lcd_init ;Инициализация дисплея
rjmp loop ; Петля
lcd_init:
sbi portc,LCD_CS
sbi portc,LCD_RS
sbi portc,LCD_WR
sbi portc,LCD_RD
cbi portc,LCD_RES
sbi portc,LCD_RES
;read_register 0x00,0x00
;cbi portc,LCD_CS
//************* Start Initial Sequence **********//
;write_register 0xE5,0x80,0x00
write_register 0x00,0x00,0x01
write_register 0x01,0x01,0x00
write_register 0x02,0x07,0x00
write_register 0x03,0x10,0x30
write_register 0x04,0x00,0x00
write_register 0x08,0x02,0x02
write_register 0x09,0x00,0x00
write_register 0x0A,0x00,0x00
write_register 0x0C,0x00,0x00
write_register 0x0D,0x00,0x00
write_register 0x0F,0x00,0x00
//*************Power On sequence ****************//
write_register 0x10,0x00,0x00
write_register 0x11,0x00,0x07
write_register 0x12,0x00,0x00
write_register 0x13,0x00,0x00
rcall delay_ms
write_register 0x10,0x17,0xB0
write_register 0x11,0x01,0x47
rcall delay_ms
write_register 0x12,0x01,0x3C
rcall delay_ms
write_register 0x13,0x0E,0x00
write_register 0x29,0x00,0x09
rcall delay_ms
write_register 0x20,0x00,0x00 ;GRAM horizontal Address
write_register 0x21,0x00,0x00 ;GRAM Vertical Address
// ----------- Adjust the Gamma Curve ----------//
write_register 0x30,0x02,0x07
write_register 0x31,0x05,0x05
write_register 0x32,0x01,0x02
write_register 0x35,0x00,0x06
write_register 0x36,0x06,0x06
write_register 0x37,0x07,0x07
write_register 0x38,0x05,0x06
write_register 0x39,0x04,0x07
write_register 0x3C,0x01,0x06
write_register 0x3D,0x00,0x00
write_register 0x00,0x06,0x01
//------------------ Set GRAM area ---------------//
write_register 0x50,0x00,0x00 ;Horizontal GRAM Start Address
write_register 0x51,0x00,0xEF ;Horizontal GRAM End Address (239)
write_register 0x52,0x00,0x00 ;Vertical GRAM Start Address
write_register 0x53,0x01,0x3F ;Vertical GRAM End Address (319)
write_register 0x60,0x27,0x00 ;Gate Scan Line
write_register 0x61,0x00,0x01 ;NDL,VLE, REV
write_register 0x6A,0x00,0x00 ;set scrolling line
//-------------- Partial Display Control ---------//
write_register 0x80,0x00,0x00
write_register 0x81,0x00,0x00
write_register 0x82,0x00,0x00
write_register 0x83,0x00,0x00
write_register 0x84,0x00,0x00
write_register 0x85,0x00,0x00
//-------------- Panel Control -------------------//
write_register 0x90,0x00,0x10
write_register 0x92,0x00,0x00
write_register 0x93,0x00,0x03
write_register 0x95,0x01,0x10
write_register 0x97,0x00,0x00
write_register 0x98,0x00,0x00
write_register 0x07,0x01,0x73
////////////////
write_register 0x20,0x00,0x10
write_register 0x21,0x00,0x10
write_register 0x22,0xf8,0x00
read_register 0x00,0x00
ret

read_reg:
rcall bus_output
cbi portc,LCD_CS
cbi portc,LCD_RS
out portd,cmd1 ;H ??????
out portb,cmd2 ;L ??????
cbi portc,LCD_WR
nop
nop
sbi portc,LCD_WR
sbi portc,LCD_RS
rcall bus_input
cbi portc,LCD_RD
nop
nop
sbi portc,LCD_RD
LDI R16,0
LDI R17,0
in r21, PinD ;H
RCALL EEWrite
LDI R16,1
in r21, PinB ;L
RCALL EEWrite
sbi portc,LCD_CS
rcall bus_output
ret
write_reg:
rcall bus_output
cbi portc,LCD_CS
cbi portc,LCD_RS
ldi temp,0
out portd,temp
out portb,cmd1
cbi portc,LCD_WR
nop
nop
sbi portc,LCD_WR
sbi portc,LCD_RS
out portd,cmd2
out portb,cmd3
cbi portc,LCD_WR
nop
nop
sbi portc,LCD_WR
sbi portc,LCD_CS
ret
EEWrite:
SBIC EECR,EEWE ; Ждем готовности памяти к записи. Крутимся в цикле
RJMP EEWrite ; до тех пор пока не очистится флаг EEWE

CLI ; Затем запрещаем прерывания.
OUT EEARL,R16 ; Загружаем адрес нужной ячейки
OUT EEARH,R17 ; старший и младший байт адреса
OUT EEDR,R21 ; и сами данные, которые нам нужно загрузить

SBI EECR,EEMWE ; взводим предохранитель
SBI EECR,EEWE ; записываем байт

SEI	 ; разрешаем прерывания
RET	 ; возврат из процедуры
delay_ms:
ldi r17,5	
ldi r18,20
ldi r19,40;140
delay:			 ;Цикл задержки
subi r19, 1	 ;Вычитание 1 из регистра r16
sbci r18, 0	 ;Вычитание с переносом из регистра r17
sbci r17, 0	 ;Вычитание с переносом из регистра r18
brcc delay	 ;Если не было переноса вернуться к метке delay
ret
loop:
rjmp loop

Pinout.txt

ILI9320.pdf

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Есть несколько китайских дисплеев с тачскрином 320*240 на контроллере ili9320.

Что вы хотите в итоге получить? Изредка выводить текст ?

Работа с этим дисплеем сожрет все ресурсы бедной атмеги.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Есть несколько китайских дисплеев с тачскрином 320*240 на контроллере ili9320.

Что вы хотите в итоге получить? Изредка выводить текст ?

Работа с этим дисплеем сожрет все ресурсы бедной атмеги.

Понимаю, моя задача заставить инициализироваться дисплей, чтобы быть уверенным в работоспособности. А перейти на более мощные камни не проблема.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...