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

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

Сообщение hd44780 »

Atmega8 писал(а):ILI9320_AVR - при компиляции много ошибок... :facepalm:
Автор - я. Точнее сделал по мотивам из каких-то узкоглазых примеров :)) .

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

Сообщение DX168B »

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

Сообщение hd44780 »

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

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

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

Сообщение Warlord »

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

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

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

Сообщение 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 КБ) 1445 скачиваний
P1012132.JPG
Тыльная сторона
(43.7 КБ) 1374 скачивания
P1012130.JPG
Лицо
(36.29 КБ) 1298 скачиваний
n2660adapter.lay
Адаптер
(40.35 КБ) 982 скачивания
Девице - Device
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Ср окт 07, 2009 06:45:38
Откуда: Astana KZ

Сообщение russo_turisto »

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

Сообщение 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 КБ) 1303 скачивания
P1012134.JPG
Макет на pic18
(74.79 КБ) 924 скачивания
Последний раз редактировалось maxlab Вт май 07, 2013 15:11:07, всего редактировалось 3 раза.
Девице - Device
Chettuser

Сообщение Chettuser »

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

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

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

Сообщение 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 КБ) 1551 скачивание
Девице - Device
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Сообщение ChipKiller »

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

Сообщение maxlab »

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

Сообщение ChipKiller »

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

Сообщение ua1arn »

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

Сообщение 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 КБ) 549 скачиваний
Девице - Device
Встал на лапы
Аватара пользователя
Сообщения: 81
Зарегистрирован: Вт май 08, 2012 23:15:45
Откуда: Санкт - Петербург

Сообщение ua1arn »

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

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

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

Сообщение Chettuser »

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

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