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

评论