Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AVR и Siemens M55
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26
yarunt
Цитата(VDLab @ Mar 13 2010, 14:59) *
Отвечу за него, я уже ранее писал, что этот дисплей очень похож на дисп от нокии 6270/6280, который я успешно запустил. Сейчас, посмотрев мануал на 6300, я практически на 100% уверен, что дисплеи в этих телефонах отличаются только геометрически, а контроллер один и тот же.
В этой теме я уже выкладывал мануал на контроллер, инициализация у него очень простая, так что смысла выкладывать код не вижу.
Впрочем, если очень будет нужно, выложу.

Дисплей есть ,проверить могу.Не нашол код инициализации,не могли бы вы продублировать проект в эту тему ?
VDLab
Во вложении исходник (для ПИКа, но я старался минимизировать апаратнозависимые функции, так что переделок должно быть не много)
Если что непонятно - спрашивайте, а то подробные и внятные коментарии не мой конекsmile.gif
kernel
Спасибо, VDLab, огромное!
Код напомнил библиотеку Кранза rolleyes.gif
Бегло пролистал даташит (пока еще подробно не вникал), возник вопрос: пины DataBus тоже цеплять нужно? Или при работе по SPI они не используются?
И еще, скорость обрисовки на Вашем MCU нормальная? При прорисовке тормоза не наблюдаются (сколько ~FPS)?
demadsv
Что-то меня сомнения берут,по документам на нокиях 6270\80 дисп-TFT, 262144 цветов, 240х320 точек,а в 6300-TFT, 16 млн. цветов, 240х320 точек.
VDLab
Цитата(kernel @ Mar 13 2010, 19:45) *
Спасибо, VDLab, огромное!
Код напомнил библиотеку Кранза rolleyes.gif
Бегло пролистал даташит (пока еще подробно не вникал), возник вопрос: пины DataBus тоже цеплять нужно? Или при работе по SPI они не используются?
И еще, скорость обрисовки на Вашем MCU нормальная? При прорисовке тормоза не наблюдаются (сколько ~FPS)?



Стоп! никакого SPI там и в помине нет! В этих дисплеях используется параллельная 8битная шина данных.

Насчет скорости - 16й ПИК использовался только потому, что под рукой оказалась отладочная плата с ним, отдельное железо делать не хотелось. А вообще, мелкие МК типа ПИКа 16, 18 или Меги не годятся для нормальной работы с такими дисплеями, здесь лучше АРМ, ну или хотя бы одной "весовой категории" с ним камень. А так, очистка экрана порядка секунды, остальное - вывод текста и отдельных регионов довольно быстро, на глаз появляется практически мгновенно.

Цитата
Что-то меня сомнения берут,по документам на нокиях 6270\80 дисп-TFT, 262144 цветов, 240х320 точек,а в 6300-TFT, 16 млн. цветов, 240х320 точек.

А вы не сомневайтесьsmile.gif
kernel
Цитата
Стоп! никакого SPI там и в помине нет! В этих дисплеях используется параллельная 8битная шина данных.

Т.е., получается, скорость прорисовки будет, в основном, зависеть от скорости ногодрыганья? unsure.gif

У меня уже около года лежит в шкафчике ARM9, думаю к нему потом приделать этот дисплей.
Free
угу, именно.
правда есть команды на прорисовку и т.д, но это не сокращает время записи в озу дисплея
Free
Обладатели дисплея для SE k790, поделитесь пожалуйста габаритами оного - интересует ширина, высота, толщина.
HeOHuKC
3 мм толщина, ширина всего дисплея 5,3 см (видимой области 4,5 см), высота всего дисплея 3,7 (видимая область 3,1 см). Вообщем дисплей неособо большой для своего разрешения...
Free
HeOHuKC, пасиба за инфу.
найти бы что нить с видимой областью 35х54 мм, и при том чтобы размеры были не больше 45х61 мм...
demadsv
Вдохновлённые опытом VDLab и мы решили подключить дисплей от Нокии 6267,двойной такой,от слайдера,ДШ взяли такой-же как и для 6270,прикрутили к меге32L,результат на фото.На дисплее написано LS022Q3UT01P.
Barmaley13
Выкладываю обещанный код на LCD Nokia 6300. Извиняюсь за задержку - был в командировке.
Код написан на С.
Будет время - перепишу на ассемблере.
Ногами не пинайте - делал по-быстрому, из шаблона CVAVR. Сделал, включил - работает. Дальше им заниматься пока некогда.
Дисплей подключен следующим образом:
Код
#define WRX   PORTC.0
#define RDX   PORTC.1
#define CSX   PORTC.2
#define DCX   PORTC.3
#define RESX  PORTC.4

Контроллер работает на частоте 4 МГц, питание - 3,3 В. Еще на 2-х 1117 собрано 2 питания на дисплей. Подсветка по-колхозному - через резистор.
I@COM
доброго времени суток всем!
помогите пожалуйста разобраться с выводом текста на LS020 (пишу на ассемблере под контроллер MEGA128)
выводит пол буквы и ни в какую далее не хочет (голова кипит уже)
Juras Pr.
Непонятно, что делает подпрограмма lcd_wrdat, что она берёт в качестве параметра?:
Код
_14:
    ldi     BH, 0
    mov     AL, AH
    inc     BL
    rcall   cordinat1
    ldi     EL, 0x19  ;цвет фона
    lpm     EH, Z+
_8:
    rcall   lcd_wrdat ;запись 2х байтного числа
    lsr     EH
    inc     BH
    cpi     BH, 8
    brne    _8
    cpi     BL, 14
    brne    _14
   ret
.include "font5x8.asm"

Судя по всему, она должна проверять нулевой бит регистра EH и рисовать либо цветом фона, либо "основным". Шрифт 14х8, а font5x8.asm тогда почему? Я бы посоветовал к строкам добавить в конце по нулю, а в процедуре вывода проверять факт достижения этого нуля, чтобы не надо было руками указывать длину строки.
I@COM
font5x8.asm там лежит шрифт 14х8
lcd_wrdat это подпрограмма вывода spi

lcd_wrdat:
cbi PORTB, CS ; select Display
cbi PORTB, RS ; clear RS line
;---------
SPI_SEND:
out SPDR, EL ;load byte in SPI data register
sbis SPSR, SPIF
rjmp PC-1 ;transmitt byte to LCD
SPI:
out SPDR, EH ;load byte in SPI data register
sbis SPSR, SPIF
rjmp PC-1 ;transmitt byte to LCD
sbi PORTB, CS ;deselect Display
ret
Juras Pr.
Зачем по SPI сначала посылать байт с цветом фона, а потом байт, который содержит сразу 8 точек одной строки буквы? В приведенном фрагменте, похоже, пропущено местами. Почему-то метки PC-1 не видно, хотя не сложно догадаться, где она должна быть... Что-то Вы напутали, а разбираться при таком подходе весьма затруднительно.
I@COM
PC-1 это не метка счётчик команд и он двигает вверх на -1
Juras Pr.
А, ну это теперь понятно, возвращаемся на шаг назад и ждём завершения передачи байта по SPI, проверяя соответствующий бит. Прокомментируйте остальное во фрагменте.

Код
_14:
    ldi     BH, 0
    mov     AL, AH
    inc     BL
    rcall   cordinat1
    lpm     temp, Z+           ;читаем байт со строкой буквы
_8:
    ldi    EL, 0x19           ;цвет фона младший байт
    ldi     EH, 0x00           ;цвет фона старший байт
    sbrs    temp,0           ;пропускаем след. команду, если нулевой бит установлен
    rjmp    skip_set_color;перепрыгиваем, если надо рисовать цветом фона
    ldi    EL, 0xFF           ;цвет "кисти" младший байт
    ldi     EH, 0xFF           ;цвет "кисти" старший байт
skip_set_color:    
    rcall   lcd_wrdat           ;запись 2х байтного числа EH:EL, 2 байта = 16 бит = 1 точка
    lsr     temp               ;сдвигаем вправо, чтобы след. раз проверялся другой бит
    inc     BH               ;увеличиваем счётчик строки
    cpi     BH, 8    ;сравниваем со значением 8
    brne    _8        

    cpi     BL, 14
    brne    _14
    ret
I@COM
Juras Pr.
ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ всё заработало как по маслу
Juras Pr.
Отлично! А что это за штуку Вы делаете?
I@COM
спектроанализатор для усилителя с управлением громкости тембров нч вч єнкодерами
demadsv
а дисплейчик часом не L2F50?
I@COM
дисплей LS020
кстати рекомендую именно его так как по нему много информации
demadsv
Эт мы знаем,сами сделали на нём плеерок: http://vrtp.ru/index.php?act=ST&f=109&...t=14725&st=
I@COM
хороший проект
VDLab
Цитата(demadsv @ Mar 19 2010, 19:46) *
Вдохновлённые опытом VDLab и мы решили подключить дисплей от Нокии 6267,двойной такой,от слайдера,ДШ взяли такой-же как и для 6270,прикрутили к меге32L,результат на фото.На дисплее написано LS022Q3UT01P.



Эксперименты показали, что отличия у MC2PA8201 от R69406 все таки есть, в частности, не удалось запустить дисплей в режиме 16-битного цвета. Причем у оригинального и у китайской копии дисплеев реакции на попытку включить этот режим разные.
Vaital3000
Всем здрасте...У меня такое дело,нашёл дисплей от Nokia 6070,в гугле понему ничего найти не смог,читал читал форум,пока не закипели мозги,и решил спросить,как его подключить мне его подлючить а avr?
kernel
Barmaley13,
за код спасибо! smile.gif
ControllerZ
Вот навоял мини осциллограф (хотя пока не очень то и мини) LPC2100, предварительный тракт на ОУ AD8544 дисплей L2F50, 2х канальный скорость выборки зависит только от скорости аппаратного SPI пока разогнал SPI до 30 МГц. Мне пока его хватает.
Cyber_RAT
АЦП какой? какие режимы? (курсорные измерения, итд?)
схема будет или просто картинки?
ControllerZ
АЦП встроеный LPC шный, если нужно могу выложыть вечером прошивку, а схемы нарисовоной нет нужно нарисовать
artem79
Всем доброе время суток.

У меня есть устройство МК и LCD Nokia 1100. Все хорошо, да есть одна проблема. Приборчик работает от батарейки 3 в. В итоге в процессе эксплуатации напряжение питания меняется от 3,3 (новая) до 2,6-2,4 (севшая), (по крайней мере тестилась при таких напряжениях). Так вот при изменении питания в таком диапазоне меняется контраст дисплея. Что вообще говоря не есть хорошо.
Разбираюсь с даташитом на контроллер от дисплея (PCF8814), но пока безрезультатно.
Может кто сталкивался?
ControllerZ
Люди подскажите как разогнать l2f50 уже на ARM где аппаратный SPI работает на частоте 60МГц, Все равно этой частоты для осцила мало, или без ПЛИС между процом и LCD не обойтись? Уже есть варианты закидывать результаты ацп сначала в озу а уже потом рисовать на дисплей, но тогда огромная часть информации о сигнале теряется. И вообще какие ограничения по частоте спай у l2f50
Cyber_RAT
вообще дисплей выдает 15 кадров в секунду, судя по всему не в дисплее дело... нарисуйте алгоритм работы вашего осцилла, может чего подскажут.
а вообще сначала обычно пишут в память (при срабатывании условия синхронизации) а потом на экран выводят.
-=Женек=-
Есть у кого конвертер из BMP в С 24-битный?
leon013
Доброго времени суток. Есть пара вопросов по дисплею LPH88 : я так понимаю в этом дисплее нет режима 8 битного цвета? и по поводу инициализации, на одном из сайтов встретил вот такую инициализацию:
lcd_comtype(0x02);
lcd_comdat(0x04, 0x00);
lcd_comtype(0x0C);
lcd_comdat(0x00, 0x01);
delay_ms(40);
lcd_comtype(0x03);
lcd_comdat(0x00, 0x0C);
lcd_comtype(0x0E);
lcd_comdat(0x2D, 0x1F);
delay_ms(40);
lcd_comtype(0x0D);
lcd_comdat(0x06, 0x16);
delay_ms(40);
lcd_comtype(0x01);
lcd_comdat(0x02, 0x15);
lcd_comtype(0x05);
lcd_comdat(0x00, 0x30);
lcd_comtype(0x07);
lcd_comdat(0x00, 0x37);
CSpuls();

хотел узнать может кто пробовал так сделать в железе, или все же лучше как "всегда", как у Кранца?
Шурила
Цитата(leon013 @ May 29 2010, 17:27) *
Есть пара вопросов по дисплею LPH88 .... на одном из сайтов встретил вот такую инициализацию:
......
хотел узнать может кто пробовал так сделать в железе, или все же лучше как "всегда", как у Кранца?

Здесь много раз обсуждали LPH88.
Воспользуйтесь поиском. Рекомендую искать через google.com (т.е. заходите на google и набираете:
site:http://electronix.ru lph88)
Alet
Добрый день, видел в ветке, что кто-то разобрался с инициализацией на контроллере L2F50 и перевел в асм, если не сложно выложите алгоритм, в теме этого нет.
Alet
С инициализацией понятно, работают также команды выключения и включения дисплея (но как-то странно, работают, если их передать как данные 1 байт). Кто подскажет вывод пикселя для L2F50. На какой-то странице есть кусок из примера от кранца, так он не рабочий!!!
У кого L2F50, выбросили его чтоли? Описания вообще никакого, но кто-то ведь выводил изображение, поделитесь, пож-та.
Alet
Все, извиняюсь, все заработало, будем копать дальше))
Cyber_RAT
ну так поделились бы ;-).
а то у меня аж 2 таких.. скоро начну их применять
Alet
Инициализация взята у кранца, только переписал под асм.
Сначала использовал встроенный SPI, но на нем же висел программатор, когда отлаживал, подумал, что может влияет программатор и переделал на софт. SPI, если есть желание разбираться с моим кодом, велком, а так если есть вопросы, всегда пож-та )))

Кстати, для L2F50 есть команды включения и выключения дисплея, после инициализации делаю так, выключаю, записываю в память картинку, включаю, все сразу показывает, т.е. не показывает момент прорисовки, а так скорость хотелось бы побыстрее, но пока и такого хватает, делать что-то кроме меню для AVR пока нет надобности.

Код
display_init:
    cbi PORTA,D_RESET; Вывод RESET в 0
    sbi PORTA,D_CS; CS=1 на время сброса
    sbi PORTB,D_RS    ; RS=1
    rcall del10ms    ; Задержка 10 мс
    sbi PORTA,D_RESET; Вывод RESET в 1    
    rcall del35ms    ; Задержка 35 мс
    cbi PORTA,D_CS; CS=0
    ldi tmp,$BC    ; Посылаем команду $BC - Data Control (data handling in RAM)
    rcall lcd_cmd
    ldi tmp,$2A
    rcall lcd_dat    ; 0x2A=565 mode, 0x0A=666mode, 0x3A=444mode
    rcall cs_pulse                ; Дергаем CS

    ldi ZL,low(INIT1*2)
    ldi ZH,high(INIT1*2)
    lpm
    mov tmp,r0
    rcall lcd_cmd    ; Посылаем команду $CA - Display Control
    clr bitcount
START_INIT1:
    inc bitcount
    adiw ZL,1
    lpm
    mov tmp,r0
    rcall lcd_dat
    cpi bitcount,$09              ; 9 байт данных послано
    breq STOP_INIT1
    jmp START_INIT1
STOP_INIT1:
;
    ldi ZL,low(INIT2*2)
    ldi ZH,high(INIT2*2)
    lpm
    mov tmp,r0
    rcall lcd_cmd    ; Посылаем команду $CB - pulse set for 64 gray scale
    clr bitcount
START_INIT2:
    inc bitcount
    adiw ZL,1
    lpm
    mov tmp,r0
    rcall lcd_dat
    ldi tmp,$00
    rcall lcd_dat
    cpi bitcount,$1D              ; 29 байт данных + 29 байт $00 послано
    breq STOP_INIT2
    jmp START_INIT2
STOP_INIT2:
;
    ldi ZL,low(INIT3*2)
    ldi ZH,high(INIT3*2)
    clr bitcount
START_INIT3:
    inc bitcount
    lpm
    mov tmp,r0
    rcall lcd_dat
    ldi tmp,$01
    rcall lcd_dat
    adiw ZL,1
    cpi bitcount,$22              ; 34 байта данных + 34 байта $01 послано
    breq STOP_INIT3
    jmp START_INIT3
STOP_INIT3:
;
    ldi ZL,low(INIT4*2)
    ldi ZH,high(INIT4*2)
    lpm
    mov tmp,r0
    rcall lcd_cmd    ; Посылаем команду $CC - pulse set for 16 gray scale
    clr bitcount
START_INIT4:
    inc bitcount
    adiw ZL,1
    lpm
    mov tmp,r0
    rcall lcd_dat
    cpi bitcount,$0F            ; 15 байт данных послано
    breq STOP_INIT4
    jmp START_INIT4
STOP_INIT4:
;
    ldi tmp,$CD        ; Set for gray scales
    rcall lcd_cmd
    ldi tmp,$00
    rcall lcd_dat

;    ldi tmp,$D0        ; Oscillator select
;    rcall lcd_cmd
;    ldi tmp,$00
;    rcall lcd_dat

    ldi tmp,$94        ; Display out of sleep (no parameter)
    rcall lcd_cmd

;    rcall del7ms

    ldi tmp,$15        ; Column address setting
    rcall lcd_cmd
    ldi tmp,$08
    rcall lcd_dat
    ldi tmp,$01
    rcall lcd_dat
    ldi tmp,$8B
    rcall lcd_dat
    ldi tmp,$01
    rcall lcd_dat    

    ldi tmp,$75        ; Page address setting
    rcall lcd_cmd
    ldi tmp,$00
    rcall lcd_dat
    ldi tmp,$8F
    rcall lcd_dat    

    ldi tmp,$AA        ; Area scroll setting
    rcall lcd_cmd
    ldi tmp,$00
    rcall lcd_dat
    ldi tmp,$AF
    rcall lcd_dat
    ldi tmp,$AF
    rcall lcd_dat
    ldi tmp,$03
    rcall lcd_dat

    ldi tmp,$AB        ; Scroll start setting
    rcall lcd_cmd
    ldi tmp,$00
    rcall lcd_dat

    sbi PORTB,D_RS

    ldi tmp,$AF        ; Display ON (no parameter)
    rcall lcd_cmd

    sbi PORTA,D_CS    ; CS=1
;ret
;====================== Инициализация закончена ========================================

; Далее очищаем экран или сразу выводим картинку и т.п.

;-------------------------------------------------------
cs_pulse:            ; Импульс CS
    sbi PORTA,D_CS
    cbi PORTA,D_CS
    ret
;====================== Подпрограммы ================================================
lcd_write:            ; Запись байта данных в дисплей L2F50126
    clr tmp2
send_SPI:
    inc tmp2
    sbi PORTA,D_DATA
    rol tmp
    brcs send_SPI_1
    cbi PORTA,D_DATA
send_SPI_1:
    sbi PORTA,D_CLK
    cbi PORTA,D_CLK
    cpi tmp2,$08
    brne send_SPI
    ret
;-------------------------------------------------------
lcd_cmd:            ; Запись команды в дисплей
    cbi PORTB,D_RS    ; RS=0 - команда, RS=1 - данные для L2F50126
    rcall lcd_write
    ldi tmp,$00
    rcall lcd_write
    sbi PORTB,D_RS
    ret
;-------------------------------------------------------
lcd_dat:            ; Запись данных в дисплей
    rcall lcd_write
    ldi tmp,$00
    rcall lcd_write
    ret
;-------------------------------------------------------

.CSEG
INIT1: .DB 0xCA,0x4C,0x01,0x53,0x00,0x02,0xB4,0xB0,0x02,0x00
INIT2: .DB 0xCB,0x11,0x27,0x3C,0x4C,0x5D,0x6C,0x78,0x84,0x90,0x99,0xA2,0xAA,0xB2,0xBA,0xC0,
0xC7,0xCC,0xD2,0xD7,0xDC,0xE0,0xE4,0xE8,0xED,0xF0,0xF4,0xF7,0xFB,0xFE
INIT3: .DB 0x01,0x03,0x06,0x09,0x0B,0x0E,0x10,0x13,0x15,0x17,0x19,0x1C,0x1E,0x20,0x22,0x24,
0x26,0x28,0x2A,0x2C,0x2D,0x2F,0x31,0x33,0x35,0x37,0x39,0x3B,0x3D,0x3F,0x42,0x44,
0
x47,0x5E
INIT4: .DB 0xCC,0x13,0x23,0x2D,0x33,0x38,0x3C,0x40,0x43,0x46,0x48,0x4A,0x4C,0x4E,0x50,0x64
GMVM
Здравствуйте! Мельком пролистал тему, но так и не нашел ответа. Кто как запитал l2f50? Можно ли на 1v8 подать 3.3v?

demadsv
Можно
ysmat
дисплей на lph88
изображение в инверсии в смысле негативное
какие команды нужны чтоб ее выключить
Код
/*****************************************************
МОДУЛЬ ВЫВОДА КАРТИНКИ
*****************************************************/
void foto(void)
{
unsigned int i;
PORTB.LCD_CS=0;  // select display
lcd_comtype(0x16);
lcd_comdat(0x83, 0x00);
lcd_comtype(0x17);
lcd_comdat(0xAF, 0x00);
lcd_comtype(0x21);
lcd_comdat(0x00, 0x00);
lcd_comtype(0x22);
lcd_write(0x76);  

  for (i=0; i<DISP_W*DISP_H; i++)
  {
  lcd_write16(image[i]);
  }
PORTB.LCD_CS=1;  // deselect display
}
ysmat
Цитата(leon013 @ May 29 2010, 18:27) *
Доброго времени суток. Есть пара вопросов по дисплею LPH88 : я так понимаю в этом дисплее нет режима 8 битного цвета? и по поводу инициализации, на одном из сайтов встретил вот такую инициализацию:
lcd_comtype(0x02);
lcd_comdat(0x04, 0x00);
lcd_comtype(0x0C);
lcd_comdat(0x00, 0x01);
delay_ms(40);
lcd_comtype(0x03);
lcd_comdat(0x00, 0x0C);
lcd_comtype(0x0E);
lcd_comdat(0x2D, 0x1F);
delay_ms(40);
lcd_comtype(0x0D);
lcd_comdat(0x06, 0x16);
delay_ms(40);
lcd_comtype(0x01);
lcd_comdat(0x02, 0x15);
lcd_comtype(0x05);
lcd_comdat(0x00, 0x30);
lcd_comtype(0x07);
lcd_comdat(0x00, 0x37);
CSpuls();

хотел узнать может кто пробовал так сделать в железе, или все же лучше как "всегда", как у Кранца?

использовал эту инициализацию вместо Кранца
и цвет стал нормальным rolleyes.gif
hatabi4
у меня такой вопрос. есть небольшой экранчек от Siemens A57 монохромный. хочу его подключить к mega8.
1. где найти на него хотя бы какую нибудь инфу. перебрал все datasheet на чипы что стояли в телефоне и не один не управляет им. (фотографии экрана в архиве, может кому попадался)
2. поятен mеga8 его? или стоит купить другую?
з.ы. экран хочу посадить в предворительном усилителе чтобы выводить инфу о выбраной функции.( "Радиохобби" 2/2005)
Free
1. такого не видал
2. мега даже 8-я довольно мощная штука, потянет есесно.
therin
Может кто-нибудь выложить инициализацию для дисплея от MC60 (LPH8731-3C). Пытаюсь подключить его к РС как здесь (http://www.oocities.com/neil_manc/s-a60/index.html), но похоже инициализация не подходит.
Free
Цитата(therin @ Sep 11 2010, 23:43) *
Может кто-нибудь выложить инициализацию для дисплея от MC60 (LPH8731-3C). Пытаюсь подключить его к РС как здесь (http://www.oocities.com/neil_manc/s-a60/index.html), но похоже инициализация не подходит.

Это от LPH8731-1A, попробуй может прокатит.
Код
void LCD_init (void)    //Инициализация
    {
    asm("cli");
    SPI_high();
    PORTE|=0x08;
    LCD_CS;
    LCD_COM;
    _delay_ms(20);
    LCD_COM;
    write_SPI(0x01);    //Software Reset
    _delay_ms(60);
    write_SPI(0xC6);    //INIESC - Initialize the Settings inside the IC
    _delay_ms(12);
    write_SPI(0xB9);    //REFSET - Set the states inside the IC
    LCD_DAT;
    write_SPI(0x00);
    LCD_COM;
    write_SPI(0xB6);    //Display Control -
    LCD_DAT;
    write_SPI(0x57);    //Generator Frequency
    write_SPI(0x80);    //N-line inversion OFF
    write_SPI(0x96);    //2 Div osc on idle, Bias 1/7, place on bottom, 104x82, Display Duty 1/82
    write_SPI(0x00);    //Duty 1/84
    write_SPI(0x00);
    write_SPI(0xFF);    //Duty 1/82
    write_SPI(0x00);
    LCD_COM;
    write_SPI(0xB3);    //Gray Scale position set 0
    LCD_DAT;
    LCD_UNCS_CS;
    write_SPI(0x07);
    write_SPI(0x0E);
    write_SPI(0x15);
    write_SPI(0x1C);
    write_SPI(0x23);
    write_SPI(0x2A);
    write_SPI(0x31);
    write_SPI(0x38);
    write_SPI(0x3F);
    write_SPI(0x46);
    write_SPI(0x4D);
    write_SPI(0x54);
    write_SPI(0x5B);
    write_SPI(0x62);
    write_SPI(0x69);
    LCD_COM;
    write_SPI(0xB4);    //Gray scale position set 1
    LCD_DAT;
    LCD_UNCS_CS;
    write_SPI(0x1F);
    write_SPI(0x2F);
    write_SPI(0x3F);
    write_SPI(0x4F);
    write_SPI(0x5F);
    write_SPI(0x6F);
    write_SPI(0x7F);
    write_SPI(0x8F);
    write_SPI(0x9F);
    write_SPI(0xAF);
    write_SPI(0xBF);
    write_SPI(0xCF);
    write_SPI(0xDF);
    write_SPI(0xEF);
    write_SPI(0xFF);
    LCD_COM;
    write_SPI(0xB5);    //Set the Gray scale position set by default
    LCD_DAT;
    write_SPI(0x02);    //SET1
    LCD_COM;
    write_SPI(0xBD);    //Common output driver select
    LCD_DAT;
    write_SPI(0x00);    //
    LCD_COM;
    write_SPI(0xBE);    //Power Control
    LCD_DAT;
    write_SPI(0x1C);
    LCD_COM;
    write_SPI(0x11);    //Sleep Mode OFF
    _delay_ms(1);
    write_SPI(0xBA);    //LCD drive voltage
    LCD_DAT;
    write_SPI(0x6D);    //Цифровое значение напряжения - 108
    write_SPI(0x03);    //всегда 0x03
    LCD_COM;
    write_SPI(0x25);    //Write Contrast
    LCD_DAT;
    write_SPI(0x39);    //Уровень контрастности - 57
    LCD_COM;
    write_SPI(0xB7);    //Temperature gradient for LCD
    LCD_DAT;
    LCD_UNCS_CS;
    write_SPI(0x03);    //-0.2%/C
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    LCD_COM;
    write_SPI(0x03);    //Display Booster ON
    _delay_ms(60);
    write_SPI(0x20);    //Inversion OFF
    //write_SPI(0x30);    //Set the partial area
    //LCD_DAT;
    //write_SPI(0x00);    //Начало - 0
    //write_SPI(0x00);    //Конец - 0
    //LCD_COM;
    //write_SPI(0x33);    //Vertical scroll definition
    //LCD_DAT;
    //write_SPI(0x00);    //Верхняя не прокручиваемая область
    //write_SPI(0x00);    //Количество линий для прокрутки
    //write_SPI(0x53);    //Нижняя не прокручиваемая область
    //LCD_COM;
    //write_SPI(0x37);    //Vertical scroll start address
    //LCD_DAT;
    //write_SPI(0x00);
    //write_SPI(0x00);
    //LCD_COM;
    write_SPI(0x3A);    //Interface Pixel Format
    LCD_DAT;
    write_SPI(0x03);    //12 bit/pixel
    VideoMode=LCD_4096CL;
    LCD_COM;
    write_SPI(0x2D);    //Set colors for 256 colors mode
    LCD_DAT;
    write_SPI(0x00);    //RED 0
    write_SPI(0x0F);    //RED 1
    write_SPI(0x3F);    //RED 3
    write_SPI(0x6F);    //RED 4
    write_SPI(0x9F);    //RED 5
    write_SPI(0xCF);    //RED 6
    write_SPI(0xFF);    //RED 7
    write_SPI(0x00);    //GREEN 0
    write_SPI(0x0F);    //GREEN 1
    write_SPI(0x3F);    //GREEN 3
    write_SPI(0x6F);    //GREEN 4
    write_SPI(0x9F);    //GREEN 5
    write_SPI(0xCF);    //GREEN 6
    write_SPI(0xFF);    //GREEN 7
    write_SPI(0x00);    //BLUE 4
    write_SPI(0x55);    //BLUE 5
    write_SPI(0xAA);    //BLUE 6
    write_SPI(0xFF);    //BLUE 7
    LCD_COM;
    write_SPI(0x36);    //Memory access method
    LCD_DAT;
    write_SPI(0x00);    //Default memory access method
    LCD_COM;
    write_SPI(0x2B);    //Page address set
    LCD_DAT;
    write_SPI(0x00);    //Start page at 0x00
    write_SPI(0x51);    //End page at 81
    LCD_COM;
    write_SPI(0x2A);    //Column address set
    LCD_DAT;
    write_SPI(0x00);    //Start page at 0x00
    write_SPI(0x64);    //End page at 100
    LCD_COM;
    write_SPI(0x2C);    //Write data into display RAM
    LCD_DAT;
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    write_SPI(0x00);
    LCD_COM;
    write_SPI(0x00);    //NOP
    write_SPI(0x29); //Display ON
    LCD_UNCS;
    asm("sei");

Нажмите для просмотра прикрепленного файла
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.