Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Ошибся, в даташите нет. Вот кусок кода(+)

Отправлено DAS 13 декабря 2009, г. 09:20
В ответ на: Контроллер PCF8812. В даташите последовательность инициализации описана(-) отправлено пользователем DAS 13 декабря 2009, г. 07:26

Проект был рассчитан на несколько типов контроллеров диплеев и их варианты, поэтому куча define и переопределений. Я выдрал только часть инициализации.

Там есть еще одна тонкость. Стекляшка имеет 101х64 пиксела, а контроллер память на 102х65. При выводе строк надо это учитывать.

И еще. Задержки сначала были выставлены по даташиту, но работало и без них. Питание диплея 3.3в SPIclk 1Mhz. Задрана вверх контрастность - заказчик ныл, что плохо видно. Лечится уменьшением значения (0х60) при LCDC_VOP.

#define _LCD_CMD_FUNC 0x20 // Function set -
#define _LCD_CMD_H 0x01 // basic(0) or extended(1) instruction set

#define _LCD_CMD_DCTL 0x08 // set display configuration
#define _LCD_CMD_NORMAL 0x04 // normal mode

#define _LCD_CMD_TCTL 0x04 // set Temperature Coefficient
#define _LCD_CMD_TC2 0x02 // set temp. coeff. 2 -1.05x10-3 (V/°C)

#define _LCD_CMD_HVG 0x08 // multiplication of high-voltage generator voltage
#define _LCD_CMD_VX3 0x01 // 3x voltage multiplier

#define _LCD_CMD_BIAS 0x10 // set Bias System
#define _LCD_CMD_BS1 0x06 // Bias system 1; Mux rate 1:18 or 1:16

#define _LCD_CMD_VOP 0x80 // write VOP to register

#define LCDC_FUNC _LCD_CMD_FUNC
#define LCDC_EXT _LCD_CMD_H
#define LCDC_NORMAL _LCD_CMD_DCTL|_LCD_CMD_NORMAL
#define LCDC_VOP _LCD_CMD_VOP
#define LCDC_HV_X3 _LCD_CMD_HVG|_LCD_CMD_VX3
#define LCDC_BIAS1 _LCD_CMD_BIAS|_LCD_CMD_BS1
#define LCDC_TC2 _LCD_CMD_TCTL|_LCD_CMD_TC2


#define LCDC_STDMODE LCDC_FUNC
#define LCDC_EXTMODE LCDC_FUNC|LCDC_EXT


#define LCD_INIT_SEQUENCE \
LCDC_EXTMODE, \
LCDC_HV_X3, \
LCDC_VOP | 0x60, \
LCDC_BIAS1, \
LCDC_TC2, \
LCDC_STDMODE, \
LCDC_NORMAL




****************************************************************


static const UCHAR8 InitSeq[] = {LCD_INIT_SEQUENCE};


//=== LCD Hardware reset ===
void LCD_Reset(void)
{
LCD_DC_HIGH;
LCD_SEL_HIGH;
LCD_RST_LOW;
Delay2(1);
LCD_RST_HIGH;
}

//=== LCD VDD ON ===
void LCD_On(void)
{
LCD_RST_LOW;
LCD_SEL_HIGH;
LCD_DC_HIGH;
// Delay2(100);
LCD_VDD_HIGH;
// Delay2(100);
}

void LCD_SendCmdSeq(UCHAR8 * commands, UINT8 count)
{
LCD_DC_LOW;
LCD_SEL_LOW;
while (count--)
{
LCDTXBUF = *commands++;
while(!(LCDTXCTL & TXEPT)); // wait for Tx
};
LCD_SEL_HIGH;
_NOP();
}

void LCD_Init(void)
{
LCD_On();
LCD_Reset();
// Delay2(100);
LCD_SendCmdSeq( (UCHAR8*)&InitSeq[0], COUNTOF(InitSeq) );
LCD_Clear();
}


Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

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

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru