⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302clock.lst

📁 1302时钟1602显示~~分享了·~~希望对大家有用~~
💻 LST
📖 第 1 页 / 共 4 页
字号:
 848   2              W1302(ucAddr,*pClock);  /* 秒 分 时 日 月 星期 年 */ 
 849   2              pClock++;
 850   2              ucAddr +=2;
 851   2          }
 852   1          W1302(0x8e,0x80);           /* 控制命令,WP=1,写保护?*/
 853   1      }
 854          
 855          /******************************************************************************************
 856          * 函数名称    :delay
 857          * 功能描述    :
 858          * 参数        :  参数名称:    输入/输出?     类型            描述
 859          * 
 860          * 返回值      :
 861          * 作者        :
C51 COMPILER V8.01   DS1302CLOCK                                                           08/16/2008 15:50:11 PAGE 15  

 862          * 创建日期    :2006-12-19
 863          * 全局变量    :
 864          * 全局静态变量:
 865          * 局部静态变量:
 866          *----------------------------------------修改历史------------------------------------------
 867          * 当前版本    :                         修改人:                  修改日期:
 868          * 修改说明    :
 869          ******************************************************************************************/
 870          void delay(word useconds)
 871          {
 872   1              for(;useconds>0;useconds--);
 873   1      }
 874          
 875          /******************************************************************************************
 876          * 函数名称    :Delay
 877          * 功能描述    :
 878          * 参数        :  参数名称:    输入/输出?     类型            描述
 879          * 
 880          * 返回值      :
 881          * 作者        :
 882          * 创建日期    :2006-12-19
 883          * 全局变量    :
 884          * 全局静态变量:
 885          * 局部静态变量:
 886          *----------------------------------------修改历史------------------------------------------
 887          * 当前版本    :                         修改人:                  修改日期:
 888          * 修改说明    :
 889          ******************************************************************************************/
 890          void Delay18B20(int num)
 891          {
 892   1              while(num--);
 893   1      }
 894          /******************************************************************************************
 895          * 函数名称    :ow_reset
 896          * 功能描述    :复位
 897          * 参数        :  参数名称:    输入/输出?     类型            描述
 898          * 
 899          * 返回值      :
 900          * 作者        :
 901          * 创建日期    :2006-12-19
 902          * 全局变量    :
 903          * 全局静态变量:
 904          * 局部静态变量:
 905          *----------------------------------------修改历史------------------------------------------
 906          * 当前版本    :                         修改人:                  修改日期:
 907          * 修改说明    :
 908          ******************************************************************************************/
 909          byte ow_reset(void)
 910          {
 911   1              unsigned char x=0;
 912   1                DQ = 1;    //DQ复位
 913   1                Delay18B20(8);  //稍做延时
 914   1                DQ = 0;    //单片机将DQ拉低
 915   1                Delay18B20(80); //精确延时 大于 480us
 916   1                DQ = 1;    //拉高总线
 917   1                Delay18B20(14);
 918   1                x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
 919   1                Delay18B20(20);
 920   1      }     
*** WARNING C173 IN LINE 920 OF DS1302CLOCK.C: missing return-expression
 921          
 922          /******************************************************************************************
C51 COMPILER V8.01   DS1302CLOCK                                                           08/16/2008 15:50:11 PAGE 16  

 923          * 函数名称    :read_byte
 924          * 功能描述    :从 1-wire 总线上读取一个字节
 925          * 参数        :  参数名称:    输入/输出?     类型            描述
 926          * 
 927          * 返回值      :
 928          * 作者        :
 929          * 创建日期    :2006-12-19
 930          * 全局变量    :
 931          * 全局静态变量:
 932          * 局部静态变量:
 933          *----------------------------------------修改历史------------------------------------------
 934          * 当前版本    :                         修改人:                  修改日期:
 935          * 修改说明    :
 936          ******************************************************************************************/
 937          byte read_byte(void)
 938          {
 939   1              byte i;
 940   1              byte value = 0;
 941   1              for (i=8;i>0;i--)
 942   1              {
 943   2              value>>=1;
 944   2              DQ = 0; 
 945   2              DQ = 1;
 946   2              delay(1);  
 947   2              if(DQ)value|=0x80;
 948   2              delay(6); 
 949   2              }
 950   1              return(value);
 951   1      }
 952          
 953          
 954          /******************************************************************************************
 955          * 函数名称    :write_byte
 956          * 功能描述    :向 1-WIRE 总线上写一个字节
 957          * 参数        :  参数名称:    输入/输出?     类型            描述
 958          * 
 959          * 返回值      :
 960          * 作者        :
 961          * 创建日期    :2006-12-19
 962          * 全局变量    :
 963          * 全局静态变量:
 964          * 局部静态变量:
 965          *----------------------------------------修改历史------------------------------------------
 966          * 当前版本    :                         修改人:                  修改日期:
 967          * 修改说明    :
 968          ******************************************************************************************/
 969          void write_byte(char val)
 970          {
 971   1              byte i;
 972   1              for (i=8; i>0; i--) // 一次写一位
 973   1              {
 974   2              DQ = 0; // 
 975   2              DQ = val&0x01;
 976   2              Delay18B20(5); // 
 977   2              DQ = 1;
 978   2              val=val/2;
 979   2              }
 980   1              Delay18B20(5);
 981   1      }
 982          
 983          /******************************************************************************************
 984          * 函数名称    :Read_Temperature
C51 COMPILER V8.01   DS1302CLOCK                                                           08/16/2008 15:50:11 PAGE 17  

 985          * 功能描述    :读取和显示温度
 986          * 参数        :  参数名称:    输入/输出?     类型            描述
 987          * 
 988          * 返回值      :
 989          * 作者        :
 990          * 创建日期    :2006-12-19
 991          * 全局变量    :
 992          * 全局静态变量:
 993          * 局部静态变量:
 994          *----------------------------------------修改历史------------------------------------------
 995          * 当前版本    :                         修改人:                  修改日期:
 996          * 修改说明    :
 997          ******************************************************************************************/
 998          Read_Temperature(char xx,char yy)
 999          {
1000   1              uchar i,tl_temp;
1001   1              uint  x;
1002   1              uchar ct[8];
1003   1              union{byte c[2]; int x;}temp;
1004   1        
1005   1              ow_reset();
1006   1              write_byte(0xCC); // Skip ROM
1007   1              write_byte(0x44); // 转换温度
1008   1              ow_reset();
1009   1              write_byte(0xCC); //Skip ROM
1010   1              write_byte(0xbe); // 读取寄存器
1011   1              temp.c[1]=read_byte();//读出温度低8位
1012   1              temp.c[0]=read_byte();//读出温度高8位
1013   1       
1014   1        // 零下温度判断
1015   1              sflag=0; //温度零下标志 0:零上,1:零下
1016   1              if((temp.c[0]&0xf8)!=0x00)
1017   1              {
1018   2              sflag=1; //零下标志位置1
1019   2              temp.c[1]=~temp.c[1]; //低8位取反
1020   2              temp.c[0]=~temp.c[0]; //高8位取反
1021   2              tl_temp=temp.c[1]+1;  //低8位加1 
1022   2              temp.c[1]=tl_temp;    //计算后重新存入数组
1023   2              if(tl_temp>255) temp.c[0]++;  //如果低8位大于255,向高8位进1
1024   2              }  
1025   1      
1026   1              x=((temp.c[0]&0x07)*256+temp.c[1])*.625;
1027   1              for(i=0;i<8;i++)
1028   1             {
1029   2               ct[i]=0;
1030   2             }
1031   1              i=0;
1032   1              while(x/10)
1033   1              {
1034   2              ct[i]=x%10;
1035   2              x=x/10;
1036   2              i++;
1037   2              }
1038   1              ct[i]=x;
1039   1      
1040   1              if(sflag==1) DisplayOneChar(xx-1,yy,0x2d);
1041   1              else         DisplayOneChar(xx-1,yy,0x20);
1042   1              DisplayOneChar(xx,  yy,ct[2]+0x30);//显示温度十位数
1043   1              DisplayOneChar(xx+1,yy,ct[1]+0x30);//显示温度个位数
1044   1              DisplayOneChar(xx+2,yy,0x2e);//显示小数点
1045   1              DisplayOneChar(xx+3,yy,ct[0]+0x30);//显示温度小数位
1046   1              DisplayOneChar(xx+4,yy,0x01);//显示自定义字符
C51 COMPILER V8.01   DS1302CLOCK                                                           08/16/2008 15:50:11 PAGE 18  

1047   1              DisplayOneChar(xx+5,yy,0x43);//显示字符“C
1048   1      }
1049          
1050          /******************************************************************************************
1051          * 函数名称    :adjust_res
1052          * 功能描述    :温度分辨率调整
1053          * 参数        :  参数名称:    输入/输出?     类型            描述
1054          * 
1055          * 返回值      :
1056          * 作者        :
1057          * 创建日期    :2006-12-19
1058          * 全局变量    :
1059          * 全局静态变量:
1060          * 局部静态变量:
1061          *----------------------------------------修改历史------------------------------------------
1062          * 当前版本    :                         修改人:                  修改日期:
1063          * 修改说明    :
1064          ******************************************************************************************/
1065          void adjust_res(char res) ///res 分别等于 0x1f, 0x3f, 0x5f 温度读数分辨率分别对应
1066                                     //              0.5, 0.25, 0.125   
1067          {
1068   1              ow_reset();        //复位
1069   1              write_byte(0xcc);  //跳过Rom
1070   1              write_byte(0x4e);  //写暂存器
1071   1              write_byte(0x02);  //写TH 
1072   1              write_byte(0x01);  //写TL
1073   1        //write_byte(0x5f);  //写结构寄存器
1074   1              write_byte(res);
1075   1              ow_reset();       //复位
1076   1              write_byte(0xcc); //跳过Rom 
1077   1              write_byte(0x48); //把暂存器内容写到EPRam中
1078   1      } 
1079          /******************************************************************************************
1080          * 函数名称    :mychar
1081          * 功能描述    :
1082          * 参数        :  参数名称:    输入/输出?     类型            描述
1083          * 
1084          * 返回值      :
1085          * 作者        :
1086          * 创建日期    :2006-12-19
1087          * 全局变量    :
1088          * 全局静态变量:
1089          * 局部静态变量:
1090          *----------------------------------------修改历史------------------------------------------
1091          * 当前版本    :                         修改人:                  修改日期:
1092          * 修改说明    :
1093          ******************************************************************************************/
1094          void mychar()//自定义字符
1095          {
1096   1                      WriteCommandLCM(0x48, 0); //第一行
1097   1                      WriteDataLCM(0x02);
1098   1                      WriteCommandLCM(0x49, 0); //第2行
1099   1                      WriteDataLCM(0x05);
1100   1                      WriteCommandLCM(0x4a, 0); //第3
1101   1                      WriteDataLCM(0x05);
1102   1                      WriteCommandLCM(0x4b, 0); //第4
1103   1                      WriteDataLCM(0x02);
1104   1                      WriteCommandLCM(0x4c, 0); //第5
1105   1                      WriteDataLCM(0x00);
1106   1                      WriteCommandLCM(0x4d, 0); //第6
1107   1                      WriteDataLCM(0x00);
1108   1                      WriteCommandLCM(0x4e, 0); //第7
C51 COMPILER V8.01   DS1302CLOCK                                                           08/16/2008 15:50:11 PAGE 19  

1109   1                      WriteDataLCM(0x00);
1110   1                      WriteCommandLCM(0x4f, 0); //第8
1111   1                      WriteDataLCM(0x00);
1112   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2006    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9      29
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      9    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -