led1.lst

来自「该程序可以实现用595与154结合51单片机的16*32LED点阵左右滚动。」· LST 代码 · 共 382 行 · 第 1/3 页

LST
382
字号
C51 COMPILER V8.05a   LED1                                                                 03/26/2009 12:14:40 PAGE 3   

 116   1              res0=1;
 117   1              res0=0;
 118   1      }
 119          void main(void)
 120          {
 121   1              unsigned char n=0,l=0,k=0,m=0,h=0,sp=10;
 122   1              bit num=0,wd=0,time=0,open=1;
 123   1              //ds1302();
 124   1              pc_init();
 125   1              oe=0;
 126   1              do
 127   1              {                               
 128   2                      if(P1_0==0)                        //左移,右移
 129   2                      {
 130   3                              num=~num;
 131   3                              wd=0;
 132   3                              time=0;
 133   3                              open=1;
 134   3                              while(!P1_0);
 135   3                      }
 136   2                      if(P1_1==0)                        //温度显示
 137   2                      {
 138   3                              wd=1;
 139   3                              time=0;
 140   3                              open=0;
 141   3                              while(!P1_1);
 142   3                      }
 143   2                      if(P1_2==0)                        //时钟显示
 144   2                      {
 145   3                              time=1;
 146   3                              wd=0;
 147   3                              open=0;
 148   3                              while(!P1_2);
 149   3                      }
 150   2                      if(P1_3==0)                        //串口通行
 151   2                      {
 152   3                              printf("现在温度是%d%d度\n现在时刻是%d%d%时d%d%分%d%d秒\n",x,y,hour[1],hour[0],min[1],min[0],second[1],
             -second[0]);
 153   3                              open=0;
 154   3                              while(!P1_3);
 155   3                       }
 156   2                              if(time)                                                         //显示时钟
 157   2                              {
 158   3                                      dsplay_ds1302();                                 //读取时钟
 159   3                                      for(l=0;l<30;l++)
 160   3                                      {
 161   4                                              for(n=0;n<16;n++)       //扫16行
 162   4                                              {                                       
 163   5                                                      oe=1;
 164   5                                                      P0=(P0&0xf0)|n; 
 165   5                                                      write_595(tab[n+16*min[1]]);
 166   5                                                      write_595(tab[n+16*min[0]]);
 167   5                                                      write_595(tab[n+16*second[1]]);
 168   5                                                      write_595(tab[n+16*second[0]]);
 169   5                                                      oe=0;
 170   5                                                      delay();                
 171   5                                              }
 172   4                                      }
 173   3                              }
 174   2                                              if(wd==0&&time==0&&open==0)               //主界面good
 175   2                                              {
 176   3                                                      for(l=0;l<30;l++)
C51 COMPILER V8.05a   LED1                                                                 03/26/2009 12:14:40 PAGE 4   

 177   3                                                      {
 178   4                                                              for(n=0;n<16;n++)       //扫16行
 179   4                                                              {                                       
 180   5                                                                      oe=1;
 181   5                                                                      P0=(P0&0xf0)|n; 
 182   5                                                                      write_595(tab[n+16*15]);
 183   5                                                                      write_595(tab[n+16*16]);
 184   5                                                                      write_595(tab[n+16*16]);
 185   5                                                                      write_595(tab[n+16*13]);
 186   5                                                                      oe=0;
 187   5                                                                      delay();        
 188   5                                                              }       
 189   4                                                      }
 190   3                                              }
 191   2                                              if(wd)                                          //温度显示
 192   2                                              {
 193   3                                                      wd_t();
 194   3                                                      for(l=0;l<30;l++)
 195   3                                                      {
 196   4                                                              for(n=0;n<16;n++)       //扫16行
 197   4                                                              {                                       
 198   5                                                                      oe=1;
 199   5                                                                      P0=(P0&0xf0)|n; 
 200   5                                                                      write_595(tab[n+16*x]);
 201   5                                                                      write_595(tab[n+16*y]);
 202   5                                                                      write_595(tab[n+16*14]);
 203   5                                                                      write_595(tab[n+16*12]);
 204   5                                                                      oe=0;
 205   5                                                                      delay();        
 206   5                                                              }       
 207   4                                                      }
 208   3                                              }                       
 209   2                                              if(num&&wd==0&&time==0&&open==1)                  //左移数字字母
 210   2                                              {
 211   3                                                      for(m=0;m<10;m++)
 212   3                                                      {
 213   4                                                              for(k=0;k<8;k++)
 214   4                                                              {
 215   5                                                                      for(l=0;l<sp;l++)
 216   5                                                                      {
 217   6                                                                              for(n=0;n<16;n++)       //扫16行
 218   6                                                                              {                                       
 219   7                                                                                      oe=1;
 220   7                                                                                      P0=(P0&0xf0)|n;  
 221   7                                                                                      write_595((tab[n+16*m]<<k)|(tab[n+16*(m+1)]>>(8-k)));
 222   7                                                                                      write_595((tab[n+16*(m+1)]<<k)|(tab[n+16*(m+2)]>>(8-k)));
 223   7                                                                                      write_595((tab[n+16*(m+2)]<<k)|(tab[n+16*(m+3)]>>(8-k)));
 224   7                                                                                      write_595((tab[n+16*(m+3)]<<k)|(tab[n+16*(m+4)]>>(8-k)));
 225   7                                                                                      oe=0;
 226   7                                                                                      delay();
 227   7                                                                                      if(P1_0==0) 
 228   7                                                                                      {
 229   8                                                                                              num=1;
 230   8                                                                                              wd=0;
 231   8                                                                                              time=0;
 232   8                                                                                              open=0;
 233   8                                                                                              break;
 234   8                                                                                      }
 235   7                                                                                      if(P1_3==0)
 236   7                                                                                      {
 237   8                                                                                              sp=sp+5;
 238   8                                                                                              if(sp==40) sp=5;

⌨️ 快捷键说明

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