Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср май 08, 2013 14:45:45
Alexeyslav, спасибо за оперативный и содержательный ответ.
Здесь можно немножко помяукать :)
https://radiokot.ru/forum/
не очень вас понял.. я между +5в и землей ставлю делитель и его среднюю точку подаю на 3 ногу (контрастность)... вот и говорю какое там напряжение... где я не прав?Alexeyslav писал(а):А причем тут напряжение? Контраст изменяется РЕЗИСТОРОМ а не напряжением.
спасибо, попробуюAlexeyslav писал(а):Подстроечный резистор поставь на 10кОм, и им регулируй контраст. Переменный там нужен, контраст будет от температуры зависеть.
я преспокойно регулирую контрастность дисплея напряжением, используя ШИМ, сглаженную RC-цепью. Выход RC-фильтра подключен к выводу контрастности дисплея.Alexeyslav писал(а):А причем тут напряжение? Контраст изменяется РЕЗИСТОРОМ а не напряжением.
Код: Выделить всё
// MK pic16f72
// работа с LCD
//------------------------------------------------------------------
#include <pic.h> // подключение хидера, чтобы дать компилятору понять описание ножек контроллера
#include <lcd.h> // подключение хидера функций работы с лсд
#include <delay.h> // при работе используется функции временной задержки DelayMs(5);5 миллисекунд
//DelayUs(200); 200 микросекунд
__CONFIG (XT & WDTDIS & PWRTDIS & BOREN & UNPROTECT); // биты конфигурации программатора
//------------------------------------------------------------------
// объявление функций, используемые в файле------------------------------------------------------------------------------------------
void Podgot(void) // настройка портов и глобальная - прерываний
{
ADCON1 = 0b111; // отключение АЦП, все каналы работают как цифровые
TRISA = 0b111111; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISB = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISC = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
RBPU = 0; // выключить подтягивающие резисторы порта В
PORTA = 0;
//----------------------------------------------------------------
GIE = 1; // разрешены все немаскированные прерывания
PEIE = 1; // разрешены все немаскированные прерывания от переферийных модулей
extern void lcd_init(&PORTB,3,6,0,7,2,1,4); // инициализирует порт для работы LCD, аргументы RS, EN, WR, D7 .. D4
// назначаются линиям порта 3,6,0,7,2,1,4
}
// конец объявления функций, используемые в файле----------------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main ()
{
Podgot(); // настройка портов и таймеров
for(;;)
{
}// end for
}// end main
//-------------------------------------------------------------------------------------------------------
Код: Выделить всё
// объявление функций, используемые в файле------------------------------------------------------------------------------------------
void Podgot(void) // настройка портов и глобальная - прерываний
{
ADCON1 = 0b111; // отключение АЦП, все каналы работают как цифровые
TRISA = 0b111111; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISB = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
TRISC = 0b00000000; // (0/1 - выход/вход, нумерация битов в регистре справо-налево)
RBPU = 0; // выключить подтягивающие резисторы порта В
PORTA = 0;
//----------------------------------------------------------------
GIE = 1; // разрешены все немаскированные прерывания
PEIE = 1; // разрешены все немаскированные прерывания от переферийных модулей
}
extern void lcd_init(&PORTB,3,6,0,7,2,1,4); // инициализирует порт для работы LCD, аргументы RS, EN, WR, D7 .. D4
// назначаются линиям порта 3,6,0,7,2,1,4
// конец объявления функций, используемые в файле----------------------------------------------------------------------------------