源代码如下:

#include<reg51.h>
#include<intrins.h>
#define out P0
sbit RS=P2^0;
sbit RW=P2^1;
sbit E =P2^2;          //定义控制引脚

//延时函数
void delay(unsigned long n)
{
	while(n)
	{
		_nop_();
		n--;
	}
}

//检查当前1602是否处于忙状态
void LCDcheckbusy(void)
{
	unsigned char dt;
	do
	{
		dt=0xff;
		E=0;
		RS=0;
		RW=1;
		E=1;
		dt=out;
	}while(dt&0x80);
	E=0;
}

//LCD写命令函数
void LCDwritecmd(unsigned char com)
{
	LCDcheckbusy();
	E=0;
	RS=0;
	RW=0;
	out=com;
	E=1;
	_nop_();
	E=0;
	delay(1);
}

//LCD显示函数
void LCDwritedata(unsigned char dat)
{
	LCDcheckbusy();
	E=0;
	RS=1;
	RW=0;
	out=dat;
	E=1;
	_nop_();
	E=0;
	delay(1);
}

void LCDstr(char *str)
{
	while(*str)
	{
		LCDwritedata(*str);
		str++;
	}
}

//LCD初始化函数
void LCDinitial(void)
{
	LCDwritecmd(0x38);
	LCDwritecmd(0x0c);
	LCDwritecmd(0x06);
	LCDwritecmd(0x01);
	delay(1);
}

//主函数,1602显示单个字符和字符串
void main()
{
	unsigned char *str="hello world!";	  //定义要显示的字符串
	unsigned char code temp[]="hello world!";	  //定义要显示的字符串

	LCDinitial();

	LCDwritecmd(0x80);     //在第一行显示
	LCDwritedata('1');     //显示单个字符     

	LCDwritecmd(0x80+0x40);      //在第二行显示

//	LCDstr("hello world!");

//	LCDstr(str);

	LCDstr(temp);

	while(1);
}




电路图及运行结果如下:
在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐