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

📄 lcd.h

📁 STC单片机程序,步行红绿灯智能控制.有LED显示
💻 H
字号:

#define uchar unsigned char
#define uint unsigned int
#define check 1
#define uncheck 0
//#define DB P0
sfr DB = 0x80;
sbit RS = P2^0;
sbit RW = P2^1;
sbit E  = P2^2;

void setddr(unsigned char y,unsigned char x);

void delayms(unsigned int t)  //延时t毫秒 at 12.0 MHz
{
	uint i;
	while(t--)
	{
		i=1000;
		while(i--);	
	}
}



//检查BF信号
void checkbusy(void)
{
	unsigned char temp;
	DB = 0xFF;
	RW = 1;
	RS = 0;
	E = 1;
	E = 0;
	E = 1;
	do
	{
		temp = DB;
	}while ((temp&0x80)==0x80);
	RW = 0;
}

//1602写命令子程序
void write(bit busy,uchar tempdata)		
{
	if(busy) checkbusy();
	E = 1;
	DB = tempdata;
	RS = 0;
	RW = 0;
	E = 0;
	E = 0;
}

/*****1602写数据子程序*****/
void writeddr(bit busy,uchar tempdata)
{
	if(busy) checkbusy();	
	E = 1;
	DB = tempdata;
	RS = 1;
	RW = 0;
	E = 0;
	E = 0;
}

//初始化:光标闪烁
/*void init_flash(void)
{
	write(check,0x38);
	write(check,0x0d);
	write(check,0x01);		//清屏
	write(check,0x06);
}*/

//初始化:光标不闪烁
void LCD_Init(void)
{
	write(check,0x38);		//选择八口数据传送,两行显示,5*10点阵,加光标
	write(check,0x0c);		//开显示,不显示光标,关光标闪烁
	write(check,0x01);		//清屏
	delayms(30);
	write(check,0x06);		//指针自动加1,禁止滚动
	delayms(30);
}

//写数字
void LCD_Show_Num(unsigned char x)
{
  unsigned char y;
  y=x/10;
  writeddr(check,y+48);
  y=x%10;
  writeddr(check,y+48);
}

//光标移到第y行第x个字符
void LCD_add(unsigned char y,unsigned char x)
{
	checkbusy();
	if(y==1)
		write(check,0x80+x-1);
	else write(check,0xc0+x-1);
}

//在Y行,X列显示字符串
void LCD_Show_Text(uchar *DData)
{
	unsigned char i=0;
	while(DData[i]!='\0')
	{
		writeddr(uncheck,DData[i]);
		i++;
	}
}

void LCD_Line2()
{
	checkbusy();
	write(check,0xc0);
}

void LCD_Show(unsigned char flag)
{
	if(flag==1)
	{
		LCD_Line2();
		LCD_Show_Text("Wait For Request!");
	}

 	if(flag==2)
	{
		LCD_Line2();
		LCD_Show_Text("BUS STOP IN   ");
		LCD_Show_Num(tx);
	}
	
	if(flag==3)
	{
		LCD_Line2();
		LCD_Show_Text("People Walk IN");
		LCD_Show_Num(ty);
	}

	if(flag==5)
	{
		LCD_Line2();
		LCD_Show_Text("BUS GO GO IN  ");
		LCD_Show_Num(tz);
	}

	if(flag==6)
	{
		LCD_Line2();
		LCD_Show_Text("Please Set X: ");
		LCD_Show_Num(x);
	}
	
	if(flag==7)
	{
		LCD_Line2();
		LCD_Show_Text("Please Set Y: ");
		LCD_Show_Num(y);
	}
	
	if(flag==8)
	{
		LCD_Line2();
		LCD_Show_Text("Please Set Y1:");
		LCD_Show_Num(y1);
	}
	if(flag==9)
	{
		LCD_Line2();
		LCD_Show_Text("Please Set z: ");
		LCD_Show_Num(z);
	}
}

⌨️ 快捷键说明

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