Rev 2298 Rev 2299
1 //Program pro vyzkouseni funkcnosti modulu s LCD a mikropocitacem ATmega8 1 //Program pro vyzkouseni funkcnosti modulu s LCD a mikropocitacem ATmega8
2 //MLAB 21.11.2011 (JACHO) 2 //MLAB 21.11.2011 (JACHO)
3   3  
4 //vytvoreno v programu AVR studio 4 4 //vytvoreno v programu AVR studio 4
5   5  
-   6 //Propojení pinù modulu s LCD a ATmega8 (jejich nastavení se provádí v lcd.h)
-   7 //PIN_D0 PC3
-   8 //PIN_D1 PB4
-   9 //PIN_D2 PB5
-   10 //PIN_D3 PB3
-   11 //PIN_E PB1
-   12 //PIN_RS PB2
-   13  
6 #include <avr/io.h> 14 #include <avr/io.h>
7 #include <stdio.h> 15 #include <stdio.h>
8 #include <avr/iom8.h> 16 #include <avr/iom8.h>
9 #include "lcd.h" 17 #include "lcd.h"
10 #include "lcd.c" 18 #include "lcd.c"
11 #include <util/delay.h> 19 #include <util/delay.h>
12   20  
13   21  
14 #define MAXDISPLBUFFER 20 //buffer pro lcd display 22 #define MAXDISPLBUFFER 20 //buffer pro lcd display
15   23  
16   24  
17 //----------------------------------------------------------------------------- 25 //-----------------------------------------------------------------------------
18   26  
19 int main(void) 27 int main(void)
20 { 28 {
21 29
22 LCD_init(); //Inicializace LCD 30 LCD_init(); //Inicializace LCD
23   31  
24 char zasobnik[19]; 32 char zasobnik[19];
25   33  
26 sprintf(zasobnik,"LCD je OK"); //vlozi text do zasobnik 34 sprintf(zasobnik,"LCD je OK"); //vlozi text do zasobnik
27 LCD_gotoxy(0,0); //definuje kam se zacne zapisovat na LCD 35 LCD_gotoxy(0,0); //definuje kam se zacne zapisovat na LCD
28 ProcesDispl(zasobnik); 36 ProcesDispl(zasobnik);
29 LCD_gotoxy(0,2); 37 LCD_gotoxy(0,2);
30 ProcesDispl(zasobnik); 38 ProcesDispl(zasobnik);
31 _delay_ms(1); 39 _delay_ms(1);
32   40  
33   41  
34 return 0; 42 return 0;
35   43  
36   44  
37   45  
38 } 46 }
39   47  
40 void ProcesDispl(char *data) //zajišuje tisk øetìzce na lcd 48 void ProcesDispl(char *data) //zajišuje tisk øetìzce na lcd
41 { 49 {
42 uint8_t a,b; 50 uint8_t a,b;
43   51  
44 for (a=0;a<MAXDISPLBUFFER;a++) 52 for (a=0;a<MAXDISPLBUFFER;a++)
45 { 53 {
46 switch (*(data+a)) 54 switch (*(data+a))
47 { 55 {
48 case 0: *data = 0;return; 56 case 0: *data = 0;return;
49 case '\n': LCD_gotoxy(1,2);break; //posun na druhej øádek 57 case '\n': LCD_gotoxy(1,2);break; //posun na druhej øádek
50 case '\r': LCD_gotoxy(1,1);break; 58 case '\r': LCD_gotoxy(1,1);break;
51 case '\a': LCD_gotoxy(6,2);break; //posun na 2.øádek 6.políèko 59 case '\a': LCD_gotoxy(6,2);break; //posun na 2.øádek 6.políèko
52 case '\f': LCD_gotoxy(1,1); 60 case '\f': LCD_gotoxy(1,1);
53 for (b=0;b<8;b++) LCD_putc(0x20); 61 for (b=0;b<8;b++) LCD_putc(0x20);
54 LCD_gotoxy(1,2); 62 LCD_gotoxy(1,2);
55 for (b=0;b<8;b++) LCD_putc(0x20); 63 for (b=0;b<8;b++) LCD_putc(0x20);
56 LCD_gotoxy(1,1); 64 LCD_gotoxy(1,1);
57 break; 65 break;
58 default : LCD_putc(*(data+a)); 66 default : LCD_putc(*(data+a));
59 } 67 }
60 } 68 }
61 *data = 0; 69 *data = 0;
62 } 70 }