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

📄 lcd.c

📁 一个应用了RTX 51 TINY的工程
💻 C
字号:
//bear zhou 编辑
#include <at89x51.h>
#include <lcd.h>
char code int2charLCD[]="0123456789";//感觉code不用的
void write_LCD_command(unsigned char command)
{
	rw=WRITE;
	rs=COMMAND;
	enable=ENABLE;
	P1=command;
	delay100us(20);
	enable=DISABLE;
	rw=1;
}
void write_LCD_data(unsigned char LCDdata)
{
	rw=WRITE;
	rs=DATA;
	enable=ENABLE;
	P1=LCDdata;//不管输入什么,他直接编译成二进制
	delay100us(20);
	enable=DISABLE;
	rw=1;
}
void init_LCD(void)
{
	write_LCD_command(TwoLine_8bit);	//0x38
	write_LCD_command(CURSOR_ON);		//0x0C
	write_LCD_command(CURSOR_RIGHT);	//0x06
}
void clear_LCD(void)
{
	write_LCD_command(CLEAR);
	write_LCD_command(CURSOR_HOME);
}

void display_LCD_string(char *p)
{
	while(*p!='\0')
	{
		write_LCD_data(*p);
		p++;
		
	}
}
void display_LCD_number(unsigned char number)
{
	unsigned char x;
	x=number/100;
	write_LCD_data(int2charLCD[x]);
	x=(number/10)%10;
	write_LCD_data(int2charLCD[x]);
	x=number%10;
	write_LCD_data(int2charLCD[x]);
}
void gotoxy(unsigned char x,unsigned char y)
{
	if(x==1)
		write_LCD_command(GOTO_LINE_1+y);
	else
		write_LCD_command(GOTO_LINE_2+y);
}
void delay100us(unsigned char i)
{
	unsigned char a,j;
	for(a=0;a<i;a++)
	for(j=0;j<34;j++);
}
unsigned char scan(unsigned char* key_v)//51>1,61>4.71>7,81>0,54>A,64>a,74>up,84>down,72>left,73>right
{
	unsigned char i1,i2,j,a,b,c,i=0;
	P0=0x0f;
	b=P0;
	if(b==0x0f) 
	{
		*key_v='\0';
		return 0;
	}
//	gotoxy(2,0);
	for(i1=1;i1<=4;i1++)
	{	

		switch(i1){
			case 1:a=0xfe;break;
			case 2:a=0xfd;break;
			case 3:a=0xfb;break;
			case 4:a=0xf7;break;
			default: break;
		}
		P0=a;
		delay100us(10);
		b=P0;
		c=b;
		delay100us(10);
		b=P0;
		//display_LCD_number(b);
		if(b!=c) return i1;
		b=b>>4;
		for(i2=0;i2<=3;i2++)
		{
			switch(i2){
				case 0:a=b|14;break;
				case 1:a=b|13;break;
				case 2:a=b|11;break;
				case 3:a=b|7;break;
				default: break;
			}
			switch(a){
				default: j=0;break;
				case 0x0e:j=50+i1;
						break;
				case 13:j=60+i1;
					break;
				case 11:j=70+i1;
					break;
				case 7:j=80+i1;
					break;	
			}
			if(j!=0)
			{	
				key_v[i]=value(j);
				key_v[i+1]='\0';
				i++;
			}
		}				
	}
	return 100;
}		
unsigned char value(unsigned char i)
{
	switch(i){
	case 51: return '1';break;
	case 52: return '4';break;
	case 53: return '7';break;
	case 54: return '0';break;
	case 61: return '2';break;
	case 62: return '5';break;
	case 63: return '8';break;
	case 64: return 'l';break;
	case 71: return '3';break;
	case 72: return '6';break;
	case 73: return '9';break;
	case 74: return 'u';break;
	case 81: return 'A';break;
	case 82: return 'a';break;
	case 83: return 'r';break;
	case 84: return 'd';break;
	default: return 0;
	}
}
unsigned char VS_key_V(unsigned char* key_v1,unsigned char* key_v2)
{
	unsigned char i=0;
	while(i!=17)
	{
		if(key_v1[i]!=key_v2[i]) return 0;
		if((key_v1[i]=='\0')&&(key_v2[i]=='\0')) break;
		i++;
		//key_v2++;
	}

	if(i!=17)
	return 1;
	return 0;
}
void StrToStr(unsigned char* key_v1,unsigned char* key_v2)
{
	
	do
	{
		*key_v2=*key_v1;
		key_v1++;
		key_v2++;
	}while(*key_v1!='\0');
	*key_v2='\0';
} 

⌨️ 快捷键说明

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