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

📄 1602.c

📁 基于1602字符型LCD显示的51单片机的C程序
💻 C
字号:
/************************************/
/*杭州电子&计算机工作室				*/
/*http://www.hificat.com			*/
/*1602LCD测试程序					*/
/*目标器件:AT89S51					*/
/*晶振:11.0592MHZ					*/
/*编译环境:Keil 7.50A				*/
/************************************/

/*********************************包含头文件********************************/
#include <reg51.h>
#include <intrins.h>

/*********************************端口定义**********************************/
sbit rs	= P2^0;	
sbit rw = P2^1;
sbit ep = P2^2;

/********************************显示数据表*********************************/
unsigned char code dis1[] = {"www.hificat.com"};
unsigned char code dis2[] = {"0571-85956028"};

/*****************************************************************************
函数功能:LCD延时子程序
入口参数:ms
出口参数:
*****************************************************************************/
void delay(unsigned char ms)
{							
	unsigned char i;
	while(ms--)
	{
		for(i = 0; i< 250; i++)
		{
			_nop_();
			_nop_();
			_nop_();
			_nop_();
		}
	}
}

/*****************************************************************************
函数功能:测试LCD忙碌状态
入口参数:
出口参数:result
*****************************************************************************/
bit lcd_bz()
{							
	bit result;
	rs = 0;
	rw = 1;
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	result = (bit)(P0 & 0x80);
	ep = 0;
	return result;	
}

/*****************************************************************************
函数功能:写指令数据到LCD子程序
入口参数:cmd
出口参数:
*****************************************************************************/
void lcd_wcmd(unsigned char cmd)
{						
	while(lcd_bz());			//判断LCD是否忙碌
	rs = 0;
	rw = 0;
	ep = 0;
	_nop_();
	_nop_();	
	P0 = cmd;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;		
}

/*****************************************************************************
函数功能:设定显示位置子程序
入口参数:pos
出口参数:
*****************************************************************************/
void lcd_pos(unsigned char pos)
{						
	lcd_wcmd(pos | 0x80);
}

/*****************************************************************************
函数功能:写入显示数据到LCD子程序
入口参数:dat
出口参数:
*****************************************************************************/
void lcd_wdat(unsigned char dat)	
{							
	while(lcd_bz());			//判断LCD是否忙碌
	rs = 1;
	rw = 0;
	ep = 0;
	P0 = dat;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 1;
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	ep = 0;	
}

/*****************************************************************************
函数功能:LCD初始化子程序
入口参数:
出口参数:
*****************************************************************************/
void lcd_init()
{							
	lcd_wcmd(0x38);			
	delay(1);
	lcd_wcmd(0x0c);		
	delay(1);
	lcd_wcmd(0x06);		
	delay(1);
	lcd_wcmd(0x01);			
	delay(1);
}

/*****************************************************************************
函数功能:主程序
入口参数:
出口参数:
*****************************************************************************/
void main(void)
{
	unsigned char i;
	lcd_init();					// 初始化LCD			
	delay(10);
	lcd_pos(0x01);				//设置显示位置
	i = 0;
	while(dis1[i] != '\0')
	{							
		lcd_wdat(dis1[i]);		//显示字符
		i++;
	}
	lcd_pos(0x42);				// 设置显示位置
	i = 0;
	while(dis2[i] != '\0')
	{
		lcd_wdat(dis2[i]);		// 显示字符
		i++;
	}
	while(1);				
}


⌨️ 快捷键说明

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