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

📄 lcd_driver_user.lst

📁 本代码实现的是12864图形LCD模块
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   LCD_DRIVER_USER                                                       11/02/2007 15:16:56 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE LCD_DRIVER_USER
OBJECT MODULE PLACED IN LCD_Driver_User.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE Driver\LCD_Driver\LCD_Driver_User.c BROWSE DEBUG OBJECTEXTEND PRINT(.\LCD_D
                    -river_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          // 日  期: 2007/02/25
   6          // 描  述: 底层接口驱动扩展程序集
   7          //
   8          // 参  考: 请参考具体显示器的硬件描述说明书或者是DataSheet,并以此来编写底
   9          //                      层接口驱动程序,以及LCD的初始化代码
  10          // 版  本:
  11          //      2007/02/25      First version    Mz Design
  12          // 注  意: 
  13          //                      该驱动程序当中有很多已经被屏蔽掉的子程序,用户可根据自己的应用
  14          //                      取消屏障并作一定的修改(如果可能的话)
  15          //========================================================================
  16          #include "LCD_Config.h"
  17          #include "LCD_PortConfig.h"
  18          
  19          //========================================================================
  20          // 函数: void LCD_DataWrite(unsigned char Data)
  21          // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
  22          // 参数: Data 写入的数据 
  23          // 返回: 无
  24          // 备注: 无
  25          // 版本:
  26          //      2007/01/09      First version
  27          //========================================================================
  28          void LCD_DataWrite(unsigned char Dat)//,_Fill_Dot_LCD
  29          {
  30   1      //      *DAT_W_ADDR = Dat;
  31   1              
  32   1              LCD_A0 = 1;
  33   1      //      _nop_();
  34   1              LCD_RW = 0;
  35   1      //      _nop_();
  36   1              LCD_EP = 0;
  37   1              LCD_CS = 0;
  38   1      //      _nop_();
  39   1              DAT_PORT = Dat;
  40   1              
  41   1      //      _nop_();
  42   1              LCD_EP = 1;
  43   1      //      _nop_();
  44   1              LCD_CS = 1;
  45   1      //      _nop_();
  46   1      //      LCD_RW = 1;
  47   1      }
  48          //========================================================================
  49          // 函数: unsigned char LCD_DataRead(void)
  50          // 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
  51          // 参数: 无  
  52          // 返回: 读出的数据,
  53          // 备注: 
  54          // 版本:
C51 COMPILER V8.08   LCD_DRIVER_USER                                                       11/02/2007 15:16:56 PAGE 2   

  55          //      2007/01/09      First version
  56          // 注意: 
  57          //========================================================================
  58          unsigned char LCD_DataRead(void)
  59          {
  60   1              unsigned char Read_Data;
  61   1              DAT_PORT = 0xff;
  62   1              LCD_A0 = 1;
  63   1              LCD_RW = 1;
  64   1              LCD_EP = 0;
  65   1              LCD_CS = 0;
  66   1      //      LCD_EP = 0;
  67   1      //      _nop_();
  68   1              LCD_EP = 1;
  69   1              LCD_EP = 0;
  70   1              Read_Data = DAT_PORT;//
  71   1              LCD_CS = 1;
  72   1              return Read_Data;
  73   1      }       
  74          //========================================================================
  75          // 函数: void LCD_RegWrite(unsigned char Command)
  76          // 描述: 写一个字节的数据至LCD中的控制寄存器当中
  77          // 参数: Command                写入的数据,低八位有效(byte) 
  78          // 返回: 无
  79          // 备注: 
  80          // 版本:
  81          //      2007/01/09      First version
  82          //========================================================================
  83          void LCD_RegWrite(unsigned char Command)
  84          {
  85   1      //      *COM_W_ADDR = Command;
  86   1              
  87   1              LCD_A0 = 0;
  88   1      //      _nop_();
  89   1              LCD_RW = 0;
  90   1      //      _nop_();
  91   1              LCD_EP = 0;
  92   1              LCD_CS = 0;
  93   1              DAT_PORT = Command;
  94   1      
  95   1      //      _nop_();
  96   1              LCD_EP = 1;
  97   1      //      _nop_();
  98   1              LCD_CS = 1;
  99   1      //      _nop_();
 100   1      //      LCD_A0 = 1;
 101   1      //      _nop_();
 102   1      //      LCD_RW = 1;
 103   1      }
 104          //========================================================================
 105          // 函数: void Write_Dot_LCD(unsigned char x,unsigned char y,unsigned char i)
 106          // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
 107          // 参数: x              X轴坐标
 108          //               y              Y轴坐标
 109          //               i              要填充的点的颜色 
 110          // 返回: 无
 111          // 备注: 
 112          // 版本:
 113          //      2006/10/15      First version
 114          //              2007/01/09              V1.2 
 115          //========================================================================
 116          void Write_Dot_LCD(unsigned char x,unsigned char y,unsigned char i)
C51 COMPILER V8.08   LCD_DRIVER_USER                                                       11/02/2007 15:16:56 PAGE 3   

 117          {
 118   1              unsigned char x_low,x_hight;                                                    //定义列地址的高低位指令
 119   1              unsigned char Dot_Mask_Buf=0x01;
 120   1              unsigned char y_Page;                                                           //用于存放要画点的位置所在的byte数据位置
 121   1              x = x+1;
 122   1              x_low = (x&0x0f);                                                                       //定位列地址设置的低位指令
 123   1              x_hight = ((x>>4)&0x0f)+0x10;                                           //定位列地址设置的高位指令
 124   1      //      y_Page = y&0x07;                                                                        //取低三位
 125   1              switch(y&0x07)
 126   1              {
 127   2                      case 0: Dot_Mask_Buf = 0x01;break;
 128   2                      case 1: Dot_Mask_Buf = 0x02;break;
 129   2                      case 2: Dot_Mask_Buf = 0x04;break;
 130   2                      case 3: Dot_Mask_Buf = 0x08;break;
 131   2                      case 4: Dot_Mask_Buf = 0x10;break;
 132   2                      case 5: Dot_Mask_Buf = 0x20;break;
 133   2                      case 6: Dot_Mask_Buf = 0x40;break;
 134   2                      case 7: Dot_Mask_Buf = 0x80;break;
 135   2              }
 136   1              y_Page = (y>>3)+0xb0;                                                           //Get the page of the byte
 137   1              LCD_RegWrite(y_Page);
 138   1              LCD_RegWrite(x_low);
 139   1              LCD_RegWrite(x_hight);
 140   1      //      LCD_RegWrite(0xe0);                                                             //设置为读写改模式
 141   1              y_Page = LCD_DataRead();                                                //
 142   1              if(i) y_Page |= Dot_Mask_Buf;
 143   1              else y_Page &= ~Dot_Mask_Buf;
 144   1              LCD_DataWrite(y_Page);                                                  //
 145   1      //      LCD_RegWrite(0xee);                                                             //读写改模式结束
 146   1      }
 147          /*
 148          //========================================================================
 149          // 函数: void Clear_Dot_LCD(int x,int y)
 150          // 描述: 清除在LCD的真实坐标系上的X、Y点
 151          // 参数: x              X轴坐标
 152          //               y              Y轴坐标
 153          // 返回: 无
 154          // 备注: 暂不使用该函数
 155          // 版本:
 156          //      2006/10/15      First version
 157          //========================================================================

⌨️ 快捷键说明

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