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

📄 lcd.c

📁 数据采集系统的好参考资料,高精度的传感器采集系统
💻 C
字号:
//-----------------------------------------------------
//			copyright by wangmeng 2005.8.22
//-----------------------------------------------------
#include"reg51.h"
sbit di=P3^5; 				//RS 1数据/0命令选择端
sbit rw=P3^4; 				//WR 1读/0写选择端
sbit en=P3^3; 				//E 
#define LCMPORT P1			//数据端口
//------------------------------------------------------
//函数:void checkstate(void)
//功能:检测液晶是否处于忙状态
//------------------------------------------------------
void checkstate(void)
{
   	unsigned char dat;
   	di=0;
   	rw=1;
   	do
	{
     	en=1; dat=LCMPORT; en=0;
     	dat=0x80 & dat; //仅当第7位为0时才可操作
    }while(!(dat==0x00));
}
//-----------------------------------------------------
//函数:void sendcmd(unsigned char command)
//功能:送命令码到液晶
//参数:把命令字传送到液晶中
//-----------------------------------------------------
void sendcmd(unsigned char command)
{
   	checkstate();
   	rw=0;di=0;
   	en=1;
   	LCMPORT=command;
   	en=0;
}
//------------------------------------------------------
//函数:void senddata(unsigned char dat)
//功能:送数据到液晶
//参数:把命数据传送到液晶中
//------------------------------------------------------
void senddata(unsigned char dat)
{
   	checkstate();
   	rw=0;di=1;
   	en=1;
   	LCMPORT=dat;
   	en=0;
}
//------------------------------------------------------
//函数:void Write_char(unsigned char hanzi)
//功能:将要显示的汉字输入液晶
//参数:向液晶里写入汉字
//------------------------------------------------------
void Write_char(unsigned char hanzi)
{
   	senddata(hanzi);
}
void Write_str(char *str) 
{
   	char *s;
   	for(s=str;*s!=0x00;s++)
      	Write_char(*s);
} 
//------------------------------------------------------
//函数:void Lcd_init(void)
//功能:初始化LCM
//------------------------------------------------------
void Lcd_init(void)
{
   	sendcmd(0x30);//命令格式详见函数SetShowMode()
   	sendcmd(0x0d);//指令码00001DCB
                  //D控制整体显示的开关1为开显示0为关显示;
                  //C控制光标的开与关1为有光标0为无光标;
				  //B控制光标是否闪烁1为闪烁0不闪烁。
   	sendcmd(0x01);//清除显示内容
}
//----------------------------------------------------------
//函数:void Scr_clr(void)
//功能:清显示屏幕
//----------------------------------------------------------
void Scr_clr(void)
{
	sendcmd(0x01);
}
//-----------------------------------------------------------
//函数:void Set_addr(unsigned char line,unsigned char colum)
//功能:在指定地址写入汉字
//参数:line写入的行,colum写入的列
//-----------------------------------------------------------
void Set_addr(unsigned char line,unsigned char colum)
{
   	unsigned char addr;
   	switch(line)
	{
     	case 1:
	   		addr=0x00+(colum-1);break;
	 	case 2:
	   		addr=0x10+(colum-1);break;
	 	case 3:
	   		addr=0x08+(colum-1);break;
	 	case 4:
	   		addr=0x18+(colum-1);break;
	 	default:
	   		break;
	}
   	addr=addr|0x80;  //命令码为10xxxxxx
   	sendcmd(addr);
	sendcmd(0x0c);		//关闭光标
}
//---------------------------------------------------------
//函数原型;void ClearGrap(void)
//函数功能;清除绘图显示RAM
//函数参数;无
//---------------------------------------------------------
void Clr_grap(void) 
{
   	unsigned char x,y;
   	sendcmd(0x34);   			//扩展功能设定
   	for(x=0;x<16;x++) 
   	{
	   	for(y=0;y<32;y++)
	   	{
	      	sendcmd(0x80+y); 	//先送y的坐标
	      	sendcmd(0x80+x); 	//再送x的坐标
	      	senddata(0x00);senddata(0x00);
		}
	 }
   	sendcmd(0x30);  			//基本功能设定
}
//---------------------------------------------------------------
//函数:void DrawGrap(uchar x,uchar y,uchar hdata,uchar ldata)
//功能:在用户定义的坐标位置画长度为16的点
//参数:x,y为坐标;ldata,hdata为要写的数据
//---------------------------------------------------------------
void Draw_grap(unsigned char x,unsigned char y,unsigned char ldata,unsigned char hdata) 
{
   sendcmd(0x34);   //扩展功能设定
   sendcmd(0x80+y);
   sendcmd(0x80+x);
   senddata(ldata);senddata(hdata);
   sendcmd(0x30);  //基本功能设定
}
void Open_grap(void)
{
	sendcmd(0x36); //打开绘图RAM
}
//---------------------------------------------------------
//函数:void Open_cur(void)
//功能:打开光标           
//---------------------------------------------------------
void Open_cur(void)
{
	sendcmd(0x0d);
}
//---------------------------------------------------------
//函数:void Close_cur(void)
//功能:关闭光标
//---------------------------------------------------------
void Close_cur(void)
{
	sendcmd(0x0c);
}

⌨️ 快捷键说明

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