Hallo Leute, ich bin total am verzweifeln... Seit gestern mmorgen versuche ich intensivst mein Display zum Laufen zu kriegen (Display: http://www.pollin.de/shop/downloads/D120420D.PDF) Die Beschaltung ist folgender Maßen: DB4 - DB7: PC0 - PC3 RS: PC4 E: PC5 RW: GND Ich habe mir nun folgenden Code zusammenkopiert und abgeändert ( Ja ich bin ein Anfänger) und komm nicht drauf, warum es nicht funktioniert. Nach der Initialisierung und lcd_clear sollte das Display ja nichts anzeigen. (Blincken und Cursor aus siehe Code). Jedoch zeigt das Display (2x16) in der ersten Zeile nur schwarze Balken an... Ist in dem Code was falsch oder meint ihr das Display ist hinüber ( was garnicht schlecht wäre, dann könnte ich meine seit gestern angestaute Wut an ihm auslassen) Code:
1 | #include <util/delay.h> |
2 | #include <lcd.h> |
3 | |
4 | void long_delay(int ms) { |
5 | for(; ms>0; ms--) _delay_ms(1); |
6 | }
|
7 | |
8 | |
9 | |
10 | void lcd_init (void) |
11 | |
12 | {
|
13 | |
14 | DDRC = 0xff; |
15 | |
16 | |
17 | long_delay(100); |
18 | PORTC =3; |
19 | unsigned int a = 0; |
20 | |
21 | while(a < 3){ |
22 | long_delay(10); |
23 | PORTC |= (1<<PC5); |
24 | long_delay(10); |
25 | PORTC &= ~(1<<PC5); |
26 | a++; |
27 | }
|
28 | |
29 | long_delay(10); |
30 | |
31 | PORTC = 2; |
32 | long_delay(10); |
33 | PORTC |= (1<<PC5); |
34 | long_delay(10); |
35 | PORTC &= ~(1<<PC5); |
36 | long_delay(10); |
37 | |
38 | lcd_write(40,0); |
39 | |
40 | lcd_write(12,0); |
41 | |
42 | lcd_write(4,0); |
43 | |
44 | |
45 | }
|
46 | |
47 | |
48 | void lcd_write (char Data,char CD) |
49 | |
50 | {
|
51 | |
52 | //Soll ins Seuer oder Datenregister geschrieben werden?
|
53 | if (CD == 0) |
54 | {
|
55 | LCD_Port_Write &=~ (1<<PC4); //RS = 0 Steuerregister |
56 | }
|
57 | else
|
58 | {
|
59 | LCD_Port_Write |= (1<<PC4); //RS = 1 Dataregister |
60 | }
|
61 | |
62 | |
63 | |
64 | //Schreiben der 1. 4Bit an das LCD Display
|
65 | LCD_Port_Write = (LCD_Port_Write&0xF0) + ((Data&0xF0)>>4); |
66 | LCD_Port_Write |= (1<<PC5); |
67 | long_delay(10); |
68 | LCD_Port_Write &=~ (1<<PC5); |
69 | |
70 | //Schreiben der 2. 4Bit an das LCD Display
|
71 | LCD_Port_Write = (LCD_Port_Write&0xF0) + (Data&0x0F); |
72 | LCD_Port_Write |= (1<<PC5); |
73 | long_delay(10); |
74 | LCD_Port_Write &=~ (1<<PC5); |
75 | }
|
76 | |
77 | |
78 | |
79 | |
80 | |
81 | void lcd_clear (void) |
82 | {
|
83 | lcd_write (1,0); //Clear Display |
84 | lcd_write (0x80,0); //Set DD-Ram Adresse = 0 |
85 | }
|
86 | |
87 | |
88 | int main(void){ |
89 | |
90 | long_delay(100); |
91 | lcd_init(); |
92 | long_delay(100); |
93 | lcd_clear(); |
94 | |
95 | while(1){ |
96 | }
|
97 | |
98 | }
|