vielen dank, habs gleich in die tat umgesetzt, funzt jedoch immer noch nicht.
das programm sieht jetzt so aus:
Code:
(definitionen......)
//Prototypen
void delay_ms(unsigned int);
void io_init(void);
//LCD
void lcd_data(unsigned char);
void lcd_command(unsigned char);
void lcd_enable(void);
void lcd_init(void);
void lcd_clear(void);
//
//
void main(void) {
ioinit();
lcd_init();
lcd_data("T");
lcd_data("e");
lcd_data("s");
lcd_data("t");
while(1);
}
// Initialisierung
void ioinit(void){//0EINGANG 1AUSGANG
DDRD=0b11100011;
DDRB=0b00111111;
}
void delay_ms(unsigned int ms){
unsigned int zaehler;
while (ms) {
zaehler = F_CPU / 5000;
while (zaehler) {
asm volatile("nop");
zaehler--;
}
ms--;
}
}
void lcd_init(){
LCD_PORT=0xFF;
delay_ms(31);
LCD_PORT=0b00000011;//zur initialisierung
lcd_enable();
delay_ms(5);
lcd_enable();
delay_ms(5);
lcd_enable();
delay_ms(5);
lcd_command(0b00000010);//4bit
lcd_enable();
delay_ms(5);
lcd_command(0b00101000);//4bit,2Zeilen
delay_ms(5);
lcd_command(0b00001100);//Display on, Cursor off
delay_ms(5);
lcd_command(0b00000100);
}
void lcd_enable(){
LCD_PORT |= (1 << LCD_E);//1
delay_ms(1);
LCD_PORT &=~(1 << LCD_E);//0
delay_ms(1);
}
void lcd_data(unsigned char data){
unsigned char nibble;
nibble=data>>4; //ersatz für "swap"
LCD_PORT=nibble&00001111;
LCD_PORT |= (1 << LCD_RS);//1
lcd_enable();
LCD_PORT=data&00001111;
LCD_PORT |= (1 << LCD_RS);//1
lcd_enable();
delay_ms(1);
}
void lcd_command(unsigned char data){
unsigned char nibble;
nibble=data>>4;
LCD_PORT=nibble&00001111;
lcd_enable();
LCD_PORT=data&00001111;
lcd_enable();
delay_ms(1);
}
wenn ich das programm auf den mega32 lade, kommt nur mist raus.
beim compilen kommen diese warnings hier :
ZumExperimentieren.c:44: warning: passing argument 1 of 'lcd_data' makes integer from pointer without a cast
ZumExperimentieren.c:45: warning: passing argument 1 of 'lcd_data'
......
was bedeutet das ???
mfg maddin
Lesezeichen