Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

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

Вт фев 18, 2014 16:04:25

Дело в том, что я писал текст на русском и вижу я его везде, кроме экрана, на чистом русском. А у Вас, судя по всему на кракозябрском показывает? Странно, это значит, что мой компьютер кодировке воду мутит. Даже и не знаю где спросить по этому поводу. Есть надежный способ снести винду- но это не выход.

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

Вт фев 18, 2014 16:57:14

Открыл сишный файл CVAVR-ом. Там и правда кракозябры. Но ведь пишу- то я по русски, кракозябринского знать не знаю. И отображается в студии нормально. Что за трабл со студией и как его решить?

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

Вт фев 18, 2014 17:23:40

titoFF писал(а):Открыл сишный файл CVAVR-ом. Там и правда кракозябры. Но ведь пишу- то я по русски, кракозябринского знать не знаю. И отображается в студии нормально. Что за трабл со студией и как его решить?

1. разюеритесь в какой кодировке ваша библиотека умеет писать русскими
наиболлее распространенные Cyrillic windows cp1251 и KOI8R
2. сохраните код программы с русскими буквами в нужно кодировке

atmel studio по умолчанию работает в cp1251
но можно сохранить в любой другой - File/Advanced save options

только после повторного открытия файла студия все равно будет думать что это cp1251 и если ошиблась то отображать будеть кроказяюры, но при этом компилить будет все как надо

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

Вт фев 18, 2014 17:30:06

Сейчас начал последовательно сносить все программы от атмела с компа. Даже установщики в какой- то кривой кодировке. Сейчас всё удалится- переустановлю и попробую ещё.

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

Вт фев 18, 2014 18:08:59

Переустановка не помогла. Сменил кодировку на 1251 и всё пошло!
Изображение

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

Вт фев 18, 2014 21:24:29

:)) на здоровье

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

Вт мар 11, 2014 22:38:43

может кому интересно будет Nokia2760
http://we.easyelectronics.ru/lcd_gfx/vn ... a2760.html

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

Чт мар 27, 2014 11:36:14

Доброго дня всем, позанимался тут как модно говорить реверсным
инженерингом древних дисплеев ))). Попросту говоря демонтировал
со стекол и изучал кристаллы контроллеров под микроскопом.

Siemens C25 - KS0090(S6A0090, SEG60)
Siemens A35 - NJR6578
Siemens C35 - SSD1812
Siemens S35 - KS0718

Может кому пригодится :)

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

Пт май 02, 2014 20:58:12

Схема подключения и инициализация дисплея и тачскрина Samsung S5830I (не путать с S5830) 320х480 16бит шина 3,5".
Вложения
S5830I.PDF
(289.4 KiB) Скачиваний: 565
LCD S5830i Test.rar
(28.06 KiB) Скачиваний: 473

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

Пн май 05, 2014 00:29:37

Здравствуйте коллеги. Дисплей NOKIA N91 на операционном столе... Уже инициализируется и заливка разными цветами работает ;)

Перспективный дисплейчик. Совместим по системе команд со всеми где на борту написано LS021XXXXXXX Подходящий даташит lds274. Кому надо, вышлю... обращайтесь в ЛС
Код для STM32F100C4

Спойлер
Код:
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;

#define F_CPU 24000000//Тактовая частоа процессора.

#define PIN_CS   GPIO_Pin_0
#define PIN_DC   GPIO_Pin_1
#define PIN_RD   GPIO_Pin_2
#define PIN_RST  GPIO_Pin_5
#define PIN_WR   GPIO_Pin_6

#define NOP                     0x00
#define SOFT_RESET              0x01
#define EXIT_SLEEP_MODE         0x11
#define SET_DISPLAY_ON            0x29
#define SET_CASET            0x2A
#define SET_RASET            0x2B
#define SET_RAMWR            0x2C
#define SET_ADDRESS_MODE         0x36
#define SET_COL_MODE         0x3A

// Определениецветов
#define black      0,0,0           // черный
#define red           255,0,0           // красный
#define green        0,255,0         // зеленый
#define blue        0,0,255         // синий
#define yellow     255,255,0        // жёлтый
#define cyan         0,255,255         // голубой
#define lilac        255,0,255        // сиреневый
#define white        255,255,255    // белый

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

void delay_us(uint32_t us)
{
      volatile uint32_t nCount;
        nCount=(F_CPU/10000000)*us;
        for (; nCount!=0; nCount--)
           {
           //6 тактов функция повтора + 4 пустые такта
           __asm volatile ("nop");
           __asm volatile ("nop");
           __asm volatile ("nop");
           __asm volatile ("nop");// = 10 тактов
           }
}
void lcd_reset(void)
{
   GPIO_WriteBit(GPIOB, PIN_RST,Bit_RESET);
   GPIO_WriteBit(GPIOB, PIN_RST,Bit_SET);
}
void lcd_write_com(uint8_t Data)
{
   GPIO_WriteBit(GPIOB, PIN_CS,Bit_RESET);
   GPIO_WriteBit(GPIOB, PIN_DC,Bit_RESET);
   GPIO_WriteBit(GPIOB, PIN_RD,Bit_SET);
   GPIO_Write(GPIOA,Data);
   GPIO_WriteBit(GPIOB, PIN_WR,Bit_SET);
   GPIO_WriteBit(GPIOB, PIN_WR,Bit_RESET);
}

void lcd_write_dat(uint8_t Data)
{
   GPIO_WriteBit(GPIOB, PIN_CS,Bit_RESET);
   GPIO_WriteBit(GPIOB, PIN_DC,Bit_SET);
   GPIO_WriteBit(GPIOB, PIN_RD,Bit_SET);
   GPIO_Write(GPIOA,Data);
   GPIO_WriteBit(GPIOB, PIN_WR,Bit_SET);
   GPIO_WriteBit(GPIOB, PIN_WR,Bit_RESET);
}

void lcd_clear(char color_r, char color_g, char color_b)// Заливка дисплея
{
unsigned long int i;
lcd_write_com(SET_CASET);                      // КомандаориетациипоХкоординате
lcd_write_dat(0);
lcd_write_dat(0);       // ДанныеначалаХкоординат (0)
lcd_write_dat(0);
lcd_write_dat(176);  // Данные конца   Х координат (176)
lcd_write_com(SET_RASET);                    //Команда ориентации по Y координате
lcd_write_dat(0);
lcd_write_dat(0);     // Данные начала Y координат (0)
lcd_write_dat(0);
lcd_write_dat(208);   // Данные конца   Y координат (208)
lcd_write_com(SET_RAMWR);                   //Команда записи в память дисплея
for (i=0;i<(208*176);i++)
   {lcd_write_dat(color_r);
   lcd_write_dat(color_g);
   lcd_write_dat(color_b);
   }     // RGB   Данные для записи в память дисплея
}

int main(void)
{

RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if (HSEStartUpStatus == SUCCESS)
{
   RCC_HCLKConfig( RCC_SYSCLK_Div1);
    RCC_PCLK2Config( RCC_HCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div1);
    RCC_PLLConfig(0x00010000, 0x00040000);
    RCC_PLLCmd( ENABLE);
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
       {
        }
    RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK);
    while (RCC_GetSYSCLKSource() != 0x08)
        {
        }
}

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_6;
GPIO_Init(GPIOB, &GPIO_InitStructure);

lcd_reset();
delay_ms(20);
lcd_write_com(SOFT_RESET);
delay_ms(2);
lcd_write_com(EXIT_SLEEP_MODE);
delay_ms(2);
lcd_write_com(SET_DISPLAY_ON);
delay_ms(2);
lcd_write_com(SET_ADDRESS_MODE);
delay_ms(2);
lcd_write_dat(0xC0);// Книжная ориентация дисплея
delay_ms(2);
lcd_write_com(SET_COL_MODE);
delay_ms(2);
lcd_write_dat(0b00000111); //  24 битныйрежим
delay_ms(2);
lcd_clear(blue);

    while(1)
    {

    }
}
Вложения
P1012164.JPG
Фото макетки
(83.97 KiB) Скачиваний: 974

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

Ср май 07, 2014 22:52:36

Довел код для N91 до юзабельности в любительских поделках. Coocox CoIDE.
Спойлер#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

GPIO_InitTypeDef GPIO_InitStructure;

#define F_CPU 24000000 //Тактовая частота процессора.

// Управляющие пины

#define PIN_CS GPIO_Pin_0
#define PIN_DC GPIO_Pin_1
#define PIN_RD GPIO_Pin_2
#define PIN_RST GPIO_Pin_5
#define PIN_WR GPIO_Pin_6

// Команды контроллера LDS274 (NOKIA N91 8G 176X208 262k)

#define NOP 0x00
#define SOFT_RESET 0x01
#define EXIT_SLEEP_MODE 0x11
#define SET_DISPLAY_ON 0x29
#define SET_CASET 0x2A
#define SET_RASET 0x2B
#define SET_RAMWR 0x2C
#define SET_ADDRESS_MODE 0x36
#define SET_COL_MODE 0x3A

// Определение цветов (от 4 до 252 :RGB 6-6-6)

#define black 0,0,0 // черный
#define red 252,0,0 // красный
#define green 0,252,0 // зеленый
#define blue 0,0,252 // синий
#define yellow 252,252,0 // жёлтый
#define cyan 0,252,252 // голубой
#define lilac 252,0,252 // сиреневый
#define white 252,252,252 // белый

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
};


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

void delay_us(uint32_t us)
{
volatile uint32_t nCount;
nCount=(F_CPU/10000000)*us;
for (; nCount!=0; nCount--)
{
//6 тактов функция повтора + 4 пустые такта
__asm volatile ("nop");
__asm volatile ("nop");
__asm volatile ("nop");
__asm volatile ("nop");// = 10 тактов
}
}

void lcd_hwReset(void)
{
GPIO_WriteBit(GPIOB, PIN_RST,Bit_RESET);
GPIO_WriteBit(GPIOB, PIN_RST,Bit_SET);
}

void lcd_write_com(uint8_t Data)
{
GPIO_WriteBit(GPIOB, PIN_CS,Bit_RESET);
GPIO_WriteBit(GPIOB, PIN_DC,Bit_RESET);
GPIO_WriteBit(GPIOB, PIN_RD,Bit_SET);
GPIO_Write(GPIOA,Data);
GPIO_WriteBit(GPIOB, PIN_WR,Bit_SET);
GPIO_WriteBit(GPIOB, PIN_WR,Bit_RESET);
}

void lcd_write_dat(uint8_t Data)
{
GPIO_WriteBit(GPIOB, PIN_CS,Bit_RESET);
GPIO_WriteBit(GPIOB, PIN_DC,Bit_SET);
GPIO_WriteBit(GPIOB, PIN_RD,Bit_SET);
GPIO_Write(GPIOA,Data);
GPIO_WriteBit(GPIOB, PIN_WR,Bit_SET);
GPIO_WriteBit(GPIOB, PIN_WR,Bit_RESET);
}

void lcd_setWindow(uint8_t column_start, uint16_t row_start, uint8_t column_end, uint16_t row_end)
{
lcd_write_com(SET_CASET);
lcd_write_dat(0); lcd_write_dat(column_start); lcd_write_dat(0); lcd_write_dat(column_end);
lcd_write_com(SET_RASET);
lcd_write_dat(0); lcd_write_dat(row_start); lcd_write_dat(0); lcd_write_dat(row_end);
}

void lcd_clear(char color_r, char color_g, char color_b)// Заливка дисплея
{
uint16_t i;
lcd_write_com(SET_CASET);
lcd_write_dat(0);lcd_write_dat(0);lcd_write_dat(0);lcd_write_dat(207);
lcd_write_com(SET_RASET);
lcd_write_dat(0);lcd_write_dat(0);lcd_write_dat(0);lcd_write_dat(175);
lcd_write_com(SET_RAMWR);
for (i=0;i<36608;i++)
{lcd_write_dat(color_r);lcd_write_dat(color_g);lcd_write_dat(color_b);}
}

void lcd_setPixel(uint8_t x, uint8_t y, uint8_t color_r, uint8_t color_g, uint8_t color_b)
{
lcd_setWindow(x,y,x+1,y+1);
lcd_write_com(SET_RAMWR);
lcd_write_dat(color_r);lcd_write_dat(color_g);lcd_write_dat(color_b);
}

void lcd_fillBox(uint8_t x, uint8_t y, uint8_t x1, uint8_t y1, uint8_t color_r, uint8_t color_g, uint8_t color_b)
{
uint16_t n,h,w,i;
lcd_setWindow(x,y,x1,y1);
h = (y1+1)-y;
w = (x1+1)-x;
n = h * w;
lcd_write_com(SET_RAMWR);
for(i=0;i<n;i++)
{
lcd_write_dat(color_r);lcd_write_dat(color_g);lcd_write_dat(color_b);
}
}

#define CHAR_W 8
#define CHAR_H 15

void put_char(uint8_t x, uint8_t y, uint8_t c, uint8_t color_r, uint8_t color_g, uint8_t color_b, uint8_t color_gr, uint8_t color_gg, uint8_t color_gb)
{
uint8_t h,ch,p,mask;
lcd_setWindow(x,y,x+CHAR_W-1,y+CHAR_H-1);
lcd_write_com(SET_RAMWR);
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_write_dat(color_r);lcd_write_dat(color_g);lcd_write_dat(color_b);
}

else
{
lcd_write_dat(color_gr);lcd_write_dat(color_gg);lcd_write_dat(color_gb);
}
mask=mask/2;
}
}
}

void put_string(unsigned long x, unsigned long y, char *str, uint8_t color_r, uint8_t color_g, uint8_t color_b, uint8_t color_gr, uint8_t color_gg, uint8_t color_gb)
{
unsigned char j;
j=0;
while (j<strlen(str))
{
put_char(x+j*CHAR_W,y,str[j], color_r, color_g, color_b, color_gr, color_gg, color_gb);
j++;
}
}

const char string[]= "NOKIA N91 LCD DEMO";
const char string1[]=" STM32F100C4 ";


int main(void)
{

// Настройка портов

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5|GPIO_Pin_6;
GPIO_Init(GPIOB, &GPIO_InitStructure);

// Инициализация дисплея

lcd_hwReset();
delay_ms(120);
lcd_write_com(SOFT_RESET);
delay_ms(120);
lcd_write_com(EXIT_SLEEP_MODE);
delay_ms(150);
lcd_write_com(SET_ADDRESS_MODE);
lcd_write_dat(0b010100000); // Альбомная ориентация дисплея
lcd_write_com(SET_COL_MODE);
lcd_write_dat(0b00000110); // 18 битный режим
lcd_write_com(SET_DISPLAY_ON);

lcd_clear(blue);
lcd_fillBox(40,40,100,100,green);
put_string(4,120,string,green,blue);
put_string(4,145,string1,yellow,blue);

while(1)
{

}
}
Вложения
n91.lay
Макетка для дисплея
(41.28 KiB) Скачиваний: 503
Nokia_N91_STM32.jpg
Фотоотчет
(129.36 KiB) Скачиваний: 1134

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

Пт июн 13, 2014 10:34:00

Вот наткнулся, использование цветных небольших дисплеев:
http://bc-avrora.ucoz.ua/disp/Stat_119.pdf

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

Вт июн 17, 2014 01:43:51

Хм, темы не нашел для дисплеев фотиков поэтому спрошу тут, а реально ли подключить экран от Nikon CollPix L2 к меге8 например?

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

Чт июн 19, 2014 18:51:29

Скажите а есть ли у драйверов ILI932x или SSD1289 без VSYNC пина возможность апдейтить изображение после полной записи кадра?
(или как управлять 0x0C регом 9325?)

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

Пт авг 08, 2014 16:57:54

Что то не могу найти даташит на контроллер lds183 дисплея lph9135... Может у кого есть? Поделитесь) :))

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

Ср авг 13, 2014 10:16:23

А зачем Вам даташит, если не секрет? Если для использования совместно с микроконтроллером, то есть же куча примеров кода...
С наскоку в поисковике я к сожалению тоже не нашел на контроллер даташит, но при этом накачал кучу примеров кода. Не ясно одно - откуда эти примеры растут, если даташит не находится :)

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

Ср авг 13, 2014 10:19:27

Да нашел уже. К стм32 подключаю. Из примеров команды инициализации взял..

А контроллер это совместим с PCF8833 по командам..

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

Сб окт 04, 2014 23:21:31

Nokia 1600
Подскажите пожалуйста, что за контроллер в нём или пример управления. Кроме распиновки почему-то ничего не нагуглилось.

Upd.
Нашёл на каком-то форуме упоминание, что там может стоять контроллер CSTN матрицы LDS184.
Даташит не гуглится, сайт производителя в полурабочем состоянии.
Попался только обзор чипа.

Upd2.
Разыскал в инете кусок кода для LDS184, немного причесал под CVAVR. Дисплей ожил, выводит 3 тестовых экрана: красный, зелёный, синий. Но пока назначение большинства констант остаётся неизвестным.

Есть такой вопрос. Те дисплеи, с которыми имел дело, требуют "идиотские" напряжения питания 1.8+2.8 вольт. Имеются ли ширпотребные и недорогие цветные дисплеи от мобилок с напряжением 3.3 вольт, чтоб напрямую привязать к STM32 без всяких резистивных делителей и преобразователей уровня?
Вложения
Nokia1600_LDS184.zip
Исходник CVAVR
(6.1 KiB) Скачиваний: 448
LDS184_overview.pdf
(66.19 KiB) Скачиваний: 667

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

Пн окт 06, 2014 08:57:35

Экранчик от Nokia1600 оказался совместим по командам с контроллером Sitronix ST7628.
По крайней мере команды инициализации и записи окна в ОЗУ работают.

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

Чт окт 16, 2014 10:04:05

uk8amk писал(а):Есть такой вопрос. Те дисплеи, с которыми имел дело, требуют "идиотские" напряжения питания 1.8+2.8 вольт. Имеются ли ширпотребные и недорогие цветные дисплеи от мобилок с напряжением 3.3 вольт, чтоб напрямую привязать к STM32 без всяких резистивных делителей и преобразователей уровня?


дисплей от nokia1616 отлично работает по обоим цепям питания от 3.3В и без делителей согласовывается с МК
единственно встречаются версии с подсветкой как на 3.3В так и на 7В
в последнем случае придется иметь второе напряжение или от другого источника или применять stepup
Ответить