📄 quan.lst
字号:
656 1 }
657
658 /*------------------初始化LCD屏--------------------------*/
659 void init_lcd()
660 {
661 1 CS2=1;
662 1 CS1=1;
663 1 delay(100);
664 1 write_command(Disp_Off);
665 1 write_command(Page_Add+0);
666 1 write_command(Start_Line+0);
667 1 write_command(Col_Add+0);
668 1 write_command(Disp_On);
669 1 }
670
671
672 /*-------------------------- 开机信息显示------------------------*/
673 void StartMsg(void)
674 {
675 1 Clr_Scr(); // 先清屏 //
C51 COMPILER V8.02 QUAN 07/29/2008 20:35:20 PAGE 12
676 1 CS2=0;CS1=1;
677 1 hz_disp16(0,0,xian); // 献
678 1 delays(200);
679 1 hz_disp16(0,16,gei); // 给
680 1 delays(200);
681 1 hz_disp16(0,32,jing); // 靖
682 1 delays(200);
683 1 hz_disp16(0,48,de); // 的
684 1 delays(200);
685 1 CS2=1;CS1=0;
686 1 hz_disp16(0,0,shen); // 生
687 1 delays(200);
688 1 hz_disp16(0,16,xq7); // 日
689 1 delays(200);
690 1 hz_disp16(0,32,li); // 礼
691 1 delays(200);
692 1 hz_disp16(0,48,wu); // 物
693 1 delays(200);
694 1 CS2=0;CS1=1;
695 1 hz_disp32(2,0,sheng); // 生
696 1 hz_disp32(2,32,ri); // 日
697 1 CS2=1;CS1=0;
698 1 hz_disp32(2,0,kuai); // 快
699 1 hz_disp32(2,32,le); // 乐
700 1 delays(500);
701 1 hz_disp16(6,16,lu); // 陆
702 1 delays(200);
703 1 hz_disp16(6,32,qian); // 乾
704 1 delays(200);
705 1 hz_disp16(6,48,kun); // 坤
706 1 }
707 /*------------------------时钟固定汉字显示-----------------------*/
708 void ClockMsg(void)
709 {
710 1 Clr_Scr(); // 先清屏 //
711 1 CS2=0;CS1=1; // 左屏
712 1 sz_disp16(0,48,shuzi[2]); // 2
713 1 sz_disp16(0,56,shuzi[0]); // 0
714 1 hz_disp16(2,16,yue); // 月
715 1 hz_disp16(2,48,xq7); // 日
716 1 sz_disp16(4,16,maohao); // 冒号
717 1 sz_disp16(4,40,maohao);
718 1 CS2=1;CS1=0; // 右屏
719 1 hz_disp16(2,16,xing); // 星
720 1 hz_disp16(2,31,qi); // 期
721 1 sz_disp16(4,32,point); // 小数点
722 1 hz_disp16(4,48,du); // 度
723 1 }
724
725 /*------------------------温度传感器部分-------------------------*/
726 /******************************************************************************/
727 void Init_DS18B20(void)//初始化ds1820
728 {
729 1 unsigned char x=0;
730 1 DQ = 1; //DQ复位
731 1 delay(8); //稍做延时
732 1 DQ = 0; //单片机将DQ拉低
733 1 delay(80); //精确延时 大于 480us
734 1 DQ = 1; //拉高总线
735 1 delay(14);
736 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
737 1 delay(20);
C51 COMPILER V8.02 QUAN 07/29/2008 20:35:20 PAGE 13
738 1 }
739 /******************************************************************************/
740 unsigned char ReadOneChar(void)//读一个字节
741 {
742 1 unsigned char i=0;
743 1 unsigned char dat = 0;
744 1 for (i=8;i>0;i--)
745 1 {
746 2 DQ = 0; // 给脉冲信号
747 2 dat>>=1;
748 2 DQ = 1; // 给脉冲信号
749 2 if(DQ)
750 2 dat|=0x80;
751 2 delay(4);
752 2 }
753 1 return(dat);
754 1 }
755
756 /******************************************************************************/
757 void WriteOneChar(unsigned char dat)//写一个字节
758 {
759 1 unsigned char i=0;
760 1 for (i=8; i>0; i--)
761 1 {
762 2 DQ = 0;
763 2 DQ = dat&0x01;
764 2 delay(5);
765 2 DQ = 1;
766 2 dat>>=1;
767 2 }
768 1 }
769 /******************************************************************************/
770 unsigned int ReadTemperature(void)//读取温度
771 {
772 1 unsigned char a=0;
773 1 unsigned char b=0;
774 1 unsigned int t=0;
775 1 float tt=0;
776 1 Init_DS18B20(); //第一次复位,执行温度转换
777 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
778 1 WriteOneChar(0x44); // 启动温度转换
779 1 Init_DS18B20(); // 第二次复位,读数据
780 1 WriteOneChar(0xCC); //跳过读序号列号的操作
781 1 WriteOneChar(0xBE); //读取温度寄存器
782 1 a=ReadOneChar(); //读低8位
783 1 b=ReadOneChar(); //读高8位
784 1 t=b;
785 1 t<<=8;
786 1 t=t|a;
787 1 tt=t*0.0625;
788 1 t= tt*10+0.5; //放大10倍输出并四舍五入
789 1 return(t);
790 1 }
791 /******************************************************************************/
792
793
794 /*-----------------------时钟部分---------------------------*/
795
796 ///////////////////////////////////////////////
797 ///// 函数名: 写入字节子函数 //////
798 ///// 函数功能: 写入一个字节到对应地址 //////
799 ///// 函数参数: 有(写入的字节内容) //////
C51 COMPILER V8.02 QUAN 07/29/2008 20:35:20 PAGE 14
800 ///// 返回值: 无 //////
801 ///////////////////////////////////////////////
802
803 void InputByte(unsigned char dat)
804 {
805 1 unsigned char i;
806 1 ACC = dat;
807 1 for(i=8; i>0; i--)
808 1 {
809 2 IO = ACC0;
810 2 CLK = 1; //下降沿写入数据//
811 2 CLK = 0;
812 2 ACC = ACC >> 1;
813 2 }
814 1 }
815
816 /************************************************************************************///*时钟部分*/↓
817 ///////////////////////////////////////////////
818 ///// 函数名: 读出字节子函数 //////
819 ///// 函数功能: 从对应地址读出一个字节 //////
820 ///// 函数参数: 无 //////
821 ///// 返回值: 有(读出的字节内容) //////
822 ///////////////////////////////////////////////
823 OutputByte(void)
824 {
825 1 unsigned char i;
826 1 for(i=8; i>0; i--)
827 1 {
828 2 ACC = ACC >>1;
829 2 ACC7 = IO;
830 2 CLK = 1; //上升沿读出数据//
831 2 CLK = 0;
832 2 }
833 1 return(ACC);
834 1 }
835 /*************************************************************************************************/
836 /////////////////////////////////////////////
837 ///// 函数名: 写入字节完整子函数 //////
838 ///// 函数功能: 写入一个字节到DS1302 //////
839 ///// 调用: InputByte() //////
840 ///// 函数参数: 有(写入的地址和数据) //////
841 ///// 返回值: 无 //////
842 /////////////////////////////////////////////
843
844 void WriteTo1302(unsigned char Addr,unsigned char Date)
845 {
846 1 RST2 = 0;
847 1 CLK = 0;
848 1 RST2 = 1;
849 1 InputByte(Addr); // 先给地址,命令 //
850 1 InputByte(Date); // 再写入一字节数据 //
851 1 CLK = 1;
852 1 RST2 =0;
853 1 }
854 /*************************************************************************************************/
855 /////////////////////////////////////////////
856 ///// 函数名: 初始化DS1302 //////
857 ///// 函数功能: 给DS1302设定初始值 //////
858 ///// 调用: WriteTo1302 //////
859 ///// 函数参数: 无 //////
860 ///// 返回值: 无 //////
861 /////////////////////////////////////////////
C51 COMPILER V8.02 QUAN 07/29/2008 20:35:20 PAGE 15
862
863 /* void Init_1302(void){//(2008年5月5日08时55分55秒星期一)
864 WriteTo1302(0x8e,0x00);//允许写操作
865
866 WriteTo1302(0x8c,0x08);//年
867 WriteTo1302(0x8a,0x01);//星期
868 WriteTo1302(0x88,0x05);//月
869 WriteTo1302(0x86,0x05);//日
870 WriteTo1302(0x84,0x08);//小时
871 WriteTo1302(0x82,0x55);//分钟
872 WriteTo1302(0x80,0x00);//秒
873 WriteTo1302(0x90,0xa5);//充电
874 WriteTo1302(0x8e,0x80);//禁止写操作
875 } */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -