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

📄 汉字液晶2.c

📁 串行通信_发送机和汉字液晶显示程序,紧供参考.
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit E = P2^0;
sbit RW = P2^1;
sbit RS = P2^2;
sbit L = P2^3;
sbit R = P2^4;
sbit f = P1^7;
sbit Busy = P0^7;
sbit p3_7 = P3^7;
sbit p3_6 = P3^6;
uchar jiang[40];
uchar flag = 0;
void chkbusy(void);
void write_com(uchar cd);
void write_data(uchar cd);
void display(uchar page,uchar col,uchar *temp);
void chkbusy(void);
void display_sum(int x);
uint sum,k = 0,xx;
unsigned char  code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f
};
void delay(uchar x)
{
	uchar i,j;
	for (i = 0; i < x; i++)
	for (j = 0; j < 110; j++);
}  
void initLCD(void)
{
	write_com(0x3f);
	write_com(0xc0);
	write_com(0xb8);
	write_com(0x40);
}

void chkbusy(void)
{
	E = 1;
	RS = 0;
	RW = 1;
	P0 = 0xff;
	while (!Busy);
}

void write_com(uchar cd)
{
//	chkbusy();
	E = 1;
	RW = 0;
	RS = 0;
	P0 = cd;
	E = 1;
	E = 0;
}

void write_data(uchar cd)
{
//	chkbusy();
	E = 1;
	RW = 0;
	RS = 1;
	P0 = cd;
	E = 1;
	E = 0;
} 

void display(uchar page,uchar col,uchar *temp)
{
	uchar j;
	L = 0;
	R = 1;
	if (col >= 0x80)
	{
		R = 0;
		L = 1;
		col -= 0x40;
	}
	write_com(page);
	write_com(col);
	for (j = 0; j < 16; j++)
		write_data(temp[j]);
	write_com(page + 1);
	write_com(col);
	for (j = 16; j < 32; j++)
		write_data(temp[j]);
}

void init_com(void)
{
/*
	TMOD = 0x20;
	PCON = 0x00;
	SCON = 0xc0;
	TH1 = 0xfd;
	TR1 = 1;
	ET1 = 0;
	ES = 1;
	EA = 1;	 */
	delay(100);
	EA = 0;
	SCON = 0x50;
	TMOD = 0x20;
	PCON = 0x00;
	TR1 = 1;
	ES = 1;
	TH1 = 0xfd;
	EA = 1;
}

void main()
{
	initLCD();
	init_com();
	xx = 0;
	sum = 0;	
//	P1 = 0x00;
	while (1)
	{
		if (sum >= 32)
		{
			   	display(0xb8,0x40,jiang);
	//		display(0xba,0x40,a);
		//	while(1);
		} 
//		P1 = sum;
		display_sum(xx);
	}

}


void display_sum(int x)
{
	int ge,shi;
	ge = x % 10;
	shi = x / 10;
	p3_7 = 0;
	P1 = tab[ge];
	delay(2);
	p3_7 = 1;
	p3_6 = 0;
	P1 = tab[shi];
	delay(2);
	p3_6 = 1;
}
void com_rupt() interrupt 4
{
	if (RI == 1)
	{
		sum++;
		xx++;
		RI = 0;
		jiang[xx-1] = SBUF;
	 	SBUF = jiang[xx-1];
	}
	else if (TI == 1)
	{
		TI = 0;
	}
}

⌨️ 快捷键说明

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