lcd.c

来自「这是利用C51语言编写的读写LCD的程序」· C语言 代码 · 共 76 行

C
76
字号
//使能信号,读状态下,高电平有效;写状态下,下降沿有效
#include<at89x52.h>
#include<absacc.h>
sbit	A0=P2^7;//为高电平时选择的是数据寄存器,为低电平时选择的是指令寄存器
sbit	CS1=P2^5; //使能信号
sbit	CS2=P2^4;
sbit	LCDRW=P2^6;//高读,低写
sfr		DATA=0x90;
#define	BUSY	0x90;
#define	DISPON	0x3f;
#define	DISPOFF	0x3e;
void	delay(unsigned	char	time)//delay5ms
{unsigned	char	i=250,j=20;
	while(time--)
	{while(i--)
	{
	while(j--);}
	}
}
void	wrcmdl(unsigned	char	c1)
{	unsigned	char	data	in;
	//CS1=1;A0=1;LCDRW=1;
	while(1)
	{in=BUSY;
	if((in&0x80)==0)	break;}
	//A0=0;
	//LCDRW=0;
	//CS1=0;
	DATA=c1;
}
void	wrcmdr(unsigned	char	c2)
{	unsigned	char	data	in;
	//CS1=1;A0=1;LCDRW=1;
	while(1)
	{in=BUSY;
	if((in&0x80)==0)	break;
	}
	//A0=0;
	//LCDRW=0;CS2=0;
	DATA=c2;
}
void	lcddata(unsigned	char	d)
{	unsigned	char	data	in;
	//A0=1;LCDRW=1;
	while(1)
	{in=BUSY;
	if((in&0x80)==0)	break;}
	//CS1=1;
//	A0=0;
//	LCDRW=0;
	DATA=d;
}	
void	lcdintall()
{	DATA=DISPOFF;
	wrcmdl(0x3c);
	wrcmdr(0x3c);
	wrcmdl(0x0e);
	wrcmdr(0x0e);
	wrcmdl(0x06);
	wrcmdr(0x06);
	
	wrcmdl(0x01);
	wrcmdr(0x01);
}			
void	main()
{	unsigned	char	data	i=50,j=0;
	delay(8);
	lcdintall();
	while(i--)
	{lcddata(j++);}
	i=50;
	}



⌨️ 快捷键说明

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