正文

12864系列KS0108(S6B0108)函数库2012-08-13 13:06:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/enc999/53713.html

分享到:

12864系列KS0108(S6B0108)函数库
 
 

#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

阅读(1914) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册