📄 jmlcd.lst
字号:
246 2 delay(50);
247 2 }
248 1 }
249 /*------------------首屏显示--------------------------*/
250 void ceshi()
251 {write_com(0x01);//清除显示,并且设定地址指针为00H
252 1 delay(5);
253 1
254 1 write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
255 1 hzkdis("安踏, 永不止步");
256 1
257 1 write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
258 1 hzkdis("李宁一切皆有可能");
259 1
260 1 write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
261 1 hzkdis("LCD12864点阵液晶");
262 1
263 1 write_com(0x9A);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)
264 1 hzkdis("倪进伟潘大化组编");
265 1
266 1
267 1 }
268 /*------------------显示图片------------------------2005.11.14.21:20修改---benladn911---*/
269 void Disp_Img(unsigned char code *img)
270 { unsigned int j=0;
271 1 unsigned char x,y,i;
272 1 for(i=0;i<9;i+=8)
273 1 for(y=0;y<32;y++)/*原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙*/
274 1 for(x=0;x<8;x++)
275 1 { write_com(0x36);//功能设置---8BIT控制界面,扩充指令集
276 2 write_com(y+0x80); //行地址
277 2 write_com(x+0x80+i); //列地址
278 2 write_com(0x30);
279 2 write_data(img[j++]);
280 2 write_data(img[j++]);
281 2 }
282 1
283 1 }
284 /*------------------清整个GDRAM空间----------------------------*/
285 void clrgdram()
286 { unsigned char x,y;
287 1 for(y=0;y<64;y++)
288 1 for(x=0;x<16;x++)
289 1 { write_com(0x34);
290 2 write_com(y+0x80); //行地址
291 2 write_com(x+0x80); //列地址
292 2 write_com(0x30);
293 2 write_data(0x00);
294 2 write_data(0x00);
295 2 }
296 1 }
297 /*------------------整屏写入数据:全亮,或者竖条-----------------------------*/
298 void lcdfill(unsigned char disdata)
299 { unsigned char x,y;
300 1 for(y=0;y<32;y++)
301 1 for(x=0;x<16;x++)
302 1 { write_com(0x36);
303 2 write_com(y+0x80); //行地址
C51 COMPILER V7.06 JMLCD 08/04/2007 08:23:07 PAGE 6
304 2 write_com(x+0x80); //列地址
305 2 write_com(0x30);
306 2 write_data(disdata);
307 2 write_data(disdata);
308 2 }
309 1 write_com(0x34);
310 1 write_com(0x36);
311 1 }
312 /*------------------显示横-----------------------------*/
313 void Disp_H_Line()
314 { unsigned char x,y;
315 1 unsigned char k=0x00;
316 1 for(y=0;y<32;y++)
317 1 { k=~k;
318 2 for(x=0;x<16;x++)
319 2 { write_com(0x36);
320 3 write_com(y+0x80); //行地址
321 3 write_com(x+0x80); //列地址
322 3 write_com(0x30);
323 3 write_data(k);
324 3 write_data(k);
325 3 };
326 2 }
327 1 write_com(0x34);
328 1 write_com(0x36);
329 1 }
330 /*------------------显示边框-------------------------------*/
331 void Frame()
332 {unsigned char x,y;
333 1 lcdfill(0x00);
334 1 for(x=0;x<9;x+=8)
335 1 for(y=0;y<32;y++)
336 1 { write_com(0x36);
337 2 write_com(y+0x80); //行地址
338 2 write_com(x+0x80); //列地址
339 2 write_com(0x30);
340 2 write_data(0x80);
341 2 write_data(0x00);
342 2
343 2 write_com(0x36);
344 2 write_com(y+0x80); //行地址
345 2 write_com(x+0x87); //列地址
346 2 write_com(0x30);
347 2 write_data(0x00);
348 2 write_data(0x01);
349 2
350 2 }
351 1 for(y=0;y<2;y++)
352 1 for(x=0;x<8;x++)
353 1 {write_com(0x36);
354 2 write_com(y*31+0x80); //行地址
355 2 write_com(x+0x80+8*y); //列地址
356 2 write_com(0x30);
357 2 write_data(0xff);
358 2 write_data(0xff);
359 2 }
360 1 write_com(0x34);
361 1 write_com(0x36);
362 1 }
363
364 /*------------------在第7列的位置加入两条竖线--------------------------*/
365 void shuxian()
C51 COMPILER V7.06 JMLCD 08/04/2007 08:23:07 PAGE 7
366 { unsigned char x,y;
367 1
368 1 for(x=0;x<9;x+=8)
369 1 for(y=0;y<32;y++)
370 1 { write_com(0x36);
371 2 write_com(y+0x80); //行地址
372 2 write_com(x+0x86); //列地址
373 2 write_com(0x30);
374 2 write_data(0x00);
375 2 write_data(0x14);
376 2 };
377 1 }
378
379 /*------------------清屏命令--------------------------*/
380 void clrscreen()
381 {
382 1 write_com(0x01);
383 1 delay(10);
384 1 }
385
386 /*------------------唐诗《静夜思》--------------------------*/
387 void gushi_display()
388 { write_com(0x30);
389 1 clrscreen();
390 1 write_com(0x80+FIRST_ADDR);
391 1 hzkdis("床前明月光,");
392 1 write_com(0x90+FIRST_ADDR);
393 1 hzkdis("疑是地上霜。");
394 1 write_com(0x88+FIRST_ADDR);
395 1 hzkdis("举头望明月,");
396 1 write_com(0x98+FIRST_ADDR);
397 1 hzkdis("低头思故乡。");
398 1 write_com(0xb3+FIRST_ADDR);
399 1 hzkdis("静夜思");
400 1 write_com(0xaa+FIRST_ADDR);
401 1 hzkdis("( 唐 )李白");
402 1 }
403
404 void main()
405 { unsigned char i;
406 1
407 1 while(1)
408 1 {
409 2 RW=0;
410 2 lcdreset(); //初始化LCD屏
411 2 CGRAM();
412 2 ceshi(); //显示测试字样
413 2 delay(1000);
414 2
415 2
416 2
417 2 clrgdram();
418 2 clrscreen(); //清屏
419 2
420 2
421 2 Disp_Img(BMP1); //调入一幅图画
422 2 delay(1000);
423 2
424 2
425 2 Disp_Img(BMP); //调入一幅图画
426 2 delay(1000);
427 2
C51 COMPILER V7.06 JMLCD 08/04/2007 08:23:07 PAGE 8
428 2
429 2
430 2 lcdfill(0xff); //显示全开
431 2 delay(2000);
432 2
433 2 Disp_H_Line(); //显示横条
434 2 delay(2000);
435 2
436 2
437 2 lcdfill(0xaa); //显示竖条
438 2 delay(2000);
439 2
440 2 Frame(); //显示边框
441 2 delay(2000);
442 2
443 2 gushi_display(); //显示唐诗
444 2 clrgdram();
445 2
446 2 write_com(0x87); //调用自定义的CGRAM的代码
447 2 write_data(0x00);
448 2 write_data(0x00);
449 2 delay(400);
450 2
451 2 shuxian(); //加入两条竖线
452 2 delay(800);
453 2 write_com(0x30);
454 2 delay(1000);
455 2
456 2 gushi_display();
457 2 delay(6000);
458 2 for(i=0;i<8;i++) //字符循环左移
459 2 {
460 3 write_com(0x18);
461 3 delay(2000);}
462 2
463 2 gushi_display();
464 2 delay(6000);
465 2 write_com(0x36);
466 2 write_com(0x04); //第一行反白显示
467 2 delay(2000);
468 2 write_com(0x04); //第一行恢复正常
469 2 delay(2000);
470 2 write_com(0x05); //第二行反白显示
471 2 delay(20000);
472 2 write_com(0x05); //第二行恢复正常
473 2 delay(2000);
474 2
475 2 write_com(0x03); //垂直滚动屏幕的内容
476 2 write_com(0x60);
477 2 delay(2000);
478 2
479 2 }
480 1 }
481
482
483
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1116 ----
CONSTANT SIZE = 2216 ----
XDATA SIZE = ---- ----
C51 COMPILER V7.06 JMLCD 08/04/2007 08:23:07 PAGE 9
PDATA SIZE = ---- ----
DATA SIZE = ---- 17
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -