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

📄 led2.lst

📁 该程序可以实现用595与154结合51单片机的16*32LED点阵左右滚动。
💻 LST
📖 第 1 页 / 共 3 页
字号:
 238   1      
 239   1      {
 240   1      /*------------------------------------------------------------------------------
 241   1      ;  源文件 / 文字: 镇
C51 COMPILER V8.05a   LED2                                                                 09/21/2008 11:39:51 PAGE 5   

 242   1      ;  宽×高(像素) : 16×16
 243   1      ------------------------------------------------------------------------------*/
 244   1      0x10,0x20,0x10,0x24,0x13,0xFE,0x1C,0x20,0x21,0xFC,0x21,0x04,0x7D,0xFC,0x91,0x04,
 245   1      0x11,0xFC,0xFD,0x04,0x11,0xFC,0x11,0x04,0x17,0xFE,0x18,0x88,0x11,0x06,0x02,0x02
 246   1       
 247   1      },
 248   1      
 249   1      {
 250   1      /*------------------------------------------------------------------------------
 251   1      ;  源文件 / 文字: 杰
 252   1      ;  宽×高(像素) : 16×16
 253   1      ------------------------------------------------------------------------------*/
 254   1      0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x03,0x80,0x05,0x40,0x09,0x20,0x11,0x10,
 255   1      0x21,0x0E,0xC1,0x04,0x01,0x00,0x00,0x00,0x24,0x90,0x22,0x48,0x22,0x44,0x40,0x04
 256   1       
 257   1      },
 258   1      
 259   1      {
 260   1      /*------------------------------------------------------------------------------
 261   1      ;  源文件 / 文字: .
 262   1      ;  宽×高(像素) : 16×16
 263   1      ------------------------------------------------------------------------------*/
 264   1      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 265   1      0x00,0x00,0x00,0x00,0x3C,0x00,0x66,0x00,0x66,0x00,0x66,0x00,0x3C,0x00,0x00,0x00
 266   1       
 267   1      }
 268   1       };
 269   1       register unsigned char i,j,k,l;
 270   1       uchar ucAddr = 0x81;
 271   1       SCON=0x00;            //串口工作模式0:移位寄存器方式
 272   1       TMOD=0x01;            //定时器T0工作在试1:16位方式
 273   1       TR0=1;                //启动定时器
 274   1       P1=0x3f;              //P1口初值允许接收,锁存,显示
 275   1       IE=0x82;              //允许定时器T0中断
 276   1       Set1302(inittime);            //初始化 
 277   1       W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作?*/                 
 278   1       W1302(0x90,0xa5);           //打开充电二级管  一个二级管串联一个2K电阻 
 279   1       du1302();            //读取 秒 分 时 日 月 星期 年
 280   1       while(1)
 281   1       {
 282   2       delay(2000);          //延时2S
 283   2      /*for(i=0;i<32;i++)     //显示效果:卷帘出
 284   2       {
 285   2       dispram[i]=Bmp[1][i];
 286   2      
 287   2       if(i%2)delay(100);
 288   2       }
 289   2       delay(100);*/
 290   2      
 291   2      
 292   2       for(i=0;i<9;i++)     //显示效果:左移
 293   2          {
 294   3           for(j=0;j<2;j++)
 295   3               for(k=1;k<9;k++)
 296   3                  {
 297   4                   for(l=0;l<16;l++)
 298   4                      {
 299   5                       dispram[l*BLKN]=dispram[l*BLKN]
 300   5      <<1|dispram[l*BLKN+1]>>7;
 301   5                           dispram[l*BLKN+1]=dispram[l*BLKN+1]
 302   5      <<1|dispram0[l*BLKN]>>7;
 303   5                       dispram0[l*BLKN]=dispram0[l*BLKN]
C51 COMPILER V8.05a   LED2                                                                 09/21/2008 11:39:51 PAGE 6   

 304   5      <<1|dispram0[l*BLKN+1]>>7;
 305   5                       dispram0[l*BLKN+1]=dispram0[l*BLKN+1]
 306   5      <<1|Bmp[i][l*BLKN+j]>>(8-k);
 307   5                       }
 308   4                   delay(100);
 309   4                  }
 310   3          }
 311   2         delay(100);
 312   2      
 313   2      
 314   2         du1302();                   // 读时间
 315   2      for(i=0;i<11;i++)
 316   2        {
 317   3              if(i==3) 
 318   3                 {
 319   4              showtime(Year);
 320   4                      }
 321   3               if(i==4) 
 322   3                 {             
 323   4                  showtime(Month); 
 324   4              }
 325   3               if(i==5) 
 326   3                 {             
 327   4                  showtime(Day); 
 328   4              }
 329   3               if(i==6) 
 330   3                 {             
 331   4                  showtime(Hour); 
 332   4              }
 333   3               if(i==7) 
 334   3                 {             
 335   4                  showtime(Cent); 
 336   4              }
 337   3               if(i==8) 
 338   3                 {             
 339   4                  showtime(Sec); 
 340   4              }
 341   3               if(i==10) 
 342   3                 {
 343   4                  for(j=0;j<2;j++)
 344   4               for(k=1;k<9;k++)
 345   4                  {
 346   5                   for(l=0;l<16;l++)
 347   5                      {
 348   6                       dispram[l*BLKN]=dispram[l*BLKN]
 349   6      <<1|dispram[l*BLKN+1]>>7;
 350   6                           dispram[l*BLKN+1]=dispram[l*BLKN+1]
 351   6      <<1|dispram0[l*BLKN]>>7;
 352   6                       dispram0[l*BLKN]=dispram0[l*BLKN]
 353   6      <<1|dispram0[l*BLKN+1]>>7;
 354   6                       dispram0[l*BLKN+1]=dispram0[l*BLKN+1]
 355   6      <<1|xinqi[Week%16][l*BLKN+j]>>(8-k);
 356   6                       }
 357   5            delay(100);
 358   5            }
 359   4                      }
 360   3           for(j=0;j<2;j++)
 361   3               for(k=1;k<9;k++)
 362   3                  {
 363   4                   for(l=0;l<16;l++)
 364   4                      {
 365   5                       dispram[l*BLKN]=dispram[l*BLKN]
C51 COMPILER V8.05a   LED2                                                                 09/21/2008 11:39:51 PAGE 7   

 366   5      <<1|dispram[l*BLKN+1]>>7;
 367   5                           dispram[l*BLKN+1]=dispram[l*BLKN+1]
 368   5      <<1|dispram0[l*BLKN]>>7;
 369   5                       dispram0[l*BLKN]=dispram0[l*BLKN]
 370   5      <<1|dispram0[l*BLKN+1]>>7;
 371   5                       dispram0[l*BLKN+1]=dispram0[l*BLKN+1]
 372   5      <<1|Timename[i][l*BLKN+j]>>(8-k);
 373   5                       }
 374   4            delay(100);
 375   4            }
 376   3        }
 377   2         
 378   2      
 379   2      
 380   2      
 381   2      
 382   2      
 383   2                                
 384   2      for(i=0;i<32;i++)     //显示效果:卷帘入
 385   2          {
 386   3           dispram[i]=0;
 387   3               dispram0[i]=0;
 388   3           if(i%2)delay(100);
 389   3          }
 390   2       }
 391   1       }
 392           /*-------------延时------------*/
 393           void delay(unsigned int dt)
 394          {
 395   1       register unsigned char bt;
 396   1       for(;dt;dt--)
 397   1       for(bt=0;bt<225;bt++);
 398   1       }
 399           /*-------显示屏扫描(定时器T0中断)函数-------------*/
 400           void leddisplay(void) interrupt 1 using 1
 401           {
 402   1       register unsigned char i,j=BLKN;
 403   1       TH0=0xf8;                      //设定显示屏刷新率每秒62.5帧
 404   1       TL0=0x30;
 405   1       i=P1;                          //读出当前显示的行号
 406   1       i=++i&0x0f;                    //行号加1屏蔽高四位
 407   1       do
 408   1       {
 409   2       j--;
 410   2       SBUF=~dispram0[i*BLKN+j];        //送显示数据
 411   2       while (!TI);TI=0;
 412   2       }
 413   1       while(j);                       //完成一行数据传输
 414   1      j=BLKN;
 415   1      do
 416   1      {j--;
 417   2      SBUF=~dispram[i*BLKN+j];
 418   2      while(!TI);TI=0;
 419   2      }
 420   1      while(j); 
 421   1       G=1;                            //消隐(关闭显示)
 422   1       P1&=0xf0;                       //行号端清0
 423   1       RCLK=1;                         //显示数据输出到锁存寄存器
 424   1       P1 |=i;                         //写入行号
 425   1       RCLK=0;                         //锁存器显示数据
 426   1       G=0;                            //打开显示
 427   1       }
C51 COMPILER V8.05a   LED2                                                                 09/21/2008 11:39:51 PAGE 8   

 428          
 429           //********DS1302读写程序***************//
 430          /********************************************************************
 431          函 数 名:RTInputByte()
 432          功    能:实时时钟写入一字节
 433          说    明:往DS1302写入1Byte数据 (内部函数)
 434          入口参数:d 写入的数据
 435          返 回 值:无
 436          ***********************************************************************/
 437          void RTInputByte(uchar d)
 438          {
 439   1          uchar h;
 440   1          ACC = d;
 441   1          for(h=8; h>0; h--)
 442   1          {
 443   2              T_IO = ACC0;           /*相当于汇编中的 RRC */
 444   2              T_CLK = 1;
 445   2              T_CLK = 0;
 446   2              ACC = ACC >> 1;
 447   2          }
 448   1      }
 449          /********************************************************************
 450          函 数 名:RTOutputByte()
 451          功    能:实时时钟读取一字节
 452          说    明:从DS1302读取1Byte数据 (内部函数)
 453          入口参数:无
 454          返 回 值:ACC
 455          设    计:zhaojunjie           日    期:2002-03-19
 456          修    改:                     日    期:
 457          ***********************************************************************/
 458          uchar RTOutputByte(void)
 459          {
 460   1          uchar h;
 461   1          for(h=8; h>0; h--)
 462   1          {
 463   2              ACC = ACC >>1;         /*相当于汇编中的 RRC */
 464   2              ACC7 = T_IO;
 465   2              T_CLK = 1;
 466   2              T_CLK = 0;
 467   2          }
 468   1          return(ACC);
 469   1      }
 470          /********************************************************************
 471          函 数 名:W1302()
 472          功    能:往DS1302写入数据
 473          说    明:先写地址,后写命令/数据 (内部函数)
 474          调    用:RTInputByte() , RTOutputByte()
 475          入口参数:ucAddr: DS1302地址, ucData: 要写的数据
 476          返 回 值:无
 477          ***********************************************************************/
 478          void W1302(uchar ucAddr, uchar ucDa)
 479          {
 480   1          T_RST = 0;
 481   1          T_CLK = 0;

⌨️ 快捷键说明

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