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

📄 cmlcd_driverio.bak

📁 CM320X240LCD的驱动程序
💻 BAK
字号:
//===============================================================//
//文件:CMLCD_DriverIO.c
//描述:CM320X240LCD的底层函数,实现写指令、写/读数据功能
//注意:采用间控方式
//
//===============================================================//
#include "reg51.h"
sbit LCD_CS=P2^7;
sbit LCD_A0=P2^6;
sbit LCD_WR=P3^6;
sbit LCD_RD=P3^7;

//#define COM_R_ADDR        0x07FFF
#define COM_W_ADDR        0x07000
#define DAT_R_ADDR        0x07000
#define DAT_W_ADDR        0x03000

sbit LCD_RES=P1^0;

unsigned char xdata *   COM_W_buf = COM_W_ADDR;
unsigned char xdata *   DAT_W_buf = DAT_W_ADDR;
unsigned char xdata *   DAT_R_buf = DAT_R_ADDR;
//===================================================//
//程序:void LCD_Reset(void)
//描述:CM320X240LCD复位子程序
//参数:
//返回:
//Note:  Edit by Mz      xinqiang zhang
//Date:  2006 07 29      beijing
//===================================================//
void Delay_LCD(unsigned char timers);
void LCD_Reset(void)
{
    //    unsigned char i;
        LCD_CS=1;
        LCD_A0=1;
        LCD_WR=1;
        LCD_RD=1;
        LCD_RES = 1;
        Delay_LCD(100);
        LCD_RES = 0;
        Delay_LCD(50);
        LCD_RES = 1;
}
//===================================================//
//程序:void LCD_COM_W(unsigned char com_d)
//描述:CM320X240LCD读指令子程序
//参数:
//返回:
//Note:  Edit by Mz      xinqiang zhang
//Date:  2006 07 29      beijing
//===================================================//
void LCD_COM_W(unsigned char com_d)
{
        *COM_W_buf = com_d;
}
//===================================================//
//程序:void LCD_COM_W(unsigned char com_d)
//描述:CM320X240LCD写数据或指令参数函数
//参数:
//返回:
//Note:  Edit by Mz      xinqiang zhang
//Date:  2006 07 29      beijing
//===================================================//
void LCD_Data_W(unsigned char dd)
{
        *DAT_W_buf = dd;
}
//===================================================//
//程序:void LCD_COM_W(unsigned char com_d)
//描述:CM320X240LCD读数据或指令参数函数
//参数:
//返回:
//Note:  Edit by Mz      xinqiang zhang
//Date:  2006 07 29      beijing
//===================================================//
unsigned char LCD_Data_R(void)
{
        unsigned char ucTemp;
        ucTemp = *DAT_R_buf;
        return ucTemp;
}
//===================================================//
//程序:void Delay_LCD(unsigned char timers)
//描述:CM320X240LCD读数据或指令参数函数
//参数:
//返回:
//Note:  Edit by Mz      xinqiang zhang
//Date:  2006 07 29      beijing
//===================================================//
void Delay_LCD(unsigned char timers)
{
        unsigned char i;
        while(timers)
        {
                for(i=0;i<100;i++)
                    ;
                timers--;
        }
}
//===================================================//
//程序:void Delay_LCD(unsigned char timers)
//描述:CM320X240LCD读数据或指令参数函数
//参数:
//返回:
//Note:  Edit by Mz      xinqiang zhang
//Date:  2006 07 29      beijing
//===================================================//
void LCD_Back_dot(unsigned int Addr,unsigned char b,bit mode)
{
        unsigned char ucTemp;
        *COM_W_buf = 0x46;
        *DAT_W_buf = (unsigned char)Addr;
        *DAT_W_buf = (unsigned char)(Addr>>8);
        *COM_W_buf = 0x43;
        ucTemp = *DAT_R_buf;
        if(mode)
                ucTemp = ucTemp|b;
        else
                ucTemp = ucTemp&(~b);
        *COM_W_buf = 0x46;
        *DAT_W_buf = (unsigned char)Addr;
        *DAT_W_buf = (unsigned char)(Addr>>8);
        *COM_W_buf = 0x42;
        *DAT_W_buf = ucTemp;
}
extern unsigned char LCD_show_Addr;
void LCD_Back_Rect(unsigned int x,unsigned char y,unsigned int e_x,unsigned char e_y,bit mode)
{
        unsigned int Addr,ui_x;
        unsigned char fill;
        ui_x = x>>3;
        e_x = e_x>>3;
        Addr = y*0x32+ui_x+(unsigned int)(LCD_show_Addr<<8);
        if(mode) fill=0xff;
        else fill=0x00;
        for(;y<=e_y;y++)
        {
                *COM_W_buf = 0x46;
                *DAT_W_buf = (unsigned char)Addr;
                *DAT_W_buf = (unsigned char)(Addr>>8);
                *COM_W_buf = 0x42;
                for(x=ui_x;x<=e_x;x++)
                {
                           *DAT_W_buf = fill;
                }
                Addr = Addr+0x32;
        }
}

⌨️ 快捷键说明

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