1 | #include <lpc21xx.h>
|
2 |
|
3 | #define LCD_RS 1 << 16
|
4 | #define LCD_R_W 1 << 17
|
5 | #define LCD_E 1 << 18
|
6 | #define LCD_D4 1 << 19
|
7 | #define LCD_D5 1 << 20
|
8 | #define LCD_D6 1 << 21
|
9 | #define LCD_D7 1 << 22
|
10 |
|
11 | void enable(void);
|
12 | void delay_30ms(void);
|
13 | void delay_1_53ms(void);
|
14 | void delay_39us(void);
|
15 |
|
16 | void main(void)
|
17 | {
|
18 | IODIR1 |= LCD_RS | LCD_R_W | LCD_E | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7; //portbits als output definieren
|
19 |
|
20 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_E | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7; //portbits auf low
|
21 |
|
22 | delay_30ms(); // wait for power on of the lcd
|
23 |
|
24 | //funtion set -> 4-bit mode, 2 rows, 5x7 dots
|
25 | IOSET1 |= LCD_D5;
|
26 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D4 | LCD_D6 | LCD_D7;
|
27 |
|
28 | enable();
|
29 |
|
30 | delay_30ms();
|
31 |
|
32 | enable();
|
33 |
|
34 | delay_30ms();
|
35 |
|
36 | IOSET1 |= LCD_D7;
|
37 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D6;
|
38 |
|
39 | enable();
|
40 |
|
41 | delay_30ms();
|
42 |
|
43 | //display on, cursor on, blink on
|
44 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7;
|
45 |
|
46 | enable();
|
47 |
|
48 | delay_30ms();
|
49 |
|
50 | IOSET1 |= LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7;
|
51 | IOCLR1 |= LCD_RS | LCD_R_W;
|
52 |
|
53 | enable();
|
54 |
|
55 | //clear display
|
56 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7;
|
57 |
|
58 | enable();
|
59 |
|
60 | IOSET1 |= LCD_D4;
|
61 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D5 | LCD_D6 | LCD_D7;
|
62 |
|
63 | IOCLR0 |= 0x800;
|
64 |
|
65 | enable();
|
66 |
|
67 | delay_1_53ms();
|
68 |
|
69 | //entry mode set -> increment mode, entire shoft on
|
70 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D4 | LCD_D5 | LCD_D6 | LCD_D7;
|
71 |
|
72 | enable();
|
73 |
|
74 | IOSET1 |= LCD_D4 | LCD_D5 | LCD_D6;
|
75 | IOCLR1 |= LCD_RS | LCD_R_W | LCD_D7;
|
76 |
|
77 | enable();
|
78 |
|
79 | //write 'A' to the display
|
80 | IOSET1 |= LCD_RS | LCD_D6;
|
81 | IOCLR1 |= LCD_R_W | LCD_D4 | LCD_D5 | LCD_D7;
|
82 |
|
83 | enable();
|
84 |
|
85 | IOSET1 |= LCD_RS | LCD_D4;
|
86 | IOCLR1 |= LCD_R_W | LCD_D5 | LCD_D6 | LCD_D7;
|
87 |
|
88 | enable();
|
89 |
|
90 |
|
91 | while(1);
|
92 | }
|
93 |
|
94 | void enable(void)
|
95 | {
|
96 | delay_39us();
|
97 |
|
98 | IOSET1 |= LCD_E;
|
99 |
|
100 | delay_39us();
|
101 |
|
102 | IOCLR1 |= LCD_E;
|
103 | }
|
104 |
|
105 | void delay_30ms(void)
|
106 | {
|
107 | unsigned int i=0, j=0;
|
108 |
|
109 | for(i=0; i < 250000; i++) //250000
|
110 | j+=1;
|
111 | }
|
112 |
|
113 | void delay_1_53ms(void)
|
114 | {
|
115 | unsigned int i=0, j=0;
|
116 |
|
117 | for(i=0; i < 1500; i++) //1500
|
118 | j+=1;
|
119 | }
|
120 |
|
121 | void delay_39us(void)
|
122 | {
|
123 | unsigned int i=0, j=0;
|
124 |
|
125 | for(i=0; i < 350; i++) //350
|
126 | j+=1;
|
127 | }
|