Du brauchst nur folgenden Code in die rp5plus.inc von hup mit einfügen:
Code:
#define lcd_port 1
#define lcd_rw 12
#define lcd_rs 13
#define lcd_e 14
// ---- LCD Routinen ---
char lcd_param;
char lcd_buf;
// Kommando oder Zeichen an Display senden
void LCD_Write() {
OutByte(lcd_port,lcd_buf|(lcd_param >> 4)); // Hi-Nibble
Toggle(lcd_e);
Toggle(lcd_e);
OutByte(lcd_port,lcd_buf|(lcd_param & 0x0F)); // Lo-Nibble
Toggle(lcd_e);
Toggle(lcd_e);
}
// LCD-Kommando
void LCD_WriteCMD() {
lcd_buf=0x00;
LCD_Write();
}
// Zeichenausgabe
void LCD_WriteChar() {
lcd_buf=32; //&B00100000
LCD_Write();
}
// Nummernausgabe
void LCD_WriteNum() {
lcd_param+=48;
LCD_WriteChar();
}
// Display loeschen
void LCD_Clear() {
lcd_param=0x02; LCD_WriteCMD();
lcd_param=0x01; LCD_WriteCMD();
}
void LCD_Init() {
// alle ports 0
OutByte(lcd_port,0x00);
// 8-Bit-Modus aktivieren
lcd_param=0x38; LCD_WriteCMD();
// mit 8-Bit-Command in 4-Bit-Modus umschalten
OutByte(lcd_port,2); //&B00000010
Toggle(lcd_e);
Toggle(lcd_e);
// ab jetzt 4-Bit-Modus
lcd_param=0x28; LCD_WriteCMD();
lcd_param=0x0C; LCD_WriteCMD();
LCD_Clear();
}
// Zeilenwechsel
void LCD_GotoLine() {
if (lcd_param==1) lcd_param=0x80;
if (lcd_param==2) lcd_param=0xC0;
LCD_WriteCMD();
}
// Ausgabe: Hallo! Mein Name ist RP5!
// Unbedingt beachten, dass vor dem ersten Gebrauch der LCD Funktionen LCD_Init aufgerufen wird!
void LCD_Demo1() {
LCD_Clear();
lcd_param=1; LCD_GotoLine();
lcd_param='H'; LCD_WriteChar();
lcd_param='a'; LCD_WriteChar();
lcd_param='l'; LCD_WriteChar();
lcd_param='l'; LCD_WriteChar();
lcd_param='o'; LCD_WriteChar();
lcd_param='!'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='M'; LCD_WriteChar();
lcd_param='e'; LCD_WriteChar();
lcd_param='i'; LCD_WriteChar();
lcd_param='n'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param=2; LCD_GotoLine();
lcd_param='N'; LCD_WriteChar();
lcd_param='a'; LCD_WriteChar();
lcd_param='m'; LCD_WriteChar();
lcd_param='e'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='i'; LCD_WriteChar();
lcd_param='s'; LCD_WriteChar();
lcd_param='t'; LCD_WriteChar();
lcd_param=' '; LCD_WriteChar();
lcd_param='R'; LCD_WriteChar();
lcd_param='P'; LCD_WriteChar();
lcd_param='5'; LCD_WriteChar();
lcd_param='!'; LCD_WriteChar();
}
Leider werden dadurch noch weitere, wertvolle Register verbraucht.
Lesezeichen