📄 lcd128x64.c
字号:
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
/*-------------------------写命令到LCD------------------------------*/
void write_command(unsigned char cmdcode)
{
RS = 0;
RW = 0;
P0 = cmdcode;
delay(0);
E = 1;
delay(0);
E = 0;
}
/*-------------------------写数据到LCD----------------------------*/
void write_data(unsigned char Dispdata)
{
RS = 1;
RW = 0;
P0 = Dispdata;
delay(0);
E = 1;
delay(0);
E = 0;
}
/*------------------------清显示屏--------------------------------*/
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]);
}
}
/*---------------------指定位置显示数字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);
}
/*************************************************************************************************/
/////////////////////////////////////////////
///// 函数名: 写入字节完整子函数 //////
///// 函数功能: 写入一个字节到DS1302 //////
///// 调用: InputByte() //////
///// 函数参数: 有(写入的地址和数据) //////
///// 返回值: 无 //////
/////////////////////////////////////////////
void WriteTo1302(unsigned char Addr,unsigned char Date)
{
RST2 = 0;
CLK = 0;
RST2 = 1;
InputByte(Addr); // 先给地址,命令 //
InputByte(Date); // 再写入一字节数据 //
CLK = 1;
RST2 =0;
}
/*************************************************************************************************/
/////////////////////////////////////////////
///// 函数名: 读出字节完整子函数 //////
///// 函数功能: 从DS1302读出一个字节 //////
///// 调用: InputByte(); OutputByte() //////
///// 函数参数: 无 //////
///// 返回值: 有(读出的字节内容) //////
/////////////////////////////////////////////
ReadFrom1302(unsigned char Add)
{
unsigned char Date;
RST2 = 0;
CLK = 0;
RST2 = 1;
InputByte(Add); // 先给地址,命令 //
Date = OutputByte(); // 再读一字节数据 //
CLK = 1;
RST2 =0;
return(Date);
}
/*************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -