📄 lcd_6963.lst
字号:
265 1 dat1=j%256; /* 显示RAM地址修正 */
266 1 dat2=j/256;
267 1 com=0x24;
268 1 PR1();
269 1 dat2=code_1+0x01; /* 写入左下半部汉字代码 */
270 1 com=0xc0;
271 1 PR11();
272 1 dat2=code_1+0x03; /* 写入右下半部汉字代码 */
273 1 PR11();
274 1 }
275
276 CCWD_PR() /* */
277 {
278 1 unsigned int i,j;
279 1 i=para1;
280 1 j=i*O_Y+O_X;
281 1
282 1 dat1=j%256;
283 1 dat2=j/256;
284 1 com=0x24; /* 设置显示地址 */
285 1 PR1();
286 1 dat2=code_1; /* 写入左上半部汉字代码 */
287 1 com=0xc0;
288 1 PR11();
289 1
290 1 j=j+i;
291 1 dat1=j%256; /* 显示RAM地址修正 */
292 1 dat2=j/256;
293 1 com=0x24;
294 1 PR1();
295 1
296 1 dat2=code_1+0x01; /* 写入左下半部汉字代码 */
297 1 com=0xc0;
298 1 PR11();
299 1
300 1 }
301
302 CCW2_PR()
303 {
C51 COMPILER V6.20c LCD_6963 09/20/2005 12:21:28 PAGE 6
304 1 unsigned int i,j,count1;
305 1 i=para1;
306 1 j=i*O_Y+O_X+0x0800;
307 1 for(count1=0;count1<16;count1++)
308 1 {
309 2 dat1=j%256;
310 2 dat2=j/256;
311 2 com=0x24;
312 2 PR1();
313 2
314 2 dat2=CCTAB[code_1][count1]; /* 写入汉字左侧代码 */
315 2 com=0xc0;
316 2 PR11();
317 2
318 2 dat2=CCTAB[code_1][count1+16]; /* 写入汉字右侧代码 */
319 2 PR11();
320 2 j=j+i;
321 2 }
322 1 }
323
324
325 /********************************/
326 /* 西文字符写入(文本属性)函数 */
327 /********************************/
328 CW2_PR()
329 {
330 1 unsigned int i,j;
331 1 i=para1;
332 1 j=i*O_Y+O_X;
333 1 dat1=j%256;
334 1 dat2=j/256;
335 1 com=0x24; /* 显示地址设置 */
336 1 PR1();
337 1
338 1 dat2=code_1;
339 1 com=0xC0; /* 数据写 */
340 1 PR11();
341 1
342 1 dat2=0x08;
343 1 com=0x24;
344 1 PR1();
345 1
346 1
347 1 }
348
349
350
351 /****************************/
352 /* 绘点函数 */
353 /****************************/
354 W_DOT()
355 {
356 1 unsigned char i;
357 1 unsigned int k;
358 1 i=O_X%8;
359 1 O_X=O_X/8;
360 1 k=0x20*O_Y+O_X+0x0800;
361 1 dat1=k%256;
362 1 dat2=k/256;
363 1 com=0x24;
364 1 PR1();
365 1 i=0x07-i;
C51 COMPILER V6.20c LCD_6963 09/20/2005 12:21:28 PAGE 7
366 1 com=i|0xf8; /* 位操作 */
367 1 PR12();
368 1 }
369 /****************************/
370 /* 写指令和写数据函数 */
371 /****************************/
372 PR1() /* 双字节参数指令写入入口 */
373 {
374 1 ST01();
375 1 d_add=dat1; /* 取第一参数单元数据 */
376 1 PR11();
377 1 }
378 PR11() /* 单字节参数指令写入入口 */
379 {
380 1 ST01();
381 1 d_add=dat2; /* 取第二参数单元数据 */
382 1 PR12();
383 1 }
384 PR12() /* 无参数指令写入入口 */
385 {
386 1 ST01();
387 1 c_add=com; /* 写入指令代码 */
388 1 }
389 /************************************************/
390 /* 判状态位S1,S0 函数(读写指令和读写数据状态) */
391 /************************************************/
392 ST01()
393 {
394 1 do
395 1 {
396 2 ACC=c_add;
397 2 }
398 1 while(Acc_0==0,Acc_1==0);
399 1 }
400 /************************************/
401 /* 判状态位S2函数(数据自动读状态) */
402 /************************************/
403 ST2()
404 {
405 1 do
406 1 {
407 2 ACC=c_add;
408 2 }
409 1 while(Acc_2==0);
410 1 }
411 /************************************/
412 /* 判状态位S3函数(数据自动写状态) */
413 /************************************/
414 ST3()
415 {
416 1 do
417 1 {
418 2 ACC=c_add;
419 2 }
420 1 while(Acc_3==0);
421 1 }
422
423 DISHAZIT(uchar x,uchar y,uchar d) /*汉字写入(图文方式)*/
424 {
425 1 code_1=d;
426 1 O_X=x;
427 1 O_Y=y;
C51 COMPILER V6.20c LCD_6963 09/20/2005 12:21:28 PAGE 8
428 1 CCW2_PR();
429 1 }
430
431
432 DISDASC(uchar x,uchar y,uchar d) /*汉字写入(文本方式)*/
433 {
434 1 code_1=d;
435 1 O_X=x;
436 1 O_Y=y;
437 1 CCWD_PR();
438 1 }
439 DISASC(uchar x,uchar y,uchar d)
440 {
441 1 O_X=x;
442 1 O_Y=y;
443 1 code_1=d; /*西文写WELCOME YOU */
444 1 CW2_PR();
445 1 }
446
447 ShowLine(uchar x,uchar y,uchar *puts,uchar le,uchar kk)
448 {
449 1 uchar uk,jk,byte;
450 1 for(uk=x,jk=0;jk<le;jk++)
451 1 {
452 2 byte=puts[jk];
453 2 if(kk==0){ DISHAZIT(uk,y,byte);}
454 2 else {FDISHAZIT(uk,y,byte);}
455 2 uk=uk+2; /*汉字从0x80开始,包括0x80*/
456 2 /* else {DISASC(x,k,byte);k=k+1;} 字母 ASCII码从0X20 开始*/
457 2 }
458 1 }
459 FDISHAZIT(uchar x,uchar y,uchar d) /*汉字写入(反图文方式)*/
460 {
461 1 code_1=d;
462 1 O_X=x;
463 1 O_Y=y;
464 1 FCCW2_PR();
465 1 }
466 FCCW2_PR()
467 {
468 1 unsigned int i,j,count1;
469 1 i=para1;
470 1 j=i*O_Y+O_X+0x0800;
471 1 for(count1=0;count1<16;count1++)
472 1 {
473 2 dat1=j%256;
474 2 dat2=j/256;
475 2 com=0x24;
476 2 PR1();
477 2
478 2 dat2=0xff-CCTAB[code_1][count1]; /* 写入汉字左侧代码 */
479 2 com=0xc0;
480 2 PR11();
481 2
482 2 dat2=0xff-CCTAB[code_1][count1+16]; /* 写入汉字右侧代码 */
483 2 PR11();
484 2 j=j+i;
485 2 }
486 1 }
487
488 GUANGBIAO(uchar x,uchar y)
489 {
C51 COMPILER V6.20c LCD_6963 09/20/2005 12:21:28 PAGE 9
490 1 dat1=x; /*光标定位*/
491 1 dat2=y;
492 1 com=0x21;
493 1 PR1();
494 1 }
495
496
497 /***************************/
498 /* 演示主程序 */
499 /***************************/
500
501 void main()
502 {
503 1 // uchar code STR1[5]={0x00,0x01,0x02,0x03,0x04};
504 1 INT_1(); /* 初始化函数 */
505 1 CLEAR(); /* 清屏函数 */
506 1 CGRAM(); /* 建立CGRAM内字库函数 */
507 1
508 1 /* 汉字写入(文本方式)方*/
509 1
510 1 FDISHAZIT(0x16,0x00,0X00);
511 1 /* 汉字写入(图文方式)红*/
512 1 DISHAZIT(0x18,0x10,0X01);
513 1 /* 汉字写入(图文方式)绿*/
514 1
515 1 DISDASC(0x01,0x08,0X82);
516 1 /* 汉字写入(文本方式)(*/
517 1 DISDASC(0x01,0x0a,0X84); /* 汉字写入(文本方式)*/
518 1 // ShowLine(0x0a,0x70,STR1,5,1);
519 1 // ShowLine(0x0a,0x50,STR1,5,0);
520 1 }
521
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1050 ----
CONSTANT SIZE = 1916 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 35
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -