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

📄 lcd.lst

📁 我的12864驱动程序,可以显示汉字和图片.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   LCD                                                                   11/21/2005 17:42:08 PAGE 1   


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

stmt level    source

   1          #include "LCD.h"
   2          /*------------------延时子程序-----------------------------*/
   3          void delay(unsigned int t)
   4          {
   5   1              unsigned int i,j;
   6   1              for(i=0;i<t;i++)
   7   1              for(j=0;j<10;j++);
   8   1      }
   9          
  10          
  11          /*------------------写命令到LCD------------------------------*/
  12          void write_com(unsigned char cmdcode)
  13          {
  14   1              
  15   1              RS=0;
  16   1              RW=0;
  17   1      
  18   1              Lcd_Bus=cmdcode;
  19   1              delay(0);
  20   1              Enable=1;//下降沿写数据,高电平读数据
  21   1              delay(0);
  22   1              Enable=0;
  23   1      }
  24          
  25          
  26          
  27          /*-------------------写数据到LCD----------------------------*/
  28          void write_data(unsigned char Dispdata)
  29          {
  30   1              RS=1;
  31   1              RW=0;
  32   1              
  33   1              Lcd_Bus=Dispdata;
  34   1              delay(0);
  35   1              Enable=1;
  36   1              delay(0);
  37   1              Enable=0;
  38   1      }
  39          
  40          
  41          /*-------------------读LCD数据----------------------------*/
  42          /*unsigned char read_data( void )
  43          {
  44                  unsigned char tmpin;
  45                  
  46                  Di=1;
  47                  RW=1;
  48                  delay(0);
  49                  Enable=1;
  50                  delay(0);
  51                  Enable=0;
  52                  
  53                  tmpin=Lcd_Bus;
  54                  
  55                  return tmpin;
C51 COMPILER V7.06   LCD                                                                   11/21/2005 17:42:08 PAGE 2   

  56          }
  57          */
  58          
  59          
  60          /*------------------显示边框-------------------------------*/
  61          void frame()
  62          {
  63   1              unsigned char i;
  64   1              
  65   1              Lcs=1;
  66   1              Rcs=1;
  67   1              write_com(Page_Add+0);
  68   1              write_com(Col_Add+0);
  69   1                      for(i=0;i<64;i++) 
  70   1                      {
  71   2                       write_data(0x01);
  72   2                      }
  73   1              
  74   1              write_com(Page_Add+7);
  75   1              write_com(Col_Add+0);
  76   1                      for(i=0;i<64;i++)
  77   1                      {
  78   2                      write_data(0x80);
  79   2                      }
  80   1              
  81   1              for(i=0;i<8;i++)
  82   1                      {
  83   2                      Lcs=0;
  84   2                      Rcs=1;
  85   2                      write_com(Page_Add+i);
  86   2                      write_com(Col_Add+63);
  87   2                      write_data(0xff);
  88   2              
  89   2                      Lcs=1;
  90   2                      Rcs=0;
  91   2                      write_com(Page_Add+i);
  92   2                      write_com(Col_Add+0);
  93   2                      write_data(0xff);
  94   2                      }
  95   1      }
  96          
  97          /*-----------------设定起始地址---------------*/
  98          /*void setxy(unsigned char x,y)
  99          {
 100                          write_com(Page_Add+x);
 101                          write_com(Col_Add+y);
 102          }       
 103          */
 104          /*------------------清除内存---------------*/
 105          void lcd_clr(void)
 106          {
 107   1              unsigned char j,k;
 108   1              
 109   1              Lcs=1;
 110   1              Rcs=1;
 111   1                      write_com(Page_Add+0);
 112   1                      write_com(Col_Add+0);
 113   1              
 114   1               for(k=0;k<8;k++)
 115   1                      {
 116   2                      write_com(Page_Add+k);
 117   2                      for(j=0;j<64;j++)
C51 COMPILER V7.06   LCD                                                                   11/21/2005 17:42:08 PAGE 3   

 118   2                      {
 119   3                      write_data(0x00);
 120   3                      }
 121   2               }
 122   1      }
 123          /*--------------------------清除指定内存段--------------------------*/
 124          void lcd_clr_zd(unsigned char start_page,unsigned char start_col,unsigned int count)
 125          {
 126   1              unsigned int i;
 127   1              if(start_col<64)
 128   1              {
 129   2                      Lcs=1;
 130   2                      Rcs=0;
 131   2                      write_com(Page_Add+start_page);
 132   2                      write_com(Col_Add+start_col);
 133   2                  for(i=0;i<count;i++)
 134   2                      {
 135   3                        write_data(0x00);
 136   3                      }
 137   2              }
 138   1          else
 139   1              {
 140   2                      Lcs=0;
 141   2                      Rcs=1;
 142   2                      write_com(Page_Add+start_page);
 143   2                      write_com(Col_Add+start_col-64);
 144   2                      for(i=0;i<count;i++)
 145   2                      {
 146   3                        write_data(0x00);
 147   3                      }
 148   2               }
 149   1      }
 150          
 151          /*------------------显示12864图片---------------------------*/
 152          void Disp_Img(unsigned char code *img)
 153          {
 154   1              unsigned char j,k;
 155   1              
 156   1              for(k=0;k<8;k++)
 157   1                      {
 158   2                      Lcs=1;
 159   2                      Rcs=0;
 160   2                      delay(1);
 161   2                      write_com(Page_Add+k);
 162   2                      write_com(Col_Add+0);
 163   2                              for(j=0;j<64;j++)
 164   2                              {
 165   3                              write_data(img[k*128+j]);
 166   3                              }
 167   2                      Lcs=0;
 168   2                      Rcs=1;
 169   2                      delay(1);
 170   2                      write_com(Page_Add+k);
 171   2                      write_com(Col_Add+0);
 172   2                              for(j=64;j<128;j++) 
 173   2                              {
 174   3                              write_data(img[k*128+j]);
 175   3                              }
 176   2                      }
 177   1      }
 178          
 179          /***************显示任意大小,位置图片*********************/
C51 COMPILER V7.06   LCD                                                                   11/21/2005 17:42:08 PAGE 4   

 180          void disp_image(unsigned char x,unsigned y,unsigned char w,unsigned char h,unsigned char code *img)
 181          {
 182   1              unsigned char j,k;
 183   1              if(x<64) 
 184   1              {
 185   2                  for(k=0;k<h/8;k++)
 186   2                      {
 187   3                      delay(1);
 188   3                      Lcs=1;
 189   3                      Rcs=0;
 190   3                      write_com(Page_Add+y+k);//图片高度必须为8的倍数,起始页地址(y)。。。
 191   3                      write_com(Col_Add+x);
 192   3                              for(j=0;j<w;j++)
 193   3                              {
 194   4                            if((j+x)<64) write_data(img[w*k+j]);
 195   4                        else  
 196   4                                {
 197   5                                      Lcs=0;  Rcs=1;
 198   5                                      write_com(Page_Add+y+k);//图片高度必须为8的倍数,起始页地址(y)。。。
 199   5                                      write_com(Col_Add+(x+j-64));
 200   5                                      write_data(img[w*k+j]);
 201   5                                }
 202   4                              }
 203   3                   }
 204   2              }
 205   1      
 206   1              else
 207   1              {       
 208   2                      for(k=0;k<h/8;k++)
 209   2                      {
 210   3                  Lcs=0;
 211   3                      Rcs=1;
 212   3                       delay(1);
 213   3                       write_com(Page_Add+y+k);
 214   3                       write_com(Col_Add+x-64);
 215   3                              for(j=0;j<w;j++) 
 216   3                              {

⌨️ 快捷键说明

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