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

📄 main.lst

📁 智能打铃系统(MCU)端程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 197   2                 while(quit==2)
 198   2                      {
 199   3                              LCD_write(0x01,COMM);
 200   3                              delay_ms(3);
 201   3                              LCD_write_string(0,0,"设置打铃时间");
 202   3                              LCD_write_string(0,2,"上下键移动光标");
 203   3                              LCD_write_string(0,3,"数字键输入时间");
 204   3                              LCD_set_position(2,1);
 205   3                              LCD_write((hex2asc(Record[0]>>4)),DATT);
 206   3                              LCD_write((hex2asc(Record[0])),DATT);
 207   3                              LCD_write_string(3,1,"点      分");
 208   3                              LCD_set_position(5,1);
 209   3                              LCD_write(hex2asc(Record[1]>>4),DATT);
 210   3                              LCD_write(hex2asc(Record[1]),DATT);
 211   3                              LCD_set_position(1+temp,1);
 212   3                              LCD_write(0x10,DATT);
 213   3                              key=0xff;
 214   3                              while(key==0xff) key=ScanKey();
 215   3                              if (0xff-key)
 216   3                              {
 217   4                                      key_flag=1;
 218   4                                      KeyT=0;
 219   4                              }
 220   3                              if ((key==KEY_UP)||(key==KEY_DOWN)) 
 221   3                              {
 222   4                                      if (temp) temp=0;
 223   4                                      else temp=3;
 224   4                              }
 225   3                              else if (key<10) 
 226   3                              {
 227   4                                      if (temp)
 228   4                                      {
 229   5                                              Record[1]<<=4;
 230   5                                              Record[1]+=key;
 231   5                                              if (Record[1]>0x59) Record[1]&=0x0f;
 232   5                                      }
 233   4                                      else 
 234   4                                      {
 235   5                                              Record[0]<<=4;
 236   5                                              Record[0]+=key;
 237   5                                              if (Record[0]>0x23) Record[0]&=0x0f;
 238   5                                      }
 239   4                              }
 240   3                              else if (key==KEY_ENT) 
 241   3                              {
C51 COMPILER V7.06   MAIN                                                                  12/17/2006 14:56:13 PAGE 5   

 242   4                                      if(Record[2]) quit=3;
 243   4                                      else quit=4;
 244   4                              }
 245   3                              else if (key==KEY_ESC) quit=1;  
 246   3                      }
 247   2      
 248   2                      while(quit==3)
 249   2                      {
 250   3                              LCD_write(0x01,COMM);
 251   3                              delay_ms(3);
 252   3                              LCD_write_string(0,0,"设置上课时长");
 253   3                              LCD_write_string(0,3,"数字键输入时间");
 254   3                              LCD_write_string(4,1,"分钟");
 255   3                              LCD_set_position(3,1);
 256   3                              LCD_write(hex2asc(Record[2]>>4),DATT);
 257   3                              LCD_write(hex2asc(Record[2]),DATT);
 258   3                              key=0xff;
 259   3                              while(key==0xff) key=ScanKey();
 260   3                              if (0xff-key)
 261   3                              {
 262   4                                      key_flag=1;
 263   4                                      KeyT=0;
 264   4                              }
 265   3                              if (key<10)
 266   3                              {
 267   4                                              Record[2]<<=4;
 268   4                                              Record[2]+=key;
 269   4                                              if (Record[2]==0) Record[2]=0x01;
 270   4                              }
 271   3                              else if (key==KEY_ENT) quit=4;
 272   3                              else if (key==KEY_ESC) quit=2;          
 273   3                      }
 274   2                      if(quit==4)
 275   2                      {
 276   3                              Write_RingTime(Num,Record);
 277   3                              if (m==0)
 278   3                              {
 279   4                                      temp=Mem_Read(0);
 280   4                                      temp++;
 281   4                                      Mem_Write(0,temp);
 282   4                              }
 283   3                              Ring_Paixu();
 284   3                              Set_NextRT(1);
 285   3                              return (Num);
 286   3                      }
 287   2              }
 288   1              return (0);
 289   1      }
 290          
 291          void Scan_RingTime(unsigned char ScanNum)
 292          {
 293   1              uchar RingCount,temp,quit,MC,Record[3];
 294   1              RingCount=Mem_Read(0x00);
 295   1              quit =1;
 296   1              if (RingCount==0) 
 297   1              {
 298   2                      MC=menu(NORECORD);
 299   2                      if (MC==1) quit=EditRing(0x01);
 300   2                      else quit=0;
 301   2              }
 302   1      //      ScanNum=1;
 303   1              while (quit)
C51 COMPILER V7.06   MAIN                                                                  12/17/2006 14:56:13 PAGE 6   

 304   1              {
 305   2                              LCD_write(0x01,COMM);
 306   2                              delay_ms(3);
 307   2                              LCD_write_string(0,0,"===== 浏览 =====");
 308   2                              temp=Read_RingTime(ScanNum,Record);
 309   2                              if(temp) 
 310   2                              {
 311   3                                      LCD_set_position(0,1);
 312   3                                      LCD_write(hex2asc(ScanNum>>4),DATT);
 313   3                                      LCD_write(hex2asc(ScanNum),DATT);
 314   3                                      LCD_write_string(1,1,"铃声类型:");
 315   3                                      LCD_write_string(1,2,"时间: ");
 316   3                                      LCD_write(hex2asc(Record[0]>>4),DATT);
 317   3                                      LCD_write(hex2asc(Record[0]),DATT);
 318   3                                      LCD_write(':',DATT);
 319   3                                      LCD_write(hex2asc(Record[1]>>4),DATT);
 320   3                                      LCD_write(hex2asc(Record[1]),DATT);
 321   3                                      if(Record[2]) 
 322   3                                      {
 323   4                                              LCD_write_string(6,1,"上课");
 324   4                                              LCD_write_string(1,3,"上课时长:");
 325   4                                              LCD_write(hex2asc(Record[2]>>4),DATT);
 326   4                                              LCD_write(hex2asc(Record[2]),DATT);
 327   4                                      }
 328   3                                      else
 329   3                                      {
 330   4                                              LCD_write_string(6,1,"普通");
 331   4                                      }
 332   3                              }
 333   2                              else
 334   2                              {
 335   3                                      if (ScanNum>0) ScanNum--;
 336   3                                      else quit=0;
 337   3                              }
 338   2                              key=0xff;
 339   2                              while((key==0xff)&&(quit)) key=ScanKey();
 340   2                              if (0xff-key)
 341   2                              {
 342   3                                      key_flag=1;
 343   3                                      KeyT=0;
 344   3                              }
 345   2                              if((key==KEY_UP)&&(ScanNum>1)) ScanNum--;
 346   2                              else if((key==KEY_DOWN)&&(ScanNum<RingCount)) ScanNum++;
 347   2                              else if((key==KEY_ENT)||(key==KEY_FUNC))
 348   2                              {
 349   3                                      MC=menu(SCANMENU);
 350   3                                      if(MC==0) quit=0;
 351   3                                      else if         (MC==1) 
 352   3                                      {
 353   4                                              quit=EditRing(ScanNum);
 354   4                                              if (quit) ScanNum=quit;
 355   4                                      }
 356   3                                      else if (MC==2)
 357   3                                      {
 358   4                                              quit= EditRing(RingCount+1);//EditRing(ScanNum);
 359   4                                              if (quit) 
 360   4                                              {
 361   5                                                      ScanNum=quit;
 362   5                                                      RingCount++;
 363   5                                              }
 364   4                                      }
 365   3                                      else if (MC==3) 
C51 COMPILER V7.06   MAIN                                                                  12/17/2006 14:56:13 PAGE 7   

 366   3                                      {
 367   4                                              RingCount=DelRing(ScanNum);
 368   4                                              if(RingCount)
 369   4                                              {                                       
 370   5                                                      if (ScanNum>RingCount)
 371   5                                                      ScanNum--;
 372   5                                                      Set_NextRT(1);
 373   5                                              }
 374   4                                              else
 375   4                                              {Scan_RingTime(1);quit=0;}
 376   4                                      }
 377   3                              }
 378   2                              else if(key==KEY_ESC) quit=0;
 379   2              }
 380   1              LCD_write(0x01,COMM);           //清屏,字符缓冲区
 381   1              delay_ms(3);
 382   1      }
 383          
 384          void Set_time()                                                                 //时钟设置
 385          {
 386   1              uchar Pdat[]={  0,6,10,10,4,7,10,
 387   1                                                      0,0,0,1,2,2,2,
 388   1                                                      4,2,2,2,2,2,2
 389   1                                              };
 390   1              uchar Max[]={0x59,0x59,0x23,0x07,0x31,0x12};
 391   1              uchar temp,temp2;
 392   1              uchar P=0;
 393   1              uchar quit=1;
 394   1              uchar flag=1;
 395   1              LCD_write(0x01,COMM);                           //清屏,字符缓冲区
 396   1              delay_ms(3);
 397   1              LCD_clr_pic();                                                          //清图形缓冲区
 398   1      
 399   1              while (quit)
 400   1              {
 401   2                      key=ScanKey();

⌨️ 快捷键说明

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