testlcdisplay.c


1
// LCD Test V0.1 / 6.2008
2
3
4
// ###############  Includes  #################
5
#include <avr/io.h>
6
#include <stdio.h>
7
#include <stdint.h>
8
#include <string.h>
9
#include "display.h"
10
#include <util/delay.h>
11
12
13
// ###############  Globals  #################
14
15
16
17
18
19
20
21
22
23
24
int main(void)
25
{
26
27
char Buffer[15];
28
29
// ###############  Variablen  #################
30
31
   int min=0, st=0, sec=0;
32
   char  uhr[10];
33
34
// ###############  Definitions  ################# 
35
36
    DDRD = 0xFF; //PORT D als Ausgang  (für usart)
37
38
    PORTD |= (1 << 6);    /* setzt Bit 0 an PortD auf 1 */
39
    PORTD |= (1 << 7);    /* setzt Bit 1 an PortD auf 1 */
40
    PORTD |= (1 << 2);    /* setzt Bit 1 an PortD auf 1 */
41
42
43
44
    lcd_init();    // LCD Initialisieren
45
    USART_init(); // USART Initialisieren
46
 
47
    
48
49
    lcd_clear();
50
    lcd_string("    Testprogramm");
51
52
    set_cursor(0,2);
53
 
54
    lcd_string("Ihre Eingabe bitte!"); 
55
56
    uart_puts("Willkommen bei Testprogramm. (Für Hilfe bitte \"help\" eingeben)\n");
57
     
58
 
59
    while(1){
60
   
61
   uart_gets(Buffer, 15);
62
  
63
64
     if(!strcmp(Buffer,"usart"))   {  
65
66
       lcd_clear();
67
68
         lcd_string("Schreibmod. v. USART");
69
70
         set_cursor(0,2);
71
72
     uart_gets(Buffer, 15);
73
74
     while(strcmp(Buffer,"exit")){
75
      
76
           if(!strcmp(Buffer,"clear"))   {  // Für löschen des Bildschirms
77
             
78
           lcd_clear();
79
80
             lcd_string("Schreibmod. v. USART");
81
82
             set_cursor(0,2);
83
84
       }else{
85
86
         lcd_string(Buffer);
87
88
       }
89
       uart_gets(Buffer, 15);
90
       
91
     }
92
     
93
       lcd_clear();
94
       lcd_string("    Testprogramm");
95
96
       set_cursor(0,2);
97
 
98
       lcd_string("Ihre Eingabe bitte!"); 
99
      
100
     }else if(!strcmp(Buffer,"timer")){
101
102
         lcd_clear();
103
         lcd_string("       Timer");
104
105
         set_cursor(0,2);
106
 
107
         lcd_string("Ihre Eingabe bitte!"); 
108
     
109
            
110
     }else if(!strcmp(Buffer,"uhr")){
111
112
       lcd_clear();
113
114
         lcd_string("   Uhrzeitanzeige");
115
116
         set_cursor(0,2);
117
118
     uart_puts("Stunde\n");
119
     while (!(UCSRA & (1<<RXC)));   // warten bis Zeichen verfuegbar
120
121
     st=UDR;
122
     while (!(UCSRA & (1<<RXC)));   // warten bis Zeichen verfuegbar(Enter unterdrücken)     
123
124
     uart_puts("Minuten\n");
125
     while (!(UCSRA & (1<<RXC)));   // warten bis Zeichen verfuegbar
126
     min=UDR;
127
     while (!(UCSRA & (1<<RXC)));   // warten bis Zeichen verfuegbar(Enter unterdrücken)
128
129
     uart_puts("Sekunden\n");
130
         while (!(UCSRA & (1<<RXC)));   // warten bis Zeichen verfuegbar
131
     sec=UDR;
132
     while (!(UCSRA & (1<<RXC)));   // warten bis Zeichen verfuegbar(Enter unterdrücken)
133
134
     
135
136
       while (!UCSRA & (1<<RXC)){
137
138
       uhren:
139
140
       sec++;
141
142
       if(sec>=60){
143
        sec=0;
144
       min++;
145
146
       if(min>=60){
147
         min=0;
148
         st++;
149
         
150
         if(st>=24){
151
         st=0;
152
         }
153
       }
154
       }
155
156
     if(st<10){
157
       sprintf(uhr,"0%d",st);
158
     }else{
159
       sprintf(uhr,"%d",st);
160
     }
161
162
163
     if(min<10){
164
       sprintf(uhr,"%s:0%d",uhr,min);
165
     }else{
166
       sprintf(uhr,"%s:%d",uhr,min);
167
     }
168
169
     if(sec<10){
170
       sprintf(uhr,"%s:0%d",uhr,sec);
171
     }else{
172
       sprintf(uhr,"%s:%d",uhr,sec);
173
     }
174
175
     set_cursor(0,2);
176
     lcd_string("      ");
177
       lcd_string(uhr);
178
     _delay_ms(998);
179
     }
180
181
    if(UDR != 0x78) goto uhren;
182
183
          lcd_clear();
184
          lcd_string("    Testprogramm");
185
186
          set_cursor(0,2);
187
 
188
          lcd_string("Ihre Eingabe bitte!"); 
189
190
     }else if(!strcmp(Buffer,"help")){
191
        uart_puts("Hilfe:\n\n");
192
        uart_puts("Befehl:  Beschreibung:\n\n");
193
    uart_puts("uhr      Anzeige der Uhrzeit.\n");
194
    uart_puts("usart    Anzeige der kommenden Zeichen im Display.\n");
195
    uart_puts("help     Anzeige dieser Hilfe hier.\n");
196
    uart_puts("exit     Durch Eingabe von \"exit\" verlassen Sie einen Programmbereich.\n");
197
    uart_puts("clear    Für Löschen des Bildschirms.\n");
198
    uart_puts("time    Für Timefunktionstest.\n");
199
     }else{
200
201
       uart_puts("Eingabe unbekannt.\n");
202
203
     }
204
    }
205
 
206
    return 0;
207
}