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

📄 lcd_dis.lst

📁 凌巨12864 sed1565芯片的液晶lcd驱动程序.
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   LCD_DIS                                                               03/06/2007 23:20:31 PAGE 1   


C51 COMPILER V7.50, 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          //                      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          //========================================================================
  17          #include "LCD_Driver_User.h"                                    //LCD底层驱动声明头文件
  18          #include "LCD_Config.h"                                                 //LCD的配置文件,比如坐标轴是否倒置等的定义
  19          
  20          
  21          //extern unsigned int Asii8[];                                  //6X8的ASII字符库
  22          extern code unsigned char Asii0610[];                   //6X10的ASII字符库
  23          //extern code unsigned char Asii0816[];                 //8X16的ASII字符库
  24          extern code unsigned char GB1716[];                             //32*32自定义的汉字库
  25          
  26          unsigned char X_Witch;                                                                  //字符写入时的宽度
  27          unsigned char Y_Witch;                                                                  //字符写入时的高度
  28          unsigned char Font_Wrod;                                                                //字体的每个字模占用多少个存储单元数
  29          unsigned char *Char_TAB;                                                //字库指针
  30          //unsigned char Plot_Mode;                                                                      //绘图模式
  31          unsigned char BMP_Color;
  32          unsigned char Char_Color;
  33          
  34          //void Pos_Switch(unsigned int * x,unsigned int * y);
  35          //void Writ_Dot(int x,int y,unsigned int Color);
  36          //========================================================================
  37          // 函数: void FontSet(int Font_NUM,unsigned int Color)
  38          // 描述: 文本字体设置
  39          // 参数: Font_NUM 字体选择,以驱动所带的字库为准
  40          //               Color  文本颜色,仅作用于自带字库  
  41          // 返回: 无
  42          // 备注: 
  43          // 版本:
  44          //      2006/10/15      First version
  45          //========================================================================
  46          void FontSet(unsigned char Font_NUM,unsigned char Color)
  47          {
  48   1              switch(Font_NUM)
  49   1              {
  50   2      /*              case 0: Font_Wrod = 16; //ASII字符A
  51   2                                      X_Witch = 8;
  52   2                                      Y_Witch = 16;
  53   2                                      Char_Color = Color;
  54   2                                      Char_TAB = (unsigned char *)(Asii0816 - 32*16);
  55   2                      break;*/
C51 COMPILER V7.50   LCD_DIS                                                               03/06/2007 23:20:31 PAGE 2   

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

 118   2                      y ++;
 119   2              }
 120   1      }
 121          
 122          //========================================================================
 123          // 函数: void PutString(unsigned char x,unsigned char y,char *p)
 124          // 描述: 在x、y为起始坐标处写入一串标准字符
 125          // 参数: x  X轴坐标     y  Y轴坐标
 126          //               p  要显示的字符串  
 127          // 返回: 无
 128          // 备注: 仅能用于自带的ASCII字符串显示
 129          // 版本:
 130          //      2006/10/15      First version
 131          //========================================================================
 132          void PutString(unsigned char x,unsigned char y,char *p)
 133          {
 134   1              while(*p!=0)
 135   1              {
 136   2                      PutChar(x,y,*p);
 137   2                      x += X_Witch;
 138   2                      if((x + X_Witch) > Dis_X_MAX)
 139   2                      {
 140   3                              x = 0;
 141   3                              if((Dis_Y_MAX - y) < Y_Witch) break;
 142   3                              else y += Y_Witch;
 143   3                      }
 144   2                      p++;
 145   2              }
 146   1      }
 147          //========================================================================
 148          // 函数: void SetPaintMode(int Mode,unsigned int Color)
 149          // 描述: 绘图模式设置
 150          // 参数: Mode 绘图模式    Color  像素点的颜色,相当于前景色  
 151          // 返回: 无
 152          // 备注: Mode无效
 153          // 版本:
 154          //      2006/10/15      First version
 155          //========================================================================
 156          void SetPaintMode(unsigned char Mode,unsigned char Color)
 157          {
 158   1              Mode = Mode;//Plot_Mode = Mode;         //仅仅是为了保持与其它驱动的一至性,绘图模式在该版驱动中未用
 159   1              BMP_Color = Color;
 160   1      }
 161          //========================================================================
 162          // 函数: void PutPixel(int x,int y)
 163          // 描述: 在x、y点上绘制一个前景色的点
 164          // 参数: x  X轴坐标     y  Y轴坐标
 165          // 返回: 无
 166          // 备注: 使用前景色
 167          // 版本:
 168          //      2006/10/15      First version
 169          //========================================================================
 170          void PutPixel(unsigned char x,unsigned char y)
 171          {
 172   1              Write_Dot_LCD/*Writ_Dot*/(x,y,BMP_Color);
 173   1      }
 174          //========================================================================
 175          // 函数: void Line(unsigned char s_x,unsigned char s_y,unsigned char e_x,unsigned char e_y)
 176          // 描述: 在s_x、s_y为起始坐标,e_x、e_y为结束坐标绘制一条直线
 177          // 参数: x  X轴坐标     y  Y轴坐标
 178          // 返回: 无
 179          // 备注: 使用前景色
C51 COMPILER V7.50   LCD_DIS                                                               03/06/2007 23:20:31 PAGE 4   

 180          // 版本:
 181          //      2006/10/15      First version
 182          //========================================================================
 183          void Line(unsigned char s_x,unsigned char s_y,unsigned char e_x,unsigned char e_y)
 184          {  
 185   1              char Offset_x,Offset_y,Offset_k = 0;
 186   1              char Err_d = 1;
 187   1              if(s_y>e_y)
 188   1              {
 189   2                      Offset_x = s_x;
 190   2                      s_x = e_x;
 191   2                      e_x = Offset_x;
 192   2                      Offset_x = s_y;
 193   2                      s_y = e_y;
 194   2                      e_y = Offset_x;
 195   2              }
 196   1              Offset_x = e_x-s_x;
 197   1              Offset_y = e_y-s_y;
 198   1              Write_Dot_LCD/*Writ_Dot*/(s_x,s_y,BMP_Color);
 199   1              if(Offset_x<=0)
 200   1              {
 201   2                      Offset_x = s_x-e_x;

⌨️ 快捷键说明

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