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

📄 at89c52+12232lcd.lst

📁 proteus中LCD--HDM32GS12b的仿真及源码.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   AT89C52_12232LCD                                                      08/05/2008 11:48:34 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE AT89C52_12232LCD
OBJECT MODULE PLACED IN AT89C52+12232LCD.OBJ
COMPILER INVOKED BY: E:\keil\C51\BIN\C51.EXE AT89C52+12232LCD.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          ---------------------------------------------------------------
   3          |DB0-----P0.0 | DB4-----P0.4 | RW-------P1.1 | A0--------P1.0 |
   4          |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | V0接1K电阻到GND |
   5          |DB2-----P0.2 | DB6-----P0.6 | E1-------P1.3 |
   6          |DB3-----P0.3 | DB7-----P0.7 | E2-------P1.2 |
   7          ---------------------------------------------------------------
   8          
   9          
  10          [注:AT89x52使用22.1184M或11.0592M晶振,实测使用22.1184M或11.0592都可以]
  11          编译平台:Keil uV2 7.08
  12                                                                                  */
  13          
  14          #include "reg52.h"
  15          #include "INTRINS.H"
  16          
  17          
  18          
  19          #define uchar unsigned char
  20          #define uint unsigned int
  21          
  22          //#define E1 P1_2 //块1 左边
  23          //#define E2 P1_3 //块2 右边
  24          //#define RW P1_1
  25          //#define A0 P1_0 //A0为1时是数据,0时为指令数据
  26          //#define DATA P0 //数据
  27                                                          
  28          
  29          sbit A0=P1^0;
  30          sbit RW=P1^1;
  31          sbit E1=P1^2;
  32          sbit E2=P1^3;
  33          
  34          
  35          
  36          sbit RS=P2^1;
  37          #define DATA P0
  38          
  39          
  40          
  41          extern uchar code Bmpt1[];
  42          extern uchar code Bmpt2[];
  43          extern uchar code Bmpt3[];
  44          extern uchar code Bmpt4[];
  45          extern uchar code Bmpt5[];
  46          extern uchar code Bmpt6[];
  47          extern uchar code Bmpt7[];
  48          extern uchar code Bmptc[];
  49          extern uchar code bmp001[];
  50          extern uchar code bmp002[];
  51          extern uchar code Bmp08[];
  52          extern uchar code Bmp07[];
  53          extern uchar code Bmp06[];
  54          extern uchar code Bmp05[];
  55          extern uchar code Bmp04[];
C51 COMPILER V8.08   AT89C52_12232LCD                                                      08/05/2008 11:48:34 PAGE 2   

  56          extern uchar code Bmp03[];
  57          extern uchar code Bmp02[];
  58          extern uchar code Bmp01[];
  59          extern uchar code Bmp012[];
  60          extern uchar code Bmp003[];
  61          extern uchar code Bmp002[];
  62          
  63          
  64          //延时
  65          void delay(uint i)
  66          {
  67   1              uint k=200;
  68   1              while(i>0)
  69   1              {     i--;   }
  70   1              while(k>0)
  71   1              {  k--;  }
  72   1      }
  73          
  74          void waitenl(void)
  75          {       
  76   1              uchar i=0x00;
  77   1              E1=0;
  78   1              E2=0;
  79   1              A0=0;
  80   1              RW=1;
  81   1              P0=0xff;
  82   1              _nop_();
  83   1              E1=1;
  84   1              _nop_();
  85   1              i=P0;
  86   1              E1=0;
  87   1              i&=0x80;
  88   1              while(i)
  89   1              {
  90   2                      E1=1;
  91   2                      _nop_();
  92   2                      i=P0;
  93   2                      _nop_();
  94   2                      E1=0;
  95   2                      i&=0x80;
  96   2                      
  97   2              }
  98   1              E1=0;
  99   1              E2=0;
 100   1              A0=0;
 101   1              RW=1;
 102   1              _nop_();
 103   1      
 104   1      }       
 105          void waitenr(void)
 106          {       
 107   1              uchar i=0x00;
 108   1              E1=0;
 109   1              E2=0;
 110   1              _nop_();
 111   1              A0=0;
 112   1              RW=1;
 113   1              P0=0xff;
 114   1              _nop_();
 115   1              E2=1;
 116   1              _nop_();
 117   1              i=P0;
C51 COMPILER V8.08   AT89C52_12232LCD                                                      08/05/2008 11:48:34 PAGE 3   

 118   1              E2=0;
 119   1              i&=0x80;
 120   1              while(i)
 121   1              {
 122   2                      E2=1;
 123   2                      _nop_();
 124   2                      i=P0;
 125   2                      _nop_();
 126   2                      E2=0;
 127   2                      i&=0x80;
 128   2              }
 129   1              E1=0;
 130   1              E2=0;
 131   1              A0=0;
 132   1              RW=1;
 133   1              _nop_();
 134   1      }       
 135          
 136          //左页
 137          //发送数据
 138          void  OUTLD(uchar i)
 139          {
 140   1      waitenl();
 141   1      E1=0;
 142   1      _nop_();
 143   1      A0=1; //写数据
 144   1      RW=0;
 145   1      _nop_();
 146   1      E1=1;
 147   1      _nop_();
 148   1      DATA=i;
 149   1      _nop_();
 150   1      E1=0;
 151   1      _nop_();
 152   1      A0=0;
 153   1      RW=1;
 154   1      _nop_();
 155   1      DATA=0xff;
 156   1      }
 157          //左页
 158          //发送命令
 159          void OUTLI(uchar i)
 160          {
 161   1      waitenl();
 162   1      E1=0;
 163   1      _nop_();
 164   1      A0=0; //写指令
 165   1      RW=0;
 166   1      _nop_();
 167   1      E1=1;
 168   1      _nop_();
 169   1      DATA=i;
 170   1      _nop_();
 171   1      E1=0;
 172   1      _nop_();
 173   1      A0=0;
 174   1      RW=1;
 175   1      _nop_();
 176   1      DATA=0xff;
 177   1      }
 178          //右页
 179          //发送数据
C51 COMPILER V8.08   AT89C52_12232LCD                                                      08/05/2008 11:48:34 PAGE 4   

 180          void OUTRD(uchar i)
 181          {
 182   1      waitenr();
 183   1      E2=0;
 184   1      _nop_();
 185   1      A0=1; //写数据
 186   1      RW=0;
 187   1      _nop_();
 188   1      E2=1;
 189   1      _nop_();
 190   1      DATA=i;
 191   1      _nop_();
 192   1      E2=0;
 193   1      _nop_();
 194   1      A0=0;
 195   1      RW=1;
 196   1      _nop_();
 197   1      DATA=0xff;
 198   1      }
 199          //右页
 200          //发送命令
 201          void OUTRI(uchar i)
 202          {
 203   1      waitenr();
 204   1      E2=0;
 205   1      _nop_();
 206   1      A0=0; //写指令
 207   1      RW=0;
 208   1      _nop_();
 209   1      E2=1;
 210   1      _nop_();
 211   1      DATA=i;
 212   1      _nop_();
 213   1      E2=0;
 214   1      _nop_();
 215   1      A0=0;
 216   1      RW=1;
 217   1      _nop_();
 218   1      DATA=0xff;
 219   1      }
 220          
 221          
 222          //初始化
 223          void LCDINI(void)
 224          {
 225   1      OUTLI(0xE2);
 226   1      OUTRI(0xE2);//复位
 227   1      OUTLI(0xAE);
 228   1      OUTRI(0xAE);//display off
 229   1      OUTLI(0xA4);
 230   1      OUTRI(0xA4);//static drive off
 231   1      OUTLI(0xA9);
 232   1      OUTRI(0xA9);//1/32占空比
 233   1      OUTLI(0xA1);
 234   1      OUTRI(0xA1);//时钟线输出,select ADC=CW
 235   1      OUTLI(0xEE);
 236   1      OUTRI(0xEE);//写模式,read-modify-write off
 237   1      
 238   1      OUTLI(0x00); //column address
 239   1      OUTLI(0xC0); //display start line
 240   1      OUTRI(0x00);
 241   1      OUTRI(0xC0);
C51 COMPILER V8.08   AT89C52_12232LCD                                                      08/05/2008 11:48:34 PAGE 5   

 242   1      
 243   1      OUTLI(0xAF);//display on
 244   1      OUTRI(0xAF);
 245   1      
 246   1      }
 247          /*
 248          函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
 249          ------------------------------------------------------------------------
 250          */
 251          void SetPage(uchar page0,uchar page1)
 252          {
 253   1      OUTLI(0xB8|page0);
 254   1      OUTRI(0xB8|page1);
 255   1      }
 256          
 257          /*
 258          --------------------------------------------------------------------------------
 259          函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
 260          --------------------------------------------------------------------------------
 261          */
 262          void SetAddress(uchar address0,uchar address1)
 263          {
 264   1      OUTLI(address0);
 265   1      OUTRI(address1);
 266   1      }
 267          
 268          /*
 269          --------------------------------------------------------------------------------
 270          
 271          调用方式:void PutChar0(uchar ch)
 272          函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
 273          --------------------------------------------------------------------------------
 274          -*/
 275          void PutCharR(uchar ch)
 276          {
 277   1      OUTRD(ch);
 278   1      }
 279          
 280          /*
 281          --------------------------------------------------------------------------------
 282          
 283          调用方式:void PutChar1(uchar ch)
 284          函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
 285          --------------------------------------------------------------------------------
 286          -*/
 287          void PutCharL(uchar ch)
 288          {
 289   1      OUTLD(ch);
 290   1      }
 291          
 292          /*
 293          --------------------------------------------------------------------------------
 294          
 295          调用方式:void DrawBmp(bit layer,uchar width,uchar *bmp)
 296          函数说明:画一个图,layer表示上下层,width是图形的宽,高都是16,bmp是
 297          图形指针
 298          使用zimo3软件,纵向取模,字节倒序/240字节
 299          --------------------------------------------------------------------------------
 300          -*/
 301          void DrawBmp(bit layer,uchar width,uchar *bmp)
 302          {
 303   1      uchar x,address,i=0; //address表示显存的物理地址
C51 COMPILER V8.08   AT89C52_12232LCD                                                      08/05/2008 11:48:34 PAGE 6   

⌨️ 快捷键说明

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