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

📄 128064.lst

📁 LCD12864资料
💻 LST
字号:
C51 COMPILER V7.06   128064                                                                04/09/2007 11:20:34 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 128064
OBJECT MODULE PLACED IN 128064.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 128064.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          sbit di=P2^2; // 数据\指令 选择
   4          sbit rw=P2^1; // 读\写 选择
   5          sbit e=P2^0; // 读\写使能
   6          sbit cs1=P2^4; // 片选1
   7          sbit cs2=P2^3; // 片选2
   8          #define start_page 184
   9          #define start_column 64
  10          #define uchar unsigned char
  11          
  12          uchar code HZ[]={
  13                           0x80,0x90,0x8C,0x84,0x84,0xF4,0xA5,0x86,0x84,0x84,0x84,0x84,0x94,0x8C,0x84,0x00,
  14                           0x80,0x80,0x80,0x40,0x47,0x28,0x28,0x10,0x28,0x24,0x43,0xC0,0x40,0x00,0x00,0x00,
  15          
  16                           0x00,0xFE,0x02,0x0A,0x8A,0x8A,0x8A,0xFA,0x8A,0x8A,0x8A,0x0A,0x02,0xFE,0x00,0x00,
  17                           0x00,0xFF,0x40,0x48,0x48,0x48,0x48,0x4F,0x48,0x49,0x4E,0x48,0x40,0xFF,0x00,0x00,
  18          
  19                                           0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20
  20                          };       
  21                                    
  22          void checkbusy()
  23          {
  24   1         unsigned char dat;
  25   1         di=0;
  26   1         rw=1;
  27   1         do{
  28   2            P0=0x00;
  29   2            e=1; 
  30   2            dat=P0;
  31   2            dat=0x80 & dat; //仅当第7位为0时才可操作(判别busy信号)
  32   2            }while(!(dat==0x00));
  33   1          e=0;
  34   1           }
  35          sendcommandtolcd(unsigned char command)
  36          {
  37   1         checkbusy();
  38   1         rw=0;
  39   1         P0=command;
  40   1         e=1; 
  41   1         e=0;
  42   1      }
  43          void writebyte(unsigned char dat)
  44          {
  45   1         checkbusy();
  46   1         di=1; rw=0;
  47   1         P0=dat;
  48   1         e=1; 
  49   1         e=0;
  50   1        }
  51          void  set_page(uchar page1)
  52          {
  53   1        sendcommandtolcd(start_page+page1); 
  54   1      }
  55          void set_column(uchar column1)
C51 COMPILER V7.06   128064                                                                04/09/2007 11:20:34 PAGE 2   

  56          {
  57   1       sendcommandtolcd(start_column+column1);
  58   1      }
  59          
  60          void pattern(uchar column,uchar *p, uchar page)
  61          {
  62   1        uchar i;
  63   1        if(column<64)
  64   1        {
  65   2         set_page(page);
  66   2         set_column(column);
  67   2        }
  68   1        else
  69   1       {
  70   2        set_page(page);
  71   2        set_column(column-64); 
  72   2       }
  73   1        if(column>128)
  74   1         return ;
  75   1        if(column<64)
  76   1          {
  77   2           cs1=1;
  78   2           cs2=0;
  79   2           for(i=0;i<8;i++)
  80   2            {
  81   3              writebyte(*p);
  82   3              p++;
  83   3            }
  84   2          }
  85   1         else
  86   1           {
  87   2            cs1=0;
  88   2            cs2=1;
  89   2            for(i=0;i<8;i++)
  90   2               {
  91   3                 writebyte(*p);
  92   3                 p++;
  93   3               }
  94   2           } 
  95   1          
  96   1      }
  97          void display(uchar *pt)
  98          {
  99   1        uchar i,gy=0;
 100   1        for(i=0;i<2;i++)
 101   1           {
 102   2           pattern(gy,pt,0);
 103   2           pattern(gy+8,pt+8,0);
 104   2           pattern(gy,pt+16,1);
 105   2           pattern(gy+8,pt+24,1);
 106   2           gy=gy+16;
 107   2           pt=pt+32;
 108   2           }
 109   1               gy=0;
 110   1               pattern(gy,pt,2);
 111   1               pattern(gy,pt+8,3);
 112   1              
 113   1      }
 114          void clearlcd()
 115          {
 116   1       uchar i,j;
 117   1       cs1=0;
C51 COMPILER V7.06   128064                                                                04/09/2007 11:20:34 PAGE 3   

 118   1       cs2=1;
 119   1       for(i=0;i<8;i++)
 120   1          {
 121   2            for(j=0;j<64;j++)
 122   2             {
 123   3                 writebyte(0x00);
 124   3             }
 125   2          }
 126   1       cs1=0;
 127   1       cs2=1;
 128   1       for(i=0;i<8;i++)
 129   1          {
 130   2           for(j=0;j<64;j++)
 131   2             {
 132   3                 writebyte(0x00);
 133   3             }
 134   2           }
 135   1      }
 136          
 137          //设定列地址--Y 0-63
 138          void SetColumn(unsigned char column)
 139          {
 140   1        column=column &0x3f; // 0=<column<=63
 141   1        column=column | 0x40; //01xx xxxx
 142   1        sendcommandtolcd(column);
 143   1      }
 144          /*----------------------------------------------------------------------------------------------------*/
 145          //设定显示开始行--XX
 146          void SetStartLine(unsigned char startline) //0--63
 147          {
 148   1        startline=startline & 0x07;
 149   1        startline=startline|0xc0; //1100 0000
 150   1       sendcommandtolcd(startline);
 151   1       }
 152          /*----------------------------------------------------------------------------------------------------*/
 153          //开关显示
 154          void SetOnOff(unsigned char onoff)
 155          {
 156   1      onoff=0x3e | onoff; //0011 111x
 157   1      sendcommandtolcd(onoff);
 158   1      }
 159          /*---------------------------------------------------------------------------------------------------*/
 160          //选择屏幕
 161          //screen: 0-全屏,1-左屏,2-右屏
 162          void SelectScreen(unsigned char screen)
 163          { //cs1: 1--左; cs2: 1--右
 164   1         switch(screen)
 165   1         { case 0: cs1=0;//全屏
 166   2                   _nop_(); _nop_(); _nop_(); 
 167   2                   cs2=0; 
 168   2                   _nop_(); _nop_(); _nop_(); 
 169   2                   break; 
 170   2           case 1: cs1=0;//左屏
 171   2                   _nop_(); _nop_(); _nop_(); 
 172   2                   cs2=1;
 173   2                   _nop_(); _nop_(); _nop_(); 
 174   2                   break;
 175   2           case 2: cs1=1;//右屏
 176   2                   _nop_(); _nop_(); _nop_(); 
 177   2                   cs2=0;
 178   2                   _nop_(); _nop_(); _nop_(); 
 179   2                   break;
C51 COMPILER V7.06   128064                                                                04/09/2007 11:20:34 PAGE 4   

 180   2         }
 181   1      }
 182          void ClearScreen(unsigned char screen)
 183             { unsigned char i,j;
 184   1           SelectScreen(screen);
 185   1           for(i=0;i<8;i++){
 186   2                  set_page(i);
 187   2                    for(j=0;j<128;j++){
 188   3                                writebyte(0x00);
 189   3                                 }
 190   2                           }
 191   1                               
 192   1          }
 193          GDM12864delay()
 194             {
 195   1          unsigned int i=500;
 196   1          while(i--) {;}
 197   1          }
 198          void InitLCD() 
 199          { unsigned char i=250; //延时
 200   1      while(i--);
 201   1      
 202   1      SelectScreen(0);
 203   1      SetOnOff(0); //关显示
 204   1      
 205   1      ClearScreen(0);//清屏
 206   1      
 207   1      SelectScreen(0);
 208   1      SetOnOff(1); //开显示
 209   1      SelectScreen(0);
 210   1      SetStartLine(0); //开始行:0
 211   1      } 
 212          void main()
 213          {
 214   1       GDM12864delay();
 215   1       InitLCD();
 216   1       set_page(0);
 217   1       set_column(0);
 218   1       SetStartLine(0);
 219   1       display(&HZ);
 220   1       while(1);
 221   1      }
 222          


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