AVR LCD functies.
© Harry Broeders.
Deze pagina is bestemd voor studenten van de Haagse Hogeschool - TH
Rijswijk/Academie voor Engineering.
Liquid Cristal Display.
De AVR STK500 systemen van de TH Rijswijk/Academie voor Engineering zijn
uitgerust met een LCD display. Dit display bevat 2 regels van elk 16 karakters.
Dit display wordt ook gesimuleerd door AVE AVR Studio
plugins. 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() {
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
hier vinden.
Het voorbeeld programma uitvoeren op de ATmega16 op het STK500 bord m.b.v.
de JTAGICE mkII.
-
Maak een nieuw AVR Studio AVR GCC project lcd_demo.

-
-
Kies JTAGICE mkII en ATmega16.

-
-
Kopieer de inhoud van de file lcd_demo.c in
het edit window.
-
Kopieer de files lcd.c en
lcd.h in het hetzelfde directory.
-
Voeg de file lcd.c toe aan de source files van het
project.

-
-
Vul de juiste CPU klokfrequentie in bij de Project Configuration Options.
De LCD functies maken gebruik van de constante
F_CPU
om een
bepaalde tijd te wachten.

-
-
Build (F7), Start Debugging (Ctrl+Shift+Alt+F5) en Run (F5).
Het voorbeeld programma uitvoeren in de AVR Studio
Simulator m.b.v. de AVE AVR Plugins.
-
Installeer de AVE AVR Plugins als dat nog niet gedaan
is.
-
Maak een nieuw AVR Studio AVR GCC project
lcd_demo_sim.

-
-
Kies AVR Simulator en ATmega16.

-
-
Kopieer de inhoud van de file lcd_demo.c in
het edit window.
-
Kopieer de files lcd.c en
lcd.h in het hetzelfde directory.
-
Voeg de file lcd.c toe aan de source files van het
project.

-
-
Vul de juiste CPU klokfrequentie in bij de Project Configuration Options.
De LCD functies maken gebruik van de constante
F_CPU
om een
bepaalde tijd te wachten. De klokfrequentie van de AVR simulator is 4 MHz.

-
-
Build (F7), en Start Debugging (Ctrl+Shift+Alt+F5).
-
Open het LCD simulatie window.

-
-
Start het programma met de Autostep INTO knop.

-
-
Als je genoeg geduld hebt zie je het LCD window langzaam gevuld
worden.

-
-
Je kunt het programma stoppen door nogmaals op de Autostep INTO knop te klikken.
-
Door een fout in de AVE AVR LCD jplugin krijg je de laatste karakter van
elke regel niet te zien.
Het voorbeeld programma thuis uitvoeren op de
ATmega16 op het EPRO1 bord m.b.v. PonyProg.
-
Maak een nieuw AVR Studio AVR GCC project
lcd_demo_epro1.

-
-
Kies AVR Simulator en ATmega16.

-
-
Kopieer de inhoud van de file lcd_demo.c in
het edit window.
-
Kopieer de files lcd.c en
lcd.h in het hetzelfde directory.
-
Voeg de file lcd.c toe aan de source files van het
project.

-
-
Vul de juiste CPU klokfrequentie in bij de Project Configuration Options.
De LCD functies maken gebruik van de constante
F_CPU
om een
bepaalde tijd te wachten. De klokfrequentie van het EPRO1 bord is 8 MHz.
Let ook op het vinkje bij Create Hex File.

-
-
Build (F7) het programma.
-
Je hebt het programma PonyProg
nodig om het programma thuis in je EPRO1 bord te laden. Dit programma kun
je downloaden van:
http://www.lancos.com/ppwin95.html.
Deze beschrijving is gemaakt voor versie 2.06f voor Windows:
http://www.lancos.com/e2p/V2_06/ponyprogV206f.zip.
-
Installeer het programma PonyProg en start het op.
-
Verbind de seriële programmeer poort van het EPRO1 bord met een
seriële poort van je PC.

-
-
Kies menuoptie: Device > AVR micro > ATmega16
-
Kies menuoptie: Setup > Calibration en klik op Yes.
-
Kies menuoptie: Setup > Interface Setup... en maak de volgende
instellingen (kies zelf de juiste COM poort):

-
-
Je kunt op de verbinding testen met de Probe knop.
-
Kies menuoptie: Command - Security and Configuration Bits... Klik
eerst op Read, maak de onderstaande instellingen en klik dan op Write:

-
-
Kies menuoptie: File > Open Device File... Selecteer het
te laden programma in hex format: lcd_demo_epro1.hex. Dit programma bevindt
zich binnen het projectdirectory in het subdirectory genaamd "default".
-
Kies menuoptie: Command > Write All. Als alles goed is gegaan
start het programma automatisch.