Страница 13 из 73

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 13:39:30
vlad145
Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 13:50:28
uzamar
vlad145 писал(а):Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Любой какую найдете, хоть ImgConvert. А лучше прикрутить SD-карту и выводить BMP.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 13:58:57
vlad145
uzamar писал(а):
vlad145 писал(а):Спасибо. А я и не заметил в коментах параметр поворота. А какой программой лучше конвертировать картинки?
Любой какую найдете, хоть ImgConvert. А лучше прикрутить SD-карту и выводить BMP.
Я где то давно натыкался на функцию вывода BMP только под BASIC, а под CVAVR мне не попадалась.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 14:07:30
Alex62
Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него.
Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 14:11:50
vlad145
А если во внешней памяти хранить, типа AT45DB161, для картинок памяти хватит.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 14:26:10
Alex62
vlad145 писал(а):А если во внешней памяти хранить, типа AT45DB161, для картинок памяти хватит.
Да легко. Про SPI я уже писал, останется только какую-то файловую систему написать. Что б знать откуда какую картинку выковыривать.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 14:53:54
vlad145
А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 15:04:41
Alex62
vlad145 писал(а):А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значения
#define CHAR_W 8
#define CHAR_H 14
на соответствующие данным таблицы.
Прикрепляю програмки создания фонтов. Сам их не юзал. Попробуй.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 15:15:12
vlad145
Alex62 писал(а):
vlad145 писал(а):А как можно использовать шрифты разных размеров, или есть функция увеличения? Для дисплея nokia 1100 видел такую функцию, а для данного можно её адаптировать?
Не знаю про какую функцию идет речь, но думаю что врятли. Нужно создавать другую таблицу ASCII с другим размером шрифта. Процедуру же вывода можно оставить прежней, изменив значения
#define CHAR_W 8
#define CHAR_H 14
на соответствующие данным таблицы.
Но если я правильно понял изменив данные параметры мы все равно будем иметь один шрифт, только другого размера. А два получается не как?
Ас нокиевским дисплеем я ошибся, не 1100 а 3310. Там есть функция LcdStr в которой есть параметр LcdFontSize, изменяя который получаем шрифт двойного размера.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 15:22:40
Alex62
Ну почему же. Микроконтроллер очень гибкий инструмент. Можно (как в том примере вывода картинки с ротацией) добавить в процедуру вывода символа еще один параметр, и в зависимости от его значения выводить шрифт того или иного размера. Причем их может быть не 2, а много размеров.

PS. Не надо так обширно цитировать. Ветка разрастется, и будет сложно найти полезное зерно.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 15:36:21
vlad145
Для меня это видимо ещё сложно изменить параметр в функции, тем более надо знать какой.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 15:57:03
Alex62
Проанализируй процедуру lcd_picture() и по аналогии:
вводим переменную char font, и создаем условие.

void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
if (font==1)
{
вывод шрифта одного размера
}
else
{
вывод шрифта другого размера
};
Это для двух размеров. Для большего количества используй переключатель switch/

switch(font)
{
default:
case 0:
первый размер;
case 1:
второй размер;
case 2:
третий размер;
}

Ну и для всех размеров надо массив символов писать нужного размера.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 15:59:10
uzamar
Alex62 писал(а):Картинки много места во флеш памяти занимают. Есть один конвертер который сжимает картинки. ScreenBin9 фамилия у него.
Гуглится. Надо под него процедуру вывода сжатой картинки написать. Рисованные картинки хорошо сжимает. Растровые слабовато. Ну и конечно их лучше в SD картах хранить, а карты подключаются через SPI . И дисплей через SPI . Правда в MEGAx всего один SPI интерфейс аппаратный. Вот потому я и XMEGA юзаю. Перспективней.
А я STm32 юзаю, еще более перспективней. С месяц назад подключил к нему дисплей от какого-то MP4 240x320 (HX8347) по 16 битной шине + карточку SD + вывод BMP. В планах сделать бортовик на свое авто.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 16:17:49
Alex62
uzamar писал(а):А я STm32 юзаю, еще более перспективней.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда.
А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 16:21:24
vlad145
Alex62 писал(а):Проанализируй процедуру lcd_picture() и по аналогии:
вводим переменную char font, и создаем условие.

void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
.......

Ну и для всех размеров надо массив символов писать нужного размера.
Спасибо, буду шерстить.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 16:23:03
vlad145
Alex62 писал(а):
uzamar писал(а):А я STm32 юзаю, еще более перспективней.
Наверное. Только я еще из Атмеловских восьмиразрядников не вырос. Опыта поднакоплю, и тогда.
А пока китайца 320х240 подключаю к XMEGA A3. Благо их дешевеньких валом на разборках.
У меня есть в наличии STM32 на базе ARM32F100, только с какой стороны подходить пока не знаю.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 16:24:44
uzamar
Alex62 писал(а):А пока китайца 320х240 подключаю к XMEGA A3.
Какой контроллер дисплея? У меня, если надо, есть для HX8347 могу скинуть.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 16:40:32
Alex62
Скорее всего SSD1298 . В принцыпе даташит есть, инициализацию тоже накопал, думаю проблем быть не должно. Одна проблема - время. Нехватат.

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 19:07:36
vlad145
Alex62 писал(а):
void put_char(char x, char y, char c, unsigned int color, char rot, char font)
.......
if (font==1)
..........
Пытаюсь поправить данный код для использования двух шрифтов.
Пишу в CVAVR вот так:

Код: Выделить всё

// поместить символ в графическую память дисплея
void put_char(char x, char y, char c, unsigned int color, char rot, char Font)
{
  char h,ch,p,mask;

  CS= 0;
  
  switch(rot)
  {
    default:
    case 0:
      lcd_reg(0x05);lcd_dat(0x0038);
      lcd_reg(0x17);lcd_dat8(x+CHAR_W-1, x);
      lcd_reg(0x16);lcd_dat8(y+CHAR_H-1, y);
      lcd_reg(0x21);lcd_dat8(x,y);
      lcd_reg(0x22);
      lcd_write8(0x76);  
      break;
    case 1:
      lcd_reg(0x05);lcd_dat(0x0030);
      lcd_reg(0x16);lcd_dat8(x+CHAR_W-1, x);
      lcd_reg(0x17);lcd_dat8(y+CHAR_H-1, y);
      lcd_reg(0x21);lcd_dat8(y, x);
      lcd_reg(0x22);
      lcd_write8(0x76);  
      break;
  }


  if (Font==1) 
  {
         for (h=0; h<CHAR_H; h++) // every column of the character
     {        
       if (rot==1)
          ch=ascii_tab[ c-32 ][h];    
          else
          ch=ascii_tab[ c-32 ][CHAR_H-h-1];
    
        mask=0x80;
        for (p=0; p<CHAR_W; p++)  // write the pixels
        {
          if (ch&mask)
          {
            lcd_write(color);                
          }
          else
          {
            lcd_write(bgcolor);
          }
          mask=mask/2;
        }  // for p 
        if (c>127) {
        c=c-57;          //убираем отсутствующую часть таблицы ASCII
        };
     }
    
  }
  else  
  {    
         for (h=0; h<CHAR_H; h++) // every column of the character
     {        
       if (rot==1)
          ch=ascii_tab2[ c-32 ][h];    
          else
          ch=ascii_tab2[ c-32 ][CHAR_H-h-1];
    
        mask=0x80;
        for (p=0; p<CHAR_W; p++)  // write the pixels
        {
          if (ch&mask)
          {
            lcd_write(color);                
          }
          else
          {
            lcd_write(bgcolor);
          }
          mask=mask/2;
        }  // for p
     }
    
    };

  CS= 1;  // deselect display    

}

// записать строку, начиная с координат x, y, цветом color и ориентацией orient
// если orient=0, то горизонтально, если =1, то вертикально
void put_string(unsigned char x, unsigned char y, char *str, unsigned int color, unsigned char orient)
{
  j=0;
  while (j<strlen(str))
  {
    put_char(x+j*CHAR_W,y,str[j],orient, color);   //  0 deg. rotated
    j++;
  }
}
При компиляции выпадает ошибка:

too few arguments in function call

В какую сторону рыть ума не приложу. Выручайте!

Re: Юзаем дисплеи от сотовых и других потаскунчиков.

Добавлено: Вт авг 23, 2011 21:19:48
vlad145
Уважаемый Alex62. Ещё одна засада по Вашему проекту. Я не могу вывести закрашенную область, просто ничего не выводится. А если выводить квадрат с закрашиванием, то квадрат рисуется, а закрашивание процентов на 10. :dont_know: