среда, 22 июня 2011 г.

Библиотека для работы МК Renesas V850ES совместно с ЖК модулем

Библиотека предназначена для работы с модулями на контроллере KS0066U, HD44780U и совместимыми и микроконтроллером Renesas UPD70F3793 но может быть адаптирована под любой МК.
Питание дисплея осуществляется от 3.3V.
На вывод контраста подается отрицательное напряжение полученое на инвертирующем зарядовом насосе.
Подключение дисплея к МК осуществляется так:
ЖК модуль <-> uPD70f3793
-----------------------
DB0 <-> PDL0
DB1 <-> PDL1
DB2 <-> PDL2
DB3 <-> PDL3
DB4 <-> PDL4
DB5 <-> PDL5
DB6 <-> PDL6
DB7 <-> PDL7

RS -> PDL8
R/W -> PDL9
E -> PDL10
-----------------------
На таймере P генерируется ШИМ 200КГц и подается с вывода P35 на зарядовый насос.
Ограничивая ширину импульсов, можно регулировать контрастность дисплея.
Схема зарядового насоса:

Перед выполнением функций чтения/записи, надо вызвать LCD_init()

Функция LCD_write_command_or_data имеет два параметра - первый указывает что будем записывать - команды (LCD_COMMAND или LCD_COMMAND_NO_BF_CHECK) или данные (LCD_DATA или LCD_DATA_NO_BF_CHECK) а затем собственно команда или байт данных.
Приставка NO_BF_CHECK означает что не будем проверять флаг Busy от дисплея (на моем дисплее он работал не правильно).
Вот пример вывода двух цифр в верхнюю и нижнюю строки:

Запишем адрес начала верхней строки (0x80 потому что адрес 0x00 а первый бит - команда записи адреса)
LCD_write_command_or_data(LCD_COMMAND_NO_BF_CHECK, 0x80);

И выведем цифру 1
LCD_write_command_or_data(LCD_DATA_NO_BF_CHECK, (0x31);

Запишем адрес начала нижней строки (0xC0 потому что адрес 0x40 а первый бит - команда записи адреса получаем 11000000b тоесть 0xC0)
LCD_write_command_or_data(LCD_COMMAND_NO_BF_CHECK, 0xC0);

И выведем цифру 2
LCD_write_command_or_data(LCD_DATA_NO_BF_CHECK, (0x32);

Исходники написаны на C в среде IAR.
Скачать можно здесь:
uPD70F3793_LCD.zip