Servus, ich habe mir bei Pollin dieses LCD bestellt: LCD-Modul TC1604A-01 http://www.pollin.de/shop/dt/MTczOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TC1604A_01.html Leider bringe ich es nicht zum laufen und benötige eure Hilfe. aktueller Stand: ---------------- Die Hintergrundbeleuchtung funktioniert nach dem einschalten von PA5. Kurz nach dem Start zeigt das Display in der ersten und zweiten Zeile jeweils 8 schwarze Felder an. Diese verschwinden nach ein paar Sekunden wieder und das Display ist dann "leer". Verwendete Library: ------------------- Peter Dannegger - http://www.mikrocontroller.net/attachment/30300/lcd_drv.zip main.h ------
1 | #ifndef F_CPU
|
2 | #define F_CPU 16000000UL
|
3 | #endif
|
4 | |
5 | #include <avr/io.h> |
6 | #include <avr/interrupt.h> |
7 | #include <util/delay.h> |
8 | #include "defs.h" |
9 | |
10 | #define LCD_D4 SBIT( PORTC, 4 )
|
11 | #define LCD_DDR_D4 SBIT( DDRC, 4 )
|
12 | |
13 | #define LCD_D5 SBIT( PORTC, 5 )
|
14 | #define LCD_DDR_D5 SBIT( DDRC, 5 )
|
15 | |
16 | #define LCD_D6 SBIT( PORTC, 6 )
|
17 | #define LCD_DDR_D6 SBIT( DDRC, 6 )
|
18 | |
19 | #define LCD_D7 SBIT( PORTC, 7 )
|
20 | #define LCD_DDR_D7 SBIT( DDRC, 7 )
|
21 | |
22 | #define LCD_RS SBIT( PORTA, 6 )
|
23 | #define LCD_DDR_RS SBIT( DDRA, 6 )
|
24 | |
25 | #define LCD_E0 SBIT( PORTA, 7 )
|
26 | #define LCD_DDR_E0 SBIT( DDRA, 7 )
|
main.c ------
1 | #include "main.h" |
2 | |
3 | #define TRIGGER PC0
|
4 | #define FOCUS PD7
|
5 | #define LED1 PD3
|
6 | #define LED2 PD4
|
7 | #define LED3 PD5
|
8 | #define LED4 PD6
|
9 | #define BACKLIGHT PA4
|
10 | #define LCD_POWER PA5
|
11 | |
12 | int main(void) |
13 | {
|
14 | // Display initialisieren
|
15 | lcd_init(); |
16 | |
17 | /*
|
18 | * Timer 1
|
19 | * 16-Bit
|
20 | * CTC-Mode
|
21 | * f = 1Hz
|
22 | */
|
23 | TCCR1B |= (1 << WGM12); |
24 | TIMSK |= (1 << OCIE1A); |
25 | OCR1A = 15625-1; |
26 | TCCR1B |= ((1 << CS10) | (1 << CS12)); |
27 | |
28 | // Auslöser an PC0
|
29 | DDRC |= (1 << DDRC0); |
30 | |
31 | // Focus an PD7
|
32 | DDRD |= (1 << DDRD7); |
33 | |
34 | // LEDS
|
35 | DDRD |= (1 << DDRD3); |
36 | DDRD |= (1 << DDRD4); |
37 | DDRD |= (1 << DDRD5); |
38 | DDRD |= (1 << DDRD6); |
39 | |
40 | // LCD
|
41 | DDRA |= (1 << DDRA4); // Backlight |
42 | DDRA |= (1 << DDRD5); // LCD Power |
43 | |
44 | // lcd einschalten
|
45 | PORTA |= (1 << LCD_POWER); |
46 | |
47 | sei(); |
48 | lcd_pos( 0, 1 ); |
49 | lcd_text( (u8*)"Zeile 1" ); |
50 | |
51 | while(1) |
52 | {
|
53 | PORTD ^= ( 1 << LED1 ); |
54 | PORTD ^= ( 1 << LED2 ); |
55 | PORTD ^= ( 1 << LED3 ); |
56 | PORTD ^= ( 1 << LED4 ); |
57 | _delay_ms(100); |
58 | }
|
59 | }
|
60 | |
61 | ISR (TIMER1_COMPA_vect) |
62 | {
|
63 | PORTC ^= ( 1 << TRIGGER ); |
64 | }
|
Hat jemand nen Tipp für mich? VG Willy