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

📄 led.lst

📁 电子时钟
💻 LST
字号:
C51 COMPILER V8.08   LED                                                                   04/20/2009 16:06:21 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE LED
OBJECT MODULE PLACED IN led.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE led.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <init.h>
   3          
   4          void LCDInit(void);
   5          void LCD_Write(unsigned char cmd);       
   6                  
   7          void LCD_Write_Com(unsigned char com) ;
   8          void LCD_Write_Dat(unsigned char dat) ;   
   9          unsigned char LCD_Read_Dat(unsigned char com);  
  10          extern void Delay(unsigned char i);
  11          extern unsigned char Key_Scan(void);
  12          
  13          extern unsigned char wc,wd2,wd1,wd0;
  14          
  15          
  16          /************LCD初始化***********************/
  17          void LCDInit(void)
  18          {
  19   1        E=1;
  20   1        LCD_Write_Com(0x38);//8位数据总线,2行,5*7点阵
  21   1        LCD_Write_Com(0x08);//关显示
  22   1        Delay(2000);
  23   1        LCD_Write_Com(0x0c);//开显示,关光标,不闪烁
  24   1        LCD_Write_Com(0x01);//清屏
  25   1        Delay(2000);
  26   1        LCD_Write_Com(0x80);//
  27   1      }
  28          
  29          /*****************写的操作**************************/
  30          void LCD_Write(unsigned char cmd)
  31          {
  32   1        unsigned char i;
  33   1        for(i=0;i<13;i++);   //>40us
  34   1        LCD=cmd;
  35   1        E=1;
  36   1        for(i=0;i<3;i++);
  37   1        E=0;
  38   1        for(i=0;i<20;i++);   //>40us
  39   1      }
  40          
  41          /********************读数据的操作****************************/
  42          unsigned char LCD_Read_Dat(unsigned char com)
  43          {
  44   1        unsigned char i,j; 
  45   1        LCD_Write_Com(com);
  46   1        RS=1;
  47   1        RW=1;
  48   1        for(i=0;i<13;i++); 
  49   1        E=1;
  50   1        LCD=0xff;    ////////////////////////////////读前先置1
  51   1        j=LCD;
  52   1        for(i=0;i<13;i++);
  53   1        return j;
  54   1      } 
  55          /***************读地址的操作************************/
C51 COMPILER V8.08   LED                                                                   04/20/2009 16:06:21 PAGE 2   

  56          unsigned char LCD_Read_Com(void)        
  57          {
  58   1        unsigned char i,j;
  59   1        RW=1;
  60   1        RS=0;
  61   1        for(i=0;i<13;i++);
  62   1        E=1;
  63   1        LCD=0xff;
  64   1        j=LCD;
  65   1        j=j|0x80;
  66   1        for(i=0;i<13;i++);
  67   1        return j;
  68   1      }
  69          
  70          /********************写指令****************************/
  71          void LCD_Write_Com(unsigned char com)
  72          {
  73   1        RS=0;
  74   1        RW=0;
  75   1        LCD_Write(com);
  76   1      }
  77          /**********************写数据****************************/
  78          void LCD_Write_Dat(unsigned char dat) 
  79          {
  80   1              RS=1;
  81   1          RW=0;
  82   1          LCD_Write(dat);
  83   1      }
  84          void LCD_Write_Dat_Nmov(unsigned char dat)
  85          {
  86   1        unsigned char j;
  87   1        LCD_Write_Dat(dat);
  88   1        j=LCD_Read_Com();
  89   1        LCD_Write_Com(--j);
  90   1      }
  91          
  92          /*********************开机显示****************************/
  93          void LCD_Show1(void)
  94          {
  95   1        unsigned char i;
  96   1        unsigned char ch1[]="****welcome!****";
  97   1        unsigned char ch2[]="2000-01-01";
  98   1        unsigned char ch3[]="00:00:00";
  99   1        for(i=0;i<16;i++)
 100   1           {
 101   2                 LCD_Write_Dat(ch1[i]);
 102   2               } 
 103   1        Delay(250);
 104   1        Delay(250);
 105   1        Delay(250);
 106   1        Delay(250);
 107   1        Delay(250);
 108   1        Delay(250);
 109   1        LCDInit();
 110   1        LCD_Write_Com(0x83);//DDRAM地址0x03
 111   1        for(i=0;i<10;i++)
 112   1           {
 113   2                 LCD_Write_Dat(ch2[i]); //LCD显示
 114   2               }
 115   1        LCD_Write_Com(0xc4);//DDRAM地址0x44
 116   1        for(i=0;i<8;i++)
 117   1           {
C51 COMPILER V8.08   LED                                                                   04/20/2009 16:06:21 PAGE 3   

 118   2                  LCD_Write_Dat(ch3[i]); //LCD显示
 119   2               } 
 120   1        LCD_Write_Com(0x83);//DDRAM地址0x03
 121   1        LCD_Write_Com(0x0f);//开显示,开光标,闪烁
 122   1        
 123   1      }
 124          
 125          /*******************秒表函数****************************/
 126          void Watch(void)
 127          {
 128   1         unsigned char i,j,m,n,a;     
 129   1         unsigned char ch3[]="00:00:00.00";
 130   1         j=0xff;
 131   1         a=0xff;
 132   1         LCDInit();
 133   1         LCD_Write_Com(0x80);
 134   1         LCD_Write_Dat('W');
 135   1         LCD_Write_Com(0xc4);
 136   1         for(i=0;i<11;i++)
 137   1            LCD_Write_Dat(ch3[i]);
 138   1         while(1)
 139   1          {    
 140   2                wc=0;wd2=0;wd1=0;wd0=0;    
 141   2            j=Key_Scan();
 142   2            if(j=='7')        //开始
 143   2              { 
 144   3                    TR1=1;
 145   3                    ET1=1;      //打开定时器0中断
 146   3                EA=1;           //开总中断
 147   3                    m=wc;
 148   3                    while(1)
 149   3                     {
 150   4                       n=wc;
 151   4                           if(m!=n)
 152   4                            {
 153   5                                      LCD_Write_Com(0xc4);     
 154   5                              LCD_Write_Dat(wd0/10+'0');
 155   5                              LCD_Write_Com(0xc5);
 156   5                              LCD_Write_Dat(wd0%10+'0');
 157   5                              LCD_Write_Com(0xc7);
 158   5                              LCD_Write_Dat(wd1/10+'0');
 159   5                              LCD_Write_Com(0xc8);
 160   5                              LCD_Write_Dat(wd1%10+'0');
 161   5                              LCD_Write_Com(0xca);
 162   5                              LCD_Write_Dat(wd2/10+'0');
 163   5                              LCD_Write_Com(0xcb);
 164   5                              LCD_Write_Dat(wd2%10+'0');
 165   5                                      LCD_Write_Com(0xcd);
 166   5                                      LCD_Write_Dat(wc*5/10+'0');
 167   5                                      LCD_Write_Com(0xce);
 168   5                                      LCD_Write_Dat(wc*5%10+'0');
 169   5                          m=n;
 170   5                                }
 171   4      
 172   4                           a=Key_Scan();
 173   4                           if(a=='8') //暂停
 174   4                           { 
 175   5                                 TR1=0;
 176   5                                 ET1=0;
 177   5                                }
 178   4                               if(a=='7')
 179   4                                  {
C51 COMPILER V8.08   LED                                                                   04/20/2009 16:06:21 PAGE 4   

 180   5                                        TR1=1;
 181   5                                        ET1=1;
 182   5                                      }
 183   4                               if(a=='9')
 184   4                                  {
 185   5                                        TR1=0;
 186   5                                    ET1=0;
 187   5                                        wc=0;wd2=0;wd1=0;wd0=0; 
 188   5                                      }
 189   4                               if(a=='B')
 190   4                                  {
 191   5                                        TR1=0;
 192   5                                        ET1=0;
 193   5                                        LCDInit();
 194   5                                        break;
 195   5                                      } 
 196   4                  } 
 197   3               if(a=='B')
 198   3                  {
 199   4                        break;
 200   4                      } 
 201   3               }
 202   2         if(j=='B') 
 203   2           {
 204   3                 LCDInit();
 205   3                 break;
 206   3               }
 207   2         }
 208   1      }


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