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

📄 ds12cr887mnl.lst

📁 基于DS12887的多功能电子智能时钟
💻 LST
📖 第 1 页 / 共 3 页
字号:
 382   1              lcm_w_test(1,min%10+0x30);      
 383   1              lcm_w_test(1,0x3a);      //分钟与小时之间显示":"        
 384   1      }
 385          
 386          //往液晶屏填写 秒 数据
 387          void lcm_w_sec(void)
 388          {
 389   1              uint i=0;
 390   1              uchar a=0,b=0,c=0;
 391   1              sec=ds_read(0);//读取DS12CR887的秒
 392   1              lcm_w_test(0,0x8b);             //秒钟在液晶屏上显示的位置
 393   1              lcm_w_test(1,(sec/10)+0x30);    //写十位//对10求余分解出十位            
 394   1              lcm_w_test(1,sec%10+0x30);      //写个位
 395   1      
 396   1              lcm_w_test(0,0x8d);             //温度在液晶屏上显示的位置              
 397   1              i=ReadTemperature();//读温度并送显
 398   1              a=i/100;
 399   1              lcm_w_test(1,a+0x30);   //显示温度十位
 400   1              b=i/10-a*10;
 401   1              lcm_w_test(1,b+0x30);   //个位
 402   1              lcm_w_test(1,0x2e);      //"."
 403   1              c=i-a*100-b*10;
 404   1              lcm_w_test(1,c+0x30); //小数点位1位             
 405   1              lcm_w_word("℃");       //度C
 406   1      
 407   1      }
 408          
 409          /*调整时间、日期程序---------------------------------------------------------*/
 410          void Set_time(uchar sel)  
 411          { 
 412   1              signed char address,item;
 413   1              signed char max,mini; 
 414   1              lcm_w_test(0,0x9a);
 415   1              lcm_w_word("调整");  
 416   1              if(sel==5)  {lcm_w_word("分钟");address=2; max=59;mini=0;}  //分钟2 
 417   1              if(sel==4)  {lcm_w_word("小时");address=4; max=23;mini=0;}  //小时4  
 418   1              if(sel==3)  {lcm_w_word("星期");address=6; max=7; mini=1;}   //星期6   
 419   1              if(sel==2)  {lcm_w_word("日期");address=7; max=31;mini=1;}  //日期7  
 420   1              if(sel==1)  {lcm_w_word("月份");address=8; max=12;mini=1;}  //月份8  
 421   1              if(sel==0)  {lcm_w_word("年份");address=9; max=99; mini=0;} //年份9   
 422   1              
 423   1              //读取DS12CR887某地址上的数值赋给item   
 424   1              item=ds_read(address);
 425   1              if(K3 == 0)//K3-加
 426   1              {
 427   2                      item++;//数加 1  
C51 COMPILER V8.05a   DS12CR887MNL                                                         04/15/2009 21:34:52 PAGE 8   

 428   2              }
 429   1              if(K4 == 0)//K4-减
 430   1              {
 431   2                      item--;//数减 1 
 432   2              }
 433   1              if(item>max) 
 434   1                      item=mini;//查看数值有效范围   
 435   1              if(item<mini) 
 436   1                      item=max;
 437   1              
 438   1              //将调整好的item值写入DS12CR887           
 439   1              ds_write(address,item);//+
 440   1              lcm_w_year();   //年
 441   1              lcm_w_month();  //月 
 442   1              lcm_w_date();   //日
 443   1              lcm_w_day();    //星期
 444   1              lcm_w_hour();   //时
 445   1              lcm_w_min();    //分
 446   1      }
 447          
 448          /*显示欢迎信息---------------------------------------------------------------*/
 449          
 450          void welcome(void)
 451          {                                                                 
 452   1              write_com(0x81);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
 453   1              lcm_w_word("电子智能时钟"); 
 454   1      
 455   1              write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示) 
 456   1              lcm_w_word("DS12887+LCM12864"); 
 457   1              
 458   1              write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示) 
 459   1              lcm_w_word("※程序设计: 七品"); 
 460   1              
 461   1              write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)     
 462   1              lcm_w_word("☆2009年02月11日"); 
 463   1      }
 464          
 465          /*主程序---------------------------------------------------------------------*/
 466          
 467          main() 
 468          {
 469   1              uchar e=0;
 470   1              K1=1;K2=1;K3=1;K4=1;
 471   1              ds_int();     //初始化DS12CR887
 472   1              lcm_init();   //初始化液晶显示器
 473   1              lcm_clr();    //清屏
 474   1              welcome();    //显示欢迎信息
 475   1              DelayM(3000); //显示停留3秒
 476   1              lcm_clr();    //清屏
 477   1              while(1)
 478   1              {
 479   2                      if (w == 0)     //正常走时
 480   2                      {   
 481   3                              lcm_w_year();   //显示年
 482   3                              lcm_w_month();  //显示月 
 483   3                              lcm_w_date();   //显示日
 484   3                              lcm_w_day();    //显示星期
 485   3                              lcm_w_hour();   //显示时
 486   3                              lcm_w_min();    //显示分
 487   3                              lcm_w_sec();    //显示秒
 488   3                              days();         //显示节日提示
 489   3                      }
C51 COMPILER V8.05a   DS12CR887MNL                                                         04/15/2009 21:34:52 PAGE 9   

 490   2                      else {}//否则启动调时
 491   2              
 492   2                      if (K1 == 0) // 设置时间
 493   2                  {
 494   3                      DelayM(20);        //按键消抖
 495   3                              if(K1 == 0 && w == 1)  //当是调时状态 本键用于调整下一项
 496   3                              {
 497   4                                      e++;
 498   4                                      if (e >= 6 )
 499   4                                      {
 500   5                                              e = 0;  
 501   5                                      }
 502   4                                      Set_time(e);//调整                              
 503   4                              }                       
 504   3                              if(K1 == 0 && w == 0)  //当是正常状态时就进入调时状态
 505   3                              {
 506   4                                      lcm_clr();//清屏
 507   4                                      w=1;      //进入调时                            
 508   4                                      Set_time(e);//调整
 509   4                              }
 510   3                      while(K1 == 0);//等待键松开 
 511   3                      }
 512   2              
 513   2                      if (K2 == 0) // 当在调时状态时就退出调时
 514   2                  {
 515   3                              DelayM(20);//按键消抖
 516   3                              if(K2 == 0 && w == 1)
 517   3                              {                               
 518   4                                      w = 0;    //退出调时
 519   4                                      e = 0;          //"下一项"计数器清0                                                             
 520   4                              }
 521   3                              if(K2 == 0 && w == 0) 
 522   3                              {                               
 523   4                                      lcm_clr();//清屏
 524   4                              welcome();//显示欢迎字                          
 525   4                                      while(K2 == 0);//等待键松开  
 526   4                              }
 527   3                              lcm_clr();//清屏                                
 528   3                              lcm_w_year();   //年
 529   3                              lcm_w_month();  //月 
 530   3                              lcm_w_date();   //日
 531   3                              lcm_w_day();    //星期
 532   3                              lcm_w_hour();   //时
 533   3                              lcm_w_min();    //分
 534   3                              lcm_w_sec();    //秒
 535   3                              days();         //显示节日提示
 536   3                              while(K2 == 0);//等待键松开  
 537   3                      }
 538   2              
 539   2                      if (K3 == 0 && w == 1)//加调整
 540   2                      { 
 541   3                              DelayM(20);//按键消抖
 542   3                              if(K3 == 0 && w == 1)
 543   3                              {                               
 544   4                                      Set_time(e);//调整
 545   4                              }
 546   3                              while(K3 == 0);//等待键松开
 547   3                      }
 548   2              
 549   2                      if (K4 == 0 && w == 1) //减调整
 550   2                      {               
 551   3                              DelayM(20);//按键消抖
C51 COMPILER V8.05a   DS12CR887MNL                                                         04/15/2009 21:34:52 PAGE 10  

 552   3                              if(K4 == 0 && w == 1)
 553   3                              {                               
 554   4                                      Set_time(e);//调整
 555   4                              }
 556   3                              while(K4 == 0);//等待键松开
 557   3                      }
 558   2              }       
 559   1      }
 560          
 561          /*----------------------------文件结束-------------------------*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2650    ----
   CONSTANT SIZE    =   1195    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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