📄 cgm12864b.lst
字号:
172 /*-- 文字: 字 --*/
173 char code Zi[]=
174 {
175 0x00,0x00,0x10,0x0C,0x14,0x14,0x14,0x15,0xD6,0x54,0x34,0x14,0x14,0x8C,0x00,0x00,
176 0x00,0x01,0x01,0x01,0x01,0x01,0x11,0x21,0x1F,0x01,0x01,0x01,0x01,0x01,0x01,0x00,
177 };
178 //-------------------------------------------------------------------------
179 //函数名称: void LCD_WaitReady1(void)
C51 COMPILER V7.05 CGM12864B 02/14/2006 09:35:46 PAGE 4
180 //函数功能: 判断LCD是否处于忙状态
181 //入口参数: 无
182 //出口参数: 无
183 //全局变量引用: 无
184 //调用模块: _nop_();
185 //----------------------------------------------------------------------
186 void LCD_WaitReady1(void) //判断LCD控制芯片KS0108是否忙
187 {
188 1 LCD_DATA=0xff;
189 1 _nop_();
190 1 LCD_CS2=SELECTCS;
191 1 LCD_RW=1;
192 1 LCD_RS=0;
193 1 LCD_E=1;
194 1 while (LCD_DATA&0x80);
195 1 LCD_CS2=!SELECTCS;
196 1 }
197 //-------------------------------------------------------------------------
198 //函数名称: void LCD_WaitReady2(void)
199 //函数功能: 判断LCD是否处于忙状态
200 //入口参数: 无
201 //出口参数: 无
202 //全局变量引用: 无
203 //调用模块: _nop_();
204 //----------------------------------------------------------------------
205
206 void LCD_WaitReady2(void)
207 {
208 1 LCD_DATA=0xff;
209 1 _nop_();
210 1 LCD_CS1=SELECTCS;
211 1 LCD_RW=1;
212 1 LCD_RS=0;
213 1 LCD_E=1;
214 1 while (LCD_DATA&0x80);
215 1 LCD_CS1=!SELECTCS;
216 1 }
217
218 //-------------------------------------------------------------------------
219 //函数名称: void LCD_WriteCommand1(char ch)
220 //函数功能: 向LCD控制芯片KS0108发送控制命令
221 //入口参数: char ch 控制命令参数
222 //出口参数: 无
223 //全局变量引用: 无
224 //调用模块: LCD_WaitReady1()
225 //----------------------------------------------------------------------
226
227 void LCD_WriteCommand1(char ch)
228 {
229 1 LCD_WaitReady1(); //判断LCD是否处于忙状态
230 1 LCD_CS2=SELECTCS;
231 1 LCD_RW=0;
232 1 LCD_RS=0;
233 1 LCD_DATA=ch;
234 1 LCD_E=1;
235 1 LCD_E=0;
236 1 LCD_CS2=!SELECTCS;
237 1 }
238 //-------------------------------------------------------------------------
239 //函数名称: void LCD_WriteCommand2(char ch)
240 //函数功能: 向LCD控制芯片KS0108发送控制命令
241 //入口参数: char ch 控制命令参数
C51 COMPILER V7.05 CGM12864B 02/14/2006 09:35:46 PAGE 5
242 //出口参数: 无
243 //全局变量引用: 无
244 //调用模块: LCD_WaitReady2()
245 //----------------------------------------------------------------------
246
247 void LCD_WriteCommand2(char ch)
248 {
249 1 LCD_WaitReady2(); //判断LCD是否处于忙状态
250 1 LCD_CS1=SELECTCS;
251 1 LCD_RW=0;
252 1 LCD_RS=0;
253 1 LCD_DATA=ch;
254 1 LCD_E=1;
255 1 LCD_E=0;
256 1 LCD_CS1=!SELECTCS;
257 1 }
258 //-------------------------------------------------------------------------
259 //函数名称: void LCD_WriteData1(char ch)
260 //函数功能: 向LCD控制芯片KS0108发送数据
261 //入口参数: char ch 数据参数
262 //出口参数: 无
263 //全局变量引用: 无
264 //调用模块: LCD_WaitReady1()
265 //----------------------------------------------------------------------
266 void LCD_WriteData1(char ch)
267 {
268 1 LCD_WaitReady1(); ////判断LCD是否处于忙状态
269 1 LCD_CS2=SELECTCS;
270 1 LCD_RW=0;
271 1 LCD_RS=1;
272 1 LCD_DATA=ch;
273 1 LCD_E=1;
274 1 LCD_E=0;
275 1 LCD_CS2=!SELECTCS;
276 1 }
277 //-------------------------------------------------------------------------
278 //函数名称: void LCD_WriteData2(char ch)
279 //函数功能: 向LCD控制芯片KS0108发送数据
280 //入口参数: char ch 数据参数
281 //出口参数: 无
282 //全局变量引用: 无
283 //调用模块: LCD_WaitReady2()
284 //----------------------------------------------------------------------
285 void LCD_WriteData2(char ch)
286 {
287 1 LCD_WaitReady2(); //判断LCD是否处于忙状态
288 1 LCD_CS1=SELECTCS;
289 1 LCD_RW=0;
290 1 LCD_RS=1;
291 1 LCD_DATA=ch;
292 1 LCD_E=1;
293 1 LCD_E=0;
294 1 LCD_CS1=!SELECTCS;
295 1 }
296 //-------------------------------------------------------------------------
297 //函数名称: void LCD_WriteHZ(char x,char y,char *Dot)
298 //函数功能: 在液晶的指定位置显示16*16点阵汉字
299 //入口参数: char x:横向坐标 char y:纵向坐标 char *Dot:汉字点阵的首地址
300 //出口参数: 无
301 //全局变量引用: 无
302 //调用模块: LCD_WriteCommand1(); LCD_WriteCommand2();
303 // LCD_WriteData1(); LCD_WriteData1();
C51 COMPILER V7.05 CGM12864B 02/14/2006 09:35:46 PAGE 6
304 //----------------------------------------------------------------------
305 void LCD_WriteHZ(char x,char y,char *Dot)
306 {
307 1 char i;
308 1 for (i=0;i<32;i++)
309 1 {
310 2 if ((x+i%16)<64) //横向坐标小于64时在左屏显示汉字
311 2 {
312 3 LCD_WriteCommand1(0xB8+y+i/16);
313 3 LCD_WriteCommand1(0x40+x+i%16);
314 3 LCD_WriteData1(Dot[i]);
315 3 }
316 2 else //横向坐标大于64时在右屏显示汉字
317 2 {
318 3 LCD_WriteCommand2(0xB8+y+i/16);
319 3 LCD_WriteCommand2(0x40+x-64+i%16);
320 3 LCD_WriteData2(Dot[i]);
321 3 }
322 2 }
323 1 }
324 //-------------------------------------------------------------------------
325 //函数名称: void InitLCD(void)
326 //函数功能: 初始化液晶并清屏
327 //入口参数: 无
328 //出口参数: 无
329 //全局变量引用: 无
330 //调用模块: Delay1ms(1);LCD_WriteCommand1(); LCD_WriteCommand2();
331 // LCD_WriteData1(); LCD_WriteData1();
332 //----------------------------------------------------------------------
333
334 void InitLCD(void)
335 {
336 1 char i,j;
337 1 LCD_RST=0;
338 1 Delay1ms(1);
339 1 LCD_RST=1;
340 1 LCD_WriteCommand1(0xc0);
341 1 LCD_WriteCommand2(0xc0);
342 1 LCD_WriteCommand1(0x3f); //开显示
343 1 LCD_WriteCommand2(0x3f);
344 1 for (j=0;j<8;j++) //清屏
345 1 {
346 2 LCD_WriteCommand1(0xB8+j); //清左半屏
347 2 LCD_WriteCommand1(0x40);
348 2 for (i=0;i<64;i++)
349 2 LCD_WriteData1(0x00);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -