Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 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
Juras Pr.
Страница с описанием соответствующего регистра. Сам не проверял.
Alex_1811
Народ,может делал кто многоуровневое меню для ЖКИ дисплея?
Поделитесь примером реализации.
viael
Цитата(Alex_1811 @ Sep 4 2008, 12:47) *
Народ,может делал кто многоуровневое меню для ЖКИ дисплея?
Поделитесь примером реализации.

попробуй микрочип гуй
Gambit
Запустил LS020!!!
Подскажите, как там кодируются цвета 0x0000 - 0xFFFF ???
LCD
AFAIK, R5 G6 B5. Прочитай тему с начала, узнаешь много нового smile.gif
Itch
На LS020 посмотрел осциллографом, что за точка-контакт на обратной стороне дисплея. Оказывается, там прямоугольные импульсы 68.5КГц и с амплитудой от 2В снизу до 6В сверху. Импульсы идут сплошняком и похоже отловить по ним кадры не удастся.
Radik2
Всем привет! У нас в Уфе в магазине Электроника (electronica.bashel.ru) есть в продаже дисплей от Нокии 3210 (http://electronica.bashel.ru/catalog/?cat=2226). Стоит каких то 95 р. Кто нибудь знает как его подключать к АВРке (у меня Мега16)? Может уже готовые программы есть...
zloisop
помогите плз найти даташит на дисплей от siemens cx75. или хотя бы какой там контроллер стоит и кто делает контроллеры LPH
Corvus
Цитата(Radik2 @ Sep 12 2008, 12:31) *
Всем привет! У нас в Уфе в магазине Электроника (electronica.bashel.ru) есть в продаже дисплей от Нокии 3210 (http://electronica.bashel.ru/catalog/?cat=2226). Стоит каких то 95 р. Кто нибудь знает как его подключать к АВРке (у меня Мега16)? Может уже готовые программы есть...

Была такая тема
Монохромные ЖКИ от старых мобилок + AVR

http://electronix.ru/forum/index.php?showt...=44191&st=0
Jurdens
У меня дисплей s65 на контроллере L2F50126
а даташит на L2F50052T01
Там я не нашел команду записи точки по координатам X,Y. COLOR
Есть только команды установки координат окна ввода
X1,X2 Y1,Y2 и записи точки RAMWR с авто инкриментом координат рисования внутри окна.
Для рисования шрифта это удобно - установил окно размером со знакоместо
и далее подрят передаешь команду RAMWR с коответствующим светом символа или фона.
А когда рисуешь графики это неудобно потому что избыточно
В контроллере LPH было по другому.
У кранца тоже нет рисования точки для этого контроллера.
ниже привожу процедуру рисования точки (с условной трансляцией по параметру DyspType )
//*****************************************************************************
// Name: LCD_PixelPut(unsigned char x, unsigned char y, unsigned char color)
// Copyright: Free to use at will & at own risk.
// Author: JCP
// Date: 03.30.06 17:10
// Description: Отрисовка точки
// Useage: LCD_PixelPut(param X,param Y,param Col)
//
// param X: x direction 0-131
// param Y: y direction 0-176
// param Col: Color of Pixel, RRRGGGBB format
// Example: LCD_PixelPut(30,30,0x62) // отрисовка точки в координатах 30,30 цвета 62
//
// Notes: Нет проверки на выход за пределы экрана.Вывод производится в текущее окно
//*******************************************************************************
void LCD_PixelPut(unsigned char x, unsigned char y, CPU_INT16U color)
{
#if DyspType == l2f50
LCD_CS_LOW(); // Выбор дисплея
// x координаты окна
lcd_cmd_l2f50(SD_CSET);
lcd_dat0_l2f50(0x08+y); // start is 8, not 0
lcd_dat0_l2f50(0x01);
lcd_dat0_l2f50(0x08+y+8-1); // end is 00x8B = 0x83+8
lcd_dat0_l2f50(0x01);
// Y координаты окна
lcd_cmd_l2f50(SD_PSET);
lcd_dat0_l2f50(x);
lcd_dat0_l2f50(x+8-1);
//запись цвета точки
lcd_cmd_l2f50(RAMWR);
lcd_dat16_l2f50(color);
LCD_CS_HIGH(); //дезактивация
#endif

#if DyspType == lph
LCD_CS_LOW(); // Выбор дисплея
// вывод точки в текущее окно вывода
lcd_comtype(0x21); // 21 регистр данных(цвета) одной точки
lcd_comdat(x,y); // координаты
lcd_comtype(0x22); // регистр данных
lcd_write(0x76); // команда записи
lcd_write16(color); // цвет точки
LCD_CS_HIGH(); // deselect display
#endif
}

Видно что для LPH контроллера число передачь для отрисовки точки меньше.
LCD
Цитата(Jurdens @ Sep 25 2008, 12:20) *
Для рисования шрифта это удобно - установил окно размером со знакоместо

Можно сделать еще удобнее: установить окно с высотой шрифта до правого края дисплея и выводить шрифт по столбцам, проверяя, не заполнилось ли оно.
Я делаю вот так:
Код
void print (char *str)
{
  unsigned short curr=0;
  while(str[curr]!=0)
  {                                           //Линия
    unsigned char newline=0;
    unsigned char oldtextx=textx;
    spiout(0xef00);
    spiout(0x0500);
    spiout(0x0a00+textx);
    spiout(0x0b00+175);
    spiout(0x0800+texty);
    spiout(0x0900+texty+fontheight[textfont]);  //Использую 3 разных шрифта
    do
    {                                         //Буква
      if(str[curr]==0)return;
      else if((textctl)&&(str[curr]=="\n"[0]))
      {
        textx=oldtextx;
        texty-=fontheight[textfont]+1;
        newline=1;
      }
      else if((textctl)&&(str[curr]=="\r"[0]))
      {
        textx=oldtextx;
        newline=1;
      }
      else if((textctl)&&(str[curr]=="\a"[0]))textinverse^=0xff;
      else
      {
        unsigned short mask=0x1, bitcount=0, i;
        unsigned short offs=getoffset(str[curr])/2;
        for(i=(fontheight[textfont]+1)*getwidth(str[curr]);i--;i>0)
        {                                           //Точка
          unsigned short data=getfont()[offs];
          if(data&mask)U0TXBUF=textcolor^textinverse;
            else U0TXBUF=textbg^textinverse;
          if(mask!=0x8000)mask<<=1; else
          {
            mask=0x1;
            offs++;            
          }
          if(bitcount<fontheight[textfont])bitcount++;
          else
          {
            bitcount=0;
            textx++;
          }
        }
      }
      curr++;
    }while((textx+getwidth(curr+1)<175)&&(newline==0));
    if(textx+getwidth(curr+1)>=175)
    {
      texty-=fontheight[textfont];
      textx=oldtextx;
    }
  }
}

P.S. Сорри за кривоватый код smile.gif
P.P.S. Дисплеи хороши, но скроллинга им явно не хватает sad.gif
AndyBig
Запустил LS020, попробовал разогнать его интерфейс по максимуму. Полный кадр пишется за 7,7 мс - почти 130 FPS smile.gif
Правда, не уверен, что при такой частоте SPI (48 МГц) весь экран будет заполняться без глюков.
RomanRom
Два вопроса по дисплею L2F50.

=Если приглядеться к фото на немецком сайте, то на дисплее L2F50 надписи совсем другие. Какие надписи у кого реально смотрятся?

=Судя по тем же фоткам, цепь 1,8 В подключается только у L2F50. Это выход напряжения из дисплея или это напряжение надо подавать внутрь? Кто что ставит (типа диода)?
LCD
Цитата(RomanRom @ Sep 29 2008, 19:49) *
=Судя по тем же фоткам, цепь 1,8 В подключается только у L2F50. Это выход напряжения из дисплея или это напряжение надо подавать внутрь? Кто что ставит (типа диода)?

Надо подавать. Судя по схемам с сайта Кранца, можно подавать туда 2,9В, но я бы лучше подал 1,8В через 1117.
RomanRom
Дополнительный вопрос (кроме надписей на корпусе дисплея) к владельцам L2F50 - прозваниваются ли какие либо сопротивления порядка 100 кОм между выводами cs, rs, data, clk, reset?
uriy
Ветка называется AVR и Siemens M55. Но прочитав ветку я так и нашел сообщение о том что удалось запустить дисплей от этого телефона. Кому-нибудь это удалось? У меня дисплей LPH8731.
k34Nex
Всем доброго времени суток! Прочитал все 52 страницы ветки, много полезного узнал. У меня такая вот проблема. Подключил ls020 к Меге8. Пишу в CV. Использую библиотеку, которую выкладывали где то в середине ветки. Питаю и мегу и дисплей от 3в. Инициализация проходит на 100% каждый раз, функция заливки работает на ура только с черным и белым цветом...Остальные цвета совсем другие, и заполняет полоскаами через один пиксель, цвета совсем не те..Функция вывода символа тоже не работает-вместо шрифта выводит какой то мусор просто. Функции линии, прямоугольника нормально работают, только цвета все равно другие. Вот на картинке пример-заливаю весь дисплей красным цветом а в углу вывод строки из 5 символов. Видно что заливка как-бы черезстрочная. Что делать? В чем проблема? Библиотека в приложении
Cyber_RAT
void spi_send0(u08 dat)
{
spi(dat);
spi(0x00);
}
а зачем 0 вдогонку посылать?

..
//передаём 0xFF 0xB6B1 раз(если кол-во раз равно 0xB580,как по Using_the_Siemens_S65.pdf,экран заполняется не полностью??)
..
все правильно заполняется, только у вас не 177 на 133 точки экран, поэтому поставьте чуть выше этих строк 175 и 131 (0...175,0..131)...

Код
и
   ldi     r31, 0xB6
    ldi     r30, 0xB1
    ldi     r24, 0xFF
LCD_CLEAR_1:
    rcall   lcd_wrdata
    sbiw    r30,1        
    brne    LCD_CLEAR_1
    pop r31
    pop r30
    ret
lcd_wrcmd:
    cbi     0x18,0    
    sbi     0x18,7  
    rjmp    SPI_SEND
lcd_wrdata:
    cbi     0x18,0    
    cbi     0x18,7    
SPI_SEND:  
    sbi 0xd,7         // set bit spe----spi enable
    out 0xf,r24       // из r24 переносим в SPDR
SPI_SEND_0:
    sbis    0xe,7     // если бит SPIF установлен,не выполняем след.строку, иначе циклимся
    rjmp    SPI_SEND_0      
    in  r0,0xf
    sbi 0x18,0     //deselect display
    ret

замените СИ-шным эквивалентом для проверки...
p.s. и где main ?
k34Nex
Даж не знаю) Но все равно это никак не влияет, это функция отправки одного байта по spi она не используется даже... проблема остается открытой

это просто библиотека, а main в главном с файле, просто использует функции библиотеки.
На счет
Цитата
//передаём 0xFF 0xB6B1 раз(если кол-во раз равно 0xB580,как по Using_the_Siemens_S65.pdf,экран заполняется не полностью??)
..
все правильно заполняется, только у вас не 177 на 133 точки экран, поэтому поставьте чуть выше этих строк 175 и 131 (0...175,0..131)...
и
ldi r31, 0xB6
ldi r30, 0xB1
ldi r24, 0xFF
LCD_CLEAR_1:
rcall lcd_wrdata
sbiw r30,1
brne LCD_CLEAR_1
pop r31
pop r30
ret
lcd_wrcmd:
cbi 0x18,0
sbi 0x18,7
rjmp SPI_SEND
lcd_wrdata:
cbi 0x18,0
cbi 0x18,7
SPI_SEND:
sbi 0xd,7 // set bit spe----spi enable
out 0xf,r24 // из r24 переносим в SPDR
SPI_SEND_0:
sbis 0xe,7 // если бит SPIF установлен,не выполняем след.строку, иначе циклимся
rjmp SPI_SEND_0
in r0,0xf
sbi 0x18,0 //deselect display
ret
замените СИ-шным эквивалентом для проверки...


ничего не понял, asm вообще не имею понятия))
Cyber_RAT
покажите полный код - хотя бы инит, стирание, вывод символа
k34Nex
Все функции,инициализация,очистка,вывод символа,закраска, все находится в этой библиотеке! В основном си-файле у меня просто
#include disp.lib
void main(void){
lcd_init();
fill_screen(red);
lcd_str_fl("HELLO",1,black);
}

Вот весь проект на CV.
Cyber_RAT
так понятно.
у вас инициализирован LCD в 8битном цвете.
найдите в init3[20] - 0x7F01, и замените на 0x7F03.
и пробуйте дальше...

упс... извиняюсь - совсем уже запутался...
это 7F3F на 7F1F надо поменять чтобы стало 8 бит...
у вас 16бит.
есть сомнение в lcd_pulse - у меня без дрыганья сделано - все работает...
k34Nex
Заменил, прошил-никаких изменений, так же через один и тем же цветом, не красным а каким то светло синим. Где то видел команду поменять местами синий и красны-может поможет?...хотя и зеленый выводится совсем не зеленым..и что делать с полосками этими, и со шрифтами?

Вместо заливки написал такой код-вывожу 6 разноцветных прямоугольников закрашеных,цвета есть в коде. То, что выводит дисплей-на фотке. Цвета неяркие, т.к. подсветка вполяркости, но видно ясно что цвета совсем не те, кроме белого,зато заполняется каждый пиксель, в отличии от функции заливки...и все так не могу вывести нормально символы..
Код для прямоугольников мой
//lcd_fillrect(X1, Y1, X2, Y2,color);
lcd_fillrect(0, 00, 132, 30,white);
lcd_fillrect(0, 30, 132, 60,red);
lcd_fillrect(0, 60, 132, 90,green);
lcd_fillrect(0, 90, 132, 120,blue);
lcd_fillrect(0, 120, 132, 150,orange);
lcd_fillrect(0, 150, 132, 176,sky);
yarunt
Цитата(k34Nex @ Oct 28 2008, 19:52) *
Заменил, прошил-никаких изменений, так же через один и тем же цветом, не красным а каким то светло синим. Где то видел команду поменять местами синий и красны-может поможет?...хотя и зеленый выводится совсем не зеленым..и что делать с полосками этими, и со шрифтами?

Вместо заливки написал такой код-вывожу 6 разноцветных прямоугольников закрашеных,цвета есть в коде. То, что выводит дисплей-на фотке. Цвета неяркие, т.к. подсветка вполяркости, но видно ясно что цвета совсем не те, кроме белого,зато заполняется каждый пиксель, в отличии от функции заливки...и все так не могу вывести нормально символы..
Код для прямоугольников мой
//lcd_fillrect(X1, Y1, X2, Y2,color);
lcd_fillrect(0, 00, 132, 30,white);
lcd_fillrect(0, 30, 132, 60,red);
lcd_fillrect(0, 60, 132, 90,green);
lcd_fillrect(0, 90, 132, 120,blue);
lcd_fillrect(0, 120, 132, 150,orange);
lcd_fillrect(0, 150, 132, 176,sky);

Проблема точно в инициализации,когда перебирал в ней биты был и такой случай.
В место 0x4952 замените на 0x4902
kernel
Доброго времени суток, уважаемые. Вопрос по дисплею от S65: какое максимальное напряжение можно подавать на подсветку с учетом небольшого запаса (т.е. чтобы его не спалить при "перепаде" напряжения)? 10В?
kernel
Еще интересует максимальный ток потребления TFT S65 05.gif
Krik99
Кто работал с дисплем от ERICSSON T28? Хотябы узнать код инициализации.
John Silver
TO Juras Pr.
Вы когда-то писали:
Я было дело начал документ рисовать, где описываются регистры, но некоторые я не могу корректно описать, особенно те, которые строки решёткой сдвигают, будто сведение в старом телевизоре. Есть регистр, который на контраст влияет, а есть который на скорость обновления экрана...

Очень интересуюсь настройкой контраста, не могли бы Вы выложить свои наработки по LS020? Все сообщество будет Вам очень признательно.
Сам я составил табличку с известными и проверенными командами, собрался выложить, но оказалось забыл ее на домашнем компе, выложу через недельку.

Может кто нашел как работать со станицами/банками? Что бы записал в одну страницу, вывел на экран, в это время пишешь в другую страницу, выводишь на экран 2-ую, 1-ую..., 2-ую... С буфером в RАМ все понятно, а вот бы аппаратные средства...
mchel
Здравствуйте.
Давно читаю эту тему и очень вам благодарен за информацию, которую тут собрали.
Недавно запустил LCD от 3310, на него есть даташит и проблем не возникло:
http://s52.radikal.ru/i135/0811/5e/33ea2a78d876.jpg 46 Кб
Также подключил дисплей от CX65 LS020 к LPT порту компа, питание, кроме подсветки, тоже брал с него:
http://s61.radikal.ru/i174/0811/c2/0a18a7bd3b89.jpg 60 Кб
Заливка всего экрана занимает несколько секунд, но зато удобнее крутить регистры, правда пока ничего кроме того что тут уже описано не нашёл.
А вот буквально вчера стал обладателем самсунга Х820, точнее того что от него осталось, и не смотря на то что корпус был сломан пополам дисплей вроде целый. Вот нашёл схему его подключения из схемы телефона:
http://s47.radikal.ru/i118/0811/d7/fe832959953a.gif 20 Кб
Судя по ней дисплей имеет свою видеопамять и контроллер, т.к. нет обычных для безконтроллерных дисплеев сигналов. Информации про то какой там контроллер у меня нет, поэтому если кто что знает поделитесь пожалуйста.
Ещё есть камера от него, про неё тоже никакой информации кроме схемы подключения.
Кстати подсветка клавиатуры в этом телефоне не светодиодная а электролюминисцентная, никогда такого не видел.
LCD
Цитата(kernel @ Nov 2 2008, 12:42) *
Еще интересует максимальный ток потребления TFT S65 05.gif

До 3мА в активном режиме во время записи. А в спящем режиме (более подробно - у немцев) - меньше 1мА.
kernel
LCD, спасибо за ответ. Что-то мало кушает TFT S65 smile.gif
Krik99
Вот даташит нашол на ERICSSON T28_&_2T9, но в нём про инициализацию ничего вразумительного не нашол, может кто обяснит как провести инициализацию?
МП41
Дело в том, что даташиты бывают общие, а бывают и полные, которые в сети не валяются. В общих даташитах как правило всякие размеры указаны, какие-то общие параметры, например, скорость обмена, распиновка, иногда фрагменты инициализации. Полные даташиты даются конкретным разработчикам под обязательства о нераспостранении. Так например делает Sharp, кому принадлежит экран LS020. На него общий даташит есть, но толку с него мало.
Кстати, приведённый Вами даташит вполне годится для работы с экраном, надо лишь внимательно почитать. Такому экрану не требуется громоздкая инициализация.
Krik99
Если не сложно, покажите какие именно команды отправлять для инициализации?
МП41
Скорее всего инициализация будет заключаться просто в стирании экрана. Попробуйте записать в экран что-нибудь.
John Silver
Вот и перечень известных команд для LS020.
Нажмите для просмотра прикрепленного файла
Взято с форума, добавлены кой-какие комментарии.

Добавляйте команды, комментируйте, выкладывайте.
011119xx
Команда 0x0020 меняет направление отрисовки, но точка отсчета остается прежней.
Juras Pr.
Вот мои раскопки, могут быть неточности. Документ неполный и будет обновляться.
ls020_registers.doc
Не хватает времени всё расписать и заполнить. Режим записи с маской я так и не нашёл.
011119xx
Цитата(Juras Pr. @ Nov 11 2008, 03:19) *
Вот мои раскопки, могут быть неточности. Документ неполный и будет обновляться.
ls020_registers.doc
Не хватает времени всё расписать и заполнить. Режим записи с маской я так и не нашёл.

Большое спасибо. Хорошая работа
John Silver
Цитата(Juras Pr. @ Nov 11 2008, 00:19) *
Не хватает времени всё расписать и заполнить.


шлите мне, распишу и заполню.
Cyber_RAT
Народ. Вот у вас последовательность для выключения дисплея есть...
как ей пользоваться?
Я вывожу картинку на экран, даю команду (последовательность команд из вышеуказанного документа) и картинка как была на экране, так и остается... экран не гаснет sad.gif
Может кто даст пример инициализации - вывода точки на экран и выключения? (дисплей ls020...)
Juras Pr.
Такая конструкция не работает?
lcd_wrcmd16($EF90);
lcd_wrcmd16($0040);
(Сделать экран чёрным)
Cyber_RAT
такое работает, хочется корректного выключения дисплея...
011119xx
Цитата(Cyber_RAT @ Nov 13 2008, 10:53) *
такое работает, хочется корректного выключения дисплея...

Вот последовательность команд.
0xEF00, 0x7E04, 0xEFB0, 0x5A48, 0xEF00, 0x7F01, 0xEFB0, 0x64FF, 0x6500,
0xEF00, 0x7F01, 0xE262, 0xE202, 0xEFB0, 0xBC02, 0xEF00, 0x7F01, 0xE200,
0x8000, 0xE204, 0xE200, 0xE100, 0xEFB0, 0xBC00, 0xEF00, 0x7F01
Чисто внешне выключение выглядит также как при подаче сигнала сброса. У меня по крайней мере.
Cyber_RAT
Цитата(011119xx @ Nov 13 2008, 08:34) *
Вот последовательность команд.
.....
Чисто внешне выключение выглядит также как при подаче сигнала сброса. У меня по крайней мере.

Посылаю по SPI эту последовательность команд - и ничего на экране не меняется sad.gif
может банк еще предварительно надо переключить? или еще какие шаманские действия сделать?
p.s. выложите плз в любом языке инициализацию - выключение (остальное можно удалить если проект закрытый)... ибо я что-то не понимаю. sad.gif
МП41
Может проще внешним полевиком питание отключать? Потребляет экран вроде как немного, 1-3мА.
John Silver
Цитата(Cyber_RAT @ Nov 12 2008, 22:01) *
Народ. Вот у вас последовательность для выключения дисплея есть...
как ей пользоваться?
Я вывожу картинку на экран, даю команду (последовательность команд из вышеуказанного документа) и картинка как была на экране, так и остается... экран не гаснет sad.gif
Может кто даст пример инициализации - вывода точки на экран и выключения? (дисплей ls020...)

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

Вывести точку:
задать указатель на нужную точку и выдать 2 байта цвета
Для горизонтального дисплея (иначе поменять координаты местами):
Код
S65_TX_Com (0x0600+y);
S65_TX_Com (0x0700+x);
S65_TX_Data (color);

Предварительно установить нужный банк (если стоит другой):
Код
S65_TX_Com (0xEF90);
Cyber_RAT
да у меня и многоуровневые меню уже выводятся, только вот дисплей отключить не могу %)
частота SPI=8 Mhz
попробую задержки вставить, авось прокатит.
p.s.выключать экран полевиком некошерно - остается медленно гаснущее изображение smile.gif
МП41
Цитата(Cyber_RAT @ Nov 13 2008, 11:38) *
p.s.выключать экран полевиком некошерно - остается медленно гаснущее изображение smile.gif

Перед отключением полевиком можно выключать экран командой или тупо заливать чёрным цветом. Гаснущее изображение наблюдал, знаю, как это выглядит smile.gif.
011119xx
Цитата(Cyber_RAT @ Nov 13 2008, 13:38) *
да у меня и многоуровневые меню уже выводятся...

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