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

📄 lcd1602.c.bak

📁 AT89C51单片机控制LCD1602的仿真程序
💻 BAK
字号:
#include<reg51.h>
#include<intrins.h>

/****************************************************************************
内存区定义
****************************************************************************/
sbit BF=P0^7; //1602状态信号 高电平忙状态,低电平闲状态(可以读写)
sbit RS=P2^7; //1602数据指令选择(低电平指令/状态,高电平数据)
sbit RW=P1^1; //1602读写选择 (低电平写,高电平读)
sbit ENABLE=P1^0; //1602使能信号(写1602的时候用下降沿脉冲)
/**************************************************************************
数据区定义
**************************************************************************/
unsigned char shujv[]="Hello World!    Hello Mcu!";
/**************************************************************************
//延时函数
**************************************************************************/
void yanshi(int sj)         
{
	int i,j;
	for (i=0;i<sj;i++);
	for (j=0;j<248;j++);
}
/**************************************************************************
//判忙函数
**************************************************************************/
void busy()
{
	do
	{
	P0=0xff;
	RS=0;
	RW=1;
	ENABLE=0;
	yanshi(1);
	ENABLE=1;
	}while(BF);
}
/**************************************************************************
//写操作命令函数
**************************************************************************/
void write_cmd(unsigned char Commandaddr)
{
	busy();
	RS=0;
	RW=0;
	ENABLE=1;
	P0=Commandaddr;
	ENABLE=0;
}
/**************************************************************************
//初始化1602函数
**************************************************************************/
void init_lcd()
{
	write_cmd(0x01);  //清显示,指令码01H,光标复位到地址00H位置
	write_cmd(0x38);	//功能设置
	write_cmd(0x0c);	//显示开关控制
	write_cmd(0x06);	//光标和显示模式设置
}

/**************************************************************************
//写显示数据函数
**************************************************************************/


void write_data(unsigned char Dataaddr)
{
	busy();
	RS=1;
	RW=0;
	ENABLE=1;
	P0=Dataaddr;
	yanshi(1);
	ENABLE=0;
	yanshi(1);
	}
void main(void)
{
	int i;

	init_lcd();
	
	write_cmd(0x80);
	while(shujv[i] != '\0')
	{
	write_data(shujv[i]);
	i++;
	if (i==16)
	write_cmd(0xc0);
	}
}	 

⌨️ 快捷键说明

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