Фаліштинський / Лабораторна робота №4
.pdfМіністерство науки і освіти України
Технічний коледж національного університету
«Львівська політехніка»
ЗВІТ
з лабораторної роботи №4
Дослідження роботи LCD індикатора HD44780 у віртуальному середовищі Proteus
Виконав: студент групи 31-КІ
ФАЛІШТИНСЬКИЙ О. І.
Прийняв:
Терехов В. В.
Львів - 2020
Мета: Приєднання рідкокристалічного індикатора (HD44780) до мікроконтролерів AVR
#include <avr/io.h> #include <util/delay.h> #define RS PC0 #define EN PC2
void lcd_com(unsigned char p)
{
PORTC &= ~(1 << RS); PORTC |= (1 << EN);
PORTD &= 0x0F; PORTD |= (p & 0xF0); _delay_us(100);
PORTC &= ~(1 << EN); _delay_us(100); PORTC |= (1 << EN);
PORTD &= 0x0F; PORTD |= (p << 4); _delay_us(100);
PORTC &= ~(1 << EN); _delay_us(100);
}
void lcd_dat(unsigned char p)
{
PORTC |= (1 << RS)|(1 << EN);
PORTD &= 0x0F; PORTD |= (p & 0xF0); _delay_us(100);
PORTC &= ~(1 << EN); _delay_us(100); PORTC |= (1 << EN);
PORTD &= 0x0F; PORTD |= (p << 4); _delay_us(100);
PORTC &= ~(1 << EN); _delay_us(100);
}
void lcd_init(void)
{
DDRC |= (1 << PC2)|(1 << PC0);
PORTC = 0x00;
DDRD = 0xFF; PORTD = 0x00; _delay_ms(50); PORTD |= (1 << PD5);
PORTD &= ~(1 << PD4);
PORTC |= (1 << EN);
PORTC &= ~(1 << EN); _delay_ms(5); lcd_com(0x28); lcd_com(0x08); lcd_com(0x01); _delay_us(100); lcd_com(0x06); _delay_ms(10); lcd_com(0x0C);
}
int main (void)
{
unsigned char znak = 0; lcd_init();
while(1)
{
lcd_com(0x80); lcd_dat(znak/100 +'0'); lcd_dat((znak/10)%10 +'0'); lcd_dat(znak%10 +'0'); lcd_dat('=');
lcd_dat(znak); _delay_ms(100);
znak++;
}
}
Висновок: В даній лабораторній роботі я навчився приєднувати рідко кристалічні індикатори до мікроконтролерів AVR, та застосовувати їх на практиці.