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

📄 main.lst

📁 SVM12864点阵单色LCD的测试代码
💻 LST
字号:
C51 COMPILER V7.10   MAIN                                                                  11/19/2006 16:44:31 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          
   3          //----------------引脚配置
   4          sbit E=P2^0;   //(SCLK)
   5          sbit RW=P2^1;  //(SID)
   6          sbit RS=P2^2;  //(CS)
   7          
   8          
   9          //-----------------延时参数
  10          void Delay(unsigned char t)
  11          {unsigned int a;
  12   1       while(t--)
  13   1        {for(a=1;a<2000;a++);
  14   2        }
  15   1      }
  16          
  17          
  18          //-----------------写数据
  19          void WriteData(unsigned char DB)
  20          {unsigned char i,temp;
  21   1       RS=1;
  22   1       RW=1;
  23   1       E=0;
  24   1       E=1;  //-1
  25   1       E=0;
  26   1       E=1;  //-2
  27   1       E=0;
  28   1       E=1; //-3
  29   1       E=0;
  30   1       E=1; //-4
  31   1       E=0;
  32   1       E=1; //-5
  33   1       E=0;
  34   1       RW=0;
  35   1       E=1; //-6
  36   1       E=0;
  37   1       RW=1;
  38   1       E=1; //-7
  39   1       E=0;
  40   1       RW=0;
  41   1       E=1; //-8
  42   1       E=0;
  43   1       temp=DB;
  44   1       for(i=0;i<4;i++)
  45   1        {temp=temp&0x80;
  46   2         if(temp==0x80)
  47   2           {RW=1;
  48   3                E=1;
  49   3                E=0;
  50   3               }
  51   2          else
  52   2               {RW=0;
  53   3                E=1;
  54   3                E=0;
  55   3               }
C51 COMPILER V7.10   MAIN                                                                  11/19/2006 16:44:31 PAGE 2   

  56   2         DB=DB<<1;
  57   2         temp=DB;
  58   2        }
  59   1      
  60   1       RW=0;
  61   1       E=1;  //-1
  62   1       E=0;
  63   1       E=1;  //-2
  64   1       E=0;
  65   1       E=1; //-3
  66   1       E=0;
  67   1       E=1; //-4
  68   1       E=0;
  69   1      
  70   1       temp=DB;
  71   1       for(i=0;i<4;i++)
  72   1        {temp=temp&0x80;
  73   2         if(temp==0x80)
  74   2           {RW=1;
  75   3                E=1;
  76   3                E=0;
  77   3               }
  78   2          else
  79   2               {RW=0;
  80   3                E=1;
  81   3                E=0;
  82   3               }
  83   2         DB=DB<<1;
  84   2         temp=DB;
  85   2        }
  86   1      
  87   1       RW=0;
  88   1       E=1;  //-1
  89   1       E=0;
  90   1       E=1;  //-2
  91   1       E=0;
  92   1       E=1; //-3
  93   1       E=0;
  94   1       E=1; //-4
  95   1       E=0;
  96   1       RS=1;
  97   1       Delay(1);
  98   1      }
  99          
 100          //--------------------写命名
 101          void WriteCMD(unsigned char DB)
 102          {unsigned char i,temp;
 103   1       RS=1;
 104   1       RW=1;
 105   1       E=0;
 106   1       E=1;  //-1
 107   1       E=0;
 108   1       E=1;  //-2
 109   1       E=0;
 110   1       E=1; //-3
 111   1       E=0;
 112   1       E=1; //-4
 113   1       E=0;
 114   1       E=1; //-5
 115   1       E=0;
 116   1       RW=0;
 117   1       E=1; //-6
C51 COMPILER V7.10   MAIN                                                                  11/19/2006 16:44:31 PAGE 3   

 118   1       E=0;
 119   1       E=1; //-7
 120   1       E=0;
 121   1       E=1; //-8
 122   1       E=0;
 123   1      
 124   1       temp=DB;
 125   1       for(i=0;i<4;i++)
 126   1        {temp=temp&0x80;
 127   2         if(temp==0x80)
 128   2           {RW=1;
 129   3                E=1;
 130   3                E=0;
 131   3               }
 132   2          else
 133   2               {RW=0;
 134   3                E=1;
 135   3                E=0;
 136   3               }
 137   2         DB=DB<<1;
 138   2         temp=DB;
 139   2        }
 140   1      
 141   1       RW=0;
 142   1       E=1;  //-1
 143   1       E=0;
 144   1       E=1;  //-2
 145   1       E=0;
 146   1       E=1; //-3
 147   1       E=0;
 148   1       E=1; //-4
 149   1       E=0;
 150   1      
 151   1       temp=DB;
 152   1       for(i=0;i<4;i++)
 153   1        {temp=temp&0x80;
 154   2         if(temp==0x80)
 155   2           {RW=1;
 156   3                E=1;
 157   3                E=0;
 158   3               }
 159   2          else
 160   2               {RW=0;
 161   3                E=1;
 162   3                E=0;
 163   3               }
 164   2         DB=DB<<1;
 165   2         temp=DB;
 166   2        }
 167   1      
 168   1       RW=0;
 169   1       E=1;  //-1
 170   1       E=0;
 171   1       E=1;  //-2
 172   1       E=0;
 173   1       E=1; //-3
 174   1       E=0;
 175   1       E=1; //-4
 176   1       E=0;
 177   1       RS=1;
 178   1       Delay(1);
 179   1      
C51 COMPILER V7.10   MAIN                                                                  11/19/2006 16:44:31 PAGE 4   

 180   1      }
 181          
 182          /**********************************************
 183          函数名:LCD_AT(unsigned char AC)
 184          功能:定义字显示位置
 185          入口参数:AC (为1,2,3,4)显示行位置
 186          出口参数:无
 187          **********************************************/
 188          void LCD_At(unsigned char AC)
 189          {if(AC==1)
 190   1         WriteCMD(0x80); 
 191   1       if(AC==2)
 192   1         WriteCMD(0x90);
 193   1       if(AC==3)
 194   1         WriteCMD(0x88);
 195   1       if(AC==4)
 196   1         WriteCMD(0x98);
 197   1      }
 198          
 199          /*********************************************
 200          函数名:LCD_Ini()
 201          功能:12864初始化
 202          入口参数:无
 203          出口参数:无
 204          *********************************************/
 205          void LCD_Ini()
 206          {Delay(20);
 207   1       WriteCMD(0x30);
 208   1       Delay(5);
 209   1       WriteCMD(0x30);   //function set
 210   1       Delay(1);
 211   1       WriteCMD(0x08);   //display off
 212   1       Delay(1);
 213   1       WriteCMD(0x01);   //display clear
 214   1       Delay(1);
 215   1       WriteCMD(0x03);   //entry mode set
 216   1       Delay(1);
 217   1       WriteCMD(0x40);   //set AC
 218   1       Delay(1);
 219   1       WriteCMD(0x0c);   //display on
 220   1       Delay(1);
 221   1      }
 222          
 223          
 224          /*****************************************
 225          函数名:LCD_Printf(char *GB)
 226          功能:显示中文字符串
 227          入口参数:*GB 字符串指针
 228          出口参数:无
 229          *****************************************/
 230          void LCD_Printf(char *GB)   //显示字符串
 231          {for(;*GB != 0;GB++)
 232   1        {WriteData(*GB);
 233   2        }
 234   1      }
 235          
 236          
 237          /*****************************************
 238          函数名:LCD_To(unsigned char Y,unsigned char X)
 239          功能:字符定位
 240          入口参数:Y,X位置参数,Y行参数,X列参数
 241          出口参数:无
C51 COMPILER V7.10   MAIN                                                                  11/19/2006 16:44:31 PAGE 5   

 242          *****************************************/
 243          void LCD_To(unsigned char Y,unsigned char X)  //定位
 244          {unsigned char at;
 245   1       if(Y>5) return;
 246   1       if(X>9) return;
 247   1       if(Y==1) at=0x80+X;
 248   1       if(Y==2) at=0x90+X;
 249   1       if(Y==3) at=0x88+X;
 250   1       if(Y==4) at=0x98+X;
 251   1       WriteCMD(at);
 252   1        
 253   1      }
 254          
 255          
 256          /*****************************************
 257          函数名:LCD_Print(unsigned char Y,unsigned char X,char *TXT)
 258          功能:字符串定位显示
 259          入口参数:Y,X位置参数,Y行参数,X列参数,*TXT显示字符串
 260          出口参数:无
 261          *****************************************/
 262          void LCD_Print(unsigned char Y,unsigned char X,char *TXT)  //定位显示字符串
 263          {LCD_To(Y,X);
 264   1       for(;*TXT != 0;TXT++)
 265   1        {WriteData(*TXT);
 266   2        }
 267   1      }
 268          
 269          
 270          void main(void)
 271          {LCD_Ini();
 272   1       while(1)
 273   1        {LCD_At(2);
 274   2         LCD_Printf("你好吗我的爱人");
 275   2        }
 276   1      }
 277          


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