1
//==============================================================
2
//12232.h
3
//==============================================================
4
#ifndef __12232Driver_H
5
#define __12232Driver_H
6
void LCD_Init(void);
7
void LCD_Reset(void);
8
void LCD_FillAll(void);
9
void LCD_ClearAll(void);
10
void LCD_WriteCmd(unsigned char cmd);
11
void LCD_WriteCmd1(unsigned char cmd);
12
void LCD_WriteCmd2(unsigned char cmd);
13
void LCD_SetColumn(unsigned char column);
14
void LCD_SetColumn1(unsigned char column);
15
void LCD_SetColumn2(unsigned char column);
16
void LCD_SetPage(unsigned char page);
17
void LCD_SetPage1(unsigned char page);
18
void LCD_SetPage2(unsigned char page);
19
void LCD_WriteData(unsigned char d);
20
void LCD_WriteData1(unsigned char d);
21
void LCD_WriteData2(unsigned char d);
22
unsigned char LCD_ReadData1(void);
23
unsigned char LCD_ReadData2(void);
24
#endif
25
26
//==============================================================
27
//12232Driver.c
28
//==============================================================
29
#include <reg51.h>
30
#include "12232Driver.h"
31
//#include <intrins.h>
32
33
sbit E1=P3^4;
34
sbit E2=P3^5;
35
sbit A0=P3^7;
36
sbit RST=P3^2;
37
sbit RW=P3^6;
38
39
#define LCD_DISPLAY_ON 0xAF
40
#define LCD_DISPLAY_OFF 0xAE
41
#define LCD_START_LINE_0 0xC0 //Set Start Line 0
42
#define LCD_DRIVER_NORMAL 0xA4 //Normal display operation
43
#define LCD_DRIVER_STATIC 0xA5 //Power Save
44
#define LCD_DUTY_32 0xA9
45
#define LCD_DUTY_16 0xA8
46
#define LCD_RIGHTWARD_OUTPUT 0xA0
47
#define LCD_LEFTWARD_OUTPUT 0xA1
48
#define LCD_RESET 0xE3
49
#define LCD_PAGE_0 0xB8
50
#define LCD_RMW 0xE0
51
#define LCD_END 0xEE
52
#define uchar unsigned char
53
//LCD Controller Display and Control Functions
54
55
void LCD_Init(void)
56

{
57
//E1=0;
58
//E2=0;
59
//Reset
60
RST=0;
61
RST=1;
62
LCD_WriteCmd(LCD_DISPLAY_ON); //Display On
63
LCD_WriteCmd(LCD_START_LINE_0); //Start = 0
64
LCD_WriteCmd(LCD_DRIVER_NORMAL); //Driver
65
LCD_WriteCmd(LCD_DUTY_32); //Duty 32
66
LCD_WriteCmd(LCD_RIGHTWARD_OUTPUT); //ADC
67
LCD_WriteCmd(LCD_RESET); //Reset
68
LCD_Reset();
69
}
70
71
void LCD_Reset(void)
72

{
73
LCD_WriteCmd(LCD_RESET);
74
}
75
76
void LCD_FillAll(void)
77

{
78
uchar page,y;
79
LCD_WriteCmd(LCD_RMW);
80
for(page=0;page<4;page++)
81
{
82
LCD_SetPage(page);
83
LCD_SetColumn(0);
84
for(y=0;y<61;y++)
85
{
86
LCD_WriteData(0xFF);
87
}
88
LCD_WriteCmd(LCD_END);
89
}
90
}
91
92
void LCD_ClearAll(void)
93

{
94
uchar page,y;
95
LCD_WriteCmd(LCD_RMW);
96
for(page=0;page<4;page++)
97
{
98
LCD_SetPage(page);
99
LCD_SetColumn(0);
100
for(y=0;y<61;y++)
101
{
102
LCD_WriteData(0);
103
}
104
LCD_WriteCmd(LCD_END);
105
}
106
}
107
108
109
void LCD_WriteCmd(unsigned char cmd)
110

{
111
LCD_WriteCmd1(cmd);
112
LCD_WriteCmd2(cmd);
113
return;
114
}
115
116
void LCD_WriteCmd1(unsigned char cmd)
117

{
118
RW=0;
119
E1=0;
120
A0=0;
121
P1=cmd;
122
E1=1;
123
E1=0;
124
return;
125
}
126
127
void LCD_WriteCmd2(unsigned char cmd)
128

{
129
RW=0;
130
E2=0;
131
A0=0;
132
P1=cmd;
133
E2=1;
134
E2=0;
135
return;
136
}
137
138
void LCD_WriteData(unsigned char d)
139

{
140
LCD_WriteData1(d);
141
LCD_WriteData2(d);
142
return ;
143
}
144
145
void LCD_WriteData1(unsigned char d)
146

{
147
RW=0;
148
E1=0;
149
A0=1;
150
P1=d;
151
E1=1;
152
E1=0;
153
return;
154
}
155
156
void LCD_WriteData2(unsigned char d)
157

{
158
RW=0;
159
E2=0;
160
A0=1;
161
P1=d;
162
E2=1;
163
E2=0;
164
return;
165
}
166
167
void LCD_SetColumn(unsigned char d)
168

{
169
LCD_SetColumn1(d);
170
LCD_SetColumn2(d);
171
return;
172
}
173
void LCD_SetColumn1(unsigned char d)
174

{
175
LCD_WriteCmd1(d);
176
return;
177
}
178
179
void LCD_SetColumn2(unsigned char d)
180

{
181
LCD_WriteCmd2(d);
182
return;
183
}
184
185
void LCD_SetPage(unsigned char page)
186

{
187
LCD_SetPage1(page);
188
LCD_SetPage2(page);
189
return;
190
}
191
void LCD_SetPage1(unsigned char page)
192

{
193
page=page%4;
194
LCD_WriteCmd1(LCD_PAGE_0+page); //0x5C
195
return;
196
}
197
198
void LCD_SetPage2(unsigned char page)
199

{
200
page=page%4;
201
LCD_WriteCmd2(LCD_PAGE_0+page); //0x5C
202
return;
203
}
204
205
unsigned char LCD_ReadData1(void)
206

{
207
unsigned char d=0;
208
RW=1;
209
E1=0;
210
A0=1;
211
P1=0xFF;
212
E1=1;
213
d=P1;
214
E1=0;
215
return d;
216
}
217
218
unsigned char LCD_ReadData2(void)
219

{
220
unsigned char d=0;
221
RW=1;
222
E2=0;
223
A0=1;
224
P1=0xFF;
225
E2=1;
226
d=P1;
227
E2=0;
228
return d;
229
}

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

221

222

223

224

225

226

227

228

229
