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

📄 clock- lcd1602.lst

📁 1602显示电子时钟的51代码。包括C语言和汇编语言两种语言。
💻 LST
📖 第 1 页 / 共 2 页
字号:
 194   1         display[1]=input1/10+0x30;    //秒单位数据处理
 195   1         display[0]=input1%10+0x30;
 196   1      
 197   1         display[3]=input2/10+0x30;    //分单位数据处理
 198   1         display[2]=input2%10+0x30;
 199   1         
 200   1         display[5]=input3/10+0x30;   //时单位数据处理
 201   1         display[4]=input3%10+0x30;
 202   1      
 203   1         lcd_pos(0x46);
 204   1         lcd_wdat(display[5]);        //显示时
 205   1         lcd_wdat(display[4]);
 206   1         lcd_wdat(0x3a);              //显示':'
 207   1        
 208   1         lcd_wdat(display[3]);        //显示分
 209   1         lcd_wdat(display[2]);
 210   1         lcd_wdat(0x3a);              //显示':'
 211   1      
 212   1         lcd_wdat(display[1]);        //显示秒
 213   1         lcd_wdat(display[0]); 
 214   1      }
 215          
 216          /**********************************************************
 217          *                                                         *
 218          * 时间设定函数                                            *
 219          *                                                         *
 220          **********************************************************/
 221          void  set_time()
 222          {   
 223   1        updown=1;
 224   1        settime=0;
 225   1      
 226   1        if(K1==0)
 227   1        {
 228   2           beep();
 229   2           while(K1==0);
 230   2           settime=1;
 231   2           lcd_pos(0x00);             //设置显示位置为第一行
 232   2           for(m=0;m<16;m++) 
 233   2           lcd_wdat(cdis5[m]);        //显示字符 
 234   2        
 235   2         while(settime)
 236   2         { 
 237   3           TR0=0;
 238   3               if(K2==0)
 239   3               {
 240   4                 beep();
 241   4                 if(updown)
C51 COMPILER V8.02   CLOCK__LCD1602                                                        12/24/2006 12:07:26 PAGE 5   

 242   4                 {
 243   5                   hour++;
 244   5                   if(hour==24)
 245   5                   hour=0;
 246   5                 }
 247   4                 else
 248   4                 {
 249   5                   hour--;
 250   5                   if(hour==0xff)
 251   5                   hour=23;      
 252   5                 }
 253   4           }
 254   3      
 255   3           if(K3==0)
 256   3               {
 257   4                 beep();
 258   4                 if(updown)
 259   4                 {
 260   5                   min++;
 261   5                   if(min==60)
 262   5                   min=0;
 263   5                 }
 264   4                 else
 265   4                 {
 266   5                   min--;
 267   5                   if(min==0xff)
 268   5                   min=59;       
 269   5                 }
 270   4           }
 271   3      
 272   3               if(K1==0)
 273   3           {
 274   4             beep();
 275   4             while(K1==0);
 276   4             updown=~updown;
 277   4           }
 278   3      
 279   3           if(K4==0)
 280   3           {
 281   4             beep();
 282   4             while(K4==0);
 283   4             settime=0;
 284   4                 sec=0;
 285   4                 TR0=1;
 286   4           }
 287   3            
 288   3            play(sec,min,hour);
 289   3       
 290   3         }  // end of while(settime)  
 291   2         
 292   2          lcd_pos(0x00);             //设置显示位置为第一行
 293   2          for(m=0;m<16;m++)
 294   2          lcd_wdat(cdis3[m]);
 295   2       
 296   2        } // end of if(K1==0)  
 297   1      }
 298          
 299          /*********************************************************
 300          *                                                        *
 301          * 主函数                                                 *
 302          *                                                        *
 303          *********************************************************/
C51 COMPILER V8.02   CLOCK__LCD1602                                                        12/24/2006 12:07:26 PAGE 6   

 304          main()
 305          {
 306   1         TMOD=0x01; 
 307   1         TH0=0x4c; 
 308   1         TL0=0x00;        //50ms定时 
 309   1         ET0=1;
 310   1         EA=1;
 311   1      
 312   1         lcd_init();
 313   1         
 314   1         lcd_pos(0x00);             //设置显示位置为第一行
 315   1         for(m=0;m<16;m++)
 316   1         {
 317   2           lcd_wdat(cdis1[m]);        //显示字符 
 318   2           delay1(50);
 319   2         }
 320   1         lcd_pos(0x40);             //设置显示位置为第二行
 321   1         for(m=0;m<16;m++)
 322   1         {
 323   2          lcd_wdat(cdis2[m]);        //显示字符
 324   2          delay1(50);
 325   2         }
 326   1      
 327   1         delay1(3000);
 328   1      
 329   1         lcd_pos(0x00);             //设置显示位置为第一行
 330   1         for(m=0;m<16;m++) 
 331   1         lcd_wdat(cdis3[m]);        //显示字符 
 332   1      
 333   1         lcd_pos(0x40);             //设置显示位置为第二行
 334   1         for(m=0;m<16;m++)
 335   1         lcd_wdat(cdis4[m]); 
 336   1      
 337   1         TR0=1;
 338   1      
 339   1         while(1)
 340   1         {   
 341   2           play(sec,min,hour);
 342   2               set_time();
 343   2         }
 344   1      }
 345          
 346          /**********************************************************
 347          *                                                         *
 348          * Time0中断函数                                           *
 349          *                                                         *
 350          **********************************************************/
 351          void Time0(void) interrupt 1 using 0
 352          {
 353   1         TH0=0x4c;               //50ms定时
 354   1         TL0=0x00;
 355   1      
 356   1         msec++;
 357   1         if(msec==20)            //50*20=1S
 358   1         {
 359   2           msec=0;
 360   2           sec++;                //秒加1
 361   2               if(sec==60)
 362   2               {
 363   3                 sec=0;
 364   3                 min++;              //分加1
 365   3                 if(min==60)
C51 COMPILER V8.02   CLOCK__LCD1602                                                        12/24/2006 12:07:26 PAGE 7   

 366   3                 {
 367   4                   min=0;
 368   4                       hour++;           //时加1
 369   4                       if(hour==24)
 370   4               {
 371   5                         hour=0;        //清计时单元
 372   5                 min=0;
 373   5                 sec=0;
 374   5               }
 375   4             }
 376   3           }
 377   2         }
 378   1      }
 379          
 380          /*********************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    723    ----
   CONSTANT SIZE    =     85    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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