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

📄 lcd_driver_user.lst

📁 MzL728-240128液晶模块采用T6963C控制芯片的KeilC51的源程序代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.12   LCD_DRIVER_USER                                                       06/13/2008 15:12:12 PAGE 1   


C51 COMPILER V8.12, COMPILATION OF MODULE LCD_DRIVER_USER
OBJECT MODULE PLACED IN .\LCD_Driver_User.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\LCD_Driver\LCD_Driver_User.c BROWSE INCDIR(..\LCD_Driver) DEBUG OBJECTEX
                    -TEND PRINT(.\LCD_Driver_User.lst) OBJECT(.\LCD_Driver_User.obj)

line level    source

   1          //========================================================================
   2          // 文件名: LCD_Driver_User.c
   3          // 作  者: Xinqiang Zhang(email: Xinqiang@Mzdesign.com.cn)
   4          //                      www.Mzdesign.com.cn
   5          // 日  期: 2008/06/11
   6          // 描  述: 底层接口驱动扩展程序集
   7          //
   8          // 参  考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
   9          //                      层接口驱动程序,以及LCD的初始化代码
  10          // 版  本:
  11          //      2007/02/25      First version    Mz Design
  12          //              2008/06/11              V2.0                     Mzdesign
  13          // 注  意: 
  14          //                      该驱动程序当中有很多已经被屏蔽掉的子程序,用户可根据自己的应用
  15          //                      取消屏障并作一定的修改(如果可能的话)
  16          //                      该文件与LCD的特性有关,为MzDesign通用版LCD驱动的V2.0版本,内含的
  17          //                      函数是标准的函数,每款LCD对应的通用版LCD驱动程序包都是一样的,只
  18          //                      是会针对不同的LCD模块会有一些区别,用户可以参考我们介绍V1.0版本
  19          //                      驱动的书<LCD驱动显控原理>.
  20          // 相  关: 本例为针对MzDesign的240X128点阵LCD屏作的移植改去,适用于Keil C51
  21          //                      MCS-51系列MCU
  22          //========================================================================
  23          #include "LCD_Config.h"
  24          #include "LCD_PortConfig.h"
  25          
  26          
  27          //========================================================================
  28          // 函数: void LCD_DataWrite(unsigned int Data)
  29          // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
  30          // 参数: Data 写入的数据 
  31          // 返回: 无
  32          // 备注: Mz 通用版LCD驱动程序 标准子函数
  33          // 版本:
  34          //      2007/01/09      First version
  35          //========================================================================
  36          void LCD_DataWrite(LCDBYTE Dat)
  37          {
  38   1              LCD_A0 = 0;
  39   1              LCD_CS = 0;
  40   1        
  41   1              LCD_Data_BUS_Out = Dat;
  42   1              LCD_WR = 0;
  43   1              LCD_WR = 1;
  44   1              LCD_CS = 1;
  45   1      }
  46          //========================================================================
  47          // 函数: LCDBYTE LCD_DataRead(void)
  48          // 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
  49          // 参数: 无  
  50          // 返回: 读出的数据,
  51          // 备注: Mz 通用版LCD驱动程序 标准子函数 
  52          // 版本:
  53          //      2007/01/09      First version
  54          // 注意: 
C51 COMPILER V8.12   LCD_DRIVER_USER                                                       06/13/2008 15:12:12 PAGE 2   

  55          //========================================================================
  56          LCDBYTE LCD_DataRead(void)
  57          {
  58   1          LCDBYTE Read_Data;
  59   1              LCD_Data_BUS_Out = 0xff;                        //
  60   1              LCD_A0 = 0;
  61   1              LCD_CS = 0;
  62   1              LCD_RD = 0;
  63   1              Read_Data = LCD_Data_BUS_In;
  64   1      
  65   1              LCD_RD = 1;
  66   1              LCD_CS = 1;
  67   1          return Read_Data;
  68   1      }       
  69          //========================================================================
  70          // 函数: void LCD_RegWrite(LCDBYTE Command)
  71          // 描述: 写一个字节的数据至LCD中的控制寄存器当中
  72          // 参数: Command                写入的数据,低八位有效(byte) 
  73          // 返回: 无
  74          // 备注: Mz 通用版LCD驱动程序 标准子函数
  75          // 版本:
  76          //      2007/01/09      First version
  77          //========================================================================
  78          void LCD_RegWrite(LCDBYTE Command)
  79          {
  80   1              LCD_A0 = 1;
  81   1              LCD_CS = 0;
  82   1              LCD_Data_BUS_Out = Command;
  83   1              LCD_WR = 0;
  84   1              LCD_WR = 1;
  85   1              LCD_CS = 1;
  86   1      }
  87          //========================================================================
  88          // 函数: LCDBYTE LCD_ReadStatus(void)
  89          // 描述: 读取LCD模块的指定状态位
  90          // 参数: 无
  91          // 返回: 读取到的状态位
  92          // 备注: Mz 通用版LCD驱动程序 标准子函数
  93          // 版本:
  94          //      2007/01/09      First version
  95          //========================================================================
  96          LCDBYTE LCD_ReadStatus(void)
  97          {
  98   1              LCDBYTE Status=0;
  99   1              LCD_Data_BUS_Out = 0xff;                        //
 100   1              LCD_A0 = 1;
 101   1              LCD_CS = 0;
 102   1              LCD_RD = 0;
 103   1              Status = LCD_Data_BUS_In;
 104   1              LCD_RD = 1;
 105   1              LCD_CS = 1;
 106   1              return Status;
 107   1      }
 108          //========================================================================
 109          // 函数: void LCD_TestStatus(LCDBYTE bitMatch)
 110          // 描述: 测试LCD模块的指定状态位
 111          // 参数: bitMatch
 112          // 返回: 如测试有效则返回1  如超时则返回0
 113          // 备注: Mz 通用版LCD驱动程序 标准子函数
 114          // 版本:
 115          //      2007/01/09      First version
 116          //========================================================================
C51 COMPILER V8.12   LCD_DRIVER_USER                                                       06/13/2008 15:12:12 PAGE 3   

 117          LCDBYTE LCD_TestStatus(LCDBYTE bitMatch)
 118          {
 119   1              WORD Error_Counter=0;
 120   1              while((LCD_ReadStatus()&bitMatch)!=bitMatch)
 121   1              {
 122   2                      Error_Counter++;
 123   2                      if(Error_Counter>=1000) return 0;               //return 0  if test status bit fail
 124   2              }
 125   1              return 1;                                       //return 1  as test status bit ok
 126   1      }
 127          //========================================================================
 128          // 函数: void Write_Dot_LCD(int x,int y,unsigned int i)
 129          // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
 130          // 参数: x              X轴坐标
 131          //               y              Y轴坐标
 132          //               i              要填充的点的颜色 
 133          // 返回: 无
 134          // 备注: Mz 通用版LCD驱动程序 标准子函数
 135          // 版本:
 136          //      2006/10/15      First version
 137          //              2007/01/09              V1.2 
 138          //========================================================================
 139          void Write_Dot_LCD(DOTBYTE x,DOTBYTE y,LCDBYTE i)
 140          {
 141   1              WORD Dot_Addr;                                                  //定义列地址的高低位指令
 142   1              Dot_Addr = (x>>3)+0x0800;
 143   1              Dot_Addr += (((WORD)y)<<5);//*0x0020;
 144   1              if(LCD_TestStatus(0x03))
 145   1                      LCD_DataWrite((LCDBYTE)(Dot_Addr&0x00ff));
 146   1              if(LCD_TestStatus(0x03))
 147   1                      LCD_DataWrite((LCDBYTE)(Dot_Addr>>8));
 148   1              if(LCD_TestStatus(0x03))
 149   1                      LCD_RegWrite(0x24);
 150   1              if(i!=0)
 151   1                      i = 0xf8;
 152   1              else
 153   1                      i = 0xf0;
 154   1              i = i+((~x)&0x07);
 155   1              if(LCD_TestStatus(0x03))
 156   1                      LCD_RegWrite(i);
 157   1      }
 158          /*
 159          //========================================================================
 160          // 函数: void Clear_Dot_LCD(WORD x,WORD y)
 161          // 描述: 清除在LCD的真实坐标系上的X、Y点
 162          // 参数: x              X轴坐标
 163          //               y              Y轴坐标
 164          // 返回: 无
 165          // 备注: 暂不使用该函数
 166          // 版本:
 167          //      2006/10/15      First version
 168          //========================================================================
 169          void Clear_Dot_LCD(WORD x,WORD y)
 170          {
 171                  //可根据自己的需要填写代码
 172                  x = y;                                          //无意义,仅为了让系统不提示警告
 173          }
 174          //========================================================================
 175          // 函数: unsigned int Get_Dot_LCD(int x,int y)
 176          // 描述: 获取在LCD的真实坐标系上的X、Y点上的当前填充色数据
 177          // 参数: x              X轴坐标
 178          //               y              Y轴坐标
C51 COMPILER V8.12   LCD_DRIVER_USER                                                       06/13/2008 15:12:12 PAGE 4   

 179          // 返回: 该点的颜色
 180          // 备注: 暂不使用该函数
 181          // 版本:
 182          //      2006/10/15      First version
 183          //========================================================================
 184          LCDBYTE Get_Dot_LCD(DOTBYTE x,DOTBYTE y)

⌨️ 快捷键说明

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