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

📄 19264cv0_1.c.bak

📁 V型机LCD程序2005-11-5,V型机LCD程序2005-11-5
💻 BAK
📖 第 1 页 / 共 5 页
字号:
			LCDDIIO=1;
			p1tune(mcs138=RAMCS);
			temphi = *(discodeprt+j+i*24);
			if(temphi==0x0a)
			{	
				for(;i<4;i++)
				{	for(;j<24;j++)
					Dispchar(i*2,j,0x20,0);
					j=0;
				}
				break;
			}
			if(temphi<0x7f)
				Dispchar(i*2,j,temphi,0);
			else
				{if(j==23)  
					{Dispchar(i*2,j,0x20,0);continue;}
				templow=*(discodeprt+(++j)+i*24);
				disromdata(temphi,templow);
				disdatatune();
				Dispchin(i*2,(j-1),0);
				//Dispchin(i*2,(j-1),temphi,templow,0);
				}
		}
		Feedingdog();
		LCDRWIO=1;
		LCDDIIO=1;
		p1tune(mcs138=RAMCS);
		for(j=0,temphi=0;j<24;j++)
		{	// 检测此行有多少个单字节数
			templow=*(discodeprt+j+i*24);
			if(templow<0x7f) temphi++;
		}
		templow = temphi%2;	//根据单字节数 调整指针是否减1
		if(templow==1)discodeprt--;
	}
}
*/

/*void disnonews(void)
{	// 显示"无 数 据 " 信息
//extern uchar code eaxmine2;
uchar 	data i=0,j=0,temp=0;
	displaynop(); lcdclose(); lcdiniton();//开显示
	disromdata(0xce,0xde);
	disdatatune();
	Dispchin(2,6,0);
//	Dispchin(2,6,0xce,0xde,0);
	disromdata(0xca,0xfd);
	disdatatune();
	Dispchin(2,10,0);
//	Dispchin(2,10,0xca,0xfd,0);
	disromdata(0xbe,0xdd);
	disdatatune();
	Dispchin(2,14,0);
//	Dispchin(2,14,0xbe,0xdd,0);
	for(i=0,j=4;i<16;i++)
	{	temp = eaxmine2[i++];
		disromdata(temp,eaxmine2[i]);
		disdatatune();
		Dispchin(5,j,0); j +=2;
	}

}
*/
void dispnewsnumb(void)
{		// 显示接收信息的条数、以及未读信息的条数。
uchar data temp=0;
uchar * discodeprt;
extern uchar code screen1[24];
	discodeprt=screen1;
	displayline(6,discodeprt,0);

	temp=InforTotal; //总的信息计数器
	Dispchar(6,4,(((temp/10)|0x30)),0);
	Dispchar(6,5,((temp%10)|0x30),0);

	temp=NoReadInfoCnt;//未读信息计数器
	Dispchar(6,14,((((temp/10)&0x0f)|0x30)),0);
	Dispchar(6,15,(((temp%10)&0x0f)|0x30),0);
}
void dispdate(void)
{	// 显示 “年 月 日”
uchar  data i,j,temp;
	Feedingdog();
	for (i=0,j=2;i<9;i++)
	{
		if((i==2)||(i==6)||(i==8))
		{	if(i==8)
				Dispchar(0,i+7,0x20,0);
			if(i==2)
			{	//Dispchar(0,i+7,0x2f,0);	// 显示“/”
				disromdata(0xd4,0xc2);	// 显示“月”
				disdatatune();
				Dispchin(0,i+7,0);i++;
			}
			if(i==6)
			{	//Dispchar(0,i+7,0x2f,0);	// 显示“/”
				disromdata(0xc8,0xd5);	// 显示“月”
				disdatatune();
				Dispchin(0,i+7,0);i++;
			}
		}		
		else
		{	
			LCDRWIO = 1;
			LCDDIIO = 1;
			p1tune(mcs138=RAMCS);
			temp = yymmtt[j++];
			if((j==3)&(temp==0x30))
				temp=0x20;
			Dispchar(0,(++i)+6,temp,0);
			LCDRWIO = 1;
			LCDDIIO = 1;
			p1tune(mcs138=RAMCS);
			temp = yymmtt[j++];  
			Dispchar(0,i+7,temp,0);
		}
	}
}
void disptime(void)
{		// 显示时间
uchar  data i,j,temp;
	Feedingdog();
	for (i=9,j=6;i<17;i++)
	{	if((i==11)||(i==14))
			Dispchar(0,i+7,0x3a,0);	//显示“:"
		else
		{
			LCDRWIO=1;
			LCDDIIO=1;
			p1tune(mcs138=RAMCS);
			temp = yymmtt[j++];
			Dispchar(0,(i++)+7,temp,0);
			LCDRWIO=1;
			LCDDIIO=1;
			p1tune(mcs138=RAMCS);
			temp = yymmtt[j++];  
			Dispchar(0,i+7,temp,0);
		}
	}	// 以上是时间显示
}
//-----------------------------------------------
/*void dispscreenchin(void)
//功能-------问候语位置显示。如果有来电显示来电号码//
//-------如果无来电显示“伊爱车载显示终端”字样//
{		
	extern uchar code jian1nemu[4][24];
	//uchar data i,j;
	//if(!comeingtelep)	// 显示“伊爱车载显示终端”字样
		displayline(3,&jian1nemu[jiannumb][0],0);
	
} */
//---------------------------------------
void display( uchar * dataprt,uchar number)
{
uchar data i,j,k,temphi,templow,temp;
bit tempsign=1;
uchar  * discodeprt= dataprt;
	LCDRWIO=1;
	LCDDIIO=1;
	p1tune(mcs138=RAMCS);
	for(i=0;i<4;i++)
	{	Feedingdog();
		for(j=0;j<24;j++)
		{
			temphi=*(discodeprt++);
			if (temphi<=0x7f)
			{
				temp=(i<<1);
				Dispchar(temp,j,temphi,0);
			}
			else
			{
				templow=*(discodeprt++);
				if(j!=23)
				{
					j++;
					disromdata(temphi,templow);
					disdatatune();
					Dispchin(i*2,j-1,0);
					//Dispchin(i*2,j-1,temphi,templow,0);
					LCDDIIO=1;
					LCDRWIO=1;
					p1tune(mcs138=RAMCS);
				}
				else
				{
				discodeprt--;discodeprt--;
				k=0x20;
				Dispchar(i<<1,j,k,0);
				}
			}
		}
		if(i==number)
		{	for(i=i+1;i<4;i++)
			{displayline3(i*2);}
		}
	}	
}
//---------------------------------------
void displayline(uchar xpost,uchar * discodeprt,bit tempsign)
{	// 显示一整行信息
uchar data i,temphi,templow;
	for(i=0;i<24;i++)
	{	LCDDIIO=1;
		LCDRWIO=1;
		p1tune(mcs138=RAMCS); //mcs138
		temphi = *(discodeprt++);
		if(temphi<=0x7f)
			Dispchar(xpost,i,temphi,tempsign);
		else
		{
			templow = *(discodeprt++);
			disromdata(temphi,templow);
			disdatatune();
			Dispchin(xpost,i++,tempsign);
		}
	}
}
/*void displayline5(uchar xpost,uchar * discodeprt,bit tempsign)//显示XDATA的数据
{	// 显示一整行信息
uchar data i,temphi,templow;
	for(i=0;i<24;i++)
	{	LCDDIIO=1;
		LCDRWIO=1;
		p1tune(mcs138=RAMCS);
		temphi = *(discodeprt++);
		if(temphi<=0x7f)
			Dispchar(xpost,i,temphi,tempsign);
		else
		{
			templow = *(discodeprt++);
			disromdata(temphi,templow);
			disdatatune();
			Dispchin(xpost,i++,tempsign);
		}
	}
}

*/
////-------显示左半行--------------------
void disp_halfline(uchar xpost,uchar * discodeprt,bit tempsign)
{	
uchar data i,temphi,templow;
	for(i=0;i<12;i++)
	{	LCDDIIO=1;
		LCDRWIO=1;
		p1tune(mcs138=RAMCS);
		temphi = *(discodeprt++);
		if(temphi<=0x7f)
			Dispchar(xpost,i,temphi,tempsign);
		else
		{
			templow = *(discodeprt++);
			disromdata(temphi,templow);
			disdatatune();
			Dispchin(xpost,i++,tempsign);
			
		}
	}
}

////---------------显示右半行--------------------------------
void disp_halfline1(uchar xpost,uchar * discodeprt,bit tempsign)
{	
uchar data i,temphi,templow;
	for(i=12;i<24;i++)
	{	LCDDIIO=1;
		LCDRWIO=1;
		p1tune(mcs138=RAMCS);
		temphi = *(discodeprt++);
		if(temphi<=0x7f)
			Dispchar(xpost,i,temphi,tempsign);
		else
		{
			templow = *(discodeprt++);
			disromdata(temphi,templow);
			disdatatune();
			Dispchin(xpost,i++,tempsign);
			
		}
	}
}




//---------------------------------------
void dispzi(uchar xpost,uchar ypost,uchar *discodeprt)
{
	uchar data temphi,templow;
	
	LCDDIIO=1;
	LCDRWIO=1;
	p1tune(mcs138=RAMCS);
	temphi=*(discodeprt++);
	templow=*(discodeprt);
	disromdata(temphi,templow);
	disdatatune();
	Dispchin(xpost,ypost,0);



}


bit lcdstate(void)
{
uchar data temp;
	LCDE=1;
	LCDRWIO=1;
	LCDDIIO=0;
	time_10ms = 0;		//时间监测 1S内
	time1ssign = 0;
	temp = P0;
	temp &= 0x80;
	while(temp!=0)
 	{
		temp=P0;
		temp &= 0x80;
	
		if(time1ssign==1)
			{CY=1;break;}
	}
	CY=0;
	return(CY);
}
//-----------------------
bit lcdwcommd(uchar i)
{
//C  LCDWR=0 DI=0  LCDE下降沿作用写入指令IR
	
	p1tune(mcs138);
	P0=0xff;
	CY=lcdstate();
	while(CY) CY=lcdstate();
		//return(CY);	//状态检测是否忙?
	LCDE=1;
	LCDDIIO=0;
	LCDRWIO=0;
	P0=i;
		
	LCDE=0;
	
	LCDDIIO=1;
	CY=0;
	return(CY);
}
//-----------------------
bit lcdwdata(uchar i)
{
//   LCDWR=0 DI=1  LCDE下降沿作用写入数据IR
//	ES=0;  //TEST**
//	TI=0;
//	SBUF=A
//	while(TI==0);
//	return; //TEST**
	
	LCDE=1;
	LCDRWIO=0;
	LCDDIIO=1;
	P0=i;
	LCDE=0;
	LCDRWIO=1;
	return(0);
}
//-----------------------
void lcdiniton(void)//开启显示功能
{
	mcs138 = LCDCS1;
	CY = lcdwcommd(0x3f);
	mcs138 = LCDCS2;
	CY = lcdwcommd(0x3f);
	mcs138 = LCDCS3;
	CY = lcdwcommd(0x3f);
}
void lcdclose(void)//关显示
{
	mcs138 = LCDCS1;
	CY = lcdwcommd(0x3e);
	mcs138 = LCDCS2;
	CY = lcdwcommd(0x3e);
	mcs138 = LCDCS3;
	CY = lcdwcommd(0x3e);
}
void lcdinitz(void)		//设置显示初始行为0行。
{
	mcs138 = LCDCS1;
	CY = lcdwcommd(0xc0);
	mcs138 = LCDCS2;
	CY = lcdwcommd(0xc0);
	mcs138 = LCDCS3;
	CY = lcdwcommd(0xc0);
}
/***************************************************************
Disp assic char:在指定位置显示1个西文字符,8*16
xpost:离左上角的横向字符数(0-3 4行)
ypost:离左上角的众向字符数(0-23 24个assic字符)
tempsign:反显标志,1:反显;0:正显。 2004.06.10	HUJIE ADD
locode:ASCII码
****************************************************************/
void Dispchar(uchar xpost,uchar ypost,uchar locode,bit tempsign)
{
uchar data i,databyte,temp,temp1;
uint16 data address;
//extern uchar code ASICCzk[];
	address =(locode-0x1f)*0x10; /////*0x10每个ASCII字符点阵码16字节。
	address = address + 0x8000;	//从0x8000开始

	LCDRWIO=1;
	LCDDIIO=1;
	mcs138=ROMCS;
	p1tune(mcs138);
	A16 =1; A17 = 1;
	
	for(i=0;i<16;i++)
	{	temp=XBYTE[address++];
		disdata[i] = temp;
	}
	A16 =0; A17 = 0;
	if(ypost<8)
	{
		mcs138=LCDCS1;
		temp1=(ypost*8)|0x40;
	}
	if((7<ypost)&&(ypost<16))
	{	
		mcs138 = LCDCS2;
		temp1 = ((ypost-8)*8)|0x40;
	}
	if((15<ypost)&&(ypost<24))
	{
		mcs138=LCDCS3;
		temp1=((ypost-16)*8)|0x40;
	}
	/* 以上是设置列地址 save temp1 */
//	temp=(xpost<<1)|0xb8;
	temp = (xpost)|0xb8;
	lcdwcommd(temp);	// page
	lcdwcommd(temp1);	//  y
	/* 以上是设置页地址 */
	for(i=0;i<16;i++)
	{
		//databyte = ASICCzk[address+i];
		databyte = disdata[i];
		if(tempsign==1)  
			databyte = ~databyte;
		lcdwdata(databyte);
		if(i==7)
			{
			lcdwcommd(++temp);
			lcdwcommd(temp1);
			}
	}
}
//显示8*16的天线符号
void DispAntenna(uchar xpost,uchar ypost,bit tempsign)
{
	uchar data i,databyte,temp,temp1;
	A16 =0; A17 = 0;
	for(i=0;i<16;i++)
	{	
		disdata[i] =x16Antenna[i];
	}

	if(ypost<8)
	{
		mcs138=LCDCS1;
		temp1=(ypost*8)|0x40;
	}
	if((7<ypost)&&(ypost<16))
	{	
		mcs138 = LCDCS2;
		temp1 = ((ypost-8)*8)|0x40;
	}
	if((15<ypost)&&(ypost<24))
	{
		mcs138=LCDCS3;
		temp1=((ypost-16)*8)|0x40;
	}
	/* 以上是设置列地址 save temp1 */
//	temp=(xpost<<1)|0xb8;
	temp = (xpost)|0xb8;
	lcdwcommd(temp);	// page
	lcdwcommd(temp1);	//  y
	/* 以上是设置页地址 */
	for(i=0;i<16;i++)
	{
		//databyte = ASICCzk[address+i];
		databyte = disdata[i];
		if(tempsign==1)  
			databyte = ~databyte;
		lcdwdata(databyte);
		if(i==7)
			{
			lcdwcommd(++temp);
			lcdwcommd(temp1);
			}
	}

}


/****************************************************************
Disp chinese :在指定位置显示1个汉字文字符,14*14,流程是,根据汉字
    的标准码,从汉字库中取出点阵数据,变换数据后送到LCDRam显示出来
xpost:离左上角的横向字符数(0-3 4行)
ypost:离左上角的众向字符数(0-23 24个assic字符)
hicode locode :为要显示的汉字GBK码
****************************************************************/
void disromdata(uchar hicode,uchar lo

⌨️ 快捷键说明

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