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

📄 lcd_driver_user.lst

📁 SED1565(SPLC501)控制的lcm的菜单显示c源码。特点是比较方便移植。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LCD_DRIVER_USER                                                       06/27/2007 00:58:40 PAGE 1   


C51 COMPILER V8.02, 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_User.c BROWSE DEBUG OBJECTEXTEND

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          //              2007/04/04              V1.1                     Mz Design  MCS51的直接驱动(端口模拟时序)
  13          // 注  意: 
  14          //                      该驱动程序当中有很多已经被屏蔽掉的子程序,用户可根据自己的应用
  15          //                      取消屏障并作一定的修改(如果可能的话)
  16          //========================================================================
  17          #include "LCD_Config.h"
  18          #include "LCD_PortConfig.h"
  19          
  20          //========================================================================
  21          // 函数: void LCD_DataWrite(unsigned int Data)
  22          // 描述: 写一个字节的显示数据至LCD中的显示缓冲RAM当中
  23          // 参数: Data 写入的数据 
  24          // 返回: 无
  25          // 备注: 无
  26          // 版本:
  27          //      2007/01/09      First version
  28          //========================================================================
  29          void LCD_DataWrite(unsigned char Dat)//,_Fill_Dot_LCD
  30          {
  31   1      //      *DAT_W_ADDR = Dat;
  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              LCD_EP = 0;
  41   1      //      _nop_();
  42   1              LCD_EP = 1;
  43   1      //      _nop_();
  44   1      //      LCD_CS = 1;
  45   1      }
  46          //========================================================================
  47          // 函数: unsigned char LCD_DataRead(void)
  48          // 描述: 从LCD中的显示缓冲RAM当中读一个字节的显示数据
  49          // 参数: 无  
  50          // 返回: 读出的数据,
  51          // 备注: 
  52          // 版本:
  53          //      2007/01/09      First version
  54          // 注意: 
  55          //========================================================================
C51 COMPILER V8.02   LCD_DRIVER_USER                                                       06/27/2007 00:58:40 PAGE 2   

  56          unsigned char LCD_DataRead(void)
  57          {
  58   1              unsigned char Read_Data;
  59   1      //      Read_Data = *DAT_R_ADDR;
  60   1      //      Read_Data = *DAT_R_ADDR;//
  61   1              LCD_A0 = 1;
  62   1              LCD_RW = 1;
  63   1              LCD_EP = 0;
  64   1              LCD_EP = 1;
  65   1              DAT_PORT = 0xff;
  66   1              LCD_EP = 0;
  67   1              LCD_EP = 1;
  68   1              Read_Data = DAT_PORT;
  69   1      //SPLC501在读出数据时需要连续两次读操作方可读出
  70   1              return Read_Data;
  71   1      }       
  72          //========================================================================
  73          // 函数: void LCD_RegWrite(unsigned char Command)
  74          // 描述: 写一个字节的数据至LCD中的控制寄存器当中
  75          // 参数: Command                写入的数据,低八位有效(byte) 
  76          // 返回: 无
  77          // 备注: 
  78          // 版本:
  79          //      2007/01/09      First version
  80          //========================================================================
  81          void LCD_RegWrite(unsigned char Command)
  82          {
  83   1      //      *COM_W_ADDR = Command;
  84   1              LCD_A0 = 0;
  85   1      //      _nop_();
  86   1              LCD_RW = 0;
  87   1      //      _nop_();
  88   1      //      LCD_EP = 0;
  89   1      //      LCD_CS = 0;
  90   1      //      _nop_();
  91   1              DAT_PORT = Command;
  92   1              LCD_EP = 0;
  93   1      //      _nop_();
  94   1              LCD_EP = 1;
  95   1      }
  96          //========================================================================
  97          // 函数: void Write_Dot_LCD(int x,int y,unsigned int i)
  98          // 描述: 在LCD的真实坐标系上的X、Y点绘制填充色为i的点
  99          // 参数: x              X轴坐标
 100          //               y              Y轴坐标
 101          //               i              要填充的点的颜色 
 102          // 返回: 无
 103          // 备注: 
 104          // 版本:
 105          //      2006/10/15      First version
 106          //              2007/01/09              V1.2 
 107          //========================================================================
 108          void Write_Dot_LCD(unsigned char x,unsigned char y,unsigned char i)
 109          {
 110   1              unsigned char x_low,x_hight;                                                    //定义列地址的高低位指令
 111   1              unsigned char Dot_Mask_Buf=0x01;
 112   1              unsigned char y_Page;                                                           //用于存放要画点的位置所在的byte数据位置
 113   1              x = x+4;
 114   1              x_low = (x&0x0f);                                                                       //定位列地址设置的低位指令
 115   1              x_hight = ((x>>4)&0x0f)+0x10;                                           //定位列地址设置的高位指令
 116   1      //      y_Page = y&0x07;                                                                        //取低三位
 117   1              switch(y&0x07)
C51 COMPILER V8.02   LCD_DRIVER_USER                                                       06/27/2007 00:58:40 PAGE 3   

 118   1              {
 119   2                      case 0: Dot_Mask_Buf = 0x01;break;
 120   2                      case 1: Dot_Mask_Buf = 0x02;break;
 121   2                      case 2: Dot_Mask_Buf = 0x04;break;
 122   2                      case 3: Dot_Mask_Buf = 0x08;break;
 123   2                      case 4: Dot_Mask_Buf = 0x10;break;
 124   2                      case 5: Dot_Mask_Buf = 0x20;break;
 125   2                      case 6: Dot_Mask_Buf = 0x40;break;
 126   2                      case 7: Dot_Mask_Buf = 0x80;break;
 127   2              }
 128   1              y_Page = (y>>3)+0xb0;                                                           //Get the page of the byte
 129   1              LCD_RegWrite(y_Page);
 130   1              LCD_RegWrite(x_low);
 131   1              LCD_RegWrite(x_hight);
 132   1              LCD_RegWrite(0xe0);                                                             //设置为读写改模式
 133   1              y_Page = LCD_DataRead();                                                //
 134   1              if(i) y_Page |= Dot_Mask_Buf;
 135   1              else y_Page &= ~Dot_Mask_Buf;
 136   1              LCD_DataWrite(y_Page);                                                  //
 137   1              LCD_RegWrite(0xee);                                                             //读写改模式结束
 138   1      }
 139          /*
 140          //========================================================================
 141          // 函数: void Clear_Dot_LCD(int x,int y)
 142          // 描述: 清除在LCD的真实坐标系上的X、Y点
 143          // 参数: x              X轴坐标
 144          //               y              Y轴坐标
 145          // 返回: 无
 146          // 备注: 暂不使用该函数
 147          // 版本:
 148          //      2006/10/15      First version
 149          //========================================================================
 150          void Clear_Dot_LCD(int x,int y)
 151          {
 152                  //可根据自己的需要填写代码

⌨️ 快捷键说明

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