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

📄 lcd_funtion.h

📁 主从式总线型SIO系统(多机双向通信)
💻 H
字号:

 //包含常用头文件
#include<reg51.h>		
//#include<stdio.h>
#include<intrins.h>
//#include<absacc.h>

//定义常用数据类型
#define uchar unsigned char	
#define uint unsigned int

//Lcd端口
sbit Lcd_Rs=P2^0;				//Lcd的Rs脚
sbit Lcd_Rw=P2^1;				//Lcd的Rw脚
sbit Lcd_E=P2^2;       //Lcd使能引脚E 单独外接
#define Lcd_Data P0      //Lcd数据口

//************************************

//定义Lcd宏控制相关
#define Lcd_Write_Command		0      // Command
#define Lcd_Write_Data			1      // Data
#define Lcd_Busy 				0x80 //用于检测Lcd状态字中的Busy标识
#define Lcd_Clear_Screen		0x01      // 清屏
#define Lcd_Home  				0x02      // 光标返回原点
//设置显示模式***************************
#define Lcd_Show				0x04    //显示开
#define Lcd_Hide				0x00    //显示关	  

#define Lcd_Cursor				0x02 	//显示光标
#define Lcd_No_Cursor			0x00    //无光标		     

#define Lcd_Flash				0x01    //光标闪动
#define Lcd_No_Fash				0x00    //光标不闪动
//设置输入模式*****************************
#define Lcd_AC_Up				0x02
#define Lcd_AC_Down				0x00      // default

#define Lcd_Move				0x01      // 画面可平移
#define Lcd_No_Move				0x00      //default

//LCD相关函数
//等待空闲函数***************************
uchar Lcd_Wait(void)
{
	Lcd_Rs=0;
	Lcd_Rw=1;	_nop_();
	Lcd_E=1;	_nop_();
//	while(Lcd_Data&Lcd_Busy );//在用仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环,
						 //可能在写该控制字时,该模块没有返回写入完备命令,即Lcd_Data&0x80==0x80
						 //实际硬件时打开此语句
	Lcd_E=0;
	return Lcd_Data;		
}
//向Lcd写入命令或数据***
void Lcd_Write(bit Style, uchar Input)
{
	Lcd_E=0;
	Lcd_Rs=Style;
	Lcd_Rw=0;		_nop_();
	Lcd_Data=Input;	_nop_();//注意顺序
	Lcd_E=1;		_nop_();//注意顺序
	Lcd_E=0;		_nop_();
	Lcd_Wait();	
}
//设置显示模式********
void Lcd_Set_Display(uchar Display_Mode)
{
	Lcd_Write(Lcd_Write_Command, 0x08|Display_Mode);	
}

//设置输入模式*****
void Lcd_Set_Input(uchar Input_Mode)
{
	Lcd_Write(Lcd_Write_Command, 0x04|Input_Mode);
}

//初始化Lcd************************************************************
void Lcd_Init(void)
{
	Lcd_E=0;
	Lcd_Write(Lcd_Write_Command,0x38);           //8位数据端口,2行显示,5*7点阵
	Lcd_Write(Lcd_Write_Command,0x38);
	Lcd_Set_Display(Lcd_Show|Lcd_No_Cursor);    //开启显示, 无光标
	Lcd_Write(Lcd_Write_Command,Lcd_Clear_Screen);   //清屏
	Lcd_Set_Input(Lcd_AC_Up|Lcd_No_Move);       //AC递增, 画面不动
}

//定位坐标 ************************************************************************
void GotoXY(uchar x, uchar y)
{
	if(y==0)
		Lcd_Write(Lcd_Write_Command,0x80|x);
	if(y==1)
		Lcd_Write(Lcd_Write_Command,0x80|(x-0x40));
}
//显示字符串
void Print_Str(uchar *str)
{
	while(*str!='\0')
	{
		Lcd_Write(Lcd_Write_Data,*str);
		str++;
	}
}

 void Print_Char(uchar a)
 {
   Lcd_Write(Lcd_Write_Data,a);	
 }
 
/****************************************************************
**功能:LCD清屏函数										       **
**参数:无     											       **
****************************************************************/
void ClrScreen(void)
{
   GotoXY(0,0);
   Print_Str("                                 ");
   GotoXY(0,1);
   Print_Str("                                 ");	
}

⌨️ 快捷键说明

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