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

📄 lcd1602.lst

📁 1602字符液晶在89C52单片机上的应用实例和在proteus环境下的仿真实例!
💻 LST
📖 第 1 页 / 共 3 页
字号:
 208   3                                              {
 209   4                                              RI=0;
 210   4                                              Uart_putchar('y');
 211   4                                              len=Uart_get_uint();
 212   4                                              floatDisplay(len,0);
 213   4                                              }
 214   3                                              for(j=0;j<5;j++)Uart_putchar('x');
 215   3                                              break;
 216   3                               case 8:                //Y+ 
 217   3                                              RI=0;
 218   3                                              Uart_putchar('7');
 219   3                                              while(count==key())
 220   3                                              {
 221   4                                              RI=0;
 222   4                                              Uart_putchar('y');
 223   4                                              len=Uart_get_uint();
 224   4                                              floatDisplay(len,1);
 225   4                                              }
 226   3                                              for(j=0;j<5;j++)Uart_putchar('x');
 227   3                                              break;
 228   3                               case 4:                //Y- 
 229   3                                              RI=0;
 230   3                                              Uart_putchar('8');
 231   3                                              while(count==key())
 232   3                                              {
 233   4                                              RI=0;
 234   4                                              Uart_putchar('y');
 235   4                                              len=Uart_get_uint();
 236   4                                              floatDisplay(len,1);
 237   4                                              }
 238   3                                              for(j=0;j<5;j++)Uart_putchar('x');
 239   3                                              break;
 240   3                               case 15:               //Z+
 241   3                                              RI=0;
C51 COMPILER V8.02   LCD1602                                                               08/11/2007 18:24:45 PAGE 5   

 242   3                                              Uart_putchar('9');
 243   3                                              while(count==key())
 244   3                                              {
 245   4                                              RI=0;
 246   4                                              Uart_putchar('y');
 247   4                                              len=Uart_get_uint();
 248   4                                              floatDisplay(len,2);
 249   4                                              }
 250   3                                              for(j=0;j<5;j++)Uart_putchar('x');
 251   3                                              break;
 252   3                               case 11:               //Z- 
 253   3                                              RI=0;
 254   3                                              Uart_putchar('a');
 255   3                                              while(count==key())
 256   3                                              {
 257   4                                              RI=0;
 258   4                                              Uart_putchar('y');
 259   4                                              len=Uart_get_uint();
 260   4                                              floatDisplay(len,2);
 261   4                                              }
 262   3                                              for(j=0;j<5;j++)Uart_putchar('x');
 263   3                                              break;
 264   3                              case 7:    //复位
 265   3                                              Uart_putchar('2');
 266   3                                              while(Uart_getchar()=='0');
 267   3                                              floatDisplay(0,0);
 268   3                                              floatDisplay(0,1);
 269   3                                              floatDisplay(0,2);
 270   3                                      break;
 271   3                              case 16:           //SHF
 272   3                                              while(count==key());
 273   3                                              if(LMH==1)
 274   3                                              {
 275   4                                                      LCD_Print(13,1,"LOW");
 276   4                                                      Uart_putchar('b');
 277   4                                                      LMH=0;
 278   4                                              }
 279   3                                              else if(LMH==0)
 280   3                                              {
 281   4                                                      LCD_Print(13,1,"HI ");
 282   4                                                      Uart_putchar('b');
 283   4                                                      LMH=1;
 284   4                                              }       
 285   3                                      break;
 286   3                              }
 287   2                      count=key();
 288   2              }
 289   1              if(i)
 290   1              {
 291   2                      if(count==10)Uart_putchar('f'); //取消零点
 292   2                      else if(count==14)Uart_putchar('e');;  //确定零点
 293   2              }
 294   1      
 295   1      }
 296          //循环界面显示
 297          void cycDisplay(uchar *p,uchar i)
 298          {
 299   1              switch(i)
 300   1              {
 301   2                      case 0:LCD_Printnum(2,1,p[i]);break;
 302   2                      case 1:LCD_Printnum(3,1,p[i]);break;
 303   2                      case 2:LCD_Printnum(4,1,p[i]);break;
C51 COMPILER V8.02   LCD1602                                                               08/11/2007 18:24:45 PAGE 6   

 304   2                      case 3:LCD_Printnum(5,1,p[i]);break;
 305   2                      case 4:LCD_Printnum(10,1,p[i]);break;
 306   2                      case 5:LCD_Printnum(11,1,p[i]);break;
 307   2                      case 6:LCD_Printnum(12,1,p[i]);break;
 308   2                      case 7:LCD_Printnum(14,1,p[i]);break;
 309   2                      default:break;
 310   2              }
 311   1              if(i<4) LCD_Write(LCD_COMMAND,0x80|(i+2)|0x40);                 //重新定位光标位置
 312   1              else if(i==7) LCD_Write(LCD_COMMAND,0x80|(i+7)|0x40);
 313   1              else    LCD_Write(LCD_COMMAND,0x80|(i+6)|0x40);
 314   1      }
 315          //循环设置
 316          void cycset()
 317          {                
 318   1              uchar numflag=0;        //循环加工次数选择标志
 319   1              uchar timeflag=0;       //间隔时间选择标志
 320   1              uchar count = 0;
 321   1              uchar t=0;
 322   1              uchar a[8]={0,0,0,0,0,0,0,0};
 323   1              uchar i;
 324   1              num=AT24C02_read(filenum*5+1)<<8;
 325   1              num+=AT24C02_read(filenum*5+2);
 326   1              time=AT24C02_read(filenum*5+3)<<8;
 327   1              time+=AT24C02_read(filenum*5+4);
 328   1              t=a[0]=(num/1000)%10;         //取得整数值到数组                
 329   1              t=a[1]=(num/100)%10;                                            
 330   1              t=a[2]=(num/10)%10;                                             
 331   1              t=a[3]=num%10;                                          
 332   1      
 333   1              t=a[4]=(time/1000)%10;         //取得整数值到数组               
 334   1              t=a[5]=(time/100)%10;                                           
 335   1              t=a[6]=(time/10)%10;
 336   1              t=a[7]=(time)%10;                                       
 337   1              LCD_Print(0,1,"N=****  T=***.*S");
 338   1              LCD_SetDisplay(LCD_SHOW|LCD_CURSOR);    //开启显示, 开光标显示  
 339   1              for(i=0;i<8;i++)cycDisplay(a,i);
 340   1              i=0;
 341   1              LCD_Write(LCD_COMMAND,0x80|(i-0x40));
 342   1              count=key();
 343   1              while(count!=10&&count!=14)
 344   1              {
 345   2                      cycDisplay(a,i);
 346   2                      if(count)
 347   2                      {
 348   3                              while(count==key());
 349   3                              switch(count)
 350   3                              {
 351   4                               case 12:               //X+
 352   4                                              if(i<8)i++;
 353   4                                              if(i==8) i=0;
 354   4                                              break;
 355   4                               case 3:                //X-
 356   4                                              if(i>0)i--;
 357   4                                              else if(i==0) i=7;
 358   4                                              break;
 359   4                               case 8:                //Y+
 360   4                                              if(a[i]<10)a[i]++;
 361   4                                              if(a[i]==10) a[i]=0;
 362   4                                              break;
 363   4                               case 4:                //Y-
 364   4                                              if(a[i]>0)a[i]--;
 365   4                                              else if(a[i]==0)a[i]=9;
C51 COMPILER V8.02   LCD1602                                                               08/11/2007 18:24:45 PAGE 7   

 366   4                                              break;
 367   4                               default:break;
 368   4                              }
 369   3                      }
 370   2                      count=key();    
 371   2              }
 372   1              if(count==14)
 373   1              {
 374   2                      num=a[0]*1000+a[1]*100+a[2]*10+a[3];
 375   2                      time=a[4]*1000+a[5]*100+a[6]*10+a[7];
 376   2                      Uart_putchar('h');
 377   2                      Uart_putchar('y');
 378   2                      while(Uart_getchar()==NOACK)
 379   2                      {
 380   3                              Uart_putchar('y');
 381   3                      }
 382   2                      Uart_put_uint(time);
 383   2                      Delay1ms(5);
 384   2                      Uart_put_uint(num);
 385   2                      AT24C02_write(filenum*5+1,num>>8);
 386   2                      Delay1ms(5);
 387   2                      AT24C02_write(filenum*5+2,num&0xff);
 388   2                      Delay1ms(5);
 389   2                      AT24C02_write(filenum*5+3,time>>8);
 390   2                      Delay1ms(5);
 391   2                      AT24C02_write(filenum*5+4,time&0xff);
 392   2                      Delay1ms(5);
 393   2              }
 394   1              LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 关光标显示       
 395   1      }
 396          //主界面,参数为文件号
 397          void mianface(uchar i)
 398          {
 399   1              uchar buf[17]; 
 400   1              Delay1ms(5);
 401   1              filename=AT24C02_read(i*5);
 402   1              buf[0]='F';
 403   1              buf[1]='N';
 404   1              buf[2]=(filename/100)%10+'0';
 405   1              buf[3]=(filename/10)%10+'0';
 406   1              buf[4]=filename%10+'0';
 407   1              buf[5]=' ';
 408   1              buf[6]=' ';
 409   1              buf[7]=' ';
 410   1              buf[8]=' ';
 411   1              buf[9]=(i/100)%10+'0';
 412   1              buf[10]=(i/10)%10+'0';
 413   1              buf[11]=i%10+'0';
 414   1              buf[12]='/';
 415   1              buf[13]=(filetotal/100)%10+'0';
 416   1              buf[14]=(filetotal/10)%10+'0';
 417   1              buf[15]=filetotal%10+'0';
 418   1              buf[16]='\0';
 419   1              LCD_Print(0,0,buf);
 420   1      
 421   1              
 422   1              if(filechoice)
 423   1              {

⌨️ 快捷键说明

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