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

📄 lcd_dis.lst

📁 由普通单片机驱动控制显示的 3.5 英寸 TFT 液 晶模块——MzT35C1 模块;并为其配备了完整的驱动函数库
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.16   LCD_DIS                                                               12/22/2008 00:11:05 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE LCD_DIS
OBJECT MODULE PLACED IN .\Output\LCD_Dis.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD_Driver\LCD_Dis.c COMPACT BROWSE INCDIR(.\LCD_Driver) DEBUG OBJECTEXTEND
                    - PRINT(.\LCD_Dis.lst) OBJECT(.\Output\LCD_Dis.obj)

line level    source

   1          //========================================================================
   2          // 文件名: LCD_Dis.c
   3          // 作  者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
   4          //                      www.Mzdesign.com.cn
   5          // 日  期: 2007/02/24
   6          // 描  述: 通用版LCD用户接口层程序集
   7          //
   8          // 参  考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写加速
   9          //                      版接口程序;适用于MCS51系列MCU
  10          // 版  本:
  11          //      2006/10/18      First version    Mz Design
  12          //              2007/01/13              V1.1  去掉坐标体系变换的功能,对速度进行一定的优化
  13          //                                                              并使该文件的代码更加通用于各种LCD
  14          //              2007/02/24              V1.2  为小资源的51单片机进行驱动精简,减少对RAM的占
  15          //                                                              用
  16          //              2008/06/12              V2.0  裁减掉原有备用的坐标软变换的功能,对数据类型
  17          //                                                              进行统一的重定义(在LCD_Config.h当中),修改
  18          //                                                              PutChar函数
  19          //                                                              增加文本显示的覆盖显示功能
  20          //========================================================================
  21          #include "LCD_Driver_User.h"                                    //LCD底层驱动声明头文件
  22          #include "LCD_Config.h"                                                 //LCD的配置文件,比如坐标轴是否倒置等的定义
  23          
  24          
  25          //extern unsigned int Asii8[];                                  //6X8的ASII字符库
  26          extern FLASH Asii0610[];                        //6X10的ASII字符库
  27          extern FLASH Asii0816[];                        //8X16的ASII字符库
  28          extern FLASH GB1716[];                          //17*16自定义的汉字库
  29          
  30          DOTBYTE X_Witch;                                                                        //字符写入时的宽度
  31          DOTBYTE Y_Witch;                                                                        //字符写入时的高度
  32          DOTBYTE Font_Wrod;                                                                      //字体的每个字模占用多少个存储单元数
  33          FLASH *Char_TAB;                                                                        //字库指针
  34          //unsigned char Plot_Mode;                                                      //绘图模式
  35          LCDBYTE BMP_Color;
  36          LCDBYTE Char_Color;
  37          
  38          BYTE    Font_type=0;                                                            //标识字符类型
  39          BYTE    Font_Cover=0;                                                           //字符显示的模式
  40          LCDBYTE Char_BackColor=0;                                                       //设置覆盖模式时,字符的背景色 
  41          
  42          //========================================================================
  43          // 函数: void FontSet(int Font_NUM,unsigned int Color)
  44          // 描述: 文本字体设置
  45          // 参数: Font_NUM 字体选择,以驱动所带的字库为准
  46          //               Color  文本颜色,仅作用于自带字库  
  47          // 返回: 无
  48          // 备注: 
  49          // 版本:
  50          //      2006/10/15      First version
  51          //========================================================================
  52          void FontSet(DOTBYTE Font_NUM,LCDBYTE Color)
  53          {
  54   1              switch(Font_NUM)
C51 COMPILER V8.16   LCD_DIS                                                               12/22/2008 00:11:05 PAGE 2   

  55   1              {
  56   2                      case 0: Font_Wrod = 16; //ASII字符A
  57   2                                      X_Witch = 8;
  58   2                                      Y_Witch = 16;
  59   2                                      Char_Color = Color;
  60   2                                      Font_type = 1;
  61   2                                      Char_TAB = Asii0816;
  62   2                      break;
  63   2                      case 1: Font_Wrod = 10; //ASII字符B
  64   2                                      X_Witch = 6;
  65   2                                      Y_Witch = 10;
  66   2                                      Char_Color = Color;
  67   2                                      Font_type = 1;
  68   2                                      Char_TAB = Asii0610;
  69   2                      break;          
  70   2                      case 2: Font_Wrod = 48; //汉字A
  71   2                                      X_Witch = 17;
  72   2                                      Y_Witch = 16;
  73   2                                      Char_Color = Color;
  74   2                                      Font_type = 0;
  75   2                                      Char_TAB = GB1716;
  76   2                      break;
  77   2      /*              case 3: Font_Wrod = 16; //汉字B
  78   2                                      X_Witch = 16;
  79   2                                      Y_Witch = 2;
  80   2                                      Char_Color = Color;
  81   2                                      Font_type = 0;
  82   2                                      Char_TAB = GB16;
  83   2                      break;*/
  84   2                      default: break;
  85   2              }
  86   1      }
  87          //========================================================================
  88          // 函数: void FontMode(BYTE Mode,LCDBYTE FontBackColor) 
  89          // 描述: 设置字符显示的模式,并设置背景色
  90          // 参数: Mode   0: 字符显示时仅对字符的有效点进行显示操作,也就是不作背景覆盖
  91          //                                      为叠加模式
  92          //                              1: 覆盖模式
  93          //              FontBackColor   设置覆盖模式时,字符的背景色 
  94          // 返回: 无
  95          // 备注: 仅对字符显示有效
  96          // 版本:
  97          //              2008/06/12              V2.0
  98          //========================================================================
  99          void FontMode(BYTE Mode,LCDBYTE FontBackColor)
 100          {
 101   1              Font_Cover = Mode;
 102   1              Char_BackColor = FontBackColor;
 103   1      }
 104          //========================================================================
 105          // 函数: void PutChar(unsigned char x,unsigned char y,char a)  
 106          // 描述: 写入一个标准字符
 107          // 参数: x  X轴坐标     y  Y轴坐标
 108          //               a  要显示的字符在字库中的偏移量  
 109          // 返回: 无
 110          // 备注: ASCII字符可直接输入ASCII码即可
 111          // 版本:
 112          //      2006/10/15      First version
 113          //              2007/01/11              V1.1
 114          //              2008/06/12              V2.0
 115          //========================================================================
 116          void PutChar(DOTBYTE x,DOTBYTE y,char a)       
C51 COMPILER V8.16   LCD_DIS                                                               12/22/2008 00:11:05 PAGE 3   

 117          {
 118   1              DOTBYTE i,j;            //数据暂存
 119   1              FLASH *p_data;
 120   1              LCDBYTE Temp;
 121   1              BYTE Index = 0;
 122   1              if(Font_type==1)
 123   1                      p_data = Char_TAB + (a-32)*Font_Wrod;
 124   1              else
 125   1                      p_data = Char_TAB + a*Font_Wrod;        //要写字符的首地址
 126   1              j = 0;
 127   1              while((j ++) < Y_Witch)
 128   1              {
 129   2                      if(y > Dis_Y_MAX) break;
 130   2                      i = 0;
 131   2                      while(i < X_Witch)
 132   2                      {
 133   3                              if((i&0x07)==0)
 134   3                              {
 135   4      //                              Temp = *(p_data + (Index>>1));
 136   4      //                              if((Index&0x01)==0)Temp = Temp>>8; 
 137   4                                      Temp = *(p_data+Index);
 138   4                                      Index++;
 139   4                              }
 140   3                              if((Temp & 0x80) > 0) Writ_Dot/*Write_Dot_LCD*/(x+i,y,Char_Color);
 141   3                              else if(Font_Cover) Writ_Dot/*Write_Dot_LCD*/(x+i,y,Char_BackColor);
 142   3                              Temp = Temp << 1;
 143   3                              if((x+i) >= Dis_X_MAX) 
 144   3                              {
 145   4                                      Index += (X_Witch-i)>>3;
 146   4                                      break;
 147   4                              }
 148   3                              i++;
 149   3                      }
 150   2                      y ++;
 151   2              }
 152   1      }
 153          
 154          //========================================================================
 155          // 函数: void PutString(unsigned char x,unsigned char y,char *p)
 156          // 描述: 在x、y为起始坐标处写入一串标准字符
 157          // 参数: x  X轴坐标     y  Y轴坐标
 158          //               p  要显示的字符串  
 159          // 返回: 无
 160          // 备注: 仅能用于自带的ASCII字符串显示
 161          // 版本:
 162          //      2006/10/15      First version
 163          //========================================================================
 164          void PutString(DOTBYTE x,DOTBYTE y,char *p)
 165          {
 166   1              while(*p!=0)
 167   1              {
 168   2                      PutChar(x,y,*p);
 169   2                      x += X_Witch;
 170   2                      if((x + X_Witch) > Dis_X_MAX)
 171   2                      {
 172   3                              x = 0;
 173   3                              if((Dis_Y_MAX - y) < Y_Witch) break;
 174   3                              else y += Y_Witch;
 175   3                      }
 176   2                      p++;
 177   2              }
 178   1      }
C51 COMPILER V8.16   LCD_DIS                                                               12/22/2008 00:11:05 PAGE 4   

 179          //========================================================================
 180          // 函数: void SetPaintMode(int Mode,unsigned int Color)
 181          // 描述: 绘图模式设置
 182          // 参数: Mode 绘图模式    Color  像素点的颜色,相当于前景色  
 183          // 返回: 无
 184          // 备注: Mode无效
 185          // 版本:
 186          //      2006/10/15      First version
 187          //========================================================================
 188          void SetPaintMode(BYTE Mode,LCDBYTE Color)
 189          {
 190   1              Mode = Mode;//Plot_Mode = Mode;         //仅仅是为了保持与其它驱动的一至性,绘图模式在该版驱动中未用
 191   1              BMP_Color = Color;
 192   1      }
 193          //========================================================================
 194          // 函数: void PutPixel(int x,int y)
 195          // 描述: 在x、y点上绘制一个前景色的点
 196          // 参数: x  X轴坐标     y  Y轴坐标
 197          // 返回: 无
 198          // 备注: 使用前景色
 199          // 版本:
 200          //      2006/10/15      First version
 201          //========================================================================
 202          void PutPixel(DOTBYTE x,DOTBYTE y)
 203          {
 204   1              Writ_Dot/*Write_Dot_LCD*/(x,y,BMP_Color);
 205   1      }
 206          //========================================================================
 207          // 函数: void Line(unsigned char s_x,unsigned char s_y,unsigned char e_x,unsigned char e_y)
 208          // 描述: 在s_x、s_y为起始坐标,e_x、e_y为结束坐标绘制一条直线
 209          // 参数: x  X轴坐标     y  Y轴坐标
 210          // 返回: 无
 211          // 备注: 使用前景色
 212          // 版本:
 213          //      2006/10/15      First version
 214          //========================================================================
 215          void Line(LCDBYTE s_x,LCDBYTE s_y,LCDBYTE e_x,LCDBYTE e_y)
 216          {  
 217   1              signed short Offset_x,Offset_y,Offset_k = 0;
 218   1              signed short Err_d = 1;
 219   1              if(s_y>e_y)
 220   1              {
 221   2                      Offset_x = s_x;
 222   2                      s_x = e_x;
 223   2                      e_x = Offset_x;
 224   2                      Offset_x = s_y;
 225   2                      s_y = e_y;

⌨️ 快捷键说明

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