d@vinchi это конечно борзовато все это просить может ключи где деньги лежат сразу? лучший вариант это и контроллер и экран перевести на одно питание 3,3в. благо контроллеры AVR стабильно работают на данном напряжении. если ты пишешь на С++ то перевести с Паскаля не составит труда.
Здесь только помогут(именно помогут,а ненарисуют и напишут за тебя) в каком либо вопросе. с Новым Годом!
Вот схему набросал что бы уж совсем не отупеть забыл!!! Питание подсветки, что идет на 12В обязательно последовательно с резистором!!!! Начните с 600ом и ниже- ну какая яркость понравится
Вложение:
Комментарий к файлу: Схема shema.JPG [132 KiB]
Скачиваний: 9792
Последний раз редактировалось plutonium Ср янв 05, 2011 19:49:43, всего редактировалось 1 раз.
plutonium, привет, и тебя с новым годом! извиняюсь если моя просьба показалась борзостью... просто, например, на экран от 3310 или с65 на всех форумах инфы навалом, и инициализация, и графические библиотеки - все есть в одной теме, вот я хотел чтобы тут тема дополнилась - думаю многим будет полезно, т.к. это единственная попавшаяся мне тема, где экран LPH9157-2 удалось использовать! С паскаля переведу, не проблема, я и сам в основном на паскале, с++ тока начинаю познавать, решил на него переходить... За схемку огромное спасибо, тока ты там вроде резистор на 550 Ом забыл для подсветки экрана? Можешь привести пример: 0. как вывесли пиксель? 1. как выводить текст (тут сложнее всего, т.к. опыта работы с экранами - 0, и всю информацию пока только в теории по частям собираю)? И еще вопрос экран можно вешать на любой порт?
0.- Если питание и контроллера и дисплея одно и тоже то ненужно 1.- Посмотри по схеме, V_Sync не используется 4.- Вешай на любой порт, все без вопросов работает на любом порту (просто программируй) 2,3.- Смотри листинг собсной библиотеки, думаю разберешься. Коды букв гуляли на просторах интернета гдето, буква рисуется попиксельно. Настоятельно советую почитать мануал по контроллеру
procedure write(w:boolean;datt:byte); //запись данных или команды 8 бит в LCD var i:byte; begin if w=1 then LCD_RS:=w else begin LCD_CS:=1; LCD_RS:=w; LCD_CS:=0; end; LCD_Clk:=0; for i:=0 to 7 do begin LCD_Data:=datt.B7; LCD_Clk:=1; datt:=datt shl 1; LCD_Clk:=0; end; end; procedure writec(datt:word); //запись данных 16 бит в LCD var i,h,l:byte; begin h:=Hi(datt); l:=Lo(datt); LCD_RS:=1; LCD_Clk:=0; for i:=0 to 7 do begin LCD_Data:=h.B7; LCD_Clk:=1; h:=h shl 1; LCD_Clk:=0; end; for i:=0 to 7 do begin LCD_Data:=l.B7; LCD_Clk:=1; l:=l shl 1; LCD_Clk:=0; end; end; procedure koord(x,y:byte); //Установка координаты на дисплее begin write(cmd,0x2a); write(dat,y); write(dat,132); write(cmd,0x2b); write (dat,x); write(dat,176); end; procedure pixel(x,y:byte; color:word); //рисование пикселя опрю цвета на дисплее begin koord(x,y); write(cmd,0x2c); writec(color); end; procedure LCD_init(); begin LCD_RS:=0; LCD_CS:=1; LCD_RESET:=0; delay_ms(500); LCD_RESET:=1; delay_ms(500); Write(cmd,0x01); delay_ms(20); write(cmd,0x36);//Memory Access Control write(dat,0x80); Write(cmd,0x11); //sleep out delay_ms(20); write(cmd,0x3a); //interfase pixel format Write(dat,0x55); delay_ms(20); write(cmd,0x29); //Display ON end; end.
plutonium, мегареспект, выручил!!! теберь буду разбираться... а на схеме +vboos это же подсветка дисплея? в зависимотся от напряжения можно регулировть яркость подсветки?
Привет всем! Подключил LPH9157-2 к меге 8535 учусь выводить текст! огромное спасибо! Только после инициализации дисплей светится не понятно чем, не могу быстро установить какой нибудь фон, сейчас просто заполняю цветом!
Ну почему же непонятно чем, это после инициализации включаем экран и он показывает содержимое памяти, оно хаотично, и потому видим шум на экране Чтобы такого небыло, заполняй экран однородным цветом и только потом включай дисплей командой. посмотри в LCD_Init там в конце Display_ON так вот перед ним уйди на подпрограмку на заполнение однородным цветом, а потом включай
Да забыл чтобы особо не мучался, вот таблица букв, если сообразишь как применить, я рад за вам с помощью это таблички пиксели выводи сверху вниз слева направо Да, но незабывай, что для контроллеров с малым объемом флеш памяти такой тип не пойдет в памяти занимает 1280!!! байт, можно и укоротить
plutonium, очередное спасибо! если я правильно понял выше шрифт 8х10 разложеный по кодам ASCII? Я уже спрашивал по поводу на какой порт кидать экран, хочу уточнить - SPI в ргистрах самого микроконтроллера можно вообще не включать, вся работа чисто в программной имитации SPI? все идет в одну сторону, т.е. никаких обрабатывающих прерываний не надо? Тактовая частота МК должна быть какой-то определенной или пойдет любая?
Последний раз редактировалось d@vinchi Пн янв 10, 2011 15:11:44, всего редактировалось 1 раз.
Да ты правильно понял, везде с дисплеями я работаю на програмном уровне, прерываний занимать ненужно, дисплей имеет свой контроллер и он держит информацию постоянно даже если к нему не обращаешься. как говорится пока не убрали питание. SPI лучше использовать для других моментов, например в моих проектах где несколько контроллеров они между собой общаются именно через SPI. Я сейчас занимаюсь умным домом где в паре работают ATMega128 и ATMega16, они между собой связаны по SPI. ATMega16 занимается исключительно SD карточкой и mp3 контроллером VS1011, а ATMega128 занимается уже всей периферией, датчиками, АЦП, дисплеем (который сейчас разбираем) и часами с будильникм Шрифт который выложил он 5*8 разложеный по кодам ASCII, мелковат конечно, но мне удобно в плане что на дисплее помещается 16 строк текста по 19 букв
короче что в память экрана записалось, то он и будет отображать даже если с ним вообще никакого дальнейшего общения не будет? тактовая часота МК на общение с экраном как-то влияет?
Да, закинул в память и забыл так и есть, пока сам с ней чего либо не сделаешь. От частоты МК зависит скорость работы с дисплеем, разницу между 8МГц и 16МГц увидишь сразу дай команду на заливку всего дисплея... В современных дисплеях для сотиков скорость работы интерфейса много много выше чем скорость работы нашего МК. поэтому сам дисплей думает с какой черепахой меня связали Если хочешь увеличить скорость работы с дисплеем поднимай частоту до 20МГц а можно и выше, контроллеры AVR на удивление неплохо гонятся, но тут уж зависит от партии. Да не забывай если в проекте используешь UART (последовательный интерфейс) он уплывет у тебя сразу
Вознк вопрос по кодировку цета... Как кодировать трехбайтный RGB (НЕХ) в двухбитный формат 5-6-5? Никак не доганю как каждый байт цвета ужать до 5-6-5-бит соответственно...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения