Maverick83
02.10.2006, 20:48
Hallo Zusammen
Ich versuche gerade ein 4x20 LCD Display mit KS0073 (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=80) an einen ATmega 32 zum laufen zu bringen.
Ich habe im 4-bit Modus D0-D3 mit PB0-PB3 am ATmega angeschlossen.
Nur sind die Leitungen bei mir vertauscht als D0 = PB3 ... D3 = PB0.
Ich versuche mit der Library von Peter Fleury zu arbeiten, ich habe im Header-File folgende angaben gemacht:
#define LCD_PORT PORTB /**< port for the LCD lines */
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN 3 /**< pin for 4bit data bit 0 */
#define LCD_DATA1_PIN 2 /**< pin for 4bit data bit 1 */
#define LCD_DATA2_PIN 1 /**< pin for 4bit data bit 2 */
#define LCD_DATA3_PIN 0 /**< pin for 4bit data bit 3 */
#define LCD_RS_PORT PORTD /**< port for RS line */
#define LCD_RS_PIN 7 /**< pin for RS line */
#define LCD_RW_PORT PORTB /**< port for RW line */
#define LCD_RW_PIN 4 /**< pin for RW line */
#define LCD_E_PORT PORTD /**< port for Enable line */
#define LCD_E_PIN 6 /**< pin for Enable line */
Nun steht ja im lcd.h "LCD_DATA0_PIN 3", gilte dies nun auch für den "LCD_PATA0_PORT"?
oder muss ich das Problem anders lösen?
Denn im Moment habe ich nur schwarze Kästchen auf dem Display und ich weis nicht wieso.
Die Leitungen E,R/W und RS sind richtig angeschlossen.
Mein Programmcode sieht so aus:
int main(void)
{
DDRB=0xff;
DDRD=(1<<PD6)|(1<<PD7);
delay(1000);
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_puts("LCD Test Line 1\n");
lcd_puts("Line 2");
return 0;
}
Das "delay(1000)" hab ich zur Sicherheit hinzugefügt um sicher zugehen dass das Display auch genügen Zeit bekommt.
Kann mir jemand weiterhelfen?
Vielen Dank
Ich versuche gerade ein 4x20 LCD Display mit KS0073 (http://www.shop.robotikhardware.de/shop/catalog/product_info.php?products_id=80) an einen ATmega 32 zum laufen zu bringen.
Ich habe im 4-bit Modus D0-D3 mit PB0-PB3 am ATmega angeschlossen.
Nur sind die Leitungen bei mir vertauscht als D0 = PB3 ... D3 = PB0.
Ich versuche mit der Library von Peter Fleury zu arbeiten, ich habe im Header-File folgende angaben gemacht:
#define LCD_PORT PORTB /**< port for the LCD lines */
#define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */
#define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */
#define LCD_DATA2_PORT LCD_PORT /**< port for 4bit data bit 2 */
#define LCD_DATA3_PORT LCD_PORT /**< port for 4bit data bit 3 */
#define LCD_DATA0_PIN 3 /**< pin for 4bit data bit 0 */
#define LCD_DATA1_PIN 2 /**< pin for 4bit data bit 1 */
#define LCD_DATA2_PIN 1 /**< pin for 4bit data bit 2 */
#define LCD_DATA3_PIN 0 /**< pin for 4bit data bit 3 */
#define LCD_RS_PORT PORTD /**< port for RS line */
#define LCD_RS_PIN 7 /**< pin for RS line */
#define LCD_RW_PORT PORTB /**< port for RW line */
#define LCD_RW_PIN 4 /**< pin for RW line */
#define LCD_E_PORT PORTD /**< port for Enable line */
#define LCD_E_PIN 6 /**< pin for Enable line */
Nun steht ja im lcd.h "LCD_DATA0_PIN 3", gilte dies nun auch für den "LCD_PATA0_PORT"?
oder muss ich das Problem anders lösen?
Denn im Moment habe ich nur schwarze Kästchen auf dem Display und ich weis nicht wieso.
Die Leitungen E,R/W und RS sind richtig angeschlossen.
Mein Programmcode sieht so aus:
int main(void)
{
DDRB=0xff;
DDRD=(1<<PD6)|(1<<PD7);
delay(1000);
lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_puts("LCD Test Line 1\n");
lcd_puts("Line 2");
return 0;
}
Das "delay(1000)" hab ich zur Sicherheit hinzugefügt um sicher zugehen dass das Display auch genügen Zeit bekommt.
Kann mir jemand weiterhelfen?
Vielen Dank