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

📄 1620.lst

📁 串行数码管驱动集成芯片MAX7219的驱动和LCD12864液晶驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
 234   1       LcdWcn(c);
 235   1      }
 236          
 237          /***********************************************
 238          .modle name:  LcdPos
 239          .description:  显示屏定位
 240                         由行列计算内部地址
 241          
C51 COMPILER V7.08   1620                                                                  11/26/2007 15:21:05 PAGE 5   

 242          ************************************************/
 243          
 244          void LcdPos()
 245          { 
 246   1       unsigned tmp;
 247   1       Xpos&=0x0f; //列范围0~15
 248   1       Ypos&=0x01; //行范围是0~1
 249   1      
 250   1       tmp=Xpos; 
 251   1       if(Ypos==1)//第一行
 252   1       { 
 253   2        tmp+=0x40;
 254   2       }
 255   1       tmp|=0x80;//第二行
 256   1       LcdWc(tmp);//设置数据地址
 257   1      }
 258          
 259          /***********************************************
 260          .modle name:  RstLcd
 261          .description: ts1620-1 LCD 的复位程序
 262          
 263          初始化过程(复位过程)
 264          . 1  延时15ms
 265          . 2  写指令38H(不检测忙信号)
 266          . 3  延时5ms
 267          . 4  写指令38H(不检测忙信号)
 268          . 5  延时5ms
 269          . 6  写指令38H(不检测忙信号)
 270          . 7  (以后每次写指令、读/写数据操作之前均需检测忙信号)
 271          . 8  写指令38H:显示模式设置
 272          . 9  写指令08H:显示关闭
 273          . 10 写指令01H:显示清屏
 274          . 11 写指令06H:显示光标移动设置
 275          . 12 写指令0FH/OCH:显示开及光标设置
 276          ************************************************/
 277          
 278          
 279          void RstLcd()
 280          { 
 281   1       mDelay(10); //延时等待系统稳定
 282   1       LcdWcn(0x38);//重复写入 
 283   1       mDelay(10);//延时1s
 284   1       LcdWcn(0x38);
 285   1       mDelay(10);//延时1s
 286   1       LcdWcn(0x38);
 287   1       mDelay(10);//延时1s
 288   1      
 289   1       LcdWc(0x38);//显示模式设置:8位2行5x7点阵
 290   1       mDelay(10);//延时10s
 291   1      
 292   1       LcdWc(0x08);//显示关闭
 293   1       mDelay(1);//延时10s
 294   1      
 295   1       LcdWc(0x01);//显示清屏
 296   1       mDelay(1);//延时10s
 297   1      
 298   1       LcdWc(0x06);//显示光标移动设置(加一)
 299   1       mDelay(1);//延时10s
 300   1      
 301   1       LcdWc(0x0c);//显示开关及光标设置(不显示光标)
 302   1       mDelay(1);//延时10s
 303   1      } 
C51 COMPILER V7.08   1620                                                                  11/26/2007 15:21:05 PAGE 6   

 304          
 305          /***********************************************
 306          .modle name:  Disp 
 307          .description: 在指定位置显示
 308          ************************************************/
 309          
 310          void Disp (unsigned char time,unsigned char Xpos1)
 311          {
 312   1       unsigned int ten=0;
 313   1       unsigned int gw=0;
 314   1       if (time<10)
 315   1       {
 316   2        Xpos=Xpos1;
 317   2        WriteChar('0');//在指定行列显示 
 318   2        LcdWd(dischar[time]);//带忙检测的写字符子程序
 319   2       }
 320   1       else
 321   1       {
 322   2        ten=time/10;   //取十位数
 323   2        gw=time-ten*10;//取个位数
 324   2        Xpos=Xpos1;
 325   2        WriteChar(dischar[ten]);//在指定行列显示过10时
 326   2                                //在该位置显示十位  
 327   2        LcdWd(dischar[gw]);     //地址自动增一 
 328   2       }
 329   1      }
 330          
 331          /***********************************************
 332          .modle name:  posclear 
 333          .description: 擦除指定位置
 334          ************************************************/
 335          void posclear(unsigned char Xpos1)
 336          {
 337   1        Xpos=Xpos1;
 338   1        WriteChar(' ');//在指定行列显示
 339   1        LcdWd(' ');//带忙检测的写字符子程序
 340   1      }
 341          
 342          /***********************************************
 343          .modle name:  Timer0 interrupt 
 344          .description: Timer0 ISR
 345          ************************************************/
 346          void Timer() interrupt 1 //定时器0 中断子程序
 347          {
 348   1       TH0=0x4c;
 349   1       TL0=0x26;//0.625/20=0.03125    49.99-0.03125=49.95875
 350   1       
 351   1       TimerReg++; 
 352   1       if (TimerReg==20)//1秒钟
 353   1       {
 354   2        TimerReg=0;//复位
 355   2        Second++;
 356   2        if (Second==60) //1分钟
 357   2        {
 358   3         Second=0;
 359   3         Minute++;
 360   3            
 361   3         if (Minute==60) //1小时
 362   3         {
 363   4          Minute=0;
 364   4          Hour++;
 365   4          if (Hour==24)//1天
C51 COMPILER V7.08   1620                                                                  11/26/2007 15:21:05 PAGE 7   

 366   4          {
 367   5           Hour=0;
 368   5          }
 369   4         }
 370   3        }
 371   2       }
 372   1      
 373   1        /*小时显示刷新*/
 374   1        Disp(Hour,2);
 375   1         /*分显示刷新*/
 376   1        Disp(Minute,5); 
 377   1        /*秒显示刷新*/
 378   1        Disp(Second,8);
 379   1      }
 380          
 381          
 382          /***********************************************
 383          .modle name:  main
 384          .description: 主函数
 385          ************************************************/
 386          
 387          void main()
 388          {
 389   1      
 390   1      do{
 391   2       LcdWcn(~1);//重复写入 
 392   2       mDelay(50);//延时1s
 393   2       LcdWcn(~2);//重复写入 
 394   2       mDelay(50);//延时1s
 395   2       LcdWcn(~4);//重复写入 
 396   2       mDelay(50);//延时1s
 397   2       LcdWcn(~8);//重复写入 
 398   2       mDelay(50);//延时1s
 399   2       LcdWcn(~16);//重复写入 
 400   2       mDelay(50);//延时1s
 401   2       LcdWcn(~32);//重复写入 
 402   2       mDelay(50);//延时1s
 403   2       LcdWcn(~64);//重复写入 
 404   2       mDelay(50);//延时1s
 405   2       LcdWcn(~128);//重复写入 
 406   2       mDelay(50);//延时1s
 407   2      }while(1);
 408   1      
 409   1       /*
 410   1       TimerReg=0;
 411   1       Second=0;//秒 初始化
 412   1       Minute=0;//分 初始化
 413   1       Hour=0;  //小时 初始化
 414   1       
 415   1      
 416   1       //定时器初始化
 417   1       TMOD=0x21;//TMOD定时器工作方式寄存器,0x21设定为T1为方式2 T0为方式1
 418   1       TH0=0x4c; TL0=0x00; //定时器初值:50ms定时
 419   1       //TH1=0xfd; TL1=0xfd; //产生9600bps波特率,SMOD为0;
 420   1       //TR1=1;//起动定时器1
 421   1       
 422   1       TR0=1;//起动定时器0
 423   1       //中断
 424   1       ET0=1;//允许定 时器0 中断,
 425   1       //IT1=1;//允许 外部中断1
 426   1       EA=1;//总中断允许控制位,开放所有中断
 427   1      
C51 COMPILER V7.08   1620                                                                  11/26/2007 15:21:05 PAGE 8   

 428   1      BacklightP=1;
 429   1      BacklightN=0;
 430   1      RstLcd();   //复位LCD
 431   1      LcdWc(0x01);//清屏
 432   1       
 433   1       Ypos=0;
 434   1       Xpos=4;
 435   1       WriteChar(':');
 436   1       Xpos=7;
 437   1       WriteChar(':');
 438   1        
 439   1        Disp(19,2);//小时显示刷新
 440   1       
 441   1        Disp(18,5);//*分显示刷新
 442   1        
 443   1        Disp(15,8);//秒显示刷新
 444   1        Ypos=1;
 445   1        Xpos=2;
 446   1        WriteChar('I');
 447   1        LcdWd(' ');
 448   1        LcdWd('L');
 449   1        LcdWd('O');
 450   1        LcdWd('V');
 451   1        LcdWd('E');
 452   1        LcdWd(' ');
 453   1        LcdWd('Y');
 454   1        LcdWd('O');
 455   1        LcdWd('U');
 456   1        LcdWd('!');
 457   1      */
 458   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    635    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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