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

📄 1.lst

📁 12846汉字液晶
💻 LST
字号:
C51 COMPILER V8.05a   1                                                                    05/10/2009 13:23:45 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #define uchar unsigned char
   4          void lcd_ini();
   5          void ascii_change(void);
   6          void delay();
   7          void wri_add(uchar com);
   8          void wri_dat(uchar com1);
   9          void shan(void);
  10          void disp();
  11          void tkey(void);
  12          sbit cs=P1^7;
  13          sbit sid=P1^6;
  14          sbit sclk=P1^5;
  15          bit flag=1; 
  16          uchar dat,count,f=1;//f测试哪个单元为当前闪烁状态   
  17          uchar data clock[3]={23,45,12};
  18          uchar code clockname[10]={"北京时间:"};  
  19          uchar data num[6];
  20          
  21          /*******主程序*************/
  22          void main()
  23          {
  24   1       lcd_ini();
  25   1       count=10;//机器周期为1us,每次定时50ms,此变量用来控制循环次数,在下面赋值为20,共定时1秒
  26   1       TMOD=0x01;
  27   1       TL0=0XB0;
  28   1       TH0=0X3C;
  29   1       EA=1;
  30   1       ET0=1;
  31   1       IT0=1;
  32   1       EX0=1;
  33   1       TR0=1;
  34   1       while(1)
  35   1       {
  36   2       back:ascii_change();
  37   2       disp();
  38   2       delay();
  39   2       if(flag==1)
  40   2       goto back;
  41   2       tkey();
  42   2       shan();
  43   2       delay();
  44   2       }
  45   1      }
  46          
  47          /****lcd初始化*******/
  48           
  49          void lcd_ini()
  50          {
  51   1      
  52   1       wri_add(0x30);
  53   1       delay();
  54   1      
  55   1       wri_add(0x0c);
C51 COMPILER V8.05a   1                                                                    05/10/2009 13:23:45 PAGE 2   

  56   1       delay();
  57   1      
  58   1       wri_add(0x01);
  59   1       delay();
  60   1       
  61   1       wri_add(0x06);
  62   1       delay();
  63   1      }
  64           
  65          
  66          
  67          /********定时程序*************/
  68           void timer1() interrupt 1 using 2
  69          {
  70   1       TL0=0XB0;
  71   1       TH0=0X3C;
  72   1       count--;
  73   1       if(count==0)
  74   1       {
  75   2        count=10;
  76   2        clock[2]++;//秒//
  77   2        }
  78   1        else
  79   1        goto out;
  80   1      
  81   1        if(clock[2]==60)
  82   1        {
  83   2         clock[2]=0;
  84   2         clock[1]++;//分//
  85   2         }
  86   1      
  87   1        if(clock[1]==60)
  88   1        {
  89   2         clock[1]=0;
  90   2         clock[0]++;
  91   2         }
  92   1         
  93   1        if(clock[0]==24)//时//
  94   1        clock[0]=0; 
  95   1         
  96   1        out:_nop_();
  97   1      }
  98          
  99          /*******十位个位转换成ASCII码************/
 100           void ascii_change(void)
 101           {
 102   1         num[5]=clock[2]-(clock[2]/10)*10+0x30;
 103   1         num[4]=clock[2]/10+0x30;
 104   1         num[3]=clock[1]-(clock[1]/10)*10+0x30;
 105   1         num[2]=clock[1]/10+0x30;
 106   1         num[1]=clock[0]-(clock[0]/10)*10+0x30;
 107   1         num[0]=clock[0]/10+0x30;
 108   1       }
 109          
 110          
 111           /********廷时程序*************/
 112            void delay()
 113          {
 114   1        uchar i,j;
 115   1        for (i=250;i>0;i--)
 116   1        for (j=250;j>0;j--);
 117   1      
C51 COMPILER V8.05a   1                                                                    05/10/2009 13:23:45 PAGE 3   

 118   1      }
 119          /*****Write address*********/
 120          void wri_add(uchar com)
 121          {
 122   1       uchar i,j,k;
 123   1       cs=0;
 124   1       cs=1;
 125   1       dat=0xf8;
 126   1      
 127   1       for(i=1;i<=8;i++)
 128   1       {
 129   2        sid=(bit)(dat&0x80);
 130   2        sclk=0;
 131   2        sclk=1;
 132   2        sclk=0;
 133   2        dat=dat<<1;
 134   2      }
 135   1       dat=com;
 136   1       dat=dat&0xf0;
 137   1       for(j=1;j<=8;j++)
 138   1      {
 139   2       sid=(bit)(dat&0x80);
 140   2        sclk=0;
 141   2        sclk=1;
 142   2        sclk=0;
 143   2        dat=dat<<1;
 144   2       }
 145   1      
 146   1       dat=com;
 147   1       dat=_cror_(dat,4);// 此为高低四位交换
 148   1       dat=dat&0xf0;
 149   1      
 150   1       for(k=1;k<=8;k++)
 151   1       {
 152   2        sid=(bit)(dat&0x80);
 153   2        sclk=0;
 154   2        sclk=1;
 155   2        sclk=0;
 156   2        dat=dat<<1;
 157   2        }
 158   1        
 159   1      }
 160          
 161          /*********Write data*************/
 162          void wri_dat(uchar com1)
 163          {
 164   1       uchar i,j,k;
 165   1       cs=0;
 166   1       cs=1;
 167   1       dat=0xfa;
 168   1       for(i=1;i<=8;i++)
 169   1       {
 170   2        sid=(bit)(dat&0x80);
 171   2        sclk=0;
 172   2        sclk=1;
 173   2        sclk=0;
 174   2        dat=dat<<1;
 175   2      }
 176   1      
 177   1        dat=com1;
 178   1        dat=dat&0xf0;
 179   1        for(j=1;j<=8;j++)
C51 COMPILER V8.05a   1                                                                    05/10/2009 13:23:45 PAGE 4   

 180   1      {
 181   2        sid=(bit)(dat&0x80);
 182   2        sclk=0;
 183   2        sclk=1;
 184   2        sclk=0;
 185   2        dat=dat<<1;
 186   2       }
 187   1      
 188   1       dat=com1; 
 189   1       dat=_cror_(dat,4);// 此为高低四位交换
 190   1       dat=dat&0xf0;
 191   1      
 192   1       for(k=1;k<=8;k++)
 193   1       {
 194   2        sid=(bit)(dat&0x80);
 195   2        sclk=0;
 196   2        sclk=1;
 197   2        sclk=0;
 198   2        dat=dat<<1;
 199   2        }
 200   1       }
 201                    
 202          
 203           /******display program***********/
 204          void disp()
 205          {
 206   1       uchar i,k=0;
 207   1       wri_add(0x80);
 208   1      
 209   1       for (i=1;i<=9;i++)
 210   1       wri_dat(clockname[i-1]);
 211   1      
 212   1       wri_add(0x90);
 213   1      
 214   1       for (i=1;i<=6;i++)
 215   1       {
 216   2       k++;
 217   2       if(k==3||k==5)
 218   2       wri_dat(clockname[8]);//时间之间的冒号。
 219   2       wri_dat(num[i-1]);
 220   2       }
 221   1      }
 222          
 223          /*******闪烁程序*************************/
 224          void shan(void)
 225          {
 226   1       uchar i,k=0;
 227   1       wri_add(0x90);
 228   1       if(f==1)
 229   1       {
 230   2       num[0]=' ';
 231   2       num[1]=' ';
 232   2       }
 233   1       else
 234   1       goto next;
 235   1        for (i=1;i<=6;i++)
 236   1       {
 237   2       k++;
 238   2       if(k==3||k==5)
 239   2       wri_dat(clockname[8]);//时间之间的冒号。
 240   2       wri_dat(num[i-1]);
 241   2       }
C51 COMPILER V8.05a   1                                                                    05/10/2009 13:23:45 PAGE 5   

 242   1      goto return1;
 243   1      
 244   1      next: if(f==2)
 245   1       {
 246   2       num[2]=' ';
 247   2       num[3]=' ';
 248   2       }
 249   1       else
 250   1       goto next1;
 251   1        for (i=1;i<=6;i++)
 252   1       {
 253   2       k++;
 254   2       if(k==3||k==5)
 255   2       wri_dat(clockname[8]);//时间之间的冒号。
 256   2       wri_dat(num[i-1]);
 257   2       }
 258   1      goto return1;
 259   1      
 260   1      next1: if(f==3)
 261   1       {
 262   2       num[4]=' ';
 263   2       num[5]=' ';
 264   2       }
 265   1       else
 266   1       goto return1;
 267   1      
 268   1        for (i=1;i<=6;i++)
 269   1       {
 270   2       k++;
 271   2       if(k==3||k==5)
 272   2       wri_dat(clockname[8]);//时间之间的冒号。
 273   2       wri_dat(num[i-1]);
 274   2       }
 275   1       return1:_nop_();
 276   1      
 277   1      }  
 278          
 279          
 280           
 281          /*******外部中断***********/
 282          void intr0() interrupt 0 using 2
 283          {
 284   1      flag=~flag;//判断是否闪烁位//
 285   1      TR0=~TR0;  //闪关定时否则开定时
 286   1      f=1;
 287   1      }  
 288               
 289          /**********按键程序************/
 290           void tkey(void)
 291          {
 292   1        uchar judcekey;
 293   1        judcekey=P1&0x0f;
 294   1        if(judcekey==0x0f)
 295   1        goto return2;
 296   1      
 297   1        /*******移位键*********/
 298   1        if (judcekey==0x0e)
 299   1        f++;
 300   1        if (f==4)
 301   1        f=1;
 302   1        /**********加一键*********/
 303   1        if(judcekey==0x0d)
C51 COMPILER V8.05a   1                                                                    05/10/2009 13:23:45 PAGE 6   

 304   1        {clock[f-1]++;}
 305   1      
 306   1        if (f==1) 
 307   1        { if (clock[f-1]==24){
 308   3        clock[f-1]=0;}
 309   2         }
 310   1        else{  if (clock[f-1]==60)
 311   2         clock[f-1]=0;
 312   2         }
 313   1      
 314   1       /******减一键***********/  
 315   1       if(judcekey==0x0b)
 316   1        {clock[f-1]--;}
 317   1      
 318   1        if (f==1) 
 319   1        { if (clock[f-1]==0xff){
 320   3        clock[f-1]=23;}
 321   2         }
 322   1        else
 323   1         {  if (clock[f-1]==0xff)
 324   2         clock[f-1]=59;
 325   2         }  
 326   1       
 327   1      return2:_nop_();
 328   1      
 329   1          }  
 330          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    708    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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