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

📄 lcd2222.lst

📁 C8051F310单片机应用程序
💻 LST
字号:
C51 COMPILER V7.50   LCD2222                                                               08/23/2006 08:04:22 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD2222
OBJECT MODULE PLACED IN lcd2222.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\c51.exe lcd2222.c DB OE

line level    source

   1          //-----------------------------------------------------------------------------
   2          // Includes
   3          //-----------------------------------------------------------------------------
   4          #include <c8051f310.h>                 // SFR declarations
   5          #include <INTRINS.H>
   6          #include <stdio.h>
   7          //-----------------------------------------------------------------------------
   8          // Global CONSTANTS
   9          //-----------------------------------------------------------------------------
  10          #define  uchar unsigned char
  11          #define  uint  unsigned int
  12          
  13          #define SYSCLK    24500000            // SYSCLK frequency in Hz
  14          
  15          //----------------------------------------------------------------------------
  16          void Write_COM(uchar ins);
  17          void Write_CHAR(uchar d);
  18          void lcdchar (uchar ch);
  19          void lcdaddr(uchar DDRAM);
  20          void cursoropen(uchar position);       //开光标,关闪烁
  21          void flickeropen(uchar position);      //开光标、开闪烁
  22          void cursorclose(void);                        //关光标、关闪烁
  23          void YJ_Init(void);
  24          void writelcd(uchar disdata);
  25          void SPI0_Init (void);
  26          void PORT1_Init (void);
  27          
  28          unsigned char xdata discode;           //开关显示、光标、闪烁的命令字暂存单元
  29          unsigned long x;
  30          unsigned char  virt_port;
  31          
  32          unsigned char xdata tab1[16]   ={0x20,0x20,0x42,0x54,0x20,0x46,0x33,0x31,0x30,0x20,0x56,0x31,0x2e,0x30
  33                                            ,0x20,0x20};
  34          unsigned char xdata Netdata[16]={0x77,0x77,0x77,0x2e,0x78,0x68,0x6c,0x2e,0x63,0x6f,
  35                                            0x6d,0x2e,0x63,0x6e,0x20,0x20}; 
  36          
  37          sbit   LCDCS  = P3^3; 
  38                            
  39          //sbit YJDAT = P2^6;                       
  40          //sbit YJCLK = P2^7;
  41          //sbit LCDRS = P3^3;
  42          //sbit LCDE  = P3^4;
  43          //-----------------------------------------------------------------------------
  44          // MAIN Routine
  45          //-----------------------------------------------------------------------------
  46          
  47          void lcd (void) {
  48   1         int i,j;
  49   1         long  k;
  50   1      
  51   1         PCA0MD &= ~0x40;                       // WDTE = 0 (watchdog timer enable bit)
  52   1         OSCICN |=  0x03;                       // Set internal oscillator to highest
  53   1                                                // setting (24500000)
  54   1      //   PORT_Init ();                        // initialize crossbar and GPIO
  55   1         SPI0_Init ();
C51 COMPILER V7.50   LCD2222                                                               08/23/2006 08:04:22 PAGE 2   

  56   1         YJ_Init();
  57   1         while (1) {
  58   2      
  59   2          for(i=0;i<16;i++){
  60   3           Write_CHAR(tab1[i]);
  61   3           for(k=0;k<5000;k++);}
  62   2           Write_COM(0xc0);
  63   2      
  64   2           for(k=0;k<5000;k++);
  65   2           for(i=0;i<16;i++){
  66   3           Write_CHAR(Netdata[i]);
  67   3           for(k=0;k<5000;k++);}
  68   2         
  69   2      
  70   2          YJ_Init();
  71   2         }
  72   1      }
*** WARNING C280 IN LINE 48 OF LCD2222.C: 'j': unreferenced local variable
  73          //-----------------------------------------------------------------------------
  74          // PORT_Init
  75          //-----------------------------------------------------------------------------
  76          //
  77          // Configure the Crossbar and GPIO ports
  78          
  79          void PORT1_Init (void)
  80          {  
  81   1         P0SKIP    = 0xFE;
  82   1         P1SKIP    = 0x7F;
  83   1         XBR0 = 0x02;                       // Enable SMBus pins
  84   1         XBR1 = 0x40;                       // Enable crossbar and weak pull-ups
  85   1      
  86   1         P0MDOUT = 0xFF;                    // All P0 pins open-drain output
  87   1         P2MDOUT = 0xFF;
  88   1         P3MDOUT |= 0x04;                   // P3.3 push-pull output
  89   1      
  90   1      }
  91          //-----------------------------------------------------------------------------
  92          //SPI_INIT
  93          //-----------------------------------------------------------------------------
  94          void SPI0_Init (void)
  95          {
  96   1         SPI0CFG = 0x70;                     // data sampled on 1st SCK rising edge
  97   1                                             // 8-bit data words
  98   1      
  99   1         SPI0CN = 0x09;                      // Master mode; SPI enabled; flags
 100   1                                             // cleared
 101   1         SPI0CKR = 0x03;//SYSCLK/2/3000000-1;// SPI clock <= 8MHz (limited by 
 102   1                                             // EEPROM spec.)
 103   1      }
 104          //-----------------------------------------------------------------------------
 105          //write com
 106          //-----------------------------------------------------------------------------
 107          void Write_COM(uchar ins)
 108               {
 109   1            uchar xdata i,t;
 110   1                uint xdata j;
 111   1               
 112   1                for(j=0;j<500;j++);                   //用延时代替查询
 113   1                virt_port|=ins&0xf0;
 114   1                writelcd(virt_port);
 115   1            //LCDE=1;
 116   1                virt_port|=0x08;
C51 COMPILER V7.50   LCD2222                                                               08/23/2006 08:04:22 PAGE 3   

 117   1                writelcd(virt_port);
 118   1            for(i=3;i>0;i--);
 119   1            //LCDE=0;
 120   1                virt_port&=~0x08;
 121   1                writelcd(virt_port);
 122   1      
 123   1            virt_port&=0x07;
 124   1                writelcd(virt_port);
 125   1            t=ins<<4;             
 126   1            virt_port|=t&0xf0;           
 127   1                writelcd(virt_port);
 128   1            //LCDE=1;
 129   1                virt_port|=0x08;
 130   1                writelcd(virt_port);
 131   1            for(i=3;i>0;i--);
 132   1            //LCDE=0;
 133   1                virt_port&=~0x08;
 134   1                writelcd(virt_port);
 135   1            virt_port=0;
 136   1                writelcd(virt_port);
 137   1           }
 138          //----------------------------------------------------------------------------------
 139          //write data
 140          //----------------------------------------------------------------------------------
 141          void Write_CHAR(uchar d)
 142              {
 143   1            uchar xdata i,t;
 144   1                uint xdata j;
 145   1               
 146   1            for(j=0;j<500;j++);               //用延时代替查询
 147   1                virt_port|=0x02;
 148   1                writelcd(virt_port);
 149   1            virt_port|=d&0xf0;
 150   1                writelcd(virt_port);
 151   1            virt_port|=0x08;//E=1
 152   1                writelcd(virt_port);
 153   1            for(i=3;i>0;i--);
 154   1            virt_port&=0xf7; //E=0
 155   1                writelcd(virt_port);
 156   1            virt_port&=0x07;                          
 157   1                writelcd(virt_port);
 158   1                     
 159   1            t=d&0x0f;
 160   1            virt_port|=t<<4;
 161   1                writelcd(virt_port);
 162   1      
 163   1                virt_port|=0x08; //E=1
 164   1                writelcd(virt_port);
 165   1            for(i=3;i>0;i--); 
 166   1            virt_port&=0xf7; //E=0
 167   1                writelcd(virt_port);
 168   1            virt_port=0;
 169   1                writelcd(virt_port);
 170   1          }
 171          //---------------------------------------------------------------------------------------
 172          void lcdaddr(uchar DDRAM)
 173               {
 174   1           if (DDRAM<=16)
 175   1              {
 176   2              Write_COM(0x80+DDRAM-1);
 177   2              }
 178   1           else 
C51 COMPILER V7.50   LCD2222                                                               08/23/2006 08:04:22 PAGE 4   

 179   1              {    
 180   2              Write_COM(0x80+DDRAM+0x2f);
 181   2              }
 182   1           }
 183          //---------------------------------------------------------------------------------------
 184          void cursoropen(uchar position)//开光标,关闪烁
 185          {
 186   1                lcdaddr(position);
 187   1                discode|=0x02;
 188   1                discode&=~0x01;
 189   1                Write_COM(discode);
 190   1       }
 191          //----------------------------------------------------------------------------------------
 192          void flickeropen(uchar position)//开光标、开闪烁
 193                    {
 194   1                //lcdaddr(position);
 195   1            //Write_COM(0x0f);
 196   1                lcdaddr(position);
 197   1                discode|=0x02;
 198   1                discode|=0x01;
 199   1                Write_COM(discode);
 200   1                }     
 201          //-----------------------------------------------------------------------------------------        
 202          void cursorclose(void)          //关光标、关闪烁
 203                    {
 204   1            //Write_COM(0x0c);
 205   1                discode&=~0x02;
 206   1                discode&=~0x01;
 207   1                Write_COM(discode); 
 208   1                }
 209          
 210          //------------------------------------------------------------------------------------------
 211          void YJ_Init(void)
 212               {
 213   1            uint xdata i;
 214   1      
 215   1      
 216   1            virt_port=0;
 217   1                writelcd(virt_port);
 218   1            virt_port|=0x08;          //E=1,第一步
 219   1                writelcd(virt_port);
 220   1            virt_port|=0x30;
 221   1                writelcd(virt_port);
 222   1                for(i=20;i>0;i--); 
 223   1            virt_port&=0xf7;                  //E=0
 224   1                writelcd(virt_port);
 225   1            virt_port=0;
 226   1                writelcd(virt_port);
 227   1            for(i=20000;i>0;i--);
 228   1            for(i=20000;i>0;i--);
 229   1                      
 230   1            virt_port|=0x08;              //E=1,第二步
 231   1                writelcd(virt_port);
 232   1            virt_port|=0x30;
 233   1                writelcd(virt_port);
 234   1                for(i=20;i>0;i--); 
 235   1            virt_port&=0xf7;                  //E=0
 236   1                writelcd(virt_port);
 237   1            virt_port=0;
 238   1                writelcd(virt_port);
 239   1            for(i=1000;i>0;i--);
 240   1      
C51 COMPILER V7.50   LCD2222                                                               08/23/2006 08:04:22 PAGE 5   

 241   1            virt_port|=0x08;              //E=1,第三步
 242   1                writelcd(virt_port);
 243   1            virt_port|=0x30;
 244   1                writelcd(virt_port);
 245   1                for(i=20;i>0;i--); 
 246   1            virt_port&=0xf7;                  //E=0
 247   1                writelcd(virt_port);
 248   1            virt_port=0;
 249   1                writelcd(virt_port);
 250   1            for(i=1000;i>0;i--);          //3次延时,重要!
 251   1              
 252   1                for(i=8000;i>0;i--);          //用延时代替查询          
 253   1      
 254   1          
 255   1            virt_port=0;                              //第五步,写入20码,设置为4位总线方式,非常重要!!!!!
 256   1                writelcd(virt_port);
 257   1            virt_port|=0x20;                  //只写高字节
 258   1                writelcd(virt_port);
 259   1            virt_port|=0x08;          //E=1
 260   1                writelcd(virt_port);
 261   1                for(i=20;i>0;i--);
 262   1            virt_port&=0xf7;          //E=0
 263   1                writelcd(virt_port);
 264   1                for(i=10;i>0;i--);
 265   1            virt_port=0;
 266   1                writelcd(virt_port);
 267   1      
 268   1            Write_COM(0x28);              //第六步。。。。
 269   1            for(i=50;i>0;i--);
 270   1      
 271   1                Write_COM(0x01);
 272   1            for(i=50;i>0;i--);
 273   1      
 274   1            Write_COM(0x0e);
 275   1            for(i=50;i>0;i--);     
 276   1      
 277   1            Write_COM(0x06);
 278   1            for(i=50;i>0;i--);
 279   1      
 280   1           }
 281          //-----------------------------------------------------
 282          void writelcd(uchar disdata)     //write 595
 283                  {
 284   1              uint xdata i;
 285   1      
 286   1              for(i=0;i<3;i++);
 287   1              LCDCS=1;
 288   1          SPIF = 0;
 289   1          for(x=0;x<50;x++);
 290   1              SPI0DAT=disdata;
 291   1      
 292   1          while (SPIF == 0);                  // 等待写结束
 293   1          for(x=0;x<500;x++);
 294   1              LCDCS=0;
 295   1          for(x=0;x<500;x++); 
 296   1              }
 297          //----------------------------------------------------------
 298          //end of file


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1426    ----
C51 COMPILER V7.50   LCD2222                                                               08/23/2006 08:04:22 PAGE 6   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     33      12
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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