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

📄 1602driver.c

📁 该程序可驱动TLC2543
💻 C
字号:
#include <reg51.h>
//#include <stdlib.h>


#define Port P2

sbit RS = P1^0;
sbit RW = P1^1;
sbit E = P1^2;
//sbit P1_4=P1^4;
//sbit P1_5=P1^5;

unsigned char ReadState_LCD(void);
unsigned char IsBusy_LCD(void);
void WriteData_LCD(unsigned char Data);
void WriteCommand_LCD(unsigned char Code);
void Init_LCD(void);

 void PutStr_LCD(unsigned char *str);
void PutStrXY_LCD(unsigned char x, unsigned char y, unsigned char *str);
void PutIntXY_LCD(unsigned char x, unsigned char y, unsigned Num);
void PutNumXY_LCD(unsigned char x, unsigned char y, unsigned Num, unsigned char Len);
void SetPos_LCD(unsigned char x, unsigned char y);

 


unsigned char ReadState_LCD(void)						//char ReadState_LCD
{
	Port = 0xff;
	RS = 0;
	RW = 1;
	E = 1;

	return Port;
}

unsigned char IsBusy_LCD(void)							//IsBusy_LCD
{
	Port = 0xff;
	RS = 0;
	RW = 1;
	E = 1;

//	return (Port >> 7) & 0x01;
	return Port&0x80;
}

void WriteData_LCD(unsigned char Data)					 //WriteData_LCD
{
	while ( IsBusy_LCD() );

	RS = 1;
	RW = 0;

	Port = Data;

	E = 0;
	E = 1;
	E = 0;
}

void WriteCommand_LCD(unsigned char Code)				 //WriteCommand_LCD
{
	while ( IsBusy_LCD() );

	RS = 0;
	RW = 0;
	Port = Code;
	 
	E = 0;
	E = 1;
	E = 0;
}
   void delay(unsigned time)							   //void delay
{
	while(time--);
}

void Init_LCD(void)										//Init_LCD
{
	delay(15000);
	WriteCommand_LCD(0x38);
	delay(5000);
	WriteCommand_LCD(0x38);
	delay(5000);
	WriteCommand_LCD(0x38);
	delay(5000);
	WriteCommand_LCD(0x38);
	WriteCommand_LCD(0x0f);
	WriteCommand_LCD(0x08);
	WriteCommand_LCD(0x01);
	WriteCommand_LCD(0x06);
	WriteCommand_LCD(0x0c);
	WriteCommand_LCD(0x80);
}


void PutStr_LCD(unsigned char *str)					   //PutStr_LCD
{		
	while(*str)
	{
		WriteData_LCD(*str++);
	}
}

void PutStrXY_LCD(unsigned char x, unsigned char y, unsigned char *str)	//PutStrXY_LCD
{
	SetPos_LCD(x, y);
	PutStr_LCD(str);
}

void PutIntXY_LCD(unsigned char x, unsigned char y, unsigned Num)		//PutIntXY_LCD
{
	unsigned char i = 0;
	unsigned char Len = 1;

	if(Num >= 10)		Len++;
	if(Num >= 100)		Len++;
	if(Num >= 1000) 	Len++;
	if(Num >= 10000)	Len++;

	for(i = 0; i < Len; i++) 
	{
		SetPos_LCD(x + Len - i - 1, y);
		WriteData_LCD(Num % 10 + 48);
		Num /= 10;
	}
}

void PutNumXY_LCD(unsigned char x, unsigned char y, unsigned Num, unsigned char Len) //PutNumXY_LCD
{
	unsigned char i = 0;
	unsigned char Add = ReadState_LCD() & 0x7f;

	for(i = 0; i < Len; i++)
	{
		SetPos_LCD(x + Len - i - 1, y);
		WriteData_LCD(Num % 10 + 48);
		Num /= 10;
	}
}

void SetPos_LCD(unsigned char x, unsigned char y)		  //SetPos_LCD
{
	unsigned char i = y * 0x40 + x;

	WriteCommand_LCD(0x80 + i);
}


⌨️ 快捷键说明

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