Лр7-2
.docx
Лабораторна робота №7
Тема: Підключення до AVR LSD дисплея HD44780.
Лістинг програми:
#include <mega8.h>
#asm
.equ __lcd_port=0x12
#endasm
#include <lcd.h>
#include <delay.h>
#define pause delay_ms(100)
typedef unsigned char byte;
flash byte char0[8]={
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00001 };
flash byte char1[8]={
0b00001,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000, };
flash byte char2[8]={
0b00001,
0b00101,
0b00011,
0b01001,
0b00101,
0b10011,
0b11111 };
flash byte char3[8]={
0b11111,
0b10011,
0b00101,
0b01001,
0b00011,
0b00101,
0b00001 };
flash byte char4[8]={
0b10000,
0b10100,
0b11000,
0b10010,
0b10100,
0b11001,
0b11111 };
flash byte char5[8]={
0b11111,
0b11001,
0b10100,
0b10010,
0b11000,
0b10100,
0b10000 };
flash byte char6[8]={
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b10000 };
flash byte char7[8]={
0b10000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000 };
void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3)|0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}
void avr_init(void)
{
PORTD=0x00;
DDRD=0xff;
}
void main(void)
{
avr_init();
lcd_init(16);
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
lcd_gotoxy(0,0);
lcd_putchar(0x00);
lcd_gotoxy(0,1);
lcd_putchar(0x01);
lcd_gotoxy(1,0);
lcd_putchar(0x02);
lcd_gotoxy(1,1);
lcd_putchar(0x03);
lcd_gotoxy(2,0);
lcd_putchar(0x04);
lcd_gotoxy(2,1);
lcd_putchar(0x05);
lcd_gotoxy(3,0);
lcd_putchar(0x06);
lcd_gotoxy(3,1);
lcd_putchar(0x07);
}
Рисунок 1 – Виконання програми