1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 |
|
4 | #define MrLCDsCrib PORTB
|
5 | #define DataDir_MrLCDsCrib DDRB
|
6 | #define MrLCDsControl PORTD
|
7 | #define DataDir_MrLCDsControl DDRD
|
8 | #define LightSwitch 5
|
9 | #define ReadWrite 7
|
10 | #define BiPolarMood 2
|
11 |
|
12 | void Check_IF_MrLCD_isBusy(void);
|
13 | void Peek_A_Boo(void);
|
14 | void Send_A_Command(unsigned char command);
|
15 | void Send_A_Character(unsigned char character);
|
16 | //void Send_A_String(char *string);
|
17 |
|
18 | int main(void)
|
19 | {
|
20 | DataDir_MrLCDsControl |= 1<<LightSwitch | 1<<ReadWrite | 1<<BiPolarMood;
|
21 | _delay_ms(15);
|
22 |
|
23 | Send_A_Command(0x01); //Clear Screen 0x01 = 00000001
|
24 | _delay_ms(2);
|
25 | Send_A_Command(0x38);
|
26 | _delay_us(50);
|
27 | Send_A_Command(0b00001110);
|
28 | _delay_us(50);
|
29 |
|
30 | Send_A_Character(0x4E); //N
|
31 | Send_A_Character(0x65); //e
|
32 | Send_A_Character(0x77); //w
|
33 | Send_A_Character(0x62); //b
|
34 | Send_A_Character(0x69); //i
|
35 | Send_A_Character(0x65); //e
|
36 | Send_A_Character(0x48); //H
|
37 | Send_A_Character(0x61); //a
|
38 | Send_A_Character(0x63); //c
|
39 | Send_A_Character(0x6B); //k
|
40 | Send_A_Character(0x2E); //.
|
41 | Send_A_Character(0x63); //c
|
42 | Send_A_Character(0x6F); //o
|
43 | Send_A_Character(0x6D); //m
|
44 |
|
45 | //Send_A_String("Patrick");
|
46 |
|
47 | while(1)
|
48 | {
|
49 | }
|
50 | }
|
51 |
|
52 | void Check_IF_MrLCD_isBusy()
|
53 | {
|
54 | DataDir_MrLCDsCrib = 0;
|
55 | MrLCDsControl |= 1<<ReadWrite;
|
56 | MrLCDsControl &= ~1<<BiPolarMood;
|
57 |
|
58 | while (MrLCDsCrib >= 0x80)
|
59 | {
|
60 | Peek_A_Boo();
|
61 | }
|
62 | DataDir_MrLCDsCrib = 0xFF; //0xFF means 0b11111111
|
63 | }
|
64 |
|
65 | void Peek_A_Boo()
|
66 | {
|
67 | MrLCDsControl |= 1<<LightSwitch;
|
68 | asm volatile ("nop");
|
69 | asm volatile ("nop");
|
70 | MrLCDsControl &= ~1<<LightSwitch;
|
71 | }
|
72 |
|
73 | void Send_A_Command(unsigned char command)
|
74 | {
|
75 | Check_IF_MrLCD_isBusy();
|
76 | MrLCDsCrib = command;
|
77 | MrLCDsControl &= ~ ((1<<ReadWrite)|(1<<BiPolarMood));
|
78 | Peek_A_Boo();
|
79 | MrLCDsCrib = 0;
|
80 | }
|
81 |
|
82 | void Send_A_Character(unsigned char character)
|
83 | {
|
84 | Check_IF_MrLCD_isBusy();
|
85 | MrLCDsCrib = character;
|
86 | MrLCDsControl &= ~ (1<<ReadWrite);
|
87 | MrLCDsControl |= 1<<BiPolarMood;
|
88 | Peek_A_Boo();
|
89 | MrLCDsCrib = 0;
|
90 | }
|