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

📄 液晶显示程序.txt

📁 LCD显示程序
💻 TXT
字号:

*连线图:
*  DB0---DPROT.0  DB4---DPROT.4    RS-------------P2.5
*  DB1---DPROT.1  DB5---DPROT.5    RW-------------P2.6
*  DB2---DPROT.2  DB6---DPROT.6    E--------------P2.7
*  DB3---DPROT.3  DB7---DPROT.7    VLCD接10K可调电阻到GND*
*80C51的晶振频率为12MHz
*液晶显示程序
***************************************************/
#include "reg51.h"
#include<absacc.h>
#include <intrins.h>
#define DPORT  P0
#define uchar unsigned char
sbit	RS	=	P2^5;
sbit	RW	=	P2^6;
sbit	E	=	P2^7;

uchar Xpos;		//列方向地址指针
uchar Ypos;		//行方向地址指针


#define NoDisp	0
#define NoCur	1
#define CurNoFlash	2
#define CurFlash	3
/*延时程序
  由Delay参数确定延迟时间
*/

void LcdWcn(uchar);
void LcdWc(uchar);
void WriteChar(uchar);
void LcdPos();
void LcdWd(uchar);
void LcdWdn(uchar);


void mDelay(unsigned int Delay)	
{	unsigned int i;
	for(;Delay>0;Delay--)
	{	for(i=0;i<124;i++)
		{;}
	}
}

/*光标设置命令
Cur 为设定光标参数
*/
void SetCur(uchar Cur)
{	switch(Cur)
	{	case 0x0:
		{	LcdWc(0x08);	//关显示
			break;
		}
		case 0x1:
		{	LcdWc(0x0c);	//开显示但无光标
			break;
		}
		case 0x2:
		{	LcdWc(0x0e);	//开显示有光标但不闪烁
			break;
		}
		case 0x3:
		{	LcdWc(0x0f);	//开显示有光标且闪烁
			break;
		}
		default: break;
	}
}
/*清屏命令
*/
void ClrLcd()
{	LcdWc(0x01);	
}
/*在指定的行与列显示
*/
void WriteChar(uchar c)
{	LcdPos();
	LcdWd(c);
}
/*正常读写操作之前检测LCD控制器
*/
void WaitIdle()
{	uchar tmp;
	DPORT=0xff;
	RS=0;
	RW=1;
	E=1;
	_nop_();
	for(;;)
	{	tmp=DPORT;
		tmp&=0x80;
		if(tmp==0)
			break;
	}
	E=0;
}

/*不检测忙的写字符子程序
*/
void LcdWdn(uchar c)
{	
	RS=1;
	RW=0;
	DPORT=c;	//写入待写字符
	E=1;
	_nop_();
	E=0;
}
/*带忙检测的写字符子程序
*/
void LcdWd(uchar c)
{	WaitIdle();
	LcdWdn(c);
}

/*检测忙信号的送控制字子程序*/
void LcdWcn(uchar c)
{	RS=0;
	RW=0;
	DPORT=c;
	E=1;
	_nop_();
	E=0;
}	
/*检测忙信号的送控制字子程序*/
void LcdWc(uchar c)	
{	WaitIdle();
	LcdWcn(c);
}
void LcdPos()
{	uchar tmp;
	Xpos&=0x0f;	//16xx型液晶的范围是0~15
	Ypos&=0x01;	//Y的范围是0~1
	tmp=Xpos;
	if(Ypos==1)
	{	tmp+=0x40;
	}
	tmp|=0x80;
	LcdWc(tmp);
}

/*LCD的复位程序
*/
void RstLcd()	
{	mDelay(15);	//延时15ms
	LcdWcn(0x38);
	mDelay(5);
	LcdWcn(0x38);
	mDelay(5);
	LcdWcn(0x38);
	
	LcdWc(0x38);
	LcdWc(0x08);
	LcdWc(0x01);
	LcdWc(0x06);
	LcdWc(0x0c);
}

void WriteString(char s[])
{	uchar pS=0;
	for(;;)
	{	WriteChar(s[pS]);
		pS++;
		if(s[pS]==0)
			break;
		if(++Xpos>=15)	//每行最多显示16个字符
			break;
	}
}
		
void main()
{	uchar s1[]="Hellow World!";
	RstLcd();	//复位LCD
	ClrLcd();
	SetCur(CurFlash);	//光标显示且闪烁
	Xpos=2;
	Ypos=1;
	WriteString(s1);
	for(;;)
	{;}
}

⌨️ 快捷键说明

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