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

📄 main.lst

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  05/11/2007 09:12:54 PAGE 1   


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

line level    source

   1          //写汉字液晶,液晶屏为128*64,4行*8列汉字
   2          /*
   3           D7 D6 D5 D4 D3 D2 D1 D0   
   4           0  0  0  1  1  1  1  D         *D=1时显示开,D=0时显示关
   5           1  1  A  A  A  A  A  A         *设定显示开始行寄存器位置
   6           1  0  1  1  1  A  A  A         *设定页地址
   7           0  1  A  A  A  A  A  A         *设定列地址
   8           D7 0  D5 D4 0  0  0  0         *D7=1表示LCD忙,D7=0可以读写操作,D5=1显示关状态,
   9                                                                  *D5=0显示开状态,D4=1表示正在初始化,D4=0初始化完毕
  10          */
  11          
  12          /**************头文件定义***********/
  13          #include "STC89C51RC.H"
  14          #include <intrins.h>
  15          #include "logo.h"
  16          
  17          /************常用操作命令和参数定义********/
  18          #define DISPON 0x3f      //display on
  19          #define DISPOFF 0x3e     //display off
  20          #define DISPFIRST 0xc0   //define the first row
  21          #define SETY 0xb8        //define page address
  22          #define SETX 0x40        //define column address
  23          #define SIZE 0x500
  24          
  25          /*以下定义与硬件电路设计有关*/
  26          //RS-----------P2.0
  27          //R/W----------P2.1
  28          //CS1----------P2.2
  29          //CS2----------P2.3
  30          uchar xdata LLCD_CMD_WR  _at_ 0xf4ea;
  31          uchar xdata LLCD_CMD_RD  _at_ 0xf6ea;
  32          uchar xdata LLCD_DATA_WR _at_ 0xf5ea;
  33          uchar xdata LLCD_DATA_RD _at_ 0xf7ea;
  34          uchar xdata RLCD_CMD_WR  _at_ 0xf8ea;
  35          uchar xdata RLCD_CMD_RD  _at_ 0xfaea;
  36          uchar xdata RLCD_DATA_WR _at_ 0xf9ea;
  37          uchar xdata RLCD_DATA_RD _at_ 0xfbea;
  38          
  39          /************sub function******************/
  40          void init_lcd(void);          
  41          void Delay(uchar);
  42          void lcd_cmd_wr(uchar,uchar);
  43          void lcd_data_wr(uchar,uchar);
  44          void lcd_busy(uchar);
  45          void chk_busy(uchar);
  46          void lcd_hanzi_wr(uchar,uchar,uchar *);
  47          void lcd_str_wr(uchar,uchar,uchar,uchar *);
  48          void lcd_bmp_wr(uchar,uchar,uchar,uchar,uchar *);
  49          void lcd_clr(void);
  50          void lcd_rol();
  51          
  52          /************main function*****************/
  53          void main(void)
  54          {
  55   1        init_lcd(); 
C51 COMPILER V8.02   MAIN                                                                  05/11/2007 09:12:54 PAGE 2   

  56   1      
  57   1        while(1)      
  58   1        {     
  59   2              lcd_bmp_wr(0,0,128,64,logo);  
  60   2              Delay(500);
  61   2              lcd_bmp_wr(0,0,128,64,logo1);  
  62   2              Delay(500);
  63   2        }
  64   1      }
  65          
  66          void lcd_cmd_wr(uchar cmdcode,uchar right)
  67          {
  68   1        chk_busy(right);
  69   1        if(right)
  70   1        {
  71   2          RLCD_CMD_WR = cmdcode;
  72   2        }
  73   1        else
  74   1        {
  75   2          LLCD_CMD_WR = cmdcode;
  76   2        }
  77   1      }
  78          
  79          void lcd_data_wr(uchar ldata,uchar right)
  80          {
  81   1        chk_busy(right);
  82   1        if(right)
  83   1        {
  84   2          RLCD_DATA_WR = ldata;
  85   2        }
  86   1        else
  87   1        {
  88   2          LLCD_DATA_WR = ldata;
  89   2        }
  90   1      }
  91          
  92          void chk_busy(uchar right)
  93          {
  94   1        uchar tmp;
  95   1        do
  96   1        {
  97   2              if(right) tmp = RLCD_CMD_RD;
  98   2              else tmp = LLCD_CMD_RD;
  99   2        }
 100   1        while ((tmp|0x7f)==0xff);       
 101   1       }
 102          
 103          void Delay(uchar ms)
 104          {
 105   1        uchar us,usn;
 106   1        while(ms!=0)
 107   1        {
 108   2           usn = 100;
 109   2               while(usn!=0)
 110   2               {
 111   3                 us = 0xf0;
 112   3                 while(us!=0) us--;
 113   3                 usn--;
 114   3               }
 115   2           ms--;
 116   2        }
 117   1      }
C51 COMPILER V8.02   MAIN                                                                  05/11/2007 09:12:54 PAGE 3   

 118          
 119          void init_lcd(void)
 120          {
 121   1        lcd_cmd_wr(DISPON,0);
 122   1        lcd_cmd_wr(DISPFIRST,0);
 123   1        lcd_cmd_wr(SETY,0);
 124   1        lcd_cmd_wr(SETX,0);
 125   1      
 126   1        lcd_cmd_wr(DISPON,1);
 127   1        lcd_cmd_wr(DISPFIRST,1);
 128   1        lcd_cmd_wr(SETY,1);
 129   1        lcd_cmd_wr(SETX,1);
 130   1      }
 131          
 132          /*
 133          void lcd_clr(void)
 134          {
 135                  uchar i,j;
 136          
 137                  for(i=0;i<8;i++)
 138                  {
 139                          lcd_cmd_wr(SETY+i,0);
 140                          lcd_cmd_wr(SETX,0);
 141                          lcd_cmd_wr(SETY+i,1);
 142                          lcd_cmd_wr(SETX,1);     
 143          
 144                          for(j=0;j<64;j++)
 145                          {
 146                                  lcd_data_wr(0,0);
 147                                  lcd_data_wr(0,1);
 148                          }
 149                  }
 150          }
 151          
 152          void lcd_hanzi_wr(uchar posx,uchar posy,uchar *hanzi)
 153          {
 154            uchar i;
 155            if(posx<4)
 156            {
 157              lcd_cmd_wr(SETY+2*posy,0);
 158                  lcd_cmd_wr(SETX+16*posx,0);
 159                  for(i=0;i<16;i++)
 160                  {
 161                          lcd_data_wr(hanzi[i],0);
 162                  }
 163                  lcd_cmd_wr(SETY+2*posy+1,0);
 164                  lcd_cmd_wr(SETX+16*posx,0);
 165          
 166                  for(i=16;i<32;i++)
 167                  {
 168                          lcd_data_wr(hanzi[i],0);
 169                  }
 170            }
 171            else
 172            {
 173              lcd_cmd_wr(SETY+2*posy,1);
 174                  lcd_cmd_wr(SETX+16*(posx-4),1);
 175                  for(i=0;i<16;i++)
 176                  {
 177                          lcd_data_wr(hanzi[i],1);
 178                  }
 179                  lcd_cmd_wr(SETY+2*posy+1,1);
C51 COMPILER V8.02   MAIN                                                                  05/11/2007 09:12:54 PAGE 4   

 180                  lcd_cmd_wr(SETX+16*(posx-4),1);
 181                  for(i=16;i<32;i++)
 182                  {
 183                          lcd_data_wr(hanzi[i],1);
 184                  }
 185            }
 186          }
 187          
 188          void lcd_str_wr(uchar row,uchar col,uchar n,uchar *str)
 189          {
 190                  uchar i;
 191                  for(i=0;i<n;i++)
 192                  {
 193                  if(col>7)
 194                          {
 195                                  row ++;
 196                                  col = 0;
 197                          }
 198                  lcd_hanzi_wr(col,row,str+i*32);
 199                          col ++;
 200                  }
 201          }
 202          
 203          
 204          void lcd_rol()
 205          {
 206            uchar i;
 207            for(i=0;i<64;i++)
 208            {
 209              lcd_cmd_wr(DISPFIRST+i,0);
 210                  lcd_cmd_wr(DISPFIRST+i,1);
 211                  Delay(300);
 212            }
 213          }
 214          
 215          */
 216          void lcd_bmp_wr(uchar posx,uchar posy,uchar width,uchar high,uchar *bmp)
 217          {
 218   1              uchar i,j;
 219   1              high = high/8;
 220   1      
 221   1              for(i=0;i<high;i++)
 222   1              {
 223   2                              lcd_cmd_wr(SETY+posy+i,0);
 224   2                              lcd_cmd_wr(SETX+posx,0);
 225   2                              for(j=0;j<width-64;j++)
 226   2                              {
 227   3                              lcd_data_wr(bmp[128*i+j],0);
 228   3                              }
 229   2      
 230   2                              lcd_cmd_wr(SETY+posy+i,1);
 231   2                              lcd_cmd_wr(SETX+posx,1);
 232   2                              for(j=64;j<width;j++)
 233   2                              {
 234   3                              lcd_data_wr(bmp[128*i+j],1);
 235   3                              }
 236   2                }
 237   1      }
 238          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V8.02   MAIN                                                                  05/11/2007 09:12:54 PAGE 5   

   CODE SIZE        =    368    ----
   CONSTANT SIZE    =   2048    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      13
   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 + -