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

📄 time.lst

📁 lcd1602的四位数据线用法
💻 LST
📖 第 1 页 / 共 3 页
字号:
 201   6                                                              dispchar(7,1,0x20);
 202   6                                                              delay(100);
 203   6                                                      }
 204   5      
 205   5                                              default:
 206   5                                              break;
 207   5                                      } //end switch(num_fsn)
 208   4                         } //end if(flag_op)
 209   3               }//end if(flag_s)  
 210   2      
 211   2      
 212   2              if(flag_m)       //每分钟软件定时中断处理*********************************************************
 213   2               {
 214   3                 flag_m=0;
 215   3                 if(flag_alarm)//正在闹铃,是否关闹铃
 216   3                    { 
 217   4                           if(flag_sw[at]==0) //闹一分钟的,关闹钟
 218   4                                {
 219   5                                  flag_alarm=0;
 220   5                                } 
 221   4                         } //end if(flag_alarm)
 222   3                 //实时时钟更正,判断年、月、日、星期、时、分是否应该更正//
 223   3                 I2CReadDate();//读入实时数据
 224   3                 if(time_y!= date[0])
 225   3                      {
 226   4                              time_y=date[0];
 227   4                              disp_bcd(6,0,time_y);//年
 228   4                      }
 229   3                 dispchar(8,0,0x2e);
 230   3      
 231   3                 if(time_mo!= date[1])
 232   3                      {
 233   4                              time_mo=date[1];
 234   4                              disp_bcd(9,0,time_mo);//月
 235   4                      }
 236   3                 dispchar(11,0,0x2e);
 237   3      
 238   3                 if(time_d!= date[2])
 239   3                      {
 240   4                              time_d=date[2];
 241   4                              disp_bcd(12,0,time_d);//日
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 5   

 242   4                      }
 243   3                 dispchar(14,0,0x2e);
 244   3                 if(time_w!= date[3])
 245   3                      {
 246   4                              time_w=date[3];
 247   4                              dispchar(15,0,0x30|time_w);//星期
 248   4                      }
 249   3      
 250   3                 if(time_h!=date[4])
 251   3                      {
 252   4                              time_h=date[4];
 253   4                              disp_bcd(0,0,time_h);//时
 254   4                      }
 255   3      
 256   3                      time_m=date[5];
 257   3                      disp_bcd(3,0,time_m);//分
 258   3                 //实时时钟更正,判断年、月、日、星期、时、分是否应该更正//////////////////////////////////////////
 259   3      
 260   3                 for(at=0;at<11;at++)    //闹钟检测
 261   3                  {
 262   4                        if (alarm[at][0]==time_h)//比较时钟
 263   4                          {
 264   5                                if (alarm[at][1]==time_m)//比较分钟
 265   5                                {
 266   6                                      flag_alarm=1; //标志闹钟标志
 267   6                                      break;
 268   6                                }
 269   5                              }
 270   4                  }//end for
 271   3               }//end if(flag_m)
 272   2      
 273   2      
 274   2              if(flag_op)      //进入操作界面后的显示程序
 275   2                {
 276   3                       dispchar(3,1,0x3a); //显示“:”
 277   3                       if(num_op==0x0a)
 278   3                         {
 279   4                              dispchar(0,1,0x54); //显示“T”表示正常时间     T的代码为54
 280   4                              disp(1,1,time_h);       //显示时钟
 281   4                              disp(0,0,time_h);       //更新时钟
 282   4                              disp(4,1,time_m);       //显示分钟
 283   4                              disp(3,0,time_m);       //更新分钟
 284   4                              dispchar(6,1,0x20);       //闹钟长久位不显示
 285   4                              dispchar(7,1,0x20);      //闹钟种类位不显示
 286   4                         }
 287   3                       else
 288   3                         {
 289   4                              dispchar(0,1,0x30|num_op);       //显示闹钟号(0--9)的代码为30-39
 290   4                              disp(1,1,alarm[num_op][0]);      //显示时钟
 291   4                              disp(0,0,time_h);                        //更新时钟
 292   4                              disp(4,1,alarm[num_op][1]);      //显示分钟
 293   4                              disp(3,0,time_m);                        //更新分钟
 294   4                              if(flag_sw[num_op])      //永远闹
 295   4                                      {
 296   5                                              dispchar(6,1,0x4f);//显示“P”
 297   5                                      }
 298   4                              else                                     //只闹一分钟
 299   4                                      {
 300   5                                              dispchar(6,1,0x5f); //显示“-”
 301   5                                      } 
 302   4                              dispchar(7,1,0x30|flag_sy[num_op]); //显示闹钟声音种类号
 303   4      
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 6   

 304   4      
 305   4                         }//end else
 306   3                 } //end if(flag_op)
 307   2      
 308   2                 if(flag_alarm)               //闹钟提示操作
 309   2                      {
 310   3                         
 311   3                         dispchar(10,1,0xf4);  //打开闹铃提示显示“”
 312   3                         //闹铃响铃操作函数,根据flag_sy[at]来进行
 313   3                         
 314   3                      }
 315   2                      else
 316   2                      {
 317   3                         dispchar(10,1,0x20);  //关闭闹铃提示显示“0”
 318   3                         //闹铃闭铃操作函数,根据flag_sy[at]来进行
 319   3                      }
 320   2                 
 321   2      
 322   2      
 323   2              key_temp=P3;
 324   2              key_temp&=0xf0; //取P3.4到P3.7四位
 325   2      
 326   2              switch(key_temp)
 327   2               {
 328   3                 case 0x70:   //P3.7按下      //长按3秒进入操作界面
 329   3                  {
 330   4                         delay(50);     //延时50ms
 331   4                         key_temp=P3&0xf0;  //再次读取键值
 332   4                         if(key_temp==0x70)
 333   4                          {
 334   5      
 335   5                                      delay(1000); //延时1s
 336   5                                      key_temp=P3&0xf0;  //再次读取键值
 337   5                                      if(key_temp==0x70)
 338   5                                              {
 339   6                                                      delay(2000); //延时2s
 340   6                                              key_temp=P3&0xf0;  //再次读取键值
 341   6                                              if(key_temp==0x70)       //延时3s后还是 --3秒长按即可进入操作界面
 342   6                                                      {
 343   7                                                                      if(flag_op)     //进入界面后
 344   7                                                                       {
 345   8                                                                              flag_op=0;                 //退出界面,清除显示
 346   8                                                                              dispchar(0,1,0x20);
 347   8                                                                              dispchar(1,1,0x20);
 348   8                                                                              dispchar(2,1,0x20);
 349   8                                                                              dispchar(3,1,0x20);
 350   8                                                                              dispchar(4,1,0x20);
 351   8                                                                              dispchar(5,1,0x20);
 352   8                                                                              dispchar(6,1,0x20);
 353   8                                                                              dispchar(7,1,0x20);      //闹钟种类位不显示
 354   8                                                                       }
 355   7                                                                      
 356   7                                                                      else     //末进入界面
 357   7                                                                        {
 358   8                                                                              flag_op=1;      //标志进入界面操作
 359   8                                                                              num_op=0x0a;
 360   8                                                                        }
 361   7                                                      }//end if(key_temp==0x38)
 362   6                                              }//end if(key_temp==0x38)
 363   5                              }//end if(key_temp==0x38)
 364   4                  }break;     //end case      0x38:
 365   3       ///////////////////////////////////////////////////////////////////////////////
C51 COMPILER V8.02   TIME                                                                  03/14/2009 10:38:56 PAGE 7   

 366   3                 case 0xb0:   //P3.6按下      上翻
 367   3                  {
 368   4                        if(flag_op)//进入操作界面后的操作
 369   4                         {
 370   5                           delay(50);   //延时50ms
 371   5                           key_temp=P3&0xf0;  //再次读取键值
 372   5                               if(key_temp==0xb0)
 373   5                                {
 374   6                                       switch(num_fsn)//num_fsn;组时分闹的操作数。00为组,01为时,02为分,03为闹;
 375   6                                              {
 376   7                                                      case 0:            //操作数加
 377   7                                                              {
 378   8                                                                      num_op++;
 379   8                                                                      if(num_op==0x0b)
 380   8                                                                              {
 381   9                                                                                      num_op=0;
 382   9                                                                              }
 383   8                                                              }break;  //end case 0:
 384   7      
 385   7                                                      case 1:         //小时加
 386   7                                                              {
 387   8                                                                      if(num_op==0x0a)//时钟小时加
 388   8                                                                              {
 389   9                                                                                      time_h++;
 390   9                                                                                      if(time_h==24)
 391   9                                                                                              {
 392  10                                                                                                      time_h=0;       
 393  10                                                                                              }
 394   9                                                                              }
 395   8                                                                      else            //0-9组闹钟小时加
 396   8                                                                              {
 397   9                                                                                 alarm[num_op][0]++;
 398   9                                                                                 if(alarm[num_op][0]==24)
 399   9                                                                                              {
 400  10                                                                                                      alarm[num_op][0]=0;
 401  10                                                                                              }
 402   9                                                                              }
 403   8                                                              }break; //end case 1:
 404   7      
 405   7                                                      case 2:         //分加
 406   7                                                              {
 407   8                                                                      if(num_op==0x0a)//时钟小时加
 408   8                                                                              {
 409   9                                                                                      time_m++;

⌨️ 快捷键说明

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