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

📄 lcd_dis.lst

📁 使用单片机8051开发2.4寸tft lcd。
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 1   


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

line level    source

   1          //========================================================================
   2          // 文件名: LCD_Dis.c
   3          // 作  者: Xinqiang Zhang(email: xinqiang@mzdesign.com.cn)
   4          // 日  期: 2006/10/18
   5          // 描  述: 通用版LCD用户接口层程序集
   6          //
   7          // 参  考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写加速
   8          //                      版接口程序,本程序集适用于8位MCU
   9          // 版  本:
  10          //      2006/10/18      First version    Mz Design
  11          //========================================================================
  12          #include "LCD_Driver_User.h"                                    //LCD底层驱动声明头文件
  13          #include "LCD_Config.h"                                 //LCD的配置文件,比如坐标轴是否倒置等的定义
  14          
  15          
  16          #define Dis_Zero  0
  17          
  18          
  19          //extern unsigned int Asii8[];          //6X8的ASII字符库
  20          extern code unsigned char Asii1529[];           //15X29的ASII字符库
  21          extern code unsigned char GB32[];                       //32*32自定义的汉字库
  22          
  23          int X_Witch;                                    //字符写入时的宽度
  24          int Y_Witch;                                    //字符写入时的高度
  25          int Font_Wrod;                          //字体的大
  26          unsigned char *Char_TAB;                //字库指针
  27          int Plot_Mode;                          //绘图模式
  28          unsigned int BMP_Color;
  29          unsigned int Char_Color;
  30          
  31          void Pos_Switch(unsigned int * x,unsigned int * y);
  32          void Writ_Dot(int x,int y,unsigned int Color);
  33          //========================================================================
  34          // 函数: void FontSet(int Font_NUM,unsigned int Color)
  35          // 描述: 文本字体设置
  36          // 参数: Font_NUM 字体选择,以驱动所带的字库为准
  37          //               Color  文本颜色,仅作用于自带字库  
  38          // 返回: 无
  39          // 备注: 
  40          // 版本:
  41          //      2006/10/15      First version
  42          //========================================================================
  43          void FontSet(int Font_NUM,unsigned int Color)
  44          {
  45   1              switch(Font_NUM)
  46   1              {
  47   2      /*              case 0: Font_Wrod = 3;  //ASII字符A
  48   2                                      X_Witch = 6;
  49   2                                      Y_Witch = 1;
  50   2                                      Char_Color = Color;
  51   2      //                              Char_TAB = (Asii8 - 32*3);
  52   2                      break;*/
  53   2                      case 1: Font_Wrod = 58; //ASII字符B
  54   2                                      X_Witch = 15;
  55   2                                      Y_Witch = 29;
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 2   

  56   2                                      Char_Color = Color;
  57   2                                      Char_TAB = (unsigned char *)(Asii1529 - (32*58));
  58   2                      break;
  59   2                      case 2: Font_Wrod = 128;        //汉字A
  60   2                                      X_Witch = 32;
  61   2                                      Y_Witch = 32;
  62   2                                      Char_Color = Color;
  63   2                                      Char_TAB = (unsigned char *)GB32;
  64   2                      break;
  65   2      /*              case 3: Font_Wrod = 16; //汉字B
  66   2                                      X_Witch = 16;
  67   2                                      Y_Witch = 2;
  68   2                                      Char_Color = Color;
  69   2                                      Char_TAB = GB16;
  70   2                      break;*/
  71   2                      default: break;
  72   2              }
  73   1      }
  74          //========================================================================
  75          // 函数: void PutChar(int x,int y,unsigned int a)
  76          // 描述: 写入一个标准字符
  77          // 参数: x  X轴坐标     y  Y轴坐标
  78          //               a  要显示的字符在字库中的偏移量  
  79          // 返回: 无
  80          // 备注: ASCII字符可直接输入ASCII码即可
  81          // 版本:
  82          //      2006/10/15      First version
  83          //========================================================================
  84          void PutChar(int x,int y,unsigned int a)       
  85          {
  86   1              int i,j;//,K;           //数据暂存
  87   1              unsigned char *p_data;
  88   1              unsigned char Temp;
  89   1              p_data = Char_TAB + a*Font_Wrod;        //要写字符的首地址
  90   1              j = 0;
  91   1              while((j ++) < Y_Witch)
  92   1              {
  93   2                      if(y > Dis_Y_MAX) break;
  94   2                      i = 0;
  95   2                      while(i < X_Witch)
  96   2                      {
  97   3                              if((i&0x07)==0)
  98   3                              {
  99   4                                      Temp = *(p_data ++);
 100   4                              }
 101   3      //                      K = 0;
 102   3                              if((x+i) > Dis_X_MAX) break;
 103   3                              if((Temp & 0x80) > 0) Writ_Dot(x+i,y,Char_Color);
 104   3                              Temp = Temp << 1;
 105   3                              i++;
 106   3                      }
 107   2                      y ++;
 108   2              }
 109   1      }
 110          
 111          //========================================================================
 112          // 函数: void PutString(int x,int y,char *p)
 113          // 描述: 在x、y为起始坐标处写入一串标准字符
 114          // 参数: x  X轴坐标     y  Y轴坐标
 115          //               p  要显示的字符串  
 116          // 返回: 无
 117          // 备注: 仅能用于自带的ASCII字符串显示
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 3   

 118          // 版本:
 119          //      2006/10/15      First version
 120          //========================================================================
 121          void PutString(int x,int y,char *p)
 122          {
 123   1              while(*p!=0)
 124   1              {
 125   2                      PutChar(x,y,*p);
 126   2                      x += X_Witch;
 127   2                      if((x + X_Witch) > Dis_X_MAX)
 128   2                      {
 129   3                              x = Dis_Zero;
 130   3                              if((Dis_Y_MAX - y) < Y_Witch) break;
 131   3                              else y += Y_Witch;
 132   3                      }
 133   2                      p++;
 134   2              }
 135   1      }
 136          /*
 137          //========================================================================
 138          // 函数: void Bitmap(unsigned int *p,int x,int y)
 139          // 描述: 写入一个BMP图片,起点为(x,y)
 140          // 参数:   
 141          // 返回: 无
 142          // 备注:
 143          // 版本:
 144          //      2006/10/15      First version
 145          //========================================================================
 146          void Bitmap(unsigned int *p,int x,int y)
 147          {
 148                  int Temp_With,Temp_High,i,j;    //数据暂存
 149                  Temp_High = *(p ++);
 150                  Temp_With = *(p ++);                    //图片宽度
 151                  i = 0;
 152                  while((i ++) < Temp_High)
 153                  {
 154                          j = 0;
 155                          while((j ++) < Temp_With)
 156                          {
 157                                  if(i < Dis_X_MAX) Writ_Dot(x+j,y+i,*p);
 158                                  else break;
 159                          }
 160                  }
 161          }
 162          */
 163          //========================================================================
 164          // 函数: void SetPaintMode(int Mode,unsigned int Color)
 165          // 描述: 绘图模式设置
 166          // 参数: Mode 绘图模式    Color  像素点的颜色,相当于前景色  
 167          // 返回: 无
 168          // 备注: Mode无效
 169          // 版本:
 170          //      2006/10/15      First version
 171          //========================================================================
 172          void SetPaintMode(int Mode,unsigned int Color)
 173          {
 174   1              Plot_Mode = Mode;
 175   1              BMP_Color = Color;
 176   1      }
 177          //========================================================================
 178          // 函数: void PutPixel(int x,int y)
 179          // 描述: 在x、y点上绘制一个前景色的点
C51 COMPILER V8.02   LCD_DIS                                                               06/27/2007 01:39:54 PAGE 4   

 180          // 参数: x  X轴坐标     y  Y轴坐标
 181          // 返回: 无
 182          // 备注: 使用前景色
 183          // 版本:
 184          //      2006/10/15      First version
 185          //========================================================================
 186          void PutPixel(int x,int y)
 187          {
 188   1              Writ_Dot(x,y,BMP_Color);
 189   1      }
 190          //========================================================================
 191          // 函数: void Line(int s_x,int s_y,int e_x,int e_y)
 192          // 描述: 在s_x、s_y为起始坐标,e_x、e_y为结束坐标绘制一条直线
 193          // 参数: x  X轴坐标     y  Y轴坐标
 194          // 返回: 无
 195          // 备注: 使用前景色
 196          // 版本:
 197          //      2006/10/15      First version
 198          //========================================================================
 199          void Line(int s_x,int s_y,int e_x,int e_y)
 200          {  
 201   1              int Offset_x,Offset_y,Offset_k = 0;
 202   1              int Err_d = 1;
 203   1              if(s_y>e_y)
 204   1              {
 205   2                      Offset_x = s_x;
 206   2                      s_x = e_x;
 207   2                      e_x = Offset_x;
 208   2                      Offset_x = s_y;
 209   2                      s_y = e_y;
 210   2                      e_y = Offset_x;
 211   2              }
 212   1              Offset_x = e_x-s_x;
 213   1              Offset_y = e_y-s_y;
 214   1              Writ_Dot(s_x,s_y,BMP_Color);
 215   1              if(Offset_x<=0)
 216   1              {
 217   2                      Offset_x = s_x-e_x;
 218   2                      Err_d = -1;
 219   2              }

⌨️ 快捷键说明

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