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

📄 lcd.lst

📁 这是一种火灾报警控制器的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   LCD                                                                   01/08/2007 00:55:49 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.obj
COMPILER INVOKED BY: c:\keil\C51\BIN\C51.EXE lcd\lcd.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\lcd.lst) OBJECT(lcd.obj)

line level    source

   1          
   2          //***************************** lcd.c ****************************//
   3          //************************ LCM19264驱动程序 **********************//
   4          
   5          #include<lcd\lcd.h>
   6          
   7          /*****************************************************************
   8          *函数:wiat_ready_left()
   9          *功能:判断液晶左侧屏是否在忙状态
  10          *形式参数:无;
  11          *返回值:无
  12          ******************************************************************/
  13          void wait_ready_left(void)
  14          {
  15   1              unsigned char temp;
  16   1              while(1)
  17   1              {
  18   2                      temp=XBYTE[0x9002];     //读状态端口
  19   2                      if((temp&stat_busy)==0)
  20   2                              break;
  21   2              }
  22   1              return;
  23   1      }
  24          
  25          /*****************************************************************
  26          *函数:wiat_ready_middle()
  27          *功能:判断液晶中间屏是否在忙状态
  28          *形式参数:无;
  29          *返回值:无
  30          ******************************************************************/
  31          void wait_ready_middle(void)
  32          {
  33   1              unsigned char temp;
  34   1              while(1)
  35   1              {
  36   2                      temp=XBYTE[0x9102];     //读状态端口
  37   2                      if((temp&stat_busy)==0)
  38   2                              break;
  39   2              }
  40   1              return;
  41   1      }
  42          
  43          /*****************************************************************
  44          *函数:wiat_ready_right()
  45          *功能:判断液晶右侧屏是否在忙状态
  46          *形式参数:无;
  47          *返回值:无
  48          ******************************************************************/
  49          void wait_ready_right(void)
  50          {
  51   1              unsigned char temp;
  52   1              while(1)
  53   1              {
  54   2                      temp=XBYTE[0x9202];     //读状态端口
  55   2                      if((temp&stat_busy)==0)
C51 COMPILER V7.20   LCD                                                                   01/08/2007 00:55:49 PAGE 2   

  56   2                              break;
  57   2              }
  58   1              return;
  59   1      }
  60          
  61          /*****************************************************************
  62          *函数:set_line()
  63          *功能:设置行
  64          *形式参数:line-行号;
  65          *返回值:无
  66          ******************************************************************/
  67          void set_line(unsigned char line)
  68          {
  69   1              wait_ready_left();
  70   1              write_inst_left(disp_star_line|line);
  71   1              wait_ready_middle();
  72   1              write_inst_middle(disp_star_line|line);
  73   1              wait_ready_right();
  74   1              write_inst_right(disp_star_line|line);
  75   1              return;
  76   1      }
  77          
  78          /*****************************************************************
  79          *函数:set_page()
  80          *功能:设置页
  81          *形式参数:page-页号;
  82          *返回值:无
  83          ******************************************************************/
  84          void set_page(unsigned char page)
  85          {
  86   1              wait_ready_left();
  87   1              write_inst_left(page_addr_set|page);
  88   1              wait_ready_middle();
  89   1              write_inst_middle(page_addr_set|page);
  90   1              wait_ready_right();
  91   1              write_inst_right(page_addr_set|page);
  92   1              return;
  93   1      }
  94          
  95          /*****************************************************************
  96          *函数:set_col()
  97          *功能:设置列
  98          *形式参数:col-列号;
  99          *返回值:无
 100          ******************************************************************/
 101          void set_col(unsigned char col)
 102          {
 103   1              wait_ready_left();
 104   1              write_inst_left(col_addr_set|col);
 105   1              wait_ready_middle();
 106   1              write_inst_middle(col_addr_set|col);
 107   1              wait_ready_right();
 108   1              write_inst_right(col_addr_set|col);
 109   1              return;
 110   1      }
 111          
 112          /*****************************************************************
 113          *函数:lcd_clr_quarter()
 114          *功能:液晶模块横向清1/4屏
 115          *形式参数:part-清除的部分;
 116          *返回值:无
 117          ******************************************************************/
C51 COMPILER V7.20   LCD                                                                   01/08/2007 00:55:49 PAGE 3   

 118          extern void lcd_clr_quarter(unsigned char part)
 119          {
 120   1              unsigned char i,page;
 121   1              set_line(0);
 122   1              for (page=part*2;page<part*2+2;page++)
 123   1          {                   
 124   2              set_page(page);                                 //设置当前页
 125   2                      set_col(0);                                             //设置当前列            
 126   2                      for (i=0;i<64;i++)
 127   2              {       
 128   3                              wait_ready_left();
 129   3                              write_data_left(0x00);          //左侧屏当前列数据为0
 130   3                              wait_ready_middle();
 131   3                              write_data_middle(0x00);    //中间屏当前列数据为0
 132   3                              wait_ready_right();
 133   3                              write_data_right(0x00);         //右侧屏当前列数据为0
 134   3              }
 135   2              }
 136   1              return;
 137   1      }
 138          
 139          /*****************************************************************
 140          *函数:lcd_clr()
 141          *功能:液晶模块清全屏
 142          *形式参数:无;
 143          *返回值:无
 144          ******************************************************************/
 145          extern void lcd_clr(void)
 146          {
 147   1              unsigned char i,page;
 148   1              set_line(0);
 149   1              for (page=0;page<8;page++)
 150   1          {
 151   2              set_page(page);                                 //设置当前页
 152   2                      set_col(0);                                             //设置当前列
 153   2                      
 154   2                      for (i=0;i<64;i++)
 155   2              {       
 156   3                              wait_ready_left();
 157   3                              write_data_left(0x00);          //左侧屏当前列数据为0
 158   3                              wait_ready_middle();
 159   3                              write_data_middle(0x00);    //中间屏当前列数据为0
 160   3                              wait_ready_right();
 161   3                              write_data_right(0x00);         //右侧屏当前列数据为0
 162   3              }
 163   2              }       
 164   1              return;
 165   1      }
 166          
 167          /*****************************************************************
 168          *函数:init_lcd()
 169          *功能:液晶模块初始化
 170          *形式参数:无;
 171          *返回值:无
 172          ******************************************************************/
 173          extern void init_lcd(void)
 174          {
 175   1              wait_ready_left();
 176   1              write_inst_left(disp_off);      //关显示
 177   1              wait_ready_middle();
 178   1              write_inst_middle(disp_off);
 179   1              wait_ready_right();
C51 COMPILER V7.20   LCD                                                                   01/08/2007 00:55:49 PAGE 4   

 180   1              write_inst_right(disp_off);
 181   1              set_line(0);                            //设置开始行为0
 182   1              set_page(0);                            //设置开始页地址为0
 183   1              set_col(0);                                     //设置开始列为0
 184   1              wait_ready_left();
 185   1              write_inst_left(disp_on);       //开显示
 186   1              wait_ready_middle();
 187   1              write_inst_middle(disp_on);
 188   1              wait_ready_right();
 189   1              write_inst_right(disp_on);
 190   1              lcd_clr();                                      //清屏
 191   1              return;
 192   1      }
 193          
 194          /*****************************************************************
 195          *函数:disp_bmp()
 196          *功能:在指定位置显示一个高16个点阵宽W个点阵的位图
 197          *形式参数:x-位图横坐标;y-位图纵坐标;width-位图宽度;bmp-位图代码指针;
 198          *返回值:无
 199          ******************************************************************/
 200          /*void disp_bmp(unsigned char x,unsigned char y,unsigned char width,unsigned char *bmp)
 201          {
 202                  unsigned char i,*p;
 203                  p=bmp;
 204                  set_line(0);
 205                  switch(x/64)
 206                  {
 207                          case 0:                         //左侧屏显示                    
 208                                  set_page(y/8);  //显示位图的上半部
 209                                  set_col(x%64);
 210                                  for(i=0;i<width;i++)
 211                                  {
 212                                          wait_ready_left();
 213                                          write_data_left(*p);
 214                                          p++;
 215                                  }
 216                                  set_page(y/8+1);//显示位图的下半部
 217                                  set_col(x%64);
 218                                  for(i=0;i<width;i++)
 219                                  {
 220                                          wait_ready_left();

⌨️ 快捷键说明

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