AVR LCD functies.

© Harry Broeders.

Deze pagina is bestemd voor studenten van de Haagse Hogeschool - Academie voor Technology, Innovation & Society Delft.

Liquid Cristal Display.

De AVR STK500 systemen van de opleiding Elektrotechniek aan de Academie voor Technology, Innovation & Society Delft zijn uitgerust met een LCD display. Dit display bevat 2 regels van elk 16 karakters. Deze LCD wordt aangestuurd met een Hitachi HD44780 controller.

lcd.h en lcd.c

Er zijn verschillende functies beschikbaar waarmee de LCD vanuit C aangestuurd kan worden. Deze functies zijn in de file lcd.h gedeclareerd:

void lcd_init(void);                               /* initialize LCD */
void lcd_cls(void);                                /* clear screen and place cursor in home position */
void lcd_home(void);                               /* place cursor in home position (upper left corner) */
void lcd_cursor(bool cursorOn, bool cursorBlinks); /* configure cursor */
void lcd_goto(uint8_t row, uint8_t column);        /* place cursor on row (0..1) and column (0..39) */
uint8_t lcd_get_row(void);                         /* get current cursor row position (0..1) */
uint8_t lcd_get_column(void);                      /* get current cursor column position (0..39) */

void lcd_putc(char c);                             /* write character c */
void lcd_puts(char* s);                            /* write string s */
void lcd_puts_P(const char* PROGMEM s);            /* write string s from program space */

Deze functies zijn gedefinieerd in lcd.c.

Deze functies kunnen bijvoorbeeld als volgt gebruikt worden (lcd_demo.c):

#include <stdio.h>
#include "lcd.h"

int main(void) {
    char buffer[17];
    int i=30000;
    lcd_init();
    lcd_cursor(false, false); /* cursor uit */

    while(i>0) {
        lcd_home();
        lcd_puts("0123456789ABCDEF");
        lcd_goto(1, 0);
        snprintf(buffer, sizeof buffer, "i = %12d", i++);
        lcd_puts(buffer);
    }

    lcd_cls();
    lcd_puts("Hallo");
    lcd_goto(lcd_get_row()+1, lcd_get_column()-1);
    lcd_puts("AVR wereld !");

    while(1);
    return 0;
}

Meer informatie over de snprintf functie kun je vinden in het studiemateriaal dat op blackboard staat (les 5).

Het voorbeeld programma uitvoeren op de ATmega32 op het STK500 bord m.b.v. de JTAGICE mkII.