📄 s6b0108.c
字号:
//12864系列KS0108(S6B0108)函数库
//liuqinghua
//2008 07 23
//12864 v1.0
//================================================================
// 液晶接口定义
//================================================================
#include <reg52.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;
//===============================================================
unsigned char code tab2[]={
/*-- 调入了一幅图像:F:\梁\画图\HOCO32060.bmp --*/
/*-- 宽度x高度=320x60 --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x3F,0xF8,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,
0x80,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x00,
0x0F,0xFF,0x00,0x01,0x80,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0x00,0x80,0x00,0x0F,0xFF,0x00,0x01,0x80,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,};
//================================================================
// 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);
}
}
void main (void)
{
SP=0x5f;
Init_0108();
//Delay(100);
Clr_Screen();
//Delay(100);
Set_XY(0x00, 0x00);
//Delay(100);
Write_0108_Data(00);
Write_0108_Data(00);
Write_0108_Data(00);
Write_0108_Data(0x80);
Write_0108_Data(0x0f);
Write_0108_Data(0xc0);
Write_0108_Data(01);
Write_0108_Data(0xc0);
Write_0108_Data(01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x01);
Write_0108_Data(0xc0);
Write_0108_Data(0x1f);
Write_0108_Data(0xfc);
Write_0108_Data(0x00);
Write_0108_Data(0x00);
Write_0108_Data(0x00);
Write_0108_Data(0x00);
//00H,00H,00H,00H,00H,80H,0FH,C0H,01H,C0H,01H,C0H,01H,C0H,01H,C0H,
//01H,C0H,01H,C0H,01H,C0H,01H,C0H,01H,C0H,1FH,FCH,00H,00H,00H,00H
//Write_0108_Data(0x90);
//Write_0108_Reg(0x3f);
Delay(100000);
}
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -