t.c

来自「LCD1602.rar」· C语言 代码 · 共 135 行

C
135
字号
#include <reg51.h>

#define cd P3_0
#define rd P3_1
#define wr P3_2

void delay(int c)
	{
	int i,j;
	for(i=0;i<c;i++)
		for(j=0;j<1000;j++)
			;
	}

char rd_state()	//读状态
	{
	char temp;
	P2=0xff;
	cd=1;
	rd=0;
	temp=P2;
	rd=1;
	return(temp);
	}

void rd_enable()	//等待可读写
	{
	char temp;
	temp=rd_state();
	while((temp&0x03)!=0x03)
		temp=rd_state();
	}

void rd_auto()	//等待自动读写
	{
	char temp;
	temp=rd_state();
	while((temp&0x04)!=0x04)
		temp=rd_state();
	}

void wr_auto()	//等待自动写
	{
	char temp;
	temp=rd_state();
	while((temp&0x08)!=0x08)
		temp=rd_state();
	}

/*写命令、写数据命令*********************
数据1、数据2、命令、参数个数*************
*****************************************/
void wr_data(char data1,char data2,char cmd,char num)
	{
	char temp;
	temp=num;
	if(temp==2)
		{
		rd_enable();
		cd=0;
		P2=data1;
		wr=0;
		wr=1;
		}
	 if(temp==2||temp==1)
	 	{
		rd_enable();
		cd=0;
		P2=data2;
		wr=0;
		wr=1;
		}
	rd_enable();
	cd=1;
	P2=cmd;
	wr=0;
	wr=1;
	}

char rd_data()	//读数据
	{
	char temp;
	rd_enable();
	cd=0;
	P2=0xff;
	rd=0;
	temp=P2;
	rd=1;
	return(temp);
	}

void lcd_init()
	{
	wr_data(0x00,0x00,0x40,0x02);	//设置文本显示首地址
	wr_data(0x14,0x00,0x41,0x02);	//设置文本显示宽度
	wr_data(0x40,0x01,0x42,0x02);	//设置图形显示首地址
	wr_data(0x20,0x00,0x43,0x02);	//设置图形显示宽度
	wr_data(0x00,0x00,0xa7,0x00);	//光标形状设置
	wr_data(0x00,0x00,0x80,0x00);	//显示方式设置,“或”
	wr_data(0x00,0x00,0x9c,0x00);	//显示开关设置
	}

void main()
	{
	char i,temp=0,row=0;
	delay(50);
	P3|=0x07;
	lcd_init();
	wr_data(0x00,0x00,0x24,0x02);	//设置写地址
	wr_data(0x00,0x00,0xb0,0x00);	//设置自动写方式
	for(i=0;i<127;i++)
		{

		wr_auto();
		cd=0;
		P2=temp;
		wr=0;
		wr=1;
		temp++;
		P1=temp;
		}
	wr_data(0x00,0x00,0xb2,0x00);	//自动写结束
	wr_data(0x40,0x01,0x24,0x02);	//设置写地址
	wr_data(0x00,0xaa,0xc4,0x01);	//写图像区
	while(1)
		{
		wr_data(row,0x00,0x40,0x02);	//设置文本显示首地址
		delay(40);
		row++;
		if(row>126)
			row=100;
		}

	}

⌨️ 快捷键说明

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