База дисплеев мобильных устройств

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

Re: База дисплеев мобильных устройств

Сообщение hd44780 »

Atmega8 писал(а):ILI9320_AVR - при компиляции много ошибок... :facepalm:


Автор - я. Точнее сделал по мотивам из каких-то узкоглазых примеров :)) .

Каких конкретно ошибок? Вы случайно не в атмел студии компилите?
Я писал его под CvAVR.
Реклама
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: База дисплеев мобильных устройств

Сообщение DX168B »

Такой вопрос:
Никто не сталкивался с TFT дисплеями на контроллере HX8353-C ?
Даташит нашел, но так и не могу разобраться с ним. Запустить не удалось.
Может кто подскажет что?
I am DX168B and this is my favourite forum on internet!
Реклама
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

Re: База дисплеев мобильных устройств

Сообщение hd44780 »

HX8352 подойдёт?
Аватара пользователя
-Valerius-
Встал на лапы
Сообщения: 99
Зарегистрирован: Сб янв 12, 2013 22:43:10
Откуда: Москва

Re: База дисплеев мобильных устройств

Сообщение -Valerius- »

Добрый день. Может кто-то сталкивался с подобным дисплеем, будет полезна любая информация.
Маркировка на шлейфе TFT8K0594FPC-A2-E, прдположительно- с Nokia N95.
Вложения
DSCN0310.jpg
(254.8 КБ) 1548 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Warlord
Родился
Сообщения: 10
Зарегистрирован: Вс авг 05, 2012 22:57:13
Откуда: Харьков

Re: База дисплеев мобильных устройств

Сообщение Warlord »

-Valerius-
Дайте поиск по инету DSO Nano (открытый проект осциллографа на STM32). Открыто доступны схемы и исходники текста программ.
Это дисплей из серии China TFT на ILI93хx.
Реклама
Аватара пользователя
-Valerius-
Встал на лапы
Сообщения: 99
Зарегистрирован: Сб янв 12, 2013 22:43:10
Откуда: Москва

Re: База дисплеев мобильных устройств

Сообщение -Valerius- »

Спасибо, обязательно посмотрю, тут подсказывают с вертепа -что контроллер ILI1289
Реклама
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: База дисплеев мобильных устройств

Сообщение maxlab »

Здравствуйте! Мучаю дисплей Nokia 2660 цветной, купил здесь http://shop.siriust.ru/product_info.php ... s_id/10467. Дисплей китайский, не оригинал. Собрал платку-адаптер. Дисплей инициализируется. Обнаружил странности... А дальше я застрял :) Есть желающие подключиться к мозговому штурму? Код и разводку адаптера выложу вечером.

Дисплей соединен через 24 пиновый разъем. Паяется тонким косым (микроволна) жалом нормально. Со старого телефона разъем сдувается феном 400 град. Греем с обратной стороны. Тогда пластмасса не деформируется.

Обещанный код. Странности поборол :). Для STM8SVL-Discovery. Написано в IAR
Следующие этапы... Тонкая настройка, вывод текста и графики.

Ток подсветки у меня сейчас 8.3 mA (12v,560 om). Думаю до 10 вдуть можно смело.

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

#include "stm8s.h"
#include "stm8s_gpio.h"
#include "stm8s_clk.h"

#define MAX_X         131
#define MAX_Y         160
#define CMD   0
#define DAT   1

/* SPFD54124 Инструкции (см даташит)*/
#define SWRESET      (0x01)
#define SLPOUT      (0x11)
#define NORON      (0x13)
#define INVOFF      (0x20)
#define DISPON      (0x29)
#define CASET      (0x2A)
#define RASET      (0x2B)
#define RAMWR      (0x2C)
#define MADCTL      (0x36)
#define IDMOFF      (0x38)
#define COLMOD      (0x3A)
/* Формирование цвета */
#define RGB(r,g,b)   (uint16_t)((r >> 3) |((g >> 2) << 5) |((b >> 3) << 11))
/* Основные цвета */
#define COL_BLACK   RGB(0,0,0)
#define COL_WHITE   RGB(255,255,255)
#define COL_RED      RGB(255,0,0)
#define COL_BLUE   RGB(0,0,255)
#define COL_GREEN   RGB(0,255,0)

#define COL_YELLOW   RGB(255,255,0)
#define COL_MAGENTA   RGB(255,0,255)
#define COL_AQUA   RGB(0,255,255)

#define COL_PURPLE   RGB(160,32,240)
#define COL_REDPINK RGB(255,50,50)
#define COL_ORANGE  RGB(255,165,0)

// управление ногами rst,cs,sda,clk

#define RST_SET GPIO_WriteHigh(GPIOC, GPIO_PIN_6);
#define RST_RESET GPIO_WriteLow(GPIOC, GPIO_PIN_6);
#define CS_SET GPIO_WriteHigh(GPIOC,  GPIO_PIN_4);
#define CS_RESET GPIO_WriteLow(GPIOC,  GPIO_PIN_4);
#define SDA_SET GPIO_WriteHigh(GPIOC, GPIO_PIN_2);
#define SDA_RESET GPIO_WriteLow(GPIOC, GPIO_PIN_2);
#define CLK_SET GPIO_WriteHigh(GPIOC, GPIO_PIN_5);
#define CLK_RESET GPIO_WriteLow(GPIOC, GPIO_PIN_5);

#define F_CPU 16000000  //Тактовая частота процессора (внутр RC).

// функции задержек
void _delay_ms(uint32_t ms)
{
         uint32_t nCount;
         nCount=(F_CPU/10000)*ms; // возвращает тактовоую частоту HCLK в Гц, делим на 10000 и всё множим на ms
        for (; nCount!=0; nCount--)
           {
           //6 тактов функция повтора + 4 пустые такта
           __asm ("nop");
           __asm ("nop");
           __asm ("nop");
           __asm ("nop");// = 10 тактов
           }
}
/*Хардварный ресет драйвера*/
void lcd_reset()
{
  RST_SET;
  CS_SET;
  CLK_SET;
  _delay_ms(1);
  RST_RESET;
  CS_RESET;
  _delay_ms(20);
  RST_SET;
  _delay_ms(20); 
}

void lcd_SendByte(char mode,unsigned char c)
{
    CS_RESET;
    CLK_RESET;
   
    if (mode)
      SDA_SET
    else
      SDA_RESET;
   
    CLK_SET;

    for(unsigned char i=0;i<8;i++)
    {
       CLK_RESET;

        if (c & 0x80)
          SDA_SET
         else       
           SDA_RESET;

        CLK_SET;
        c <<= 1;
       
    }

    CS_SET;
}
/*Видео окно*/
void lcd_rect(uint32_t x, uint32_t width, uint32_t y, uint32_t height)
{
   /* Set CAS Address */
   lcd_SendByte(CMD,CASET);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,x);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,width);
   
   /* Set RAS Address */
   lcd_SendByte(CMD,RASET);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,y);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,height);
   
   /* Write RAM */
   lcd_SendByte(CMD,RAMWR);
}
/*Запись в GRAM*/
void lcd_wr_gram(uint16_t gram)
{
   
   lcd_SendByte(DAT,(uint8_t)(gram>>8));
   lcd_SendByte(DAT,(uint8_t)gram);

}
/*Заливка GRAM*/
void lcd_clear(void)
{
   volatile uint32_t n;

   lcd_rect(0,MAX_X-1,0,MAX_Y-1);
   n = (MAX_X) * (MAX_Y);

   do {
      /* 16Bit Colour Access */
      lcd_wr_gram(COL_BLUE);
   } while (--n);
}
/*Инициализация*/
void lcd_init()
{
  lcd_reset();
  lcd_SendByte(CMD,SWRESET);     
  _delay_ms(120);
  lcd_SendByte(CMD,SLPOUT);     
  _delay_ms(20);

  lcd_SendByte(CMD,INVOFF);     
  lcd_SendByte(CMD,IDMOFF);     
  lcd_SendByte(CMD,NORON);       
 
  lcd_SendByte(CMD,COLMOD);       
  lcd_SendByte(DAT,0x05);         
  _delay_ms(10);

  lcd_SendByte(CMD,MADCTL);     
  lcd_SendByte(DAT,0x08);
  _delay_ms(10);
   
  lcd_SendByte(CMD,DISPON);     
  _delay_ms(10);
 
  lcd_clear();
}
void main( void )
{
  // сброс порта C
  GPIO_DeInit(GPIOC);
  // ноги 2,4,5,6 - на выход
  GPIO_Init(GPIOC,GPIO_PIN_2,GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(GPIOC,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(GPIOC,GPIO_PIN_6,GPIO_MODE_OUT_PP_HIGH_FAST);
      // тактирование ядра 16mHz
  CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);
 
  lcd_init();
}

#ifdef USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval : None
  */
void assert_failed(u8* file, u32 line)
{
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif
Вложения
P1012133.JPG
Испытательный макет. Заливка синим цветом
(84.58 КБ) 1442 скачивания
P1012132.JPG
Тыльная сторона
(43.7 КБ) 1369 скачиваний
P1012130.JPG
Лицо
(36.29 КБ) 1294 скачивания
n2660adapter.lay
Адаптер
(40.35 КБ) 977 скачиваний
Девице - Device
russo_turisto
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

Re: База дисплеев мобильных устройств

Сообщение russo_turisto »

Здесь есть полезности для дисплеев с таким же разъемом http://phreakerclub.com/464
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: База дисплеев мобильных устройств

Сообщение maxlab »

Здравствуйте! Не устроила меня скорость заливки на STM8. Переделал макет на PIC18F252. Ничего более высокоскоростного под рукой не оказалось, а специально покупать MX4-MX7 или Cortex жаба давит. При внутреннем умножении тактовой частоты на 4 - получилось более или менее шустрее. Изменил ориентацию дисплея. Заливает сверху вниз.
Код для CCS PICC
Спойлер

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

#include <18F252.h>
#device PASS_STRINGS=IN_RAM
#fuses H4,NOWDT,NOPUT
#use delay (clock=40000000)

#define OFS_COL         2
#define OFS_RAW         2
#define MAX_X         128
#define MAX_Y         160

#define CMD   0
#define DAT   1

/* SPFD54124 Инструкции (см даташит)*/
#define SWRESET     (0x01)
#define SLPOUT      (0x11)
#define NORON       (0x13)
#define INVOFF      (0x20)
#define DISPON      (0x29)
#define CASET       (0x2A)
#define RASET       (0x2B)
#define RAMWR       (0x2C)
#define MADCTL      (0x36)
#define IDMOFF      (0x38)
#define COLMOD      (0x3A)


/* Формирование цвета */
#define RGB(r,g,b)   (unsigned int16)((r >> 3) |((g >> 2) << 5) |((b >> 3) << 11))
/* Основные цвета */
#define COL_BLACK   RGB(0,0,0)
#define COL_WHITE   RGB(255,255,255)
#define COL_RED      RGB(255,0,0)
#define COL_BLUE   RGB(0,0,255)
#define COL_GREEN   RGB(0,255,0)

#define COL_YELLOW   RGB(255,255,0)
#define COL_MAGENTA   RGB(255,0,255)
#define COL_AQUA   RGB(0,255,255)

#define COL_PURPLE   RGB(160,32,240)
#define COL_REDPINK RGB(255,50,50)
#define COL_ORANGE  RGB(255,165,0)

// управление ногами rst,cs,sda,clk

#define RST PIN_C0
#define CS   PIN_C1
#define SDA   PIN_C7
#define CLK   PIN_C6

/*Хардварный ресет драйвера*/
void lcd_reset()
{
  output_high(RST);
  output_high(CS);
  output_high(CLK);
  delay_ms(1);
  output_low(RST);
  output_low(CS);
  delay_ms(20);
  output_high(RST);
  delay_ms(20); 
}

void lcd_SendByte(char mode,unsigned char c)
{
    output_low(CS);
    output_low(CLK);
    if (mode)
      output_high(SDA);
    else
      output_low(SDA);
    output_high(CLK);
   unsigned char i;
    for(i=0;i<8;i++)
    {
       output_low(CLK);
        if (c & 0x80)
          output_high(SDA);
         else       
          output_low(SDA);
        output_high(CLK);
        c <<= 1;
    }
    output_high(CS);
}
/*Видео окно*/
void lcd_rect(unsigned int32 x, unsigned int32 width, unsigned int32 y, unsigned int32 height)
{
   /* Set CAS Address */
   lcd_SendByte(CMD,CASET);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,OFS_RAW + y);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,OFS_RAW + height);
   
   /* Set RAS Address */
   lcd_SendByte(CMD,RASET);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,OFS_COL + x);
   lcd_SendByte(DAT,0);
   lcd_SendByte(DAT,OFS_COL + width);
   
   /* Write RAM */
   lcd_SendByte(CMD,RAMWR);
}
/*Запись в GRAM*/
void lcd_wr_gram(unsigned int16 gram)
{
   
   lcd_SendByte(DAT,(char)(gram>>8));
   lcd_SendByte(DAT,(char)gram);

}
/*Заливка GRAM*/
void lcd_clear(unsigned int16 col)
{
   volatile unsigned int32 n;

   lcd_rect(0,MAX_X-1,0,MAX_Y-1);
   n = (MAX_X) * (MAX_Y);

   do {
      /* 16Bit Colour Access */
      lcd_wr_gram(col);
   } while (--n);
}
/*Инициализация*/
void lcd_init()
{
  lcd_reset();
  lcd_SendByte(CMD,SWRESET);     
  delay_ms(120);
  lcd_SendByte(CMD,SLPOUT);     
  delay_ms(20);

  lcd_SendByte(CMD,INVOFF);     
  lcd_SendByte(CMD,IDMOFF);     
  lcd_SendByte(CMD,NORON);       
 
  lcd_SendByte(CMD,COLMOD);       
  lcd_SendByte(DAT,0x05);         
  delay_ms(10);

  lcd_SendByte(CMD,MADCTL);     
  lcd_SendByte(DAT,0xa8);
  delay_ms(10);
   
  lcd_SendByte(CMD,DISPON);     
  delay_ms(10);
 
  lcd_clear(COL_BLACK);
}
void main( void )
{
  lcd_init();
  while(true)
  {
   lcd_clear(COL_WHITE );
   lcd_clear(COL_RED );
   lcd_clear(COL_BLUE );
   lcd_clear(COL_GREEN );
   lcd_clear(COL_YELLOW );
   lcd_clear(COL_MAGENTA );
   lcd_clear(COL_AQUA );
   lcd_clear(COL_REDPINK );
   lcd_clear(COL_ORANGE );
  } 
}



PS. От китайских товарищей узнал что это - http://shop.siriust.ru/product_info.php ... s_id/16419 идет с таким же контроллером как и 2660. Шлейф паябельный и без разъема.
Вложения
ourdev_682882XOH8J9.jpg
Распиновка
(113.31 КБ) 1300 скачиваний
P1012134.JPG
Макет на pic18
(74.79 КБ) 921 скачивание
Последний раз редактировалось maxlab Вт май 07, 2013 15:11:07, всего редактировалось 3 раза.
Девице - Device
Chettuser

Re: База дисплеев мобильных устройств

Сообщение Chettuser »

Народ, не в службу, а в дружбу - сворачивайте код под спойлер. Такие простыни листать неудобно уже. Спасибо.
Gamma-Ray
Родился
Сообщения: 1
Зарегистрирован: Вт май 07, 2013 23:26:51

Re: База дисплеев мобильных устройств

Сообщение Gamma-Ray »

Доброго времени суток.Никто из котов не сталкивался с этим шайтан-девайсом - китайским fm-модулятором?
В нем неплохой LCD-дисплей с подсветкой,хочется прикрутить его к самопальному дозиметру на МК,случайно никто
не знает его рапиновку/марку/даташит? Дисплей 12-ти пиновый.
Вложения
mod2.JPG
(43.06 КБ) 1113 скачиваний
mod.JPG
(37.96 КБ) 1308 скачиваний
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: База дисплеев мобильных устройств

Сообщение maxlab »

Дисплей Nokia 2660 побежден!
Код для ccs picc
Спойлер

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

#include <18F252.h>
#device PASS_STRINGS=IN_RAM
#include <string.h>
#fuses H4,NOWDT,NOPUT
#use delay (clock=40000000)

const char FONT8x15[97][15] =
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00, // !
0x00,0x63,0x63,0x63,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36,0x36,0x7F,0x36,0x36,0x00,0x00,0x00, // #
0x0C,0x0C,0x3E,0x63,0x61,0x60,0x3E,0x03,0x03,0x43,0x63,0x3E,0x0C,0x0C,0x00, // $
0x00,0x00,0x00,0x00,0x00,0x61,0x63,0x06,0x0C,0x18,0x33,0x63,0x00,0x00,0x00, // %
0x00,0x00,0x00,0x1C,0x36,0x36,0x1C,0x3B,0x6E,0x66,0x66,0x3B,0x00,0x00,0x00, // &
0x00,0x30,0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
0x00,0x00,0x0C,0x18,0x18,0x30,0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,0x00, // (
0x00,0x00,0x18,0x0C,0x0C,0x06,0x06,0x06,0x06,0x0C,0x0C,0x18,0x00,0x00,0x00, // )
0x00,0x00,0x00,0x00,0x42,0x66,0x3C,0xFF,0x3C,0x66,0x42,0x00,0x00,0x00,0x00, // *
0x00,0x00,0x00,0x00,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // +
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00, // ,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00, // .
0x00,0x00,0x01,0x03,0x07,0x0E,0x1C,0x38,0x70,0xE0,0xC0,0x80,0x00,0x00,0x00, // / (forward slash)
0x00,0x00,0x3E,0x63,0x63,0x63,0x67,0x6B,0x73,0x63,0x63,0x3E,0x00,0x00,0x00, // 0 0x30
0x00,0x00,0x0C,0x1C,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3F,0x00,0x00,0x00, // 1
0x00,0x00,0x3E,0x63,0x03,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00, // 2
0x00,0x00,0x3E,0x63,0x03,0x03,0x1E,0x03,0x03,0x03,0x63,0x3E,0x00,0x00,0x00, // 3
0x00,0x00,0x06,0x0E,0x1E,0x36,0x66,0x66,0x7F,0x06,0x06,0x0F,0x00,0x00,0x00, // 4
0x00,0x00,0x7F,0x60,0x60,0x60,0x7E,0x03,0x03,0x63,0x73,0x3E,0x00,0x00,0x00, // 5
0x00,0x00,0x1C,0x30,0x60,0x60,0x7E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00, // 6
0x00,0x00,0x7F,0x63,0x03,0x06,0x06,0x0C,0x0C,0x18,0x18,0x18,0x00,0x00,0x00, // 7
0x00,0x00,0x3E,0x63,0x63,0x63,0x3E,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00, // 8
0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x3F,0x03,0x03,0x06,0x3C,0x00,0x00,0x00, // 9
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00, // :
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x00, // ;
0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x06,0x00,0x00,0x00, // <
0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00, // =
0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x60,0x00,0x00,0x00, // >
0x00,0x00,0x3E,0x63,0x63,0x06,0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x00,0x00,0x00, // ?
0x00,0x00,0x3E,0x63,0x63,0x6F,0x6B,0x6B,0x6E,0x60,0x60,0x3E,0x00,0x00,0x00, // @ 0x40
0x00,0x00,0x08,0x1C,0x36,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x00,0x00,0x00, // A
0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x33,0x33,0x33,0x33,0x7E,0x00,0x00,0x00, // B
0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x60,0x60,0x61,0x33,0x1E,0x00,0x00,0x00, // C
0x00,0x00,0x7C,0x36,0x33,0x33,0x33,0x33,0x33,0x33,0x36,0x7C,0x00,0x00,0x00, // D
0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x31,0x33,0x7F,0x00,0x00,0x00, // E
0x00,0x00,0x7F,0x33,0x31,0x34,0x3C,0x34,0x30,0x30,0x30,0x78,0x00,0x00,0x00, // F
0x00,0x00,0x1E,0x33,0x61,0x60,0x60,0x6F,0x63,0x63,0x37,0x1D,0x00,0x00,0x00, // G
0x00,0x00,0x63,0x63,0x63,0x63,0x7F,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00, // H
0x00,0x00,0x3C,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00, // I
0x00,0x00,0x0F,0x06,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00,0x00,0x00, // J
0x00,0x00,0x73,0x33,0x36,0x36,0x3C,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00, // K
0x00,0x00,0x78,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x33,0x7F,0x00,0x00,0x00, // L
0x00,0x00,0x63,0x77,0x7F,0x6B,0x63,0x63,0x63,0x63,0x63,0x63,0x00,0x00,0x00, // M
0x00,0x00,0x63,0x63,0x73,0x7B,0x7F,0x6F,0x67,0x63,0x63,0x63,0x00,0x00,0x00, // N
0x00,0x00,0x1C,0x36,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x00,0x00,0x00, // O
0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00, // P 0x50
0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x63,0x6B,0x6F,0x3E,0x06,0x07,0x00, // Q
0x00,0x00,0x7E,0x33,0x33,0x33,0x3E,0x36,0x36,0x33,0x33,0x73,0x00,0x00,0x00, // R
0x00,0x00,0x3E,0x63,0x63,0x30,0x1C,0x06,0x03,0x63,0x63,0x3E,0x00,0x00,0x00, // S
0x00,0x00,0xFF,0xDB,0x99,0x18,0x18,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00, // T
0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00, // U
0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x63,0x63,0x36,0x1C,0x08,0x00,0x00,0x00, // V
0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x36,0x00,0x00,0x00, // W
0x00,0x00,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x3C,0x66,0xC3,0xC3,0x00,0x00,0x00, // X
0x00,0x00,0xC3,0xC3,0xC3,0x66,0x3C,0x18,0x18,0x18,0x18,0x3C,0x00,0x00,0x00, // Y
0x00,0x00,0x7F,0x63,0x43,0x06,0x0C,0x18,0x30,0x61,0x63,0x7F,0x00,0x00,0x00, // Z
0x00,0x00,0x3C,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x3C,0x00,0x00,0x00, // [
0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0E,0x07,0x03,0x01,0x00,0x00,0x00, // \ (back slash)
0x00,0x00,0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00,0x00,0x00, // ]
0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00, // _
0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ` 0x60
0x00,0x00,0x00,0x00,0x00,0x3C,0x46,0x06,0x3E,0x66,0x66,0x3B,0x00,0x00,0x00, // a
0x00,0x00,0x70,0x30,0x30,0x3C,0x36,0x33,0x33,0x33,0x33,0x6E,0x00,0x00,0x00, // b
0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x60,0x60,0x60,0x63,0x3E,0x00,0x00,0x00, // c
0x00,0x00,0x0E,0x06,0x06,0x1E,0x36,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00, // d
0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x7E,0x60,0x63,0x3E,0x00,0x00,0x00, // e
0x00,0x00,0x1C,0x36,0x32,0x30,0x7C,0x30,0x30,0x30,0x30,0x78,0x00,0x00,0x00, // f
0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x66,0x3C,0x00, // g
0x00,0x00,0x70,0x30,0x30,0x36,0x3B,0x33,0x33,0x33,0x33,0x73,0x00,0x00,0x00, // h
0x00,0x00,0x0C,0x0C,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00, // i
0x00,0x00,0x06,0x06,0x00,0x0E,0x06,0x06,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // j
0x00,0x00,0x70,0x30,0x30,0x33,0x33,0x36,0x3C,0x36,0x33,0x73,0x00,0x00,0x00, // k
0x00,0x00,0x1C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x1E,0x00,0x00,0x00, // l
0x00,0x00,0x00,0x00,0x00,0x6E,0x7F,0x6B,0x6B,0x6B,0x6B,0x6B,0x00,0x00,0x00, // m
0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x33,0x33,0x00,0x00,0x00, // n
0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00,0x00,0x00, // o
0x00,0x00,0x00,0x00,0x00,0x6E,0x33,0x33,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // p 0x70
0x00,0x00,0x00,0x00,0x00,0x3B,0x66,0x66,0x66,0x66,0x3E,0x06,0x06,0x0F,0x00, // q
0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0x33,0x30,0x30,0x30,0x78,0x00,0x00,0x00, // r
0x00,0x00,0x00,0x00,0x00,0x3E,0x63,0x38,0x0E,0x03,0x63,0x3E,0x00,0x00,0x00, // s
0x00,0x00,0x08,0x18,0x18,0x7E,0x18,0x18,0x18,0x18,0x1B,0x0E,0x00,0x00,0x00, // t
0x00,0x00,0x00,0x00,0x00,0x66,0x66,0x66,0x66,0x66,0x66,0x3B,0x00,0x00,0x00, // u
0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x36,0x36,0x1C,0x1C,0x08,0x00,0x00,0x00, // v
0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x6B,0x6B,0x7F,0x36,0x00,0x00,0x00, // w
0x00,0x00,0x00,0x00,0x00,0x63,0x36,0x1C,0x1C,0x1C,0x36,0x63,0x00,0x00,0x00, // x
0x00,0x00,0x00,0x00,0x00,0x63,0x63,0x63,0x63,0x63,0x3F,0x03,0x06,0x3C,0x00, // y
0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x0C,0x18,0x30,0x63,0x7F,0x00,0x00,0x00, // z
0x00,0x00,0x0E,0x18,0x18,0x18,0x70,0x18,0x18,0x18,0x18,0x0E,0x00,0x00,0x00, // {
0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x00,0x00, // |
0x00,0x00,0x70,0x18,0x18,0x18,0x0E,0x18,0x18,0x18,0x18,0x70,0x00,0x00,0x00, // }
0x00,0x00,0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
0x00,0x70,0xD8,0xD8,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

#define OFS_COL         2
#define OFS_RAW         2
#define MAX_Y         128
#define MAX_X         160

#define CMD   0
#define DAT   1

/* SPFD54124 Инструкции (см даташит)*/
#define NO_OP      (0x00)
#define SWRESET     (0x01)
#define SLPOUT      (0x11)
#define NORON       (0x13)
#define INVOFF      (0x20)
#define DISPON      (0x29)
#define CASET       (0x2A)
#define RASET       (0x2B)
#define RAMWR       (0x2C)
#define MADCTL      (0x36)
#define IDMOFF      (0x38)
#define COLMOD      (0x3A)


/* Формирование цвета */
#define RGB(r,g,b)   (unsigned long)((r >> 3) |((g >> 2) << 5) |((b >> 3) << 11))
/* Основные цвета */
#define COL_BLACK   RGB(0,0,0)
#define COL_WHITE   RGB(255,255,255)
#define COL_RED     RGB(255,0,0)
#define COL_BLUE    RGB(0,0,255)
#define COL_GREEN   RGB(0,255,0)

#define COL_YELLOW  RGB(255,255,0)
#define COL_MAGENTA RGB(255,0,255)
#define COL_AQUA    RGB(0,255,255)

#define COL_PURPLE  RGB(160,32,240)
#define COL_REDPINK RGB(255,50,50)
#define COL_ORANGE  RGB(255,165,0)

// управление ногами rst,cs,sda,clk

#define RST    PIN_C0
#define CS      PIN_C1
#define SDA      PIN_C7
#define CLK      PIN_C6

/*Хардварный ресет драйвера*/
void lcd_reset()
{
  output_high(RST);
  output_high(CS);
  output_high(CLK);
  delay_ms(1);
  output_low(RST);
  output_low(CS);
  delay_ms(20);
  output_high(RST);
  delay_ms(20); 
}

/*Запись 8bit*/
void lcd_SendByte(char mode,unsigned char c)
{
    output_low(CS);
    output_low(CLK);
    if (mode)
      output_high(SDA);
    else
      output_low(SDA);
    output_high(CLK);
   unsigned char i;
    for(i=0;i<8;i++)
    {
       output_low(CLK);
        if (c & 0x80)
          output_high(SDA);
         else       
          output_low(SDA);
        output_high(CLK);
        c <<= 1;
    }
    output_high(CS);
}

/*Запись 16bit*/
void lcd_wr_gram(unsigned long gram)
{
   lcd_SendByte(DAT,(char)(gram>>8));
   lcd_SendByte(DAT,(char)gram);
}

/*Видео окно*/
void lcd_win(unsigned long x,  unsigned long y, unsigned long x1, unsigned long y1)
{
   /* Set CAS Address */
   lcd_SendByte(CMD,CASET);
   lcd_wr_gram(OFS_COL + x);
   lcd_wr_gram(OFS_COL + x1);
   
   /* Set RAS Address */
   lcd_SendByte(CMD,RASET);
   lcd_wr_gram(OFS_RAW + y);
   lcd_wr_gram(OFS_RAW + y1);
   
   /* Write RAM */
   lcd_SendByte(CMD,RAMWR);
}

/*Заливка GRAM*/
void lcd_fill(unsigned long x,  unsigned long y, unsigned long x1, unsigned long y1, unsigned long col)
{
   unsigned long n,h,w;
   lcd_win(x,y,x1,y1);
   h = (y1+1)-y;
   w = (x1+1)-x;   
   n = h * w;
   do
   {
      lcd_wr_gram(col);
      } while (--n);
}

/*Инициализация*/
void lcd_init()
{
  lcd_reset();
  lcd_SendByte(CMD,SWRESET);     
  delay_ms(120);
  lcd_SendByte(CMD,SLPOUT);     
  lcd_SendByte(CMD,COLMOD);       
  lcd_SendByte(DAT,0x05);         
  lcd_SendByte(CMD,MADCTL);     
  lcd_SendByte(DAT,0xa8);
  lcd_SendByte(CMD,DISPON);     
}

#define CHAR_W 8
#define CHAR_H 15

void put_char(unsigned long x, unsigned long y, char c, unsigned long color, unsigned long bgcolor)
{
  unsigned char h,ch,p,mask;     
  lcd_win(x,y,x+CHAR_W-1,y+CHAR_H-1);                   
  for (h=0; h<CHAR_H; h++)
  {
        ch=FONT8x15[ c-32 ][h];
        mask = 0x80;
        for (p=0; p<CHAR_W; p++)
        {
          if (ch & mask)
          {
           lcd_wr_gram(color);
          }
         
          else
          {
           lcd_wr_gram(bgcolor);
          }
          mask=mask/2;
    }
  }
}

void put_string(unsigned long x, unsigned long y, char *str, unsigned long color,unsigned long bgcolor)
{
 unsigned char j;
  j=0;
  while (j<strlen(str))
  {
    put_char(x+j*CHAR_W,y,str[j], color, bgcolor);
    j++;
  }
}

void put_pixel(unsigned long x, unsigned long y, unsigned long color)
 {
  lcd_win(x,y,x+1,y+1);
  lcd_wr_gram(color);
 }   
void put_circle(unsigned long xcenter, unsigned long ycenter, long rad, unsigned long color)
 {
  signed int tswitch,y1,x1 = 0;
  signed char d;
 
  xcenter = 0 + xcenter;
  d = ycenter - xcenter;
  y1 = rad;
  tswitch = 3 - 2 * rad;
 
  while (x1 <= y1)
  {
    put_pixel(xcenter + x1, ycenter + y1, color);
    put_pixel(xcenter + x1, ycenter - y1, color);
    put_pixel(xcenter - x1, ycenter + y1, color);   
    put_pixel(xcenter - x1, ycenter - y1, color);
    put_pixel(ycenter + y1 - d, ycenter + x1, color);
    put_pixel(ycenter + y1 - d, ycenter - x1, color);
    put_pixel(ycenter - y1 - d, ycenter + x1, color);
    put_pixel(ycenter - y1 - d, ycenter - x1, color);
    if (tswitch < 0) tswitch += (4 * x1 + 6);
     else
      {
      tswitch += (4 * (x1 - y1) + 10);
      y1--;
      }
    x1++;
  }           
  //CS=1;
 }
 
const char string[]= "NOKIA 2660 LCD DEMO";
const char string1[]="    PIC18F252      ";

void main( void )
{
  lcd_init();
  lcd_fill(0,0,159,127  ,COL_BLUE );
  put_circle(20,20,10,COL_WHITE);
  put_string(4,50,string,COL_GREEN,COL_BLUE);
  put_string(4,65,string1,COL_YELLOW,COL_BLUE);
  while(true)
  {
  } 
}


Вложения
2013-05-08 11.11.50.jpg
It work :)
(93.92 КБ) 1549 скачиваний
Девице - Device
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: База дисплеев мобильных устройств

Сообщение ChipKiller »

maxlab писал(а):Здравствуйте! Не устроила меня скорость заливки на STM8.
... ну так почему не использовать аппаратный SPI? ... или не понял из-за чего "тормозит" заливка....
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: База дисплеев мобильных устройств

Сообщение maxlab »

ChipKiller писал(а):
maxlab писал(а):Здравствуйте! Не устроила меня скорость заливки на STM8.
... ну так почему не использовать аппаратный SPI? ... или не понял из-за чего "тормозит" заливка....


Ну, во первых, 9bit интерфейс. Поэтому программная эмуляция. А если и есть такой spi аппаратный, то все равно 8mbit в секунду. Это мало. В сотовых используют АРМ с тактовой от 160 мгц. Там проблем со скоростью по последовательной шине нет. Любой сервис мануал открой, сам увидишь. В нашем случае только камень высокоскоростной и подешевле искать остается. На днях попробую pic18f14k22. Там ядро 64мгц тактируется и в дип корпусе найти можно.
Девице - Device
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: База дисплеев мобильных устройств

Сообщение ChipKiller »

maxlab писал(а):то все равно 8mbit в секунду. Это мало. В сотовых используют АРМ с тактовой от 160 мгц.
.. понятно, что чем больше, тем лучше. Просто программный SPI на stm8 будет поменьше 1mbit. После праздников попробую к stm32 подключить, только наверное Nokia1616 возьму - не охота со шлейфом ковыряться....
Аватара пользователя
ua1arn
Встал на лапы
Сообщения: 81
Зарегистрирован: Вт май 08, 2012 23:15:45
Откуда: Санкт - Петербург

Re: База дисплеев мобильных устройств

Сообщение ua1arn »

Включил в свой проект http://subversion.assembla.com/svn/hfreciever/trunk/ поддержку контроллера ST7565S на 8-бит SPI - ещё не проверял. Есть в наличии индикатор WO12864C2-TFH# 128*64 (34-х контактный PFC с шагом 0.5 мм) - пока не припаял. У кого есть макет?
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 479
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: База дисплеев мобильных устройств

Сообщение maxlab »

Здравствуйте! Тут дисплейчик подгнали от раскладушки NOKIA 6131 и есть идея заюзать его по взрослому. Но что бы это сделать, нужен нормальный адаптер с реверсом шины данных и согласованием питания. Набросал схемку в DipTrace и предлагаю ее на обсуждение общественности. Я сам в схемотехнике не очень силен и прошу помощь зала :) Используемые компоненты, что можно достать в нашей деревне :
- ZXLD1937ET5TA - драйвер светодиодной подсветки в типовом включении, даташит в интернете есть.
- 74LVC1G126DBV - 2 буфера-преобразователя для сигналов TE и TE_SUB
- 74VHC541MTR - 3 шинных формирователя с Z состоянием.

на pic17f877a внимание можно не обращать, его на плате адаптера не будет.

В профи - http://shop.siriust.ru/product_info.php ... ts_id/7004
Вложения
n6131adapter.zip
Схема в DipTrace
(9.58 КБ) 546 скачиваний
Девице - Device
Аватара пользователя
ua1arn
Встал на лапы
Сообщения: 81
Зарегистрирован: Вт май 08, 2012 23:15:45
Откуда: Санкт - Петербург

Re: База дисплеев мобильных устройств

Сообщение ua1arn »

Включил в свой проект http://subversion.assembla.com/svn/hfreciever/trunk/ поддержку дисплея LPH9157-2 176*132 на контроллере _похожем_ на ILITEK ILI9163. Дисплей на зелёном текстолите.
Аватара пользователя
proga-ks
Родился
Сообщения: 9
Зарегистрирован: Сб мар 27, 2010 19:31:12

Re: База дисплеев мобильных устройств

Сообщение proga-ks »

Хочу поделиться и тут может кому пригодится
модель для Simens s65 lph8836
в которой реализованы только основные функции вывода
но для отладки устройства думаю достаточно
Изображение
Вложения
Siemens model Proteus.rar
(50.21 КБ) 753 скачивания
lph8836.JPG
(84.33 КБ) 1369 скачиваний
Chettuser

Re: База дисплеев мобильных устройств

Сообщение Chettuser »

Я тут надыбал ссылку, может кому интересно будет...
http://nicegorov.narod.ru/links/using-lcd.html
Ответить

Вернуться в «Периферия»