📄 cmlcd_driverio.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 + -