📄 t6963.h
字号:
/*************************************************************
FUNCTION: LCD driver 8080
AUTHOR:
DESCRIPTION: T6963
E-mail:
CREAT DATE: 2005-1-8
MODIFICATION DATE: 2005-1-10
2005-1-17
***************************************************************/
#include <AT89X52.H>
#include <intrins.h>
unsigned char display_mode=0x90;//关文本,图形,光标
unsigned char mode_set=0x80;// or模式
#define TEXT_HOME_ADDRESS_LOW 0x00
#define TEXT_HOME_ADDRESS_HIGH 0x00
#define TEXT_AREA 0x10
#define GRAPHIC_HOME_ADDRESS_LOW 0x00
#define GRAPHIC_HOME_ADDRESS_HIGH 0x08
#define GRAPHIC_AREA 0x10
#define OFFSET_REGISTER 0x03
#define CGRAM_ADDRESS 0x18
#define DB P1
#define CD P3_4
#define WR_E P3_1
#define RD_E P3_0
#define CE P3_3
#define FS P3_5
#define CURSOR_ON() display_mode|=0x01;Command(display_mode) //开光标显示
#define CURSOR_OFF() display_mode&=0xfe;Command(display_mode) //关光标显示
#define CURSOR_BLINK_ON() display_mode&=0xfe;Command(display_mode) //开光标闪烁
#define CURSOR_BLINK_OFF() display_mode&=0xfd;Command(display_mode) //关光标闪烁
#define GRAPHIC_ON() display_mode|=0x08;Command(display_mode) //开图形显示
#define GRAPHIC_OFF() display_mode&=0xf7;Command(display_mode) //开图形显示
#define TEXT_ON() display_mode|=0x04;Command(display_mode) //开文本显示
#define TEXT_OFF() display_mode&=0xfb;Command(display_mode) //关文本显示
#define OR_MODE() Command(mode_set) //或模式
#define AND_MODE() Command(mode_set|0x03) //与模式
#define XOR_MODE() Command(mode_set|0x01) //异或模式
#define AUTO_WRITE_ON() Command(0xb0) //on auto write
#define AUTO_WRITE_OFF() Command(0xb2)
#define INTERNAL_CGROM() mode_set=mode_set&0xf7;Command(mode_set);//内部CGROM模式
#define EXTERNAL_CGRAM() mode_set=mode_set|0x08;Command(mode_set);//外部CGRAM模式
/***********************************
** 函数名称: Delay
** 功能描述: 延时时间=(n*9+17)*12/F
** 输 入: n
** 输 出 : 无
** 全局变量:无
** 调用模块: 无
**
** 作 者:
** 日 期: 2006-1-24
******************************************/
void Delay(unsigned int n)
{
while(n--);
return;
}
/***********************************
** 函数名称: Busy
** 功能描述: 从液晶显示控制器中读忙标志,并作为返回值返回
** busy flag
** 输 入: 无
** 输 出 : 忙标志
** 全局变量:无
** 调用模块: 无
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
unsigned char Busy(void)
{
unsigned char datum;
CE=0;CD=1;RD_E=1;WR_E=1;
DB=0xff;
RD_E=0;
_nop_();
datum=DB;
RD_E=1;
CE=1;
return(datum);
}
/***********************************
** 函数名称: St01
** 功能描述: 循环检查命令运行和读/写能力,命令和读写允许退出循环
** Check command execution and data read/write capability
** 输 入: 无
** 输 出 : 无
** 全局变量:无
** 调用模块: Busy
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
void St01(void)
{
while ((Busy()&3)!=3) {}
return;
}
/***********************************
** 函数名称: St2
** 功能描述: 循环检查自动读能力,自动读允许退出循环
** Check auto mode data read capability
** 输 入: 无
** 输 出 : 无
** 全局变量:无
** 调用模块: Busy
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
/*
void St2(void)
{
while ((Busy()&4)!=4) {}
return;
}
*/
/****************************************
** 函数名称: St3
** 功能描述: 循环检查自动写能力,自动写允许退出循环
** Check auto mode data write capability
** 输 入: 无
** 输 出 : 无
** 全局变量:无
** 调用模块: Busy
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
void St3(void)
{
while ((Busy()&8)!=8) {}
return;
}
/****************************************
** 函数名称: Command
** 功能描述: 向控制器传送命令
** 输 入: instruction : 命令代码
** 输 出 : 无
** 全局变量:无
** 调用模块: st01
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
void Command(unsigned char instruction)
{
St01();
CE=0;
DB=instruction;
WR_E=0;
_nop_();
WR_E=1;
CE=1;
return;
}
/****************************************
** 函数名称: Write
** 功能描述: 向控制器传送数据
** 输 入: datum : 输入数据
** 输 出 : 无
** 全局变量:无
** 调用模块: St01
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
void Write(unsigned char datum)
{
St01();
CE=0;
CD=0;
DB=datum;
WR_E=0;
_nop_();
WR_E=1;
CE=1;
return;
}
/****************************************
** 函数名称: Read
** 功能描述: 从控制器读数据
** 输 入: 无
** 输 出 : 读出的数据
** 全局变量:无
** 调用模块: St01
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
/*
#pragma disable
unsigned char Read(void)
{
unsigned char datum;
St01();
CD=0;
DB=0xff;
RD_E=0;
datum=DB;
RD_E=1;
CD=1;
return(datum);
}
*/
/****************************************
** 函数名称: Autowrite
** 功能描述: 向控制器自动写数据
** 输 入: datum: 数据
** 输 出 : 无
** 全局变量:无
** 调用模块: St3
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
void Autowrite(unsigned char datum)
{
St3();
CE=0;
CD=0;
DB=datum;
WR_E=0;
Delay(1);
WR_E=1;
CE=1;
return;
}
/****************************************
** 函数名称: Autoread
** 功能描述: 从控制器自动读数据
** 输 入: 无
** 输 出 : 读出的数据
** 全局变量:无
** 调用模块: St2
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
/*
#pragma disable
unsigned char Autoread(void)
{
unsigned char datum;
St2();
CD=0;
DB=0xff;
RD_E=0;
datum=DB;
RD_E=1;
CD=1;
return(datum);
}
/*
/****************************************
** 函数名称: Write_Data
** 功能描述: 向控制器显示RAM写数据
** 输 入 : datum : 要写入的数据
** 输 出 : 无
** 全局变量:无
** 调用模块: Write,Command
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
void Write_Data(unsigned char datum)
{
Write(datum);
Command(0x0c0);
return;
}
/****************************************
** 函数名称: Set_Text_Address
** 功能描述: 设置文本区位置
** 输 入 : home_address_low : 文本区首地址的低8位
** home_address_high: 文本区首地址的高8位
** area: 文本区一行字节数
** 输 出 : 无
** 全局变量:无
** 调用模块: Write,Command
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
void Set_Text_Address(unsigned char home_address_low,unsigned char home_address_high,unsigned char area)
{
Write(home_address_low);
Write(home_address_high);
Command(0x40); //Text home address
Write(area);
Write(0x00);
Command(0x41); //Text area
return;
}
/****************************************
** 函数名称: Set_Graphic_Address
** 功能描述: 设置图形区位置
** 输 入 : home_address_low : 图形区首地址的低8位
** home_address_high: 图形区首地址的高8位
** area: 图形区一行字节数
** 输 出 : 无
** 全局变量:无
** 调用模块: Write,Command
**
** 作 者:
** 日 期: 2006-1-10
******************************************/
#pragma disable
void Set_Graphic_Address(unsigned char home_address_low,unsigned char home_address_high,unsigned char area)
{
Write(home_address_low);
Write(home_address_high);
Command(0x42); //Graphic home address
Write(area);
Write(0x00);
Command(0x43); //Graphic area
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -