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

📄 ds1302clock.lst

📁 数字体温计,由单片机控制现实当前的温度
💻 LST
📖 第 1 页 / 共 4 页
字号:
 276   2                              address=0x84; 
 277   2                              max=23;
 278   2                              mini=0;
 279   2                      }    //小时
 280   1              if(sel==3)  
 281   1                      {
 282   2                              address=0x86; 
 283   2                              max=31;
 284   2                              mini=1;
 285   2                      }    //日
 286   1              if(sel==2)  
 287   1                      {
 288   2                              address=0x88; 
 289   2                              max=12;mini=1;
 290   2                      }    //月
 291   1              if(sel==1)  
 292   1                      {
 293   2                              address=0x8c; 
 294   2                              max=99;mini=0;
 295   2                      }    //年
 296   1              if(sel==4)  
 297   1                      {
 298   2                              address=0x8a; 
 299   2                              max=7; mini=1;
 300   2                      }    //星期
 301   1        
 302   1              item=R1302(address+1)/16*10+R1302(address+1)%16;
 303   1              if (sel_1==0) 
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 6   

 304   1                      item++;  
 305   1                      else 
 306   1                              item--;
 307   1              if(item>max) item=mini;   
 308   1              if(item<mini) item=max;
 309   1                 
 310   1              W1302(0x8e,0x00);//允许写操作
 311   1              W1302(address,item/10*16+item%10);
 312   1              W1302(0x8e,0x80);//写保护,禁止写操作  
 313   1      }
 314          
 315          /******************************************************************************************
 316          * 函数名称    :Disp_line1
 317          * 功能描述    :屏幕显示第一行 时间和温度
 318          * 参数        :  参数名称:    输入/输出?     类型            描述
 319          * 
 320          * 返回值      :
 321          * 作者        :
 322          * 创建日期    :2006-12-19
 323          * 全局变量    :
 324          * 全局静态变量:
 325          * 局部静态变量:
 326          *----------------------------------------修改历史------------------------------------------
 327          * 当前版本    :                         修改人:                  修改日期:
 328          * 修改说明    :
 329          ******************************************************************************************/
 330          void Disp_line1(void) 
 331          {  
 332   1              Read_Temperature(10,0); //温度显示
 333   1        //冒号闪烁     
 334   1              if(flag==0)
 335   1              {
 336   2                      DisplayOneChar(3,0,0x3a); 
 337   2                      DisplayOneChar(6,0,0x3a);
 338   2              }
 339   1              else
 340   1              {
 341   2                      DisplayOneChar(3,0,0x20); 
 342   2                      DisplayOneChar(6,0,0x20);
 343   2              }
 344   1      
 345   1              if(sec==1)  //秒闪烁标志位
 346   1              {
 347   2              if(flag==1)
 348   2             {    
 349   3              DisplayOneChar(7,0,R1302(0x81)/16+0x30); //显示秒
 350   3              DisplayOneChar(8,0,R1302(0x81)%16+0x30);        
 351   3             }
 352   2           else
 353   2             {
 354   3              DisplayOneChar(7,0,0x20); //显示秒
 355   3              DisplayOneChar(8,0,0x20);    
 356   3             }
 357   2          } 
 358   1        else
 359   1          {
 360   2           DisplayOneChar(7,0,R1302(0x81)/16+0x30); //显示秒
 361   2           DisplayOneChar(8,0,R1302(0x81)%16+0x30);         
 362   2          }    
 363   1         
 364   1        if(min==1)  //分钟闪烁标志位
 365   1          {
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 7   

 366   2           if(flag==1)
 367   2             {    
 368   3              DisplayOneChar(4,0,R1302(0x83)/16+0x30); //显示分钟
 369   3              DisplayOneChar(5,0,R1302(0x83)%16+0x30);        
 370   3             }
 371   2           else
 372   2             {
 373   3              DisplayOneChar(4,0,0x20); //显示分钟
 374   3              DisplayOneChar(5,0,0x20);    
 375   3             }
 376   2          } 
 377   1        else
 378   1          {
 379   2           DisplayOneChar(4,0,R1302(0x83)/16+0x30); //显示分钟
 380   2           DisplayOneChar(5,0,R1302(0x83)%16+0x30);         
 381   2          } 
 382   1      
 383   1        if(hour==1)  //小时闪烁标志位
 384   1          {
 385   2           if(flag==1)
 386   2             {    
 387   3              DisplayOneChar(1,0,R1302(0x85)/16+0x30);//显示小时
 388   3              DisplayOneChar(2,0,R1302(0x85)%16+0x30); 
 389   3             }
 390   2           else
 391   2             {
 392   3              DisplayOneChar(1,0,0x20); //显示小时
 393   3              DisplayOneChar(2,0,0x20);    
 394   3             }
 395   2          } 
 396   1        else
 397   1         { 
 398   2          DisplayOneChar(1,0,R1302(0x85)/16+0x30);//显示小时
 399   2          DisplayOneChar(2,0,R1302(0x85)%16+0x30);
 400   2         }
 401   1      }
 402          
 403          /******************************************************************************************
 404          * 函数名称    :Disp_line2
 405          * 功能描述    :屏幕显示第二行  日期和星期  
 406          * 参数        :  参数名称:    输入/输出?     类型            描述
 407          * 
 408          * 返回值      :
 409          * 作者        :
 410          * 创建日期    :2006-12-19
 411          * 全局变量    :
 412          * 全局静态变量:
 413          * 局部静态变量:
 414          *----------------------------------------修改历史------------------------------------------
 415          * 当前版本    :                         修改人:                  修改日期:
 416          * 修改说明    :
 417          ******************************************************************************************/ 
 418          void Disp_line2(void)
 419          {
 420   1              DisplayOneChar(3,1,0x2f); //显示固定字符
 421   1              DisplayOneChar(6,1,0x2f);
 422   1              DisplayListChar(10,1,week);
 423   1          
 424   1              if(year==1)  //年闪烁标志位
 425   1              {
 426   2           if(flag==1)
 427   2             {    
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 8   

 428   3              DisplayOneChar(1,1,R1302(0x8d)/16+0x30);//显示年
 429   3              DisplayOneChar(2,1,R1302(0x8d)%16+0x30);
 430   3             }
 431   2           else
 432   2             {
 433   3              DisplayOneChar(1,1,0x20); //显示年
 434   3              DisplayOneChar(2,1,0x20);    
 435   3             }
 436   2          } 
 437   1        else
 438   1          { 
 439   2            DisplayOneChar(1,1,R1302(0x8d)/16+0x30);//显示年
 440   2            DisplayOneChar(2,1,R1302(0x8d)%16+0x30);
 441   2          }
 442   1           
 443   1        if(mon==1)  //月闪烁标志位
 444   1          {
 445   2           if(flag==1)
 446   2             {    
 447   3              DisplayOneChar(4,1,R1302(0x89)/16+0x30);//显示月 
 448   3              DisplayOneChar(5,1,R1302(0x89)%16+0x30);
 449   3             }
 450   2           else
 451   2             {
 452   3              DisplayOneChar(4,1,0x20); //显示月
 453   3              DisplayOneChar(5,1,0x20);    
 454   3             }
 455   2          } 
 456   1        else
 457   1          { 
 458   2            DisplayOneChar(4,1,R1302(0x89)/16+0x30);//显示月 
 459   2            DisplayOneChar(5,1,R1302(0x89)%16+0x30);
 460   2          }   
 461   1      
 462   1        if(day==1)  //日闪烁标志位
 463   1          {
 464   2           if(flag==1)
 465   2             {    
 466   3               DisplayOneChar(7,1,R1302(0x87)/16+0x30);//显示日
 467   3               DisplayOneChar(8,1,R1302(0x87)%16+0x30);
 468   3             }
 469   2           else
 470   2             {
 471   3              DisplayOneChar(7,1,0x20); //显示日
 472   3              DisplayOneChar(8,1,0x20);    
 473   3             }
 474   2          } 
 475   1        else
 476   1          { 
 477   2            DisplayOneChar(7,1,R1302(0x87)/16+0x30);//显示日
 478   2            DisplayOneChar(8,1,R1302(0x87)%16+0x30);
 479   2          }
 480   1          
 481   1         if(weekk==1)  //星期闪烁标志位
 482   1          {
 483   2           if(flag==1)
 484   2             {    
 485   3               DisplayOneChar(15,1,R1302(0x8b)%16+0x30);//显示星期
 486   3             }
 487   2           else
 488   2             {
 489   3              DisplayOneChar(15,1,0x20); //显示星期          
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 9   

 490   3             }
 491   2          } 
 492   1        else
 493   1          { 
 494   2            DisplayOneChar(15,1,R1302(0x8b)%16+0x30);//显示星期
 495   2          }     
 496   1      }
 497          
 498          /******************************************************************************************
 499          * 函数名称    :WriteDataLCM
 500          * 功能描述    :写数据
 501          * 参数        :  参数名称:    输入/输出?     类型            描述
 502          * 
 503          * 返回值      :
 504          * 作者        :
 505          * 创建日期    :2006-12-19
 506          * 全局变量    :
 507          * 全局静态变量:
 508          * 局部静态变量:
 509          *----------------------------------------修改历史------------------------------------------
 510          * 当前版本    :                         修改人:                  修改日期:
 511          * 修改说明    :
 512          ******************************************************************************************/
 513          void WriteDataLCM(uchar WDLCM)
 514          {
 515   1              ReadStatusLCM(); //检测忙
 516   1              LCM_Data = WDLCM;
 517   1              LCM_RS = 1;
 518   1              LCM_RW = 0;
 519   1              LCM_E = 0; //若晶振速度太高可以在这后加小的延时
 520   1              LCM_E = 0; //延时
 521   1              LCM_E = 1;
 522   1      }
 523          
 524          /******************************************************************************************
 525          * 函数名称    :写指令
 526          * 功能描述    :
 527          * 参数        :  参数名称:    输入/输出?     类型            描述
 528          * 
 529          * 返回值      :
 530          * 作者        :
 531          * 创建日期    :2006-12-19
 532          * 全局变量    :
 533          * 全局静态变量:
 534          * 局部静态变量:
 535          *----------------------------------------修改历史------------------------------------------
 536          * 当前版本    :                         修改人:                  修改日期:
 537          * 修改说明    :
 538          ******************************************************************************************/
 539          void WriteCommandLCM(uchar WCLCM,BuysC) //BuysC为0时忽略忙检测
 540          {
 541   1              if(BuysC) ReadStatusLCM(); //根据需要检测忙
 542   1              LCM_Data = WCLCM;
 543   1              LCM_RS = 0;
 544   1              LCM_RW = 0; 
 545   1              LCM_E = 0;
 546   1              LCM_E = 0;
 547   1              LCM_E = 1; 
 548   1      }
 549          
 550          /******************************************************************************************
 551          * 函数名称    :ReadStatusLCM
C51 COMPILER V7.10   DS1302CLOCK                                                           11/08/2008 19:50:12 PAGE 10  

 552          * 功能描述    :读状态
 553          * 参数        :  参数名称:    输入/输出?     类型            描述
 554          * 
 555          * 返回值      :
 556          * 作者        :
 557          * 创建日期    :2006-12-19

⌨️ 快捷键说明

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