📄 lcd128x64.c
字号:
delay(0);
E = 1;
delay(0);
E = 0;
tmpin = P0;
return tmpin;
}
/*-------------------------显示边框-------------------------------*/
void frame()
{
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()
{
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++) // 清左下半屏 //
{
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);
}
}
}
/*------------------显示12864图片---------------------------*/
void Disp_Img(unsigned char code *img)
{
unsigned char j,k;
for(k=0;k<8;k++)
{
CS2=1;
CS1=0;
delay(10);
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;
delay(10);
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()
{
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_com(Start_Line+0);
for(i=0;i<64;i++)
write_data(0x55);
}
}
/*------------------显示列-----------------------------*/
void Disp_V_Line()
{
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);
write_command(Start_Line+0);
for(i=0;i<32;i++)
{
write_data(0x00);
write_data(0xff);
}
}
}
/*------------------棋盘-----------------------------*/
void Disp_Cross_Line(unsigned char mode)
{
unsigned char i,j;
unsigned char data1,data2;
if(mode==0) {data1=0xaa;data2=0x55;}
else if(mode==1) {data1=0x55;data2=0xaa;}
else return;
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<32;i++)
{
write_data(data1);
write_data(data2);
}
}
}
/*---------------------指定位置显示数字8*16-----------------------*/
void sz_disp16(unsigned char pag,unsigned char col, unsigned char code *szk)
{
unsigned char j=0,i=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(szk[8*j+i]);
}
}
/*---------------------指定位置显示汉字16*16-----------------------*/
void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
unsigned char j=0,i=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(hzk[16*j+i]);
}
}
/*------------------初始化LCD屏--------------------------*/
void init_lcd()
{
RST=0;
delay(100);
RST=1;
delay(100);
CS2=1;
CS1=1;
delay(100);
write_command(Disp_Off);
write_command(Page_Add+0);
write_command(Start_Line+0);
write_command(Col_Add+0);
write_command(Disp_On);
}
/*-------------------------- 开机信息显示------------------------*/
void StartMsg(void)
{
Clr_Scr(); // 先清屏 //
CS2=1;CS1=0;
hz_disp16(0,32,huan); // 欢
delay(2000);
hz_disp16(0,48,ying); // 迎
delay(2000);
CS2=0;CS1=1;
hz_disp16(0,0,shi1); // 使
delay(2000);
hz_disp16(0,16,yong); // 用
delay(2000);
CS2=1;CS1=0;
hz_disp16(2,32,shu); // 数
delay(2000);
hz_disp16(2,48,ma); // 码
delay(2000);
CS2=0;CS1=1;
hz_disp16(2,0,shi); // 时
delay(2000);
hz_disp16(2,16,zhong); // 钟
delay(2000);
CS2=1;CS1=0;
hz_disp16(5,16,zhi); // 制
delay(2000);
hz_disp16(5,32,zuo); // 作
delay(2000);
hz_disp16(5,48,maohao); // :
delay(2000);
CS2=0;CS1=1;
hz_disp16(5,0,liu); // 刘
delay(2000);
hz_disp16(5,16,bing); // 兵
delay(2000);
hz_disp16(5,32,gantanhao); // !
delay(2000);
}
/*------------------------时钟固定汉字显示-----------------------*/
void ClockMsg(void)
{
Clr_Scr(); // 先清屏 //
CS2=1;CS1=0; // 左屏
hz_disp16(1,32,xing); // 星
hz_disp16(1,48,qi); // 期
sz_disp16(3,0,shuzi[2]); // 2
sz_disp16(3,8,shuzi[0]); // 0
hz_disp16(3,32,nian); // 年
hz_disp16(5,48,shi2); // 时
CS2=0;CS1=1; // 右屏
hz_disp16(3,0,yue); // 月
hz_disp16(3,32,ri); // 日
hz_disp16(5,16,fen); // 分
hz_disp16(5,48,miao); // 秒
}
/*-----------------------时钟部分---------------------------*/
///////////////////////////////////////////////
///// 函数名: 写入字节子函数 //////
///// 函数功能: 写入一个字节到对应地址 //////
///// 函数参数: 有(写入的字节内容) //////
///// 返回值: 无 //////
///////////////////////////////////////////////
void InputByte(unsigned char dat)
{
unsigned char i;
ACC = dat;
for(i=8; i>0; i--)
{
IO = ACC0;
CLK = 1; //下降沿写入数据//
CLK = 0;
ACC = ACC >> 1;
}
}
/************************************************************************************///*时钟部分*/↓
///////////////////////////////////////////////
///// 函数名: 读出字节子函数 //////
///// 函数功能: 从对应地址读出一个字节 //////
///// 函数参数: 无 //////
///// 返回值: 有(读出的字节内容) //////
///////////////////////////////////////////////
OutputByte(void)
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1;
ACC7 = IO;
CLK = 1; //上升沿读出数据//
CLK = 0;
}
return(ACC);
}
/*************************************************************************************************/
/////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -