#ifndef __3X_H__
#define __3X_H__
//================================================================
// 液晶接口定义
//================================================================
#define Lcd_Bus P0
#define _CSA P1^4
#define _CSB P1^5
#define _RS P3^0
#define _E P3^7
#define _RW P3^6
#define _Lcd_Rst P3^1
sbit CSA = _CSA;
sbit CSB = _CSB;
sbit RS = _RS;
sbit E = _E;
sbit RW = _RW;
sbit Lcd_Rst = _Lcd_Rst;
//================================================================
// KS0108指令代码定义
//================================================================
#define Set_Disp_On 0x3F
#define Set_Disp_Off 0x3E
#define Set_Column 0x40
#define Set_Page 0xB8
#define Set_Start_Line 0xC0
//================================================================
// 延时子程序
//================================================================
Delay(int t)
{
while(--t);
}
//================================================================
// 长延时子程序
//================================================================
void Long_Delay(int t)
{
int n=0xff;
while(--t){
while(--n);
n=0xff;
}
}
//================================================================
// KS0108寄存器写入函数
//================================================================
Write_0108_Reg(unsigned char Reg_Code)
{
RS=0;
RW=0;
Lcd_Bus=Reg_Code;
E=1;
E=0;
}
//================================================================
// KS0108显示数据写入函数
//================================================================
Write_0108_Data(unsigned char Disp_Data)
{
RS=1;
RW=0;
Lcd_Bus=Disp_Data;
E=1;
E=0;
}
//================================================================
// 读取KS0108显示数据函数
//================================================================
unsigned char Read_0108_Data()
{
unsigned char Disp_Data;
RS=1;
RW=1;
Lcd_Bus=0xff;
E=1;
Disp_Data=Lcd_Bus;
E=0;
return Disp_Data;
}
//================================================================
// 设置地址,X方向以点为单位,Y方向以page为单位
//================================================================
Set_XY(unsigned char X_Column, unsigned char Y_Page)
{
Write_0108_Reg(Set_Page+Y_Page);
Write_0108_Reg(Set_Column+X_Column);
}
//================================================================
// KS0108寄存器初始化函数
//================================================================
Init_0108()
{
Lcd_Rst=0;
Delay(100);
Lcd_Rst=1;
Delay(100);
CSA=1;
CSB=1;
Delay(100);
Write_0108_Reg(Set_Disp_Off);
Write_0108_Reg(Set_Start_Line);
Write_0108_Reg(Set_Page);
Write_0108_Reg(Set_Column);
Write_0108_Reg(Set_Disp_On);
}
//================================================================
// 清除KS0108显示存储器
//================================================================
Clr_Screen()
{
unsigned char j,k;
CSA=1;
CSB=1;
for(k=0;k<8;k++){
Write_0108_Reg(Set_Page+k);
Write_0108_Reg(Set_Column);
for(j=0;j<64;j++) Write_0108_Data(0x00);
}
}
#endif
评论