📄 lcd12864io.lst
字号:
198 0x00,0x10,0x10,0x10,0x11,0x1E,0x14,0xF0,0x10,0x18,0x17,0x12,0x18,0x10,0x00,0x00,
199
200 0x01,0x81,0x41,0x21,0x11,0x09,0x05,0x03,0x05,0x09,0x31,0x61,0xC1,0x41,0x01,0x00,/*"关",8*/
201
202
203
204 0x10,0x60,0x01,0xC6,0x00,0x80,0x84,0x44,0x5F,0x24,0x64,0x94,0x84,0xE4,0x00,0x00,
205
206 0x04,0xFC,0x03,0x00,0x42,0x42,0x32,0x0E,0x02,0x02,0x3E,0x42,0x42,0x42,0x78,0x00,/*"浇",9*/
207
208
209
210 0x08,0x31,0x82,0x78,0x02,0x3A,0xEA,0xAF,0xBA,0xC2,0xBA,0xAF,0xAA,0xBA,0x02,0x00,
211
212 0x04,0x04,0x7F,0x00,0x02,0x01,0x7F,0x2A,0x2A,0x2A,0x3F,0x2A,0x2A,0x2A,0x20,0x00,/*"灌",10*/
213
214
215
216 0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,
217
218 0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,/*"时",11*/
219
220
221 0x00,0xF8,0x01,0x06,0x00,0xF0,0x92,0x92,0x92,0x92,0xF2,0x02,0x02,0xFE,0x00,0x00,
222
223 0x00,0xFF,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x07,0x40,0x80,0x7F,0x00,0x00,/*"间",12*/
224
225
226 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
227
228 0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*":",13*/
229
230 0x80,0x40,0x20,0x98,0x87,0x82,0x80,0x80,0x83,0x84,0x98,0x30,0x60,0xC0,0x40,0x00,
231 0x00,0x80,0x40,0x20,0x10,0x0F,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,/*"分",14*/
232
233 0x12,0x12,0xD2,0xFE,0x91,0x11,0xC0,0x38,0x10,0x00,0xFF,0x00,0x08,0x10,0x60,0x00,
234 0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x40,0x20,0x23,0x10,0x08,0x04,0x03,0x00,/*"秒",15*/
235
236
237 0x00,0xF0,0xF8,0x0C,0x04,0x04,0x04,0x04,0x0C,0xF8,0xF0,0x00,0x00,0x00,0x01,0x03,
238 0x02,0x02,0x02,0x02,0x03,0x01,0x00,0x00,/*"0",16*/
239
240
241
C51 COMPILER V6.23a LCD12864IO 09/21/2011 09:31:57 PAGE 5
242
243
244
245
246
247
248
249
250 };
251
252
253
254
255
256
257
258
259
260
261
262 //以filldata充填液晶屏
263 void LCD_DispFill(uchar filldata)
264 { uchar x, y;
265 1 LCD_WrCmd(CS1,LCD_STARTROW); //设置左半屏显示起始行为0
266 1 LCD_WrCmd(CS2,LCD_STARTROW); //设置右半屏显示起始行为0
267 1 for(y=0; y<8; y++) //循环充填8页
268 1 { LCD_WrCmd(CS1,LCD_ADDRSTRY+y); // 设置左半屏页地址
269 2 LCD_WrCmd(CS1,LCD_ADDRSTRX); // 设置左半屏列地址
270 2 LCD_WrCmd(CS2,LCD_ADDRSTRY+y); // 设置右半屏页地址
271 2 LCD_WrCmd(CS2,LCD_ADDRSTRX); // 设置右半屏列地址
272 2 for(x=0; x<64; x++) //充填每页的64个单元(列)
273 2 { LCD_WrDat(CS1,filldata);
274 3 LCD_WrDat(CS2,filldata);
275 3 }
276 2 }
277 1 }
278
279 //液晶模块初始化
280 void LCD_DispIni(void)
281 { uint i;
282 1 LCD_RST = 0; // 复位驱动芯片
283 1 for(i=0; i<500; i++);
284 1 LCD_RST = 1;
285 1 LCD_WrCmd(CS1,LCD_DISPON); // 打开显示
286 1 LCD_WrCmd(CS1,LCD_STARTROW); // 设置显示起始行为0
287 1 LCD_WrCmd(CS2,LCD_DISPON);
288 1 LCD_WrCmd(CS2,LCD_STARTROW);
289 1 LCD_DispFill(00); // 清屏
290 1 LCD_WrCmd(CS1,LCD_ADDRSTRY+0); // 设置页(字符行)地址
291 1 LCD_WrCmd(CS1,LCD_ADDRSTRX+0); // 设置列地址
292 1 LCD_WrCmd(CS2,LCD_ADDRSTRY+0);
293 1 LCD_WrCmd(CS2,LCD_ADDRSTRX+0);
294 1 }
295
296
297
298 //在液晶屏的cy(0-3)行、cx(0-7)列显示汉字字符dispdata
299 void LCD_DispHZ(uchar cy, uchar cx, uchar dispdata)
300 { uchar code *pdat;
301 1 uchar i,s,page;
302 1 bit port;
303 1 cy = cy&0x03; // 参数过滤
C51 COMPILER V6.23a LCD12864IO 09/21/2011 09:31:57 PAGE 6
304 1 cx = cx&0x07;
305 1 pdat = &HZTAB[dispdata*32];
306 1 if( (cx&0x04) == 0 ) // 如果在左半屏显示
307 1 { port=0;
308 2 s = cx<<4; // 求出该汉字在屏幕上的起始列
309 2 }
310 1 else //在右半屏上显示
311 1 { port=1;
312 2 s = (cx<<4)-64; // 求出该汉字在屏幕上的起始列
313 2 }
314 1 for(page=0;page<2;page++) //每个汉字2页
315 1 { LCD_WrCmd(port,LCD_ADDRSTRX+s); // 设置当前列地址
316 2 LCD_WrCmd(port,LCD_ADDRSTRY+(cy<<1)+page); // 设置当前页地址
317 2 for(i=0; i<5; i++);
318 2 for(i=0; i<16; i++) //每个汉字16列
319 2 { LCD_WrDat(port,*pdat); // 发送数据
320 3 pdat++;
321 3 }
322 2 for(i=0; i<5; i++);
323 2 }
324 1 }
325
326 //在液晶屏的cy(0-3)行、cx(0-7)列显示汉字字符串disp_str
327 void LCD_DispHZStr(uchar cy, uchar cx, uchar *disp_str)
328 { while( *disp_str!=0x55)
329 1 { cy = cy&0x03; // 参数过滤
330 2 cx = cx&0x07;
331 2 LCD_DispHZ(cy, cx, *disp_str); // 显示汉字
332 2 disp_str++; // 指向下一汉字
333 2 cx++; //列号加1
334 2 if(cx>7)
335 2 { cy++; // 指向下一显示行
336 3 cx=0;
337 3 }
338 2 }
339 1 }
340 void LCD_DispChar(char cy, char cx, char dispdata)
341 { uchar code *pch;
342 1 uchar i;
343 1 bit port;
344 1 cy = cy&0x07; // 参数过滤
345 1 cx = cx&0x0f;
346 1 pch = &ASCII_TAB[(dispdata-0X20)*5]; //指向字符起始列的点阵码
347 1 if( (cx&0x08) == 0 ) // 列号cx<8,在左半屏显示
348 1 { port=CS1;
349 2 i=cx<<3;
350 2 }
351 1 else
352 1 { port=CS2;
353 2 i = (cx&0x07)<<3;
354 2 }
355 1 LCD_WrCmd(port,LCD_ADDRSTRX+i); // 设置当前列地址
356 1 LCD_WrCmd(port,LCD_ADDRSTRY+cy); // 设置当前页地址
357 1 for(i=0; i<5; i++); //延时
358 1
359 1 LCD_WrDat(port,0x00); // 显示一列空格
360 1
361 1 for(i=0; i<5; i++) //送出字符的5列点阵码
362 1 {
363 2 LCD_WrDat(port,*pch);
364 2
365 2 pch++;
C51 COMPILER V6.23a LCD12864IO 09/21/2011 09:31:57 PAGE 7
366 2 }
367 1
368 1 LCD_WrDat(port,0x00); // 显示一列空格
369 1
370 1 for(i=0; i<5; i++);
371 1
372 1 LCD_WrDat(port,0x00); // 显示一列空格
373 1
374 1 }
375 //字符串输出函数相应地改为:
376 void LCD_DispStr(char cy, char cx, char *disp_str)
377 { while( *disp_str != '\0')
378 1 { cy = cy&0x07; // 参数过滤
379 2 cx = cx&0x0f;
380 2 LCD_DispChar(cy, cx, *disp_str); // 显示字符
381 2 disp_str++; // 指向下一字符数据
382 2 cx++;
383 2 if(cx>15) cy++; // 指向下一显示行
384 2 }
385 1 }
386
387
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 583 ----
CONSTANT SIZE = 1016 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 14
IDATA SIZE = ---- ----
BIT SIZE = ---- 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -