⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd128x64_2.c

📁 图形式液晶LCD128*64的典型驱动~ 包含很多常用的画图函数和指令~
💻 C
📖 第 1 页 / 共 3 页
字号:
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
};




/*---------------------------------------*/


/*---------------------------------------*/
//延迟时间子程序
void delay(unsigned int t)
{
	unsigned int i,j;
	for(i=0;i<t;i++)
		for(j=0;j<10;j++)
			;
}
/*---------------------------------------*/


/*---------------------------------------*/
//写入指令到LCD128X64
void write_command(unsigned char cmdcode)
{
	RS=0;
	RW=0;
	P0=cmdcode;
	delay(0);
	E=1;
	delay(0);
	E=0;
}
/*---------------------------------------*/


/*---------------------------------------*/
//写入数据到LCD128X64
void write_data(unsigned char Dispdata)
{
	RS=1;
	RW=0;
	P0=Dispdata;
	delay(0);
	E=1;
	delay(0);
	E=0;
}
/*---------------------------------------*/


/*---------------------------------------*/
//读出LCD128X64中的数据
/*unsigned char read_data(void)
{
	unsigned char tempin;
	RS=1;
	RW=1;
	delay(0);
	E=1;
	delay(0);
	E=0;
	tempin=P0;
	return (tempin);
}
*/
/*---------------------------------------*/



/*---------------------------------------*/
//显示边框
/*
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;
		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(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_disp16(unsigned char pag, unsigned char col, unsigned char code *szk)
{
	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(szk[8*j+i]);
	}
}
/*-------------------------------------------*/


/*-------------------------------------------*/
//指定位置显示汉字16*16
void hz_disp16(unsigned char pag, unsigned char col, unsigned char code *hzk)
{
	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(hzk[16*j+i]);
	}
}
/*-------------------------------------------*/



/*-------------------------------------------*/
//初始化LCD128*64
void init_lcd(void)
{
	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,wei);       //  刘
	delay(2000);
	hz_disp16(5,16,zhi1);      //  兵
	delay(2000);
	hz_disp16(5,32,gantanhao);     //  !
	delay(2000);
}
/*-------------------------------------------*/


/*-------------------------------------------*/
//时钟固定位置显示汉字
void ClockMsg(void)
{
  clr_scr();         // 先清屏 //
  
  CS2=1;
  CS1=0;       // 左屏
  hz_disp16(1,0,xing);       //  星
  hz_disp16(1,16,qi);       //  期
  sz_disp16(3,0,shuzi[2]);       //  2
  sz_disp16(3,8,shuzi[0]);       //  0
  hz_disp16(3,32,nian);     //  年
  hz_disp16(5,32,shi2);     //  时

  CS2=0;
  CS1=1;       // 右屏
  hz_disp16(3,0,yue);      //  月
  hz_disp16(3,32,ri);      //  日
  hz_disp16(5,0,fen);      //  分
  hz_disp16(5,32,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;
	}
}
/*-------------------------------------------*/



/*-------------------------------------------*/
//读出字节子函数
unsigned char 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 + -