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

📄 lcd.h

📁 12864LCD单片机程序,包括写入中文字符以及输出数字等
💻 H
📖 第 1 页 / 共 2 页
字号:
****************************************************************************/void WriteCmd12864(uchar lcd_cmd){	int i; 	LCD12864_RS=LOW;				LCD12864_RW=LOW;		i = 1;				//TAS	while (i>0) i--;	LCD12864_EN=HIGH;			i = 1;				//TPW	while (i>0) i--;	LCD12864_DATA=lcd_cmd;	i = 1;	while (i>0) i--;		//TDSW	LCD12864_EN=LOW;}/****************************LCD12864Init************************************LCD初始化子程,包括清屏、设定功能等入口参数:无出口参数:无****************************************************************************/void LCD12864Init(){	delay_ms(50);	WriteCmd12864(FUN_MODE);	delay_ms(1);	WriteCmd12864(FUN_MODE);	delay_ms(1);	WriteCmd12864(DISPLAY_ON);	delay_ms(1);	WriteCmd12864(CLEAR_SCREEN);	delay_ms(20);}/***************************LCD12864Clear************************************LCD清屏子程入口参数:无出口参数:无****************************************************************************/void LCD12864Clear(void){	ReadBusy();	WriteCmd12864(CLEAR_SCREEN);	delay_ms(5);}/************************** DisplayCgrom ************************************显示字符串子程入口参数:uchar addr,uchar *hz,addr代表要显示字符串位置的首地址,*hz代表指向字符串数据的指针出口参数:无****************************************************************************/void DisplayCgrom(uchar addr,uchar *hz){	ReadBusy();	WriteCmd12864(addr);			//写入初始地址,此后地址指针由LCD自动加1	ReadBusy();	while(*hz!='\0')			//连续写入数据,直到'\0'时止	{		WriteData12864(*hz);		hz++;		ReadBusy();	}} /************************* DisplayOneChar ***********************************显示单个字符子程入口参数:uchar addr,uchar hz,addr代表要显示的字符位置地址,hz代表字符数据出口参数:无****************************************************************************/void DisplayOneChar(uchar addr,uchar hz){	ReadBusy();	WriteCmd12864(addr);			//写入地址	ReadBusy();	WriteData12864(hz);			//写入数据}/*****************************GdramOn***************************************开启图形显示子程入口参数:无出口参数:无****************************************************************************/void GdramOn(void){	ReadBusy();	WriteCmd12864(0x36);}/*****************************GdramOff***************************************关闭图形显示子程入口参数:无出口参数:无****************************************************************************/void GdramOff(void){	ReadBusy();	WriteCmd12864(0x34);}/*****************************ClearGdram*************************************对图形显示清屏子程入口参数:无出口参数:无****************************************************************************/void ClearGdram(void){    	uchar x,y,i;	for(i=0;i<9;i=i+8)	for(y=0;y<=31;y++)	{		for(x=0;x<=7;x++)		//按地址顺序,对每一个RAM存储空间都写入0x0000		{			GdramOff();			WriteCmd12864(0x80+y);			ReadBusy();			WriteCmd12864(0x80+x+i);			ReadBusy();			WriteData12864(0x00);			ReadBusy();			WriteData12864(0x00);		    	GdramOn();		}	}	WriteCmd12864(0x30);}/****************************DisplayGdram***********************************显示图形子程入口参数:uchar addr_x(首地址x坐标),uchar addr_y(首地址y坐标),uchar *hz(指向数据的指针)出口参数:无****************************************************************************/void DisplayGdram(uchar addr_x,uchar addr_y,uchar *hz){	uchar x,y,i;	for(i=0;i<9;i=i+8)	for(y=0;y<=31;y++)	{		for(x=0;x<=7;x++)		{			GdramOff();			WriteCmd12864(addr_y+y);			ReadBusy();			WriteCmd12864(addr_x+x+i);			ReadBusy();			WriteData12864(*hz);			hz++;			ReadBusy();			WriteData12864(*hz);			hz++;			GdramOn();		}	}                                                                                                                                                                                           	WriteCmd12864(0x30);}/****************************Cal_length***********************************计算十进制数长度入口参数:uchar data_dec(数据)出口参数:数据长度****************************************************************************/uchar Cal_length(uint data_dec){    uchar lengthofdata=1;	while(data_dec/10>0)	{			lengthofdata++;            data_dec=data_dec/10;	}    	return lengthofdata;}/****************************Displayarry***********************************/void Displayarry(uchar addr,uint data_dec,uchar length){	uchar i,arry[10];	for(i=0;i<length;i++)	{		arry[i] = data_dec/pow(10,length-i-1) + 0x30;        data_dec = data_dec - (arry[i]-0x30)*pow(10,length-i-1);	}    arry[length]='\0'; 	DisplayCgrom(addr,&arry);}/****************************DisplayDec***********************************显示十进制数入口参数:uchar addr(首地址),uchar data_dec(要显示的数据)出口参数:无****************************************************************************/void DisplayDec(uchar addr,uint data_dec){	Displayarry(addr,data_dec,Cal_length(data_dec));}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -