Лабораторна робота №4
.docx
Міністерство науки і освіти України
Технічний коледж національного університету
«Львівська політехніка»
ЗВІТ
з лабораторної роботи №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, та застосовувати їх на практиці.