📄 mra8806.lst
字号:
291 1 Wrr_Addr(MAMR);
292 1 temp = Read_Data();
293 1 temp &= cClrb6;
294 1 temp &= cClrb5;
295 1 temp &= cClrb4;
296 1 Wrr_Addr(MAMR);
297 1 Wrr_Data(temp);
298 1 }
299
300
301 void COM_DIR_239_0(void)//扫描模式修改,从239行开始扫描
302 {
303 1 uchar temp;
C51 COMPILER V7.50 MRA8806 02/21/2009 10:27:05 PAGE 6
304 1
305 1 Wrr_Addr(MISC);
306 1 temp = Read_Data();
307 1 temp |= cSetb0;
308 1 Wrr_Addr(MISC);
309 1 Wrr_Data(temp);
310 1 }
311 void LCD_Rotate90(void)//文字旋转90度
312 {
313 1 uchar temp;
314 1
315 1 Wrr_Addr(WCCR);
316 1 temp = Read_Data();
317 1 temp |= cSetb3;
318 1 Wrr_Addr(WCCR);
319 1 Wrr_Data(temp);
320 1 }
321 void LCD_LineDist_Adjust(uchar dis)//文字之间的行间距0-16
322 {
323 1 uchar temp;
324 1 Wrr_Addr(CHWI); // Line Distance
325 1 temp = Read_Data();
326 1 temp &= 0xf0;
327 1 temp |= (dis & 0x0f);
328 1 Wrr_Addr(CHWI); // Line Distance
329 1 Wrr_Data(temp);
330 1 }
331 unsigned char ADC_X1_MSB(void)
332 {
333 1 uchar temp;
334 1 Wrr_Addr(TPXR);
335 1 temp = Read_Data();
336 1 //delay1ms(2);
337 1 return temp;
338 1 }
339
340 unsigned char ADC_Y1_MSB(void)
341 {
342 1 uchar temp;
343 1
344 1 Wrr_Addr(TPYR);
345 1 temp = Read_Data();
346 1 //delay1ms(2);
347 1 return temp;
348 1 }
349
350 void Print_Hex(uchar buf)
351 {
352 1 uchar temp1,temp2;
353 1 temp1=buf;
354 1 temp1 = (temp1 >>4) & 0x0F;
355 1 if(temp1 < 0x0A)
356 1 {
357 2 temp1 |= 0x30;
358 2 }
359 1 else temp1 = temp1 + 0x37;
360 1 //LCD_Text();
361 1 //Access_Page1();
362 1 //LCD_GotoXY(0x21,0x10);
363 1 Wrr_Addr(0xb0);
364 1 Wrr_Data(temp1);
365 1 //delay1ms(1);
C51 COMPILER V7.50 MRA8806 02/21/2009 10:27:05 PAGE 7
366 1 _nop_();
367 1
368 1 temp2=buf;
369 1 temp2 = temp2 & 0x0F;
370 1 if(temp2 < 0x0A)
371 1 {
372 2 temp2 |= 0x30;
373 2 }
374 1 else temp2 = temp2 + 0x37;
375 1
376 1 //Wrr_Addr(0xb0);
377 1 Wrr_Data(temp2);
378 1 _nop_();
379 1
380 1 }
381
382
383 void Dis_Ratate_90(void)//文字纵向显示
384 {
385 1 LCD_Text();
386 1 LCD_Rotate90();
387 1 //COM_DIR_239_0();
388 1 LCD_LineDist_Adjust(12);
389 1
390 1 LCD_GotoXY(0,48);
391 1 Wrr_Addr(0xb0);
392 1 /*for(i=0;i<29;i++)
393 1 {
394 1 Wrr_Data(sRAiO1[i]);
395 1 delay1ms(1);
396 1 }*///因为srai01在vuse.h中,所以屏蔽此处。
397 1 }
398 void test(void)
399 {
400 1 int i;
401 1 Lcd_Graphic();
402 1 Gray_Mode();
403 1 LCD_GotoXY(0x00,0x0);
404 1 Wrr_Addr(0xb0);
405 1 /*Mode2();
406 1 Mode3();
407 1 Mode4();*/
408 1 for(i=0;i<4800;i++)
409 1 {
410 2 Wrr_Data(0);
411 2 }
412 1 for(i=0;i<4800;i++)
413 1 {
414 2 Wrr_Data(0x55);
415 2 }
416 1 for(i=0;i<4800;i++)
417 1 {
418 2 Wrr_Data(0xaa);
419 2 }
420 1 for(i=0;i<4800;i++)
421 1 {
422 2 Wrr_Data(0xff);
423 2 }
424 1 }
425 /*====================================================
426 ; 绘点子程序 ,att为1时为描点,为0时为消点
427 ====================================================*/
C51 COMPILER V7.50 MRA8806 02/21/2009 10:27:05 PAGE 8
428 void Dis_Point(unsigned int px, uchar py,uchar att)
429 {
430 1 uchar x_msb,value,ex_value;
431 1 //value = 0x80;
432 1 //Lcd_Graphic();
433 1 //Access_Page1();
434 1 //Only_Show_Page1();
435 1 x_msb = px>>3;//等于px除以8
436 1 //x_lsb = px & 0x07;//等于py对8求余数
437 1 //value = value>>x_lsb;
438 1 value = 1<<(7-px & 0x0007);
439 1 LCD_GotoXY(x_msb,py);
440 1
441 1 Wrr_Addr(0xb1);
442 1 ex_value = Read_Data();
443 1 if(att)
444 1 ex_value |= value;
445 1 else
446 1
447 1
448 1 //value = (~value);
449 1 ex_value &= ~value;
450 1
451 1 LCD_GotoXY(x_msb,py);
452 1
453 1 Wrr_Addr(0xb0);
454 1 Wrr_Data(ex_value);
455 1 }
456 /*void Dis_Black_Rec(uchar a,uchar b,uchar c,uchar d,uchar att)
457 {
458 uchar i,j,length,height;
459 length = c-a;
460 height = d-b;
461 Access_Page1();
462 Only_Show_Page1();
463 //LCD_Text();
464 Lcd_Graphic();
465 LCD_GotoXY(a,b);
466 for(i=0;i<height;i++)
467 {
468 LCD_GotoXY(a,(b+i));
469 Wrr_Addr(0xb0);
470 for(j=0;j<length;j++)
471 Wrr_Data(0xff);
472 }
473 }
474 void Dis_Black_Rec(uchar a,uchar b,uchar c,uchar d,uchar att)
475 {
476 uchar i,j,length,height;
477 length = c-a;
478 height = d-b;
479 Access_Page1();
480 Only_Show_Page1();
481 //LCD_Text();
482 Lcd_Graphic();
483 for(i=0;i<height;i++)
484 {
485 for(j=0;j<length;j++)
486 Dis_Point((a+i),(b+j),att);
487 }
488 }*/
489 void Dis_Blank_Rec(uchar a,uchar b,uchar c,uchar d)
C51 COMPILER V7.50 MRA8806 02/21/2009 10:27:05 PAGE 9
490 {
491 1 uchar i,length,height;
492 1 length = c-a;
493 1 height = d-b;
494 1 //Access_Page1();
495 1 //Only_Show_Page1();
496 1 //LCD_Text();
497 1 Lcd_Graphic();
498 1 LCD_GotoXY(a,b);
499 1 Wrr_Addr(0xb0);
500 1 for(i=0;i<length;i++)
501 1 {
502 2 Wrr_Data(0xff);
503 2 }
504 1
505 1 LCD_GotoXY(a,(b+height));
506 1 Wrr_Addr(0xb0);
507 1 for(i=0;i<length;i++)
508 1 {
509 2 Wrr_Data(0xff);
510 2 }
511 1
512 1 for(i=1;i<height;i++)
513 1 {
514 2 LCD_GotoXY((c-1),(b+i));
515 2 Wrr_Addr(0xb0);
516 2 Wrr_Data(0x01);
517 2 }
518 1
519 1 for(i=1;i<height;i++)
520 1 {
521 2 LCD_GotoXY(a,(b+i));
522 2 Wrr_Addr(0xb0);
523 2 Wrr_Data(0x80);
524 2 }
525 1 }
526
527 /*void Dis_Blank_Rec(uchar a,uchar b,uchar c,uchar d,uchar att)
528 {
529 uchar i,j,length,height;
530 length = c-a;
531 height = d-b;
532 Access_Page1();
533 Only_Show_Page1();
534 //LCD_Text();
535 Lcd_Graphic();
536 for(i=0;i<height;i++)
537 {
538 for(j=0;j<length;j++)
539 {
540 Dis_Point((a+j),b,att);
541
542 Dis_Point(a,(b+i),att);
543 Dis_Point((c-1),(b+i),att);
544 Dis_Point((a+j),d,att);
545 }
546 }
547 }*/
548
549
550 /************************************************/
551 /*画圆。数学方程(X-Ox)^2+(Y-Oy)^2=Rx^2 */
C51 COMPILER V7.50 MRA8806 02/21/2009 10:27:05 PAGE 10
552 /************************************************/
553 void Dis_Circle(unsigned int Ox,uchar Oy,uchar Rx,uchar att)
554 {
555 1 unsigned int xx,rr,xt,yt,rs,col,row;
556 1 yt=Rx;
557 1 rr=Rx*Rx+1; //补偿 1 修正方形
558 1 rs=(yt+(yt>>1))>>1; //(*0.75)分开1/8圆弧来画
559 1 for (xt=0;xt<=rs;xt++)
560 1 {
561 2 xx=xt*xt;
562 2 while ((yt*yt)>(rr-xx))yt--;
563 2 col=Ox+xt; //第一象限
564 2 row=Oy-yt;
565 2 Dis_Point(col,row,att);
566 2 col=Ox-xt; //第二象限
567 2 Dis_Point(col,row,att);
568 2 row=Oy+yt; //第三象限
569 2 Dis_Point(col,row,att);
570 2 col=Ox+xt; //第四象限
571 2 Dis_Point(col,row,att);
572 2
573 2 /***************45度镜象画另一半***************/
574 2
575 2 col=Ox+yt; //第一象限
576 2 row=Oy-xt;
577 2 Dis_Point(col,row,1);
578 2 col=Ox-yt; //第二象限
579 2 Dis_Point(col,row,1);
580 2 row=Oy+xt; //第三象限
581 2 Dis_Point(col,row,att);
582 2 col=Ox+yt; //第四象限
583 2 Dis_Point(col,row,att);
584 2 }
585 1 }
586 /********************************************/
587 /*画线。任意方向的斜线,直线数学方程 aX+bY=1 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -