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

📄 t6963.h

📁 含t6963c驱动器LCD与AT89C51的原程序
💻 H
📖 第 1 页 / 共 2 页
字号:
/*************************************************************
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 + -