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

📄 lcd.c

📁 1602液晶显示
💻 C
字号:
/*****************************************LCD 模块*****************************************
*功能描述:显示模块
*
*调用接口:先调用lcd_init(),然后调用lcd_display()显示lcd_line0和lcd_line1的内容
*
*作	   者:廖聪慧
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
********************************************************************************************/
#include<ht46ru232.h>
#include"lcd.h"

/******************************************************************************************
* 函数名称    :lcd_wait_ready
* 功能描述    :判断lcd是否处于忙状态,并等待到其不忙
* 参数        :  参数名称:无	输入/输出	类型		描述
* 
* 返回值      :无
* 创建日期    :2009-3-25
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
********************************************************************************************/
void lcd_wait_ready()
{
	do
	{
		lcd_data_port_ctrl=0x00;
		RS_CTRL=0;
		RS=0;
		RW_CTRL=0;
		RW=1;
		EN_CTRL=0;
		EN=0;
		_delay(3);
		EN=1;
		lcd_data_port=0xff;
		lcd_data_port_ctrl=0xff;	
	}while(busy);
	lcd_data_port_ctrl=0x00;
}


/******************************************************************************************
* 函数名称    :lcd_write_cmd
* 功能描述    :向lcm写入lcd_data_port的命令
* 参数        :  参数名称:无	输入/输出	类型		描述
* 
* 返回值      :无
* 创建日期    :2009-3-25
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
********************************************************************************************/
void lcd_write_cmd()
{
	RS_CTRL=0;
	RS=0;
	_delay(1);
	RW_CTRL=0;
	RW=0;
	_delay(1);
	EN_CTRL=0;
	EN=0;
	lcd_wait_ready();
	EN=1;	
}

/******************************************************************************************
* 函数名称    :lcd_write_data
* 功能描述    :向lcm写入lcd_data_port的数据
* 参数        :  参数名称:无	输入/输出	类型		描述
* 
* 返回值      :无
* 创建日期    :2009-3-25
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
********************************************************************************************/
void lcd_write_data()
{
	RS_CTRL=0;
	RS=1;
	_delay(1);
	RW_CTRL=0;
	RW=0;
	_delay(1);
	EN_CTRL=0;
	EN=0;
	lcd_wait_ready();
	EN=1;
}

/******************************************************************************************
* 函数名称    :lcd_init
* 功能描述    :初始化lcd
* 参数        :  参数名称:无	输入/输出	类型		描述
* 
* 返回值      :无
* 创建日期    :2009-3-25
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
********************************************************************************************/
void lcd_init()
{
	lcd_data_port_ctrl=0;
	lcd_data_port=0x01;
	;
	lcd_write_cmd();
	lcd_data_port=0x38;
	lcd_write_cmd();
	lcd_data_port=0x0f;
	lcd_write_cmd();
	lcd_data_port=0x06;
	lcd_write_cmd();
}

/******************************************************************************************
* 函数名称    :lcd_display
* 功能描述    :显示两行数据
* 参数        :  参数名称:无	输入/输出	类型		描述
* 
* 返回值      :无
* 创建日期    :2009-3-25
*----------------------------------------修改历史------------------------------------------
* 当前版本    : 			 修改人:                  修改日期:
* 修改说明    :
********************************************************************************************/
void lcd_display()
{
	unsigned char lcd_index;
	
	//写控制口,显示第一行
	lcd_data_port_ctrl=0x00;
	lcd_data_port=0x00;
	lcd_data_port|=0x80;	
	lcd_write_cmd();
	
	//显示字符
	for(lcd_index=0 ; lcd_index < 16 ; lcd_index++)
	{
		lcd_data_port_ctrl=0x00;
		lcd_data_port=lcd_line0[lcd_index];
		lcd_write_data();
	}
	
	//写控制口,显示第二行
	lcd_data_port_ctrl=0x00;
	lcd_data_port=0x40;
	lcd_data_port|=0x80;
	lcd_write_cmd();
	
	//显示第二行字符
	for(lcd_index=0 ; lcd_index < 16 ; lcd_index++)
	{
		lcd_data_port_ctrl=0x00;
		lcd_data_port=lcd_line1[lcd_index];
		lcd_write_data();
	}
}

void main()
{
	unsigned char i,j;
	for(i=0 ; i < 16 ; i++)
	{
		lcd_line0[i]='a'+i;
		lcd_line1[i]='z'-i;
	}
	lcd_init();
	
	lcd_display();
	for(i=0xff ; i > 0 ; i--)
	{
		for(j=0x20 ; j > 0 ; j--)
		{
			_delay(5000);
		}
	}
	
	for(i=0 ; i < 16 ; i++)
	{
		lcd_line0[i]='z'-i;
		lcd_line1[i]='a'+i;
	}
	
	lcd_display();
	while(1);
}

⌨️ 快捷键说明

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