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

📄 sjxs.lst

📁 LCD1602驱动程序
💻 LST
字号:
C51 COMPILER V8.02   SJXS                                                                  10/22/2008 17:23:59 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SJXS
OBJECT MODULE PLACED IN SJXS.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE SJXS.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X51.h>
   2          #define Data P0
   3          
   4          sbit RS=P1^7;
   5          sbit RW=P1^6;
   6          sbit E=P2^6;
   7          
   8          void delay(unsigned int k) 
   9          { 
  10   1        unsigned int i,j; 
  11   1        for(i=k;i>0;i--) 
  12   1        for(j=50;j>0;j--) ; 
  13   1      }
  14          
  15          unsigned char ReadStatus(void)
  16          {
  17   1        Data=0xFF;
  18   1        RS=0;
  19   1        RW=1;   
  20   1        E=1;
  21   1        while(Data&0x80);
  22   1        return(Data);
  23   1        delay(2);
  24   1        E = 0;
  25   1      }
  26          
  27          void wr_com(unsigned char com)
  28          {
  29   1        ReadStatus();
  30   1        Data=com;
  31   1        RS=0;
  32   1        RW=0;
  33   1        E=1;
  34   1        delay(2);
  35   1        E = 0;
  36   1       }
  37          
  38          void wr_dat(unsigned char dat)
  39          {
  40   1        ReadStatus();
  41   1        Data=dat;
  42   1        RS=1;
  43   1        RW=0;
  44   1        E=1; 
  45   1        delay(2);
  46   1        E=0;
  47   1      }
  48          
  49          void LCD_Init(void)
  50          {
  51   1        Data=0x0;
  52   1        wr_com(0x38);
  53   1        delay(5);
  54   1        wr_com(0x38);
  55   1        delay(5);
C51 COMPILER V8.02   SJXS                                                                  10/22/2008 17:23:59 PAGE 2   

  56   1        wr_com(0x38);
  57   1        delay(5);
  58   1        wr_com(0x38);
  59   1        wr_com(0x08);
  60   1        wr_com(0x01);
  61   1        wr_com(0x06);
  62   1        wr_com(0x0C);
  63   1      }
  64          
  65          void GotoXY(unsigned char x,unsigned char y)
  66          {
  67   1        x&=0x01;
  68   1        y&=0x0F;
  69   1        y|=(x==0)?0x80:0xC0;
  70   1        wr_com(y);
  71   1        do{
  72   2            y=ReadStatus();
  73   2                }while((y&0x80)==0x80);
  74   1         }
  75          
  76          void disp(unsigned char x,unsigned char y,unsigned char _char)
  77          {
  78   1        GotoXY(x,y);
  79   1        wr_dat(_char);
  80   1        }
  81          
  82          /***********************************************************************************/
  83          
  84          unsigned char second=55,minute=58,hour=23,day=29,month=11,year=07;  
  85          unsigned char n_50m_second;            
  86          unsigned char days_of_month;  
  87                    
  88          unsigned char calculate_days(void)      
  89          {
  90   1       unsigned int temp;
  91   1       switch (month)
  92   1        {
  93   2         case 1:
  94   2         case 3:
  95   2         case 5:
  96   2         case 7:
  97   2         case 8:
  98   2         case 10:
  99   2         case 12:
 100   2                 return 31;  
 101   2                 break;
 102   2         case 4:
 103   2         case 6:
 104   2         case 9:
 105   2         case 11:            
 106   2                 return 30; 
 107   2                 break;
 108   2         case 2:
 109   2                 temp=2000+year; 
 110   2                 if((((temp%4)==0)&&((temp%100)!=0))||((temp%400)==0))
 111   2                  {
 112   3                   return 29;    
 113   3                  }
 114   2                 else
 115   2                  {
 116   3                   return 28;    
 117   3                  }
C51 COMPILER V8.02   SJXS                                                                  10/22/2008 17:23:59 PAGE 3   

 118   2           }
 119   1      }
 120          
 121          void timer0_isr(void) interrupt 1 using 1     
 122          {
 123   1       TL0=0xB0;
 124   1       TH0=0x3C;                             
 125   1       n_50m_second++;
 126   1       if(n_50m_second>=20)                  
 127   1        {
 128   2         n_50m_second=0;                     
 129   2         second++;                           
 130   2         if(second==60)                     
 131   2          {
 132   3           second=0;                         
 133   3           minute++;                         
 134   3           if(minute==60)                   
 135   3            {
 136   4             minute=0;                       
 137   4             hour++;                         
 138   4             if(hour==24)                    
 139   4              {
 140   5               hour=0;                      
 141   5               day++;                        
 142   5               days_of_month=calculate_days();
 143   5               if(day>days_of_month)         
 144   5                {
 145   6                 day=1;                      
 146   6                 month++;                   
 147   6                 if(month>12)               
 148   6                  {
 149   7                   month=1;                  
 150   7                   year++;                   
 151   7                   if(year>=100)            
 152   7                    {
 153   8                     year=0;                
 154   8                    }
 155   7                  }
 156   6                }
 157   5              }
 158   4            }
 159   3          }
 160   2        } 
 161   1      }
 162          
 163          void disp_timer(void)
 164          { disp(0,4,hour/10+48);
 165   1        disp(0,5,hour%10+48);
 166   1        disp(0,6,':');
 167   1        disp(0,7,minute/10+48);
 168   1        disp(0,8,minute%10+48);
 169   1        disp(0,9,':');
 170   1        disp(0,0xA,second/10+48);
 171   1        disp(0,0xB,second%10+48);
 172   1        disp(1,3,'2');
 173   1        disp(1,4,'0');
 174   1        disp(1,5,year/10+48);
 175   1        disp(1,6,year%10+48);
 176   1        disp(1,7,'-');
 177   1        disp(1,8,month/10+48);
 178   1        disp(1,9,month%10+48);
 179   1        disp(1,0xA,'-');
C51 COMPILER V8.02   SJXS                                                                  10/22/2008 17:23:59 PAGE 4   

 180   1        disp(1,0xB,day/10+48);
 181   1        disp(1,0xC,day%10+48);
 182   1        }
 183          
 184          
 185          void main(void)
 186          {
 187   1        TMOD=0x11;                 
 188   1        ET0=1;                     
 189   1        TR0=1;                     
 190   1        EA=1;                                     
 191   1        LCD_Init();
 192   1        while(1)
 193   1      { 
 194   2        delay(100);
 195   2        disp_timer(); 
 196   2        }
 197   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    676    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8    ----
   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 + -