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

📄 万年历.lst

📁 DS12887+1602(带温度)原理图和程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 184   1       databuffer[7]=hour/10;
 185   1       databuffer[8]=day%10;
 186   1       databuffer[9]=day/10;
 187   1       databuffer[10]=month%10;
 188   1       databuffer[11]=month/10;
 189   1       databuffer[12]=year%10;
 190   1       databuffer[13]=year/10;
 191   1      }
 192          /**************************液晶数据显示**************************/
 193          void disp()        //显示程序
 194          {       
 195   1              uchar j=0; 
 196   1              lcd_write_com(0x80+0x40);        //设置指针地址为第二行
 197   1              lcd_write_data(word[databuffer[7]]);    //小时十位
 198   1              lcd_write_data(word[databuffer[6]]);   //小时个位
 199   1              lcd_write_data(word[databuffer[5]]);
 200   1              lcd_write_data(word[databuffer[4]]);  //分十位
 201   1              lcd_write_data(word[databuffer[3]]);  //分个位
 202   1              lcd_write_data(word[databuffer[2]]);
 203   1              lcd_write_data(word[databuffer[1]]);  //秒十位
 204   1              lcd_write_data(word[databuffer[0]]);  //秒个位
 205   1              lcd_write_com(0x80+0x03);          //设置指针地址为第一行
 206   1              lcd_write_data(word[databuffer[13]]); //年十位
 207   1              lcd_write_data(word[databuffer[12]]); //年个位
 208   1              lcd_write_data(word[12]);
 209   1              lcd_write_data(word[databuffer[11]]);  //月十位
 210   1              lcd_write_data(word[databuffer[10]]);  //月个位
 211   1              lcd_write_data(word[12]);
 212   1              lcd_write_data(word[databuffer[9]]);   //日十位
 213   1              lcd_write_data(word[databuffer[8]]);   //日个位 
 214   1              lcd_write_com(0x80+0x0c);
 215   1              for(j=0;j<3;j++)
 216   1              {
 217   2                       lcd_write_data( week[weekday-1][j]);
 218   2              }
 219   1      }
 220          /******************************键盘扫描*****************************/
 221          void keyboard()
 222          {
 223   1              if(key_1==0)    
 224   1                      {
 225   2                              delay(10);
 226   2                              if(key_1==0)
 227   2                              {       
 228   3                                      count++;   //按键计数,设置模式
 229   3                                      while(!key_1);
 230   3                                      flag=1;
 231   3                                      flag1=0;
 232   3                                      read_ds(0x0c);
 233   3                                      while(!key_1);
 234   3                                      if(count==1)    //key_1键摁一次
 235   3                                      {
 236   4                                              lcd_write_com(0xc0+7);    //设置光标为秒位置
 237   4                                              lcd_write_com(0x0e);
 238   4                                      }
 239   3                              
 240   3                                      if(count==2)     //key_1键摁两次
C51 COMPILER V9.00   万年繽                                                                06/09/2013 23:40:22 PAGE 5   

 241   3                                      {
 242   4                                              lcd_write_com(0xc0+4);   //设置光标为分位置  
 243   4                                      }
 244   3                                      if(count==3)    //key_1键摁三次
 245   3                                      {
 246   4                                              lcd_write_com(0xc0+1);   //设置光标为时位置
 247   4                                      }
 248   3                                      if(count==4)    //key_1键摁三次
 249   3                                      {
 250   4                                              lcd_write_com(0x80+0x09);        //设置光标为日位置
 251   4                                      }
 252   3                                      if(count==5)    //key_1键摁三次
 253   3                                      {
 254   4                                              lcd_write_com(0x80+0x06);        //设置光标为月位置
 255   4                                      }
 256   3                                      if(count==6)    //key_1键摁三次
 257   3                                      {
 258   4                                              lcd_write_com(0x80+0x03);        //设置光标为年位置
 259   4                                      }
 260   3                                      if(count==7)    //key_1键摁三次
 261   3                                      {
 262   4                                              lcd_write_com(0x80+0x01);        //设置光标为年位置
 263   4                                      }
 264   3                                      if(count==8)     //key_1键摁四次
 265   3                                      {
 266   4                                              count=0;           //摁键次数清零
 267   4                                              lcd_write_com(0x0f);            //光标不显示
 268   4                                              write_ds(0x00,second);
 269   4                                              write_ds(0x02,min);
 270   4                                              write_ds(0x04,hour);
 271   4                                              write_ds(0x06,weekday);
 272   4                                              write_ds(0x07,day);
 273   4                                              write_ds(0x08,month);
 274   4                                              write_ds(0x09,year);
 275   4                                              flag=0;
 276   4                                              delay(200);
 277   4                                      }
 278   3                              }
 279   2                      }
 280   1                              if(count!=0)                       //key_1键摁后处理
 281   1                              {
 282   2                                      if(key_2==0)              //key_2键摁下处理
 283   2                                      {
 284   3                                              delay(10);
 285   3                                              if(key_2==0)
 286   3                                              {
 287   4                                                      while(!key_2);
 288   4                                                      if(count==1)       //key_1键摁一次
 289   4                                                      {
 290   5                                                              second++;        //秒加一
 291   5                                                              if(second==60)
 292   5                                                                      second=0;
 293   5                                                              newbuf();
 294   5                                                              disp();
 295   5                                                              lcd_write_com(0xc0+7);
 296   5                                                              
 297   5                                                              
 298   5                                                      }
 299   4                                                      if(count==2)      //key_1键摁两次
 300   4                                                      {
 301   5                                                              min++;           //分加一
 302   5                                                              if(min==60)
C51 COMPILER V9.00   万年繽                                                                06/09/2013 23:40:22 PAGE 6   

 303   5                                                                      min=0;
 304   5                                                              newbuf();
 305   5                                                              disp();
 306   5                                                              lcd_write_com(0xc0+4);
 307   5                                                      }
 308   4                                                      if(count==3)      //key_1键摁三次
 309   4                                                      {
 310   5                                                              hour++;         //时加一
 311   5                                                              if(hour==24)
 312   5                                                                      hour=0;
 313   5                                                              newbuf();
 314   5                                                              disp();
 315   5                                                              lcd_write_com(0xc0+1);
 316   5                                                      }
 317   4                                                      if(count==4)      //key_1键摁四次
 318   4                                                      {
 319   5                                                              day++;          //日加一
 320   5                                                              if(day==32)
 321   5                                                                      day=1;
 322   5                                                              newbuf();
 323   5                                                              disp();
 324   5                                                              lcd_write_com(0x80+0x09);
 325   5                                                      }
 326   4                                                      if(count==5)      //key_1键摁五次
 327   4                                                      {
 328   5                                                              month++;                //月加一
 329   5                                                              if(month==13)
 330   5                                                                      month=1;
 331   5                                                              newbuf();
 332   5                                                              disp();
 333   5                                                              lcd_write_com(0x80+0x06);
 334   5                                                      }
 335   4                                                      if(count==6)      //key_1键摁六次
 336   4                                                      {
 337   5                                                              year++;         //年加一
 338   5                                                              if(year==100)
 339   5                                                                      year=0;
 340   5                                                              newbuf();
 341   5                                                              disp();
 342   5                                                              lcd_write_com(0x80+0x03);
 343   5                                                      }
 344   4                                                      if(count==7)      //key_1键摁六次
 345   4                                                      {
 346   5                                                              weekday++;              //年加一
 347   5                                                              if(weekday==8)
 348   5                                                                      weekday=1;
 349   5                                                              disp();
 350   5                                                              lcd_write_com(0x80+0x0c);
 351   5                                                                delay(200);
 352   5                                                      }
 353   4                                              }
 354   3                                      }
 355   2                                      if(key_3==0)             //key_3键摁下处理
 356   2                                      {
 357   3                                              delay(10);
 358   3                                              if(key_3==0)
 359   3                                              {
 360   4                                                      while(!key_3);
 361   4                                                      if(count==1)       //key_1键摁一次
 362   4                                                      {       
 363   5                                                              second--;         //秒减一
 364   5                                                              if(second==-1)
C51 COMPILER V9.00   万年繽                                                                06/09/2013 23:40:22 PAGE 7   

 365   5                                                                      second=59;
 366   5                                                              newbuf();
 367   5                                                              disp();
 368   5                                                              lcd_write_com(0xc0+7);
 369   5                                                      }
 370   4                                                      if(count==2)             //key_1键摁两次
 371   4                                                      {
 372   5                                                              min--;                  //分减一
 373   5                                                              if(min==-1)
 374   5                                                                      min=59;
 375   5                                                              newbuf();
 376   5                                                              disp();
 377   5                                                              lcd_write_com(0xc0+4);

⌨️ 快捷键说明

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