|
Использование ЖК дисплея (LCD)
Использование ЖК дисплея (LCD)
(Example №7)
Этот пример иллюстрирует использование буквенно-цифрового ЖК-дисплея. Функции библиотек существенно позволит упростить эту программу.
В реальном устройстве вместо значения напряжения, например, может быть показана температура.
/*Header******************************************************/
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections
unsigned char ch; //
unsigned int adc_rd; // Объявление переменных
char *text; //
long tlong; //
void main() {
INTCON = 0; // Все прерывания отключены
ANSEL = 0x04; // Вход RA2 настроен как аналоговый вход
TRISA = 0x04;
ANSELH = 0; // Остальные выводы настроены как цифровые
Lcd_Init(); // ЖК-дисплей инициализация
Lcd_Cmd(_LCD_CURSOR_OFF); // LCD команды (курсор выключен)
Lcd_Cmd(_LCD_CLEAR); // LCD команды (очистить LCD)
text = "mikroElektronika"; // Определяем первое сообщение
Lcd_Out(1,1,text); // Запись первого сообщения в первой строке
text = "LCD example"; // Определить второе сообщение
Lcd_Out(2,1,text); // Определяем первое сообщение
ADCON1 = 0x82; // Опорным напряжением является VCC
TRISA = 0xFF; // Все выводы настроены как входы
Delay_ms(2000);
text = "voltage:"; // Определение третьего сообщения
while (1) {
adc_rd = ADC_Read(2); // A/D преобразование. Pin RA2 является входом.
Lcd_Out(2,1,text); // Запись результата во второй строке
tlong = (long)adc_rd * 5000; // Преобразование результата в милливольтах
tlong = tlong / 1023; // 0 .. 1023 -> 0-5000mV
ch = tlong / 1000; // Извлечь вольты (тысячи милливольт)
// из результата
Lcd_Chr(2,9,48+ch); // Запись результата в текстовом формате
Lcd_Chr_CP('.');
ch = (tlong / 100) % 10; // Извлечение сотен милливольт
Lcd_Chr_CP(48+ch); // Записываем результат в текстовом формате
ch = (tlong / 10) % 10; // Извлечение десятков милливольт
Lcd_Chr_CP(48+ch); // Запись результата в текстовом формате
ch = tlong % 10; // Извлечение единиц для милливольт
Lcd_Chr_CP(48+ch); // Запись результата в текстовом формате
Lcd_Chr_CP('V');
Delay_ms(1);
}
}
|
Для того, чтобы этот пример работал правильно, необходимо поставить галочку в следующие библиотеки в Library Manager до компиляции: LCD, ADC.
|
|
|