Guten Nabend Liebe Gemeinde ich versuch nun in C ein LCD 2x16
anzusteuern was aber irgendwie nicht hinn haut ...... unter ASM hatte
das damals Funktioniert nun hab ich fast den selben Code in C
geschrieben aber das Zeichen T wird nicht auf dem LCD ausgegeben.
LCD ist wie folgt angeschlossen
PORTD 7-0 an DB 7 - 0
PORTB 0 E und 1 an RS
RW auf Masse
1 | #include <avr/io.h>
|
2 | #ifndef F_CPU
|
3 | #warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
|
4 | #define F_CPU 1000000
|
5 | #endif
|
6 | #include <util/delay.h>
|
7 |
|
8 | void enns(void) // Einstellungen Senden
|
9 | {
|
10 | PORTB = 0b00000001;
|
11 | _delay_us(5);
|
12 | PORTB = 0b00000000;
|
13 | }
|
14 |
|
15 | void ennt(void) // Text Senden
|
16 | {
|
17 | PORTB = 0b00000011;
|
18 | _delay_us(5);
|
19 | PORTB = 0b00000000;
|
20 | }
|
21 |
|
22 | int main(void)
|
23 | {
|
24 | DDRB = 0xff;
|
25 | DDRD = 0xff;
|
26 | {
|
27 | _delay_ms(15);
|
28 | PORTD = 0b00110000; //1
|
29 | enns();
|
30 | PORTD = 0b00000000;
|
31 |
|
32 | _delay_ms(5);
|
33 | PORTD = 0b00110000; //2
|
34 | enns();
|
35 | PORTD = 0b00000000;
|
36 |
|
37 | _delay_us(120);
|
38 | PORTD = 0b00110000; //3
|
39 | enns();
|
40 | PORTD = 0b00000000;
|
41 |
|
42 | _delay_us(120);
|
43 | PORTD = 0b00110000; //4
|
44 | enns();
|
45 | PORTD = 0b00000000;
|
46 |
|
47 | _delay_us(120);
|
48 | PORTD = 0b00111000; //5
|
49 | enns();
|
50 | PORTD = 0b00000000;
|
51 |
|
52 | _delay_us(120);
|
53 | PORTD = 0b00001000; //6
|
54 | enns();
|
55 | PORTD = 0b00000000;
|
56 |
|
57 | _delay_us(120);
|
58 | PORTD = 0b00000001; //7
|
59 | enns();
|
60 | PORTD = 0b00000000;
|
61 |
|
62 | _delay_us(120);
|
63 | PORTD = 0b00000110; //8
|
64 | enns();
|
65 | PORTD = 0b00000000;
|
66 |
|
67 | _delay_us(120);
|
68 | PORTD = 0b00001100; //9
|
69 | enns();
|
70 | PORTD = 0b00000000;
|
71 |
|
72 | _delay_us(120);
|
73 | PORTD = 'T';
|
74 | ennt();
|
75 | PORTD = 0x00;
|
76 |
|
77 |
|
78 | }
|
79 |
|
80 | while(1);
|
81 | }
|