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

📄 ref1.c

📁 this is the reference code of DS1302
💻 C
📖 第 1 页 / 共 3 页
字号:
#       week_value[1] = '\0';   
#    
#     Time->DateString[10] = '\0'; //字符串末尾加 '\0' ,判断结束字符   
# }   
#    
# void TimeToStr(SYSTEMTIME *Time)  //将时,分,秒数据转换成液晶显示字符放到数组 TimeString[];   
# {   if(hide_hour<2)   
#     {   
#       Time->TimeString[0] = Time->Hour/10 + '0';   
#       Time->TimeString[1] = Time->Hour%10 + '0';   
#     }   
#       else   
#         {   
#           Time->TimeString[0] = ' ';   
#           Time->TimeString[1] = ' ';   
#         }   
#     Time->TimeString[2] = ':';   
#     if(hide_min<2)   
#     {   
#       Time->TimeString[3] = Time->Minute/10 + '0';   
#       Time->TimeString[4] = Time->Minute%10 + '0';   
#     }   
#       else   
#         {   
#           Time->TimeString[3] = ' ';   
#           Time->TimeString[4] = ' ';   
#         }   
#     Time->TimeString[5] = ':';   
#     if(hide_sec<2)   
#     {   
#       Time->TimeString[6] = Time->Second/10 + '0';   
#       Time->TimeString[7] = Time->Second%10 + '0';   
#     }   
#       else   
#        {   
#          Time->TimeString[6] = ' ';   
#          Time->TimeString[7] = ' ';   
#        }   
#     Time->DateString[8] = '\0';   
# }   
#    
#    
# void Initial_DS1302(void)   //时钟芯(2)初始化   
# {      
#     unsigned char Second=Read1302(DS1302_SECOND);   
#     if(Second&0x80)       //判断时钟芯(2)是否关闭       
#     {   
#     Write1302(0x8e,0x00); //写?允许   
#     Write1302(0x8c,0x07); //以下写?初始化时间 ??:07/07/25.星?: 3. 时间: 23:59:55   
#     Write1302(0x88,0x07);   
#     Write1302(0x86,0x25);   
#     Write1302(0x8a,0x07);   
#     Write1302(0x84,0x23);   
#     Write1302(0x82,0x59);   
#     Write1302(0x80,0x55);   
#     Write1302(0x8e,0x80); //禁止写?   
#     }   
#    
# }   
#    
# /***********ds18b20子程序*************************/   
#    
# /***********ds18b20延迟子函数(晶振12MHz )*******/    
#    
# void delay_18B20(unsigned int i)   
# {   
#     while(i--);   
# }   
#    
# /**********ds18b20初始化函数**********************/   
#    
# void Init_DS18B20(void)    
# {   
#      unsigned char x=0;   
#      DQ = 1;          //DQ复位   
#      delay_18B20(8);  //稍做延时   
#      DQ = 0;          //单(2)机将DQ拉低   
#      delay_18B20(80); //精?延时 大于 480us   
#      DQ = 1;          //拉高总线   
#      delay_18B20(14);   
#      x=DQ;            //稍做延时后 ?果x=0则初始化成功 x=1则初始化失败   
#      delay_18B20(20);   
# }   
#    
# /***********ds18b20读一个字节**************/     
#    
# unsigned char ReadOneChar(void)   
# {   
#     uchar i=0;   
#     uchar dat = 0;   
#     for (i=8;i>0;i--)   
#      {   
#           DQ = 0; // 给脉冲信号   
#           dat>>=1;   
#           DQ = 1; // 给脉冲信号   
#           if(DQ)   
#           dat|=0x80;   
#           delay_18B20(4);   
#      }   
#     return(dat);   
# }   
#    
# /*************ds18b20写一个字节****************/     
#    
# void WriteOneChar(uchar dat)   
# {   
#     unsigned char i=0;   
#     for (i=8; i>0; i--)   
#     {   
#         DQ = 0;   
#         DQ = dat&0x01;   
#         delay_18B20(5);   
#         DQ = 1;   
#         dat>>=1;   
#  }   
# }   
#    
# /**************读?ds18b20当?温度************/   
#    
# void ReadTemp(void)   
# {   
#     unsigned char a=0;   
#     unsigned char b=0;   
#     unsigned char t=0;   
#    
#     Init_DS18B20();   
#     WriteOneChar(0xCC);     // 跳过读序号列号的操作   
#     WriteOneChar(0x44);     // ?动温度转换   
#    
#     delay_18B20(100);       // this message is wery important   
#    
#     Init_DS18B20();   
#     WriteOneChar(0xCC);     //跳过读序号列号的操作   
#     WriteOneChar(0xBE);     //读?温度寄存?等(共可读9个寄存?) ?两个就是温度   
#    
#     delay_18B20(100);   
#    
#     a=ReadOneChar();        //读?温度值低位   
#     b=ReadOneChar();        //读?温度值高位   
#     temp_value=b<<4;   
#     temp_value+=(a&0xf0)>>4;                  
# }   
# void temp_to_str()   //温度数据转换成液晶字符显示   
# {   
#   TempBuffer[0]=temp_value/10+'0';  //十位   
#   TempBuffer[1]=temp_value%10+'0';  //个位   
#   TempBuffer[2]=0xdf;   //温度符号   
#   TempBuffer[3]='C';   
#   TempBuffer[4]='\0';   
# }   
# void Delay1ms(unsigned int count)   
# {   
#     unsigned int i,j;   
#     for(i=0;i<count;i++) for(j="0;j<120;j++);" }="" *延时子程序*="" void="" mdelay(uint="" delay)="" {="" uint="" i;="" for(;delay="">0;delay--)   
#         {for(i=0;i<62;i++) //1ms延时.   
#             {;}   
#         }   
# }   
#    
#    
# void outkey()                    //跳出调整模式,返回默ˇ显示   
# { uchar Second;   
#   if(out==0||wireless_1==1)            
#   { mdelay(8);    
#     count=0;   
#     hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;   
#     Second=Read1302(DS1302_SECOND);   
#     Write1302(0x8e,0x00); //写?允许   
#     Write1302(0x80,Second&0x7f);   
#     Write1302(0x8E,0x80);          //禁止写?   
#     done=0;              
#     while(out==0);   
#     while(wireless_1==1);   
#   }   
# }   
# ////////////////////////////////////////////////////////////////////////////////////////////////////////////   
# void Upkey()//升序按键   
# {         
#         Up=1;   
#         if(Up==0||wireless_2==1)   
#                   {   
#                    mdelay(8);   
#                        switch(count)   
#                           {case 1:   
#                                   temp=Read1302(DS1302_SECOND);  //读?秒数   
#                                   temp=temp+1;  //秒数加1   
#                                   up_flag=1;    //数据调整后更新标志   
#                                   if((temp&0x7f)>0x59)   //超过59秒,?零   
#                                   temp=0;                                    
#                                   break;   
#                            case 2:   
#                                   temp=Read1302(DS1302_MINUTE);  //读?分数   
#                                   temp=temp+1;  //分数加1   
#                                   up_flag=1;   
#                                   if(temp>0x59)          //超过59分,?零   
#                                   temp=0;   
#                                   break;   
#                            case 3:   
#                                   temp=Read1302(DS1302_HOUR);  //读?小时数   
#                                   temp=temp+1;  //小时数加1   
#                                   up_flag=1;   
#                                   if(temp>0x23)   //超过23小时,?零   
#                                   temp=0;   
#                                   break;   
#                            case 4:   
#                                   temp=Read1302(DS1302_WEEK);  //读?星?数   
#                                   temp=temp+1;  //星?数加1   
#                                   up_flag=1;   
#                                   if(temp>0x7)     
#                                   temp=1;   
#                                   break;   
#                            case 5:   
#                                   temp=Read1302(DS1302_DAY);  //读??数   
#                                   temp=temp+1;  //?数加1   
#                                   up_flag=1;   
#                                   if(temp>0x31)   
#                                   temp=1;   
#                                   break;   
#                            case 6:   
#                                   temp=Read1302(DS1302_MONTH);  //读?月数   
#                                   temp=temp+1;  //月数加1   
#                                   up_flag=1;   
#                                   if(temp>0x12)   
#                                   temp=1;   
#                                   break;   
#                            case 7:   
#                                   temp=Read1302(DS1302_YEAR);  //读?年数   
#                                   temp=temp+1;  //年数加1   
#                                   up_flag=1;   
#                                   if(temp>0x85)   
#                                   temp=0;   
#                                   break;   
#                            default:break;   
#                           }   
#                          
#                    while(Up==0);   
#                    while(wireless_2==1);   
#                   }   
# }   
#    
# ////////////////////////////////////////////////////////////////////////////////////////////////////////////   
# void Downkey()//降序按键   
# {          
#         Down=1;   
#         if(Down==0||wireless_3==1)   
#                   {   
#                    mdelay(8);   
#                      switch(count)   
#                           {case 1:   
#                                   temp=Read1302(DS1302_SECOND);  //读?秒数   
#                                   temp=temp-1;                          //秒数减1   
#                                   down_flag=1;       //数据调整后更新标志   
#                                   if(temp==0x7f)     //小于0秒,返回59秒   
#                                   temp=0x59;   
#                                   break;   
#                            case 2:   
#                                   temp=Read1302(DS1302_MINUTE);  //读?分数   
#                                   temp=temp-1;  //分数减1   
#                                   down_flag=1;   
#                                   if(temp==-1)   
#                                   temp=0x59;      //小于0秒,返回59秒   
#                                   break;   
#                            case 3:   
#                                   temp=Read1302(DS1302_HOUR);  //读?小时数   
#                                   temp=temp-1;  //小时数减1   
#                                   down_flag=1;   

⌨️ 快捷键说明

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