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

📄 lcd_char.h

📁 There a lot of program can be used it is wonderful
💻 H
字号:
#ifndef LCD_2003_7_21
#define LCD_2003_7_21

#define _Delay1ms
#include "User.H"

sbit LCDLight=P2^7;
sbit LcdRs=P2^4;
sbit LcdRw=P2^5;
sbit LcdEn=P2^6;
sbit ACC_7=ACC^7; 


void Write(byte style, byte input);   // 向LCD写入命令或数据
#define COMMAND			0         // style
#define DATA			1         // style
#define CLEAR_SCREEN			0x01      // 清屏
#define HOMING  		0x02      // 光标返回原点

#define PutChar(x) Write(DATA,x)
#define ClearScreen();  Write(COMMAND,CLEAR); Delay1ms(100); 


void GotoXY(byte x, byte y);          // 跳到LCD的某个坐标点


void SetDisplay(byte DisplayMode);    // 设置显示模式
/************* DisplayMode ***************/
#define SHOW			0x04      
#define HIDE			0x00      // default	  

#define CURSOR			0x02 
#define NO_CURSOR		0x00      // default		     

#define FLASH			0x01      // 光标闪动
#define NO_FLASH		0x00      // default
/*********** End DisplayMode *************/ 


void SetInput(byte InputMode);        // 设置输入模式
/************** InputMode ****************/
#define AC_UP			0x02
#define AC_DOWN			0x00      // default

#define MOVE			0x01      // 画面可平移
#define NO_MOVE			0x00      //default
/************ End InputMode **************/


void Move(byte object, byte direction); // 移动光标或屏幕 
#define CURSOR		0x02      
#define SCREEN		0x08
#define LEFT		0x00
#define RIGHT		0x04

void Print(byte *str);       // 显示字符串str
void LCD_Initial();          // 液晶初始化函数
void LoadChar(byte user[8], byte place);   //加载自定义点阵信息

char Wait()
{
	LcdRs=0;
	LcdRw=1;	_nop_();
	LcdEn=1;	_nop_();
	do{ ACC=P0;
		}while(ACC_7==1);	
	LcdEn=0;
	Delay1ms(1);
	return ACC;		
}

void Write(byte style, byte input)
{
	LcdRs=style;
	LcdRw=0;	_nop_();
	LcdEn=1;	_nop_();
	P0=input;	_nop_();
	LcdEn=0;	_nop_();
	Wait();	
}

void GotoXY(byte x, byte y)
{
	if(y==0)
		Write(COMMAND,0x80|x);
	if(y==1)
		Write(COMMAND,0x80|(x-0x40));
}

void SetDisplay(byte DisplayMode)
{
	Write(COMMAND, 0x08|DisplayMode);	
}

void SetInput(byte InputMode)
{
	Write(COMMAND, 0x04|InputMode);
}

void Move(byte object, byte direction)
{
	if(object==CURSOR)
		Write(COMMAND,0x10|direction);
	if(object==SCREEN)
		Write(COMMAND,0x18|direction);
}

void Print(byte *str)
{
	while(*str!='\0')
	{
		Write(DATA,*str);
		str++;
	}
}

void LCD_Initial()
{
	LcdEn=0;
	Delay1ms(80);
	Write(COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
	Delay1ms(10);
	Write(COMMAND,0x38);
	Delay1ms(10);
	SetDisplay(SHOW|NO_CURSOR);    //开启显示, 无光标
	Write(COMMAND,CLEAR_SCREEN);          //清屏
	SetInput(AC_UP|NO_MOVE);       //AC递增, 画面不动
}

void LoadChar(byte user[8], byte place)
{
	byte i;
	Write(COMMAND,0x40|(place*8));
	for(i=0; i<8; i++)
		Write(DATA,user[i]);
}

#endif

⌨️ 快捷键说明

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