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

📄 lcd_function.lst

📁 CM320X240LCD的驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD_FUNCTION
OBJECT MODULE PLACED IN E:\MANUAI~1\WAVE\MY_LCD~1\LCD_FUNCTION.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\MANUAI~1\WAVE\MY_LCD~1\LCD_FUNCTION.C DB SB OE

line level    source

   1          
   2          //以下4个底层函数在CMLCD_DriverIO.c中定义
   3          void LCD_Reset(void);
   4          void LCD_COM_W(unsigned char com_d);
   5          void LCD_Data_W(unsigned char dd);
   6          unsigned char LCD_Data_R(void);
   7          
   8          unsigned char LCD_show_buf[32];                      //用于LCD的显示缓存的空间
   9          unsigned char LCD_show_Addr=0x00;                  //实际上是对于LCD当前操作的图层的参数
  10          //===================================================//
  11          //程序:void LCD_Initial(void)
  12          //描述:CM320X240LCD初始化函数
  13          //参数:null
  14          //返回:
  15          //Note:  Edit by Mz      xinqiang zhang
  16          //Date:  2006 07 29      beijing
  17          //===================================================//
  18          void LCD_Initial(void)
  19          {
  20   1              LCD_Reset();            //复位LCD,如果用户将LCD的复位用端口控制的话
  21   1              LCD_COM_W(0x40);        //设置LCD系统参数,后面跟着P1~P8的参数
  22   1              LCD_Data_W(0x30);
  23   1              LCD_Data_W(0x87);
  24   1              LCD_Data_W(0x07);
  25   1              LCD_Data_W(0x27);       //每一行的有效显示字节数0x27+1=40,即320个点
  26   1              LCD_Data_W(0x32);//0x42); 每一行所占用的存储器数量,下一行起始的计算就利用它
  27   1              LCD_Data_W(0xF0);
  28   1              LCD_Data_W(0x32);
  29   1              LCD_Data_W(0x00);
  30   1              LCD_COM_W(0x44);        //设置LCD的SCROLL参数,后面跟着P1~P10的参数
  31   1              LCD_Data_W(0x00);       //设置第一图层的起始地址,低
  32   1              LCD_Data_W(0x00);       //设置第一图层的起始地址,高
  33   1              LCD_Data_W(0xF0);       //设置第一图层的SL1(即Y轴点数)
  34   1              LCD_Data_W(0x00);       //设置第二图层的起始地址,低
  35   1              LCD_Data_W(0x40);       //设置第二图层的起始地址,高
  36   1              LCD_Data_W(0xF0);       //设置第二图层的SL2
  37   1              LCD_Data_W(0x00);       //设置第三图层起始地址
  38   1              LCD_Data_W(0x80);
  39   1              LCD_Data_W(0x00);       //设置第四图层的起始地址
  40   1              LCD_Data_W(0x00);
  41   1      
  42   1              LCD_COM_W(0x5A);        //设置Scroll的点数
  43   1              LCD_Data_W(0x00);       //1个点 (垂直方向的)
  44   1              LCD_COM_W(0x5B);        //设置图层关系
  45   1              LCD_Data_W(0x0d);       //两个图层、异或的关系、graphic模式
  46   1       //       LCD_COM_W(0x53);        //设置光标模式
  47   1       //       LCD_Data_W(0x0F);
  48   1       //       LCD_Data_W(0x0F);
  49   1              LCD_COM_W(0x59);        //Display ON
  50   1              LCD_Data_W(0x14);       //1、2区开显示
  51   1              LCD_COM_W(0x4c);
  52   1      }
  53          //===================================================//
  54          //程序:void LCD_Setlayer(unsigned char layer)
  55          //描述:CM320X240LCD活动图层选择
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 2   

  56          //参数:layer=选择图层(1~4)
  57          //返回:
  58          //Note:  Edit by Mz      xinqiang zhang
  59          //Date:  2006 08 01      beijing
  60          //===================================================//
  61          void LCD_Setlayer(unsigned char layer)
  62          {
  63   1              switch(layer)
  64   1              {
  65   2                      case 1: LCD_show_Addr = 0x00;break;
  66   2                      case 2: LCD_show_Addr = 0x40;break;
  67   2                      default: LCD_show_Addr = 0x00;break;
  68   2              }
  69   1      }
  70          //===================================================//
  71          //程序:void LCD_Clear(bit is_Clear,unsigned char layer)
  72          //描述:CM320X240LCD显示清屏函数
  73          //参数:is_Clear=选择填充的色(0/1)   layer=选择图层(1~4)
  74          //返回:
  75          //Note:  Edit by Mz      xinqiang zhang
  76          //Date:  2006 07 29      beijing
  77          //===================================================//
  78          void LCD_Clear(bit is_Clear)
  79          {
  80   1              unsigned char show_Data,i,j,Addr_H=0;
  81   1              if(is_Clear)
  82   1                  show_Data = 0xFF;
  83   1              else
  84   1                  show_Data = 0x00;
  85   1      
  86   1              Addr_H = Addr_H+LCD_show_Addr;
  87   1      
  88   1              LCD_COM_W(0x46);        //设置当前地址
  89   1              LCD_Data_W(0x00);
  90   1              LCD_Data_W(Addr_H);
  91   1              LCD_COM_W(0x42);
  92   1      
  93   1              for(i=0;i<240;i++)
  94   1              {
  95   2                    for(j=0;j<0x32;j++)
  96   2                    {
  97   3                           LCD_Data_W(show_Data);
  98   3                    }
  99   2              }
 100   1      }
 101          //===================================================//
 102          //程序:void LCD_ONOFF(bit is_ON,unsigned char layer)
 103          //描述:CM320X240LCD显示清屏函数
 104          //参数:is_ON=选择关闭/打开(0/1)   layer=选择图层数(1~3)
 105          //返回:
 106          //注意:只有在打开LCD的命令当中layer参数才有效
 107          //Note:  Edit by Mz      xinqiang zhang
 108          //Date:  2006 07 29      beijing
 109          //===================================================//
 110          void LCD_ONOFF(bit is_ON,unsigned char layer)
 111          {
 112   1      
 113   1              switch(layer)
 114   1              {
 115   2               case 1:layer = 0x04;
 116   2               case 2:layer = 0x14;
 117   2               default: break;
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 3   

 118   2              }
 119   1              if(is_ON)
 120   1              {
 121   2                      LCD_COM_W(0x59);
 122   2              }
 123   1              else
 124   1              {
 125   2                      LCD_COM_W(0x58);
 126   2              }
 127   1              LCD_Data_W(layer);
 128   1      }
 129          //===================================================//
 130          //程序:void LCD_PutPixel(unsigned int Index_x,unsigned char Index_y)
 131          //描述:CM320X240LCD画点子程序
 132          //参数:Index_x  X轴坐标(0~319)  Index_y  y轴坐标(0~239)
 133          //返回:
 134          //Note:  Edit by Mz      xinqiang zhang
 135          //Date:  2006 07 29      beijing
 136          //===================================================//
 137          void LCD_Back_dot(unsigned int Addr,unsigned char b,bit mode);
 138          void LCD_PutPixel(unsigned int Index_x,unsigned char Index_y,bit mode)
 139          {
 140   1              unsigned int Addr_Byte;
 141   1              Addr_Byte = (unsigned int)Index_y*0x32;
 142   1              Addr_Byte = Addr_Byte+(Index_x>>3)+(unsigned int)(LCD_show_Addr<<8);
 143   1              Index_x = Index_x&0x07;
 144   1              switch(Index_x)
 145   1              {
 146   2               case 0:Index_y = 0x80;break;
 147   2               case 1:Index_y = 0x40;break;
 148   2               case 2:Index_y = 0x20;break;
 149   2               case 3:Index_y = 0x10;break;
 150   2               case 4:Index_y = 0x08;break;
 151   2               case 5:Index_y = 0x04;break;
 152   2               case 6:Index_y = 0x02;break;
 153   2               case 7:Index_y = 0x01;break;
 154   2              }
 155   1              LCD_Back_dot(Addr_Byte,Index_y,mode);
 156   1      }
 157          //***************************************************************************//
 158          //程序:void LCD501_Line(unsigned int x,unsigned int y,unsigned int e_x,
 159          //                                                      unsigned int e_y)
 160          //描述:画直线程序
 161          //参数:x 要画线的x起点坐标              y 要画的线的y起点坐标
 162          //              e_x 要画线的x 终点坐标           e_y 要画的线的y起点坐标
 163          //返回:无
 164          //声明:小丑    200505121       sunnorth  Mz Design
 165          //注意:
 166          //***************************************************************************//
 167          void LCD_Line(unsigned int x,unsigned int y,unsigned int e_x,unsigned int e_y,bit mode)
 168          {
 169   1              int Offset_x,Offset_y,Offset_k = 0;
 170   1              int Err_d = 1;
 171   1              if(y>e_y)
 172   1              {
 173   2                      Offset_x = x;
 174   2                      x = e_x;
 175   2                      e_x = Offset_x;
 176   2                      Offset_x = y;
 177   2                      y = e_y;
 178   2                      e_y = Offset_x;
 179   2              }
C51 COMPILER V7.50   LCD_FUNCTION                                                          07/31/2006 09:48:34 PAGE 4   

 180   1              Offset_x = e_x-x;
 181   1              Offset_y = e_y-y;
 182   1              LCD_PutPixel(x,y,mode);
 183   1              if(Offset_x<=0)
 184   1              {
 185   2                      Offset_x = x-e_x;
 186   2                      Err_d = -1;
 187   2              }
 188   1              if(Offset_x>Offset_y)
 189   1              {
 190   2                      while(x!=e_x)
 191   2                      {
 192   3                              if(Offset_k>0)
 193   3                              {
 194   4                                      y+=1;
 195   4                                      Offset_k += (Offset_y-Offset_x);
 196   4                              }
 197   3                              else Offset_k += Offset_y;
 198   3                              x+=Err_d;
 199   3                              LCD_PutPixel(x,y,mode);
 200   3                      }
 201   2              }
 202   1              else
 203   1              {
 204   2                      while(y!=e_y)
 205   2                      {
 206   3                              if(Offset_k>0)
 207   3                              {
 208   4                                      x+=Err_d;
 209   4                                      Offset_k += (Offset_x-Offset_y);
 210   4                              }
 211   3                              else Offset_k += Offset_x;
 212   3                              y+=1;
 213   3                              LCD_PutPixel(x,y,mode);
 214   3                      }
 215   2              }
 216   1      }
 217          //***************************************************************************//
 218          //程序:void LCD501_Rectangle(unsigned left, unsigned top,

⌨️ 快捷键说明

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