📄 lcd128x64_1.h
字号:
/*-----------------------------------------------------------------------*/
/*
File: LCD128X64_1.H
Date: 08/7/21
Time: 14:29
Note: LCD128*64驱动程序
Author: 未知
*/
#ifndef __LCD128X64_1_H__
#define __LCD128X64_1_H__
/*-----------------------------------------------------------------------*/
//部分宏定义
#define Disp_On 0x3f //显示开指令
#define Disp_Off 0x3e //显示关指令
#define Col_Add 0x40 //定位到第0列指令
#define Page_Add 0xb8 //定位到第0页指令
#define Start_Line 0xc0 //定位从DDROM中的第0行开始往屏幕上显示
/*-----------------------------------------------------------------------*/
//数据接口定义
//LCD128X64
sbit RST = P2^0; //LCD复位端
sbit E = P2^1; //使能端
sbit RW = P2^2; //读写控制端
sbit RS = P2^3; //数据指令寄存器控制端
sbit CS1 = P2^4; //左边屏幕使能 //低电平有效
sbit CS2 = P2^5; //右边屏幕使能 //低电平有效
sfr Port= 0x80; //P0 数据D0~D7
//P0=0x80; /P1=0x90; /P2=0xA0; /P3=0xB0;
/*-----------------------------------------------------------------------*/
//函数声明
void write_command(unsigned char cmd); //写入指令到LCD128X64
void write_data(unsigned char dat); //写入数据到LCD128X64
//unsigned char read_data(void); //读出LCD128X64中的数据
//void frame(void); //显示边框
void clr_scr(void); //显示清屏
void Disp_Img(unsigned char code *img); //显示128X64图片
//void Disp_H_Line(void); //显示横线
//void Disp_V_Line(void); //显示列线
void sz_disp(unsigned char pag, unsigned char col, unsigned char code *sz); //指定位置显示数字8*16
void hz_disp(unsigned char pag, unsigned char col, unsigned char code *hz); //指定位置显示汉字16*16
void init_lcd(void); //初始化LCD128*64
/*-----------------------------------------------------------------------*/
//代码区
unsigned char code kongbai2[]={ // '空白' 16*16 //
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code kongbai1[]={ // '空白' 8*16 //
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
unsigned char code sz0[]={ //数字 0 8*16 //
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
};
unsigned char code sz1[]={ //数字 1 8*16 //
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
};
unsigned char code sz2[]={ //数字 2 8*16 //
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
};
unsigned char code sz3[]={ // 数字 3 8*16 //
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
};
unsigned char code sz4[]={ // 数字 4 8*16 //
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
};
unsigned char code sz5[]={ // 数字 5 8*16 //
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
};
unsigned char code sz6[]={ // 数字 6 8*16 //
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
};
unsigned char code sz7[]={ // 数字 7 8*16 //
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
};
unsigned char code sz8[]={ // 数字 8 8*16 //
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
};
unsigned char code sz9[]={ // 数字 9 8*16 //
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
};
unsigned char code *shuzi[]={sz0,sz1,sz2,sz3,sz4,sz5,sz6,sz7,sz8,sz9};
/*-----------------------------------------------------------------------*/
//写入指令到LCD128X64
void write_command(unsigned char cmd)
{
RS=0; //指令
RW=0; //写入
Port=cmd;
E=1; //高脉冲有效
E=0;
}
/*-----------------------------------------------------------------------*/
//写入数据到LCD128X64
void write_data(unsigned char dat)
{
RS=1; //数据
RW=0; //写入
Port=dat;
E=1; //高脉冲有效
E=0;
}
/*-----------------------------------------------------------------------*/
/*
//读出LCD128X64中的数据
unsigned char read_data(void)
{
unsigned char temp;
RS=1; //数据
RW=1; //读出
E=1; //高脉冲
E=0;
temp=Port;
return (temp);
}
*/
/*-----------------------------------------------------------------------*/
//显示边框
/*
void frame(void)
{
unsigned char i;
CS2=1;
CS1=1;
write_command(Page_Add+0);
write_command(Col_Add +0);
for(i=0;i<64;i++)
write_data(0x01);
write_command(Page_Add+7);
write_command(Col_Add+ 0);
for(i=0;i<64;i++)
write_data(0x80);
for(i=0;i<8;i++)
{
CS2=0; //右屏
CS1=1;
write_command(Page_Add+i);
write_command(Col_Add+63);
write_data(0xff);
CS2=1; //左屏
CS1=0;
write_command(Page_Add+i);
write_command(Col_Add+0);
write_data(0xff);
}
}
*/
/*-----------------------------------------------------------------------*/
//显示清屏
void clr_scr(void)
{
unsigned char j,k;
CS2=1;
CS1=0; //清左半屏
{
write_command(Page_Add+0);
write_command(Col_Add+0);
for(k=0;k<4;k++) // 清左上半屏
{
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清左下半屏
{
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++)
{
write_command(Page_Add+4);
for(j=0;j<64;j++)
write_data(0x00);
}
}
CS2=0;
CS1=1; // 清右半屏
{
write_command(Page_Add+0);
write_command(Col_Add+0);
for(k=0;k<4;k++) // 清右上半屏
{
for(j=0;j<64;j++)
write_data(0x00);
}
for(k=0;k<4;k++) // 清右下半屏
{
write_command(Page_Add+4);
for(j=0;j<64;j++)
write_data(0x00);
}
}
}
/*-----------------------------------------------------------------------*/
//显示128X64图片
void Disp_Img(unsigned char code *img)
{
unsigned char j,k;
for(k=0;k<8;k++)
{
CS2=1; //左屏
CS1=0;
write_command(Page_Add+k);
write_command(Col_Add+0);
for(j=0;j<64;j++)
write_data(img[k*128+j]);
CS2=0; //右屏
CS1=1;
write_command(Page_Add+k);
write_command(Col_Add+0);
for(j=64;j<128;j++)
write_data(img[k*128+j]);
}
}
/*-----------------------------------------------------------------------*/
//显示横线
/*
void Disp_H_Line(void)
{
unsigned char i,j;
CS2=1;
CS1=1;
write_command(Disp_On);
write_command(Page_Add);
write_command(Start_Line);
write_command(Col_Add);
for(j=0;j<8;j++)
{
write_command(Page_Add+j);
write_command(Col_Add+0);
write_command(Start_Line+0);
for(i=0;i<64;i++)
write_data(0x55);
}
}
*/
/*-----------------------------------------------------------------------*/
//显示列线
/*
void Disp_V_Line(void)
{
unsigned char i,j;
write_command(Disp_On);
write_command(Page_Add);
write_command(Start_Line);
write_command(Col_Add);
for(j=0;j<8;j++)
{
write_command(Page_Add+j);
write_command(Col_Add+0);
for(i=0;i<32;i++)
{
write_data(0x00);
write_data(0xff);
}
}
}
*/
/*-----------------------------------------------------------------------*/
//指定位置显示数字8*16
void sz_disp(unsigned char pag, unsigned char col, unsigned char code *sz)
{
unsigned char i=0,j=0;
for(j=0;j<2;j++)
{
write_command(Page_Add+pag+j);
write_command(Col_Add+col);
for(i=0;i<8;i++)
write_data(sz[8*j+i]);
}
}
/*-----------------------------------------------------------------------*/
//指定位置显示汉字16*16
void hz_disp(unsigned char pag, unsigned char col, unsigned char code *hz)
{
unsigned char i=0,j=0;
for(j=0;j<2;j++)
{
write_command(Page_Add+pag+j);
write_command(Col_Add+col);
for(i=0;i<16;i++)
write_data(hz[16*j+i]);
}
}
/*-----------------------------------------------------------------------*/
//初始化LCD128*64
void init_lcd(void)
{
RST=0;
RST=1;
CS2=1;
CS1=1;
write_command(Disp_Off);
write_command(Page_Add+0);
write_command(Start_Line+0);
write_command(Col_Add+0);
write_command(Disp_On);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -