📄 zhouyi.lst
字号:
475 1 SelectScreen(0);
476 1 SetOnOff(1); //开显示
477 1
478 1 SelectScreen(0);
479 1 ClearScreen(0);//清屏
480 1
481 1 SetStartLine(0); //开始行:0
482 1
483 1 }
484
485
486 void WriteChinese(uchar ss,uchar page,uchar column,uchar menu,uchar hz[])
487 {
488 1 uchar i; //选屏参数,pagr选页参数,column选列参数,number选第几汉字输出,menu为菜单选项
489 1 SelectScreen(ss);
490 1 column=16*column; //汉字是16X16的,每隔16列扫描
491 1 column=column&0x3f;
492 1
493 1 SetLine(page); //写上半页
494 1 SetColumn(column); //控制列
495 1 if(menu==1)
496 1 for(i=0;i<16;i++) //控制16列的数据输出
497 1 {
498 2 //WriteByte(Hzk[i+32*number]); //i+32*number汉字的前16个数据输出
499 2 WriteByte(0xff-hz[i]);
500 2 }
501 1 else
502 1 for(i=0;i<16;i++) //控制16列的数据输出
503 1 {
504 2 //WriteByte(Hzk[i+32*number]); //i+32*number汉字的前16个数据输出
505 2 WriteByte(hz[i]);
506 2 }
507 1
508 1 SetLine(page+1); //写下半页
509 1 SetColumn(column); //控制列
510 1 if(menu==1)
511 1 for(i=0;i<16;i++) //控制16列的数据输出
512 1 {
513 2 //WriteByte(Hzk[i+32*number+16]); //i+32*number+16汉字的后16个数据输出
514 2 WriteByte(0xff-hz[i+16]);
515 2 }
516 1 else
517 1 for(i=0;i<16;i++) //控制16列的数据输出
518 1 {
519 2 //WriteByte(Hzk[i+32*number+16]); //i+32*number+16汉字的后16个数据输出
520 2 WriteByte(hz[i+16]);
521 2 }
522 1 }
523
524 void WriteDigit(uchar ss,uchar page,uchar column,uchar digit[])
525 {
526 1 uchar i; //选屏参数,pagr选页参数,column选列参数,number选第几汉字输出
527 1 SelectScreen(ss);
528 1 column=8*column; //数字是8X16的,每隔8列扫描
529 1 column=column&0x3f;
530 1
C51 COMPILER V8.02 ZHOUYI 05/22/2007 16:08:16 PAGE 10
531 1 SetLine(page); //写上半页
532 1 SetColumn(column); //控制列
533 1 for(i=0;i<8;i++) //控制16列的数据输出
534 1 {
535 2 //WriteByte(Hzk[i+32*number]); //i+32*number汉字的前16个数据输出
536 2 WriteByte(digit[i]);
537 2 }
538 1
539 1 SetLine(page+1); //写下半页
540 1 SetColumn(column); //控制列
541 1 for(i=0;i<8;i++) //控制16列的数据输出
542 1 {
543 2 //WriteByte(Hzk[i+32*number+16]); //i+32*number+16汉字的后16个数据输出
544 2 WriteByte(digit[i+8]);
545 2 }
546 1 }
547
548
549
550
551 void delay(int num)//延时函数
552 {
553 1 while(num--) ;
554 1 }
555
556
557 Init_DS18B20(void)//初始化ds1820
558 {
559 1 unsigned char x=0;
560 1 DQ = 1; //DQ复位
561 1 delay(8); //稍做延时
562 1 DQ = 0; //单片机将DQ拉低
563 1 delay(80); //精确延时 大于 480us
564 1 DQ = 1; //拉高总线
565 1 delay(14);
566 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
567 1 delay(20);
568 1 }
569
570
571 ReadOneChar(void)//读一个字节
572 {
573 1 unsigned char i=0;
574 1 unsigned char dat = 0;
575 1 for (i=8;i>0;i--)
576 1 {
577 2 DQ = 0; // 给脉冲信号
578 2 dat>>=1;
579 2 DQ = 1; // 给脉冲信号
580 2 if(DQ)
581 2 dat|=0x80;
582 2 delay(4);
583 2 }
584 1 return(dat);
585 1 }
586
587
588 WriteOneChar(unsigned char dat)//写一个字节
589 {
590 1 unsigned char i=0;
591 1 for (i=8; i>0; i--)
592 1 {
C51 COMPILER V8.02 ZHOUYI 05/22/2007 16:08:16 PAGE 11
593 2 DQ = 0;
594 2 DQ = dat&0x01;
595 2 delay(5);
596 2 DQ = 1;
597 2 dat>>=1;
598 2 }
599 1 }
600
601
602 unsigned char *ReadTemperature(void)//读取温度
603 {
604 1 unsigned char a=0;
605 1 unsigned char b=0;
606 1 unsigned char Temper[2]={0};
607 1
608 1 //unsigned int t=0;
609 1 float tt=0;
610 1 Init_DS18B20();
611 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
612 1 WriteOneChar(0x44); // 启动温度转换
613 1 Init_DS18B20();
614 1 WriteOneChar(0xCC); //跳过读序号列号的操作
615 1 WriteOneChar(0xBE); //读取温度寄存器
616 1 a=ReadOneChar(); //数据位
617 1 b=ReadOneChar(); //负数标志位b为0温度为正,b为0xff,温度为负
618 1 //t=a;
619 1 //t<<=8;为什么要移动8位???
620 1 // t=t|a;
621 1 //tt=t*0.0625;
622 1 //t= tt*10+0.5; //放大10倍输出并四舍五入
623 1 a=a*0.5;
624 1 Temper[0]=a;
625 1 Temper[1]=b;
626 1 return(Temper);
627 1 }
628
629
630
631 main()
632 {
633 1 uchar j=0,key=0,PressSign=1;
634 1 InitLCD();
635 1 ClearScreen(0);//清屏
636 1 SetStartLine(0);
637 1 //for(j=0;;j++)
638 1 //{
639 1 //SetStartLine(j);
640 1 WriteChinese(LiftHalf,Page0,0,MenuOff,liang);
641 1 WriteChinese(LiftHalf,Page0,1,MenuOff,ku);
642 1 WriteChinese(LiftHalf,Page0,2,MenuOff,jian);
643 1 WriteChinese(LiftHalf,Page0,3,MenuOff,kong);
644 1
645 1 WriteChinese(RightHalf,Page0,0,MenuOff,xi);
646 1 WriteChinese(RightHalf,Page0,1,MenuOff,tong);
647 1 //WriteChinese(RightHalf,Page0,2,MenuOn,lu);
648 1 //WriteChinese(RightHalf,Page0,2,yong);
649 1 //WriteChinese(RightHalf,Page0,3,yuan3);
650 1
651 1 WriteChinese(LiftHalf,Page2,0,MenuOff,di);
652 1 WriteChinese(LiftHalf,Page2,1,MenuOff,cone);
653 1 WriteChinese(LiftHalf,Page2,2,MenuOff,dian);
654 1 WriteChinese(LiftHalf,Page2,3,MenuOff,wen);
C51 COMPILER V8.02 ZHOUYI 05/22/2007 16:08:16 PAGE 12
655 1
656 1 WriteChinese(RightHalf,Page2,0,MenuOff,du);
657 1 //WriteDigit(RightHalf,Page2,2,maohao);
658 1 WriteChinese(RightHalf,Page2,3,MenuOff,TemperatureSign);
659 1
660 1 //SetStartLine(j);
661 1 WriteChinese(LiftHalf,Page4,0,MenuOff,huang);
662 1 WriteChinese(LiftHalf,Page4,1,MenuOff,shi);
663 1 WriteChinese(LiftHalf,Page4,2,MenuOff,li);
664 1 WriteChinese(LiftHalf,Page4,3,MenuOff,gong);
665 1
666 1 //SetStartLine(j);
667 1 WriteChinese(RightHalf,Page4,0,MenuOff,xue);
668 1 WriteChinese(RightHalf,Page4,1,MenuOff,yuan4);
669 1 WriteChinese(RightHalf,Page4,2,MenuOff,zhou);
670 1 WriteChinese(RightHalf,Page4,3,MenuOff,yi);
671 1
672 1 //}
673 1 /*while(1)
674 1 {
675 1 if(P0^0==1)
676 1 {void delay();
677 1 if(P0^0==1)
678 1 {key++;PressSign=1;
679 1 if(key==5)
680 1 {
681 1 key=1;
682 1 }
683 1 }
684 1 while(P0^0==1);
685 1 }
686 1
687 1 }*/
688 1
689 1 while(1)//主循环
690 1 { unsigned char *Temper;
691 2 unsigned char a=0,b=0,c=0,f=0,i=0;
692 2
693 2 Temper=ReadTemperature();//读温度
694 2 i=Temper[0];
695 2 a=i/100;
696 2 WriteDigit(RightHalf,Page2,3,zero+a*16);
697 2 b=i/10-a*10;
698 2 WriteDigit(RightHalf,Page2,4,zero+b*16);
699 2 c=i-a*100-b*10;
700 2 WriteDigit(RightHalf,Page2,5,zero+c*16);
701 2 if(Temper[1]==0)
702 2 WriteDigit(RightHalf,Page6,6,zero);
703 2 else
704 2 WriteDigit(RightHalf,Page6,6,zero+1*16);
705 2 DelayNS(200);
706 2 }
707 1 }
708
709
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1236 ----
CONSTANT SIZE = 930 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V8.02 ZHOUYI 05/22/2007 16:08:16 PAGE 13
DATA SIZE = ---- 31
IDATA SIZE = ---- 3
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 + -