-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLCD.C
220 lines (174 loc) · 4.6 KB
/
LCD.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
/*
###############################################################################
File Name : LCD.C
Version : 1.0
Programmer(s) : Unknown
Created : Unknown
Description : LCD Basic Function Implement File
Modified History :
Modified : 2002/03/13
Programmer : Woo Youl Kim
Description : Comment
###############################################################################
*/
/*
###############################################################################
Include Part
###############################################################################
*/
#include <lcd.h>
/*
###############################################################################
Define Part
###############################################################################
*/
#define BUSY 0x80
/*
###############################################################################
Grobal Variable definition Part
###############################################################################
*/
/*
###############################################################################
Local Variable definition Part
###############################################################################
*/
/*
###############################################################################
Function Implementation Part
###############################################################################
*/
/*
Description : Check whether LCD is ready or not
Argument :
Return Value : if ready then 1, otherwise -1
Note :
*/
char LcdReady(void)
{
unsigned char flag;
while( (flag=LcdCommandR) & BUSY)
{
if(flag == 0xFF) return -1;
}
return 1;
}
/*
Description : Erase all of LCD contents
Argument :
Return Value :
Note :
*/
void ClrScr(void)
{
LcdReady();
LcdCommandW = 0x01;
}
/*
Description : Initialize LCD
Argument :
Return Value : If initialization is OK then 1, otherwise -1
Note
*/
char InitLcd(void)
{
if(-1 ==LcdReady()) return -1;
LcdCommandW = 0x38;
LcdReady();
LcdCommandW = 0x0C;
ClrScr();
GotoXY(0,0);
}
/*
Description : Move Cursor to (x Column, y Row)
Argument : x - Column value to move(INPUT),
y - Row value to move(INPUT),
Return Value :
Note : The dimension of Included LCD is 2*16, so Row(Argument y) value could not exceed to 1
*/
void GotoXY(unsigned char x, unsigned char y)
{
LcdReady();
switch(y){
case 0 : LcdCommandW = 0x80 + x; break;
case 1 : LcdCommandW = 0xC0 + x; break;
case 2 : LcdCommandW = 0x94 + x; break;
case 3 : LcdCommandW = 0xD4 + x; break;
}
}
/*
Description : Display character string from current cursor position
Argument : str - Character string to display to LCD(INPUT)
Return Value : Pointer of string to be displayed
Note :
*/
char *Puts(char* str)
{
unsigned char i;
for (i=0; str[i] != '\0'; i++){
LcdReady();
LcdDataW = str[i];
}
return str;
}
/*
Description : Display a character to current cursor position
Argument : ch - A character to display to LCD(INPUT)
Return Value :
Note :
*/
void Putch(char ch)
{
LcdReady();
LcdDataW = ch;
}
/*
###############################################################################
Unused Function Implementation Part
###############################################################################
*/
#ifndef __LCD_UNUSED
/*
Description : Decide shape of cursor
Argument : type - Cursor shape(INPUT)
Return Value :
Note :
*/
void SetCursorType(unsigned char type)
{
LcdReady();
switch(type)
{
//No Cursor
case 0 : LcdCommandW = 0x0C; break;
// Normal Cursor
case 1 : LcdCommandW = 0x0E; break;
// No Cursor | Blink
case 2 : LcdCommandW = 0x0D; break;
// Normal Cursor | Blink
case 3 : LcdCommandW = 0x0F; break;
}
/*
Description : Shift current cursor position to left side or right side
Argument : dir - deside the direction to shift (INPUT)
if dir is not 0 then right Shift, otherwise left shift
Return Value :
Note :
*/
void ShiftCursor(unsigned char dir)
{
LcdReady();
LcdCommandW = (dir ? 0x14: 0x10);
}
/*
Description : Move cursor to first column
Argument :
Return Value :
Note :
*/
void HomeCursor(void)
{
LcdReady();
LcdCommandW = 2;
}
#endif