📄 lcd_funtion.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 + -