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

📄 ra8835.#2

📁 C8051F020+RA8835 I/O口控制 中英文混合显示
💻 #2
📖 第 1 页 / 共 2 页
字号:
		{ 
			uCol += 16;                                						// Y坐标 
			uRow = 0;                                							// X坐标 
			if( uCol >= 240 ) uCol = 0; 
		} 

		Locatexy(uRow,uCol,att); 
		i++; 
	} 
	return uLen;                                    	//返回字串长度,汉字按2字节计算 
} 


/*============================================================================ 
** 函数名称: hprintf
** 功能描述:汉字(24*16) 混合字符串显示
** 输入参数: Uchar x  显示字符串的横坐标  8点一字节位置
             Uchar y  显示字符串的纵坐标  一条扫描线定位 
**
** 输出参数: Uchar 字符串的长度(汉字为两个字节)
**
** 全局变量: 无
** 调用模块:  

   说明:调用时汉字必须在字库数组中已经存在,否则将输出不正确的结果
**---------------------------------------------------------------------------
** 作  者:	wjf
** 日  期:	2008/08/08
 ============================================================================*/ 
 
Uchar hprintf(Uchar x,Uchar y, char code *ptr, Uchar att) 
{ 

	
	Uchar  c1,c2; 
	Uchar i,j,uLen,uRow,uCol,temp; 
	Uint  k; 
	uRow = x; 
	uCol = y; 
	uLen=0; 
	WriteCommand( CsrDirD );                         								// 光标移动方向定义:自动下移 
	Locatexy(uRow,uCol,att);                        								//起点定位 
	while ( (Uchar)ptr[uLen] >= 0x10 ){uLen++;};    								//探测字串长度 
	i=0; 
	while(i<uLen) 
	{ 
		c1 = ptr[i]; 
		c2 = ptr[i+1]; 

//ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码 
		if(c1 <=128)                                									// ASCII 
		{ 
			if (c1 >= 0x10)    { 
				WriteCommand( mWrite );                										// 写数据(命令) 
				for(j=0;j<16;j++) WriteData( ASC_MSK[(c1-0x20)*16 +j ]); 
			} 
			uRow++;                                    									// 列数加1 
		} 
		else                                        									// 中文 
		{ 
			for(j=0;j<sizeof(Cdotlib24)/sizeof(Cdotlib24[0]);j++)    				// 查找定位 
			{ 
				if((c1 == Cdotlib24[j].Index[0]) && (c2 == Cdotlib24[j].Index[1])) 
					break; 
			} 
			for(k=0;k<3;k++)                       											 // 分16行输出 
			{ 
				Locatexy(uRow+k,uCol,att); 
				WriteCommand( mWrite );                										// 写数据(命令) 

				for(temp=0;temp<16;temp++) WriteData( Cdotlib24[j].Msk[temp*3 + k]); 
			} 
			uRow +=3;                                									// 光标右移一大格 
			i++; 
		} 
		if(uRow >= 40)                                					// 光标后移 
		{ 
			uCol += 16;                                						// Y坐标 
			uRow = 0;                                							// X坐标 
			if( uCol >= 240 ) uCol = 0; 
		} 

		Locatexy(uRow,uCol,att); 
		i++; 
	} 
	return uLen;                                    	//返回字串长度,汉字按2字节计算 
} 


/*============================================================================ 
** 函数名称: printfUpDown
** 功能描述:显示 (8*16)的上下箭头
** 输入参数: Uchar x  显示横坐标  8点一字节位置
             Uchar y  显示纵坐标  一条扫描线定位 
             Uchar flag			0——上箭头			1——下箭头
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**---------------------------------------------------------------------------
** 作  者:	wjf
** 日  期:	2008/08/09
 ============================================================================*/ 
 
void printfUpDown(Uchar x,Uchar y, Uchar flag, Uchar att) 
{ 
	
	Uchar i;
	WriteCommand( CsrDirD );                         								
	Locatexy(x,y,att);                        								
	WriteCommand( mWrite );                										 
	for(i=0;i<16;i++) WriteData( up_down[flag*16 +i ]); 
		
} 

/*============================================================================ 
** 函数名称: printfLeftRight
** 功能描述:显示 (16*16)的上下箭头
** 输入参数: Uchar x  显示横坐标  8点一字节位置
             Uchar y  显示纵坐标  一条扫描线定位 
             Uchar flag			0——左箭头			1——右箭头   2——℃  3----λ
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  
**---------------------------------------------------------------------------
** 作  者:	wjf
** 日  期:	2008/08/09
 ============================================================================*/ 
 
void printfLeftRight(Uchar x,Uchar y, Uchar flag, Uchar att) 
{ 
	
	Uchar i,j;
	WriteCommand( CsrDirD );                         								
	Locatexy(x,y,att);                        								
	for(i=0;i<2;i++)                       											 
	{ 
			Locatexy(x+i,y,att); 
			WriteCommand( mWrite );                										
			for(j=0;j<16;j++) WriteData( Left_Right[flag][j*2 + i]); 
	} 
		
}

/*====================================================== 
** 函数名称: printlcd_single
** 功能描述: 显示一个车牌号位
** 输入参数: 无
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  车牌输入时使用
**----------------------------------------------------
** 作  者:	wjf
** 日  期:	2008/08/08
======================================================*/ 
void printlcd_single(void)//显示一个车牌号位
{
	unsigned char i=0,j=0,temp=0;
	WriteCommand( CsrDirD );                         								
	Locatexy(18,0x30,0);      
	switch (yuyan_sel)
	{
		case 0:
		{
      
			for(i=0;i<2;i++)                       											 // 汉字
			{ 
				Locatexy(18+i,0x30,0); 
				WriteCommand( mWrite );                										 
				for(j=0;j<16;j++) WriteData( Cdotlib[byte_sel+106].Msk[j*2 + i]); 
			} 
			break;
	  }
		case 1:																												//字母
		{
			WriteCommand( mWrite );                										
			for(j=0;j<16;j++) WriteData(ASC_MSK[(byte_sel+33)*16 +j ]); 
			break;
		}
		default:																											//数字
		{
			if(byte_sel==10) temp=0;
			else temp=byte_sel;
			WriteCommand( mWrite );                										
			for(j=0;j<16;j++) WriteData(ASC_MSK[(temp+16)*16 +j ]); 
			break;
		}
	}
} 


/*====================================================== 
** 函数名称: printlcd_car_show
** 功能描述: 显示一个车牌号
** 输入参数: Uchar x  显示字符串的横坐标  8点一字节位置
             Uchar y  显示字符串的纵坐标  一条扫描线定位 
             Uchar * pcar  车牌号存储数字 大小为7
**
** 输出参数: 无
**
** 全局变量: 无
** 调用模块:  车牌显示时使用
**----------------------------------------------------
** 作  者:	wjf
** 日  期:	2008/08/11
======================================================*/ 
void printlcd_car_show(Uchar x,Uchar y, Uchar * pcar, Uchar att)//显示一个车牌号位
{
	Uchar i,j,k,uRow,uCol,c1; 
	uRow=x;
	uCol=y;
	WriteCommand( CsrDirD ); 
	Locatexy(uRow,uCol,att);
	/*for(i=0;i<7;i++)
	{
		
	//	WriteCommand( CsrDirD );      
		if(pcar[i]<55)														//汉字
		{
			for(k=0;k<2;k++)
			{
			//	WriteCommand( CsrDirD );                         								
				Locatexy(uRow+k,uCol,att);      
			  WriteCommand( mWrite );                										 
				for(j=0;j<16;j++) WriteData( Cdotlib[pcar[i]+106].Msk[j*2 + k]); 
			}
			uRow=+2;
		}
		else
		{
			if(pcar[i]<81)
	 		{
	    		WriteCommand( mWrite );                										
					for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-55+33)*16 +j ]); 
	    		
	 		}
	 		else
	 		{
	     	WriteCommand( mWrite );                										
				for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-81+16)*16 +j ]); 
	 		}
	 		uRow=+1;
		}
		Locatexy(uRow,uCol,att);
	}*/
	
	while(i<7) 
	{ 
		c1 = pcar[i]; 

		if(c1 <55)                                									
		{ 
			for(k=0;k<2;k++)                       											
			{ 
				Locatexy(uRow+k,uCol,att); 
				WriteCommand( mWrite );                										 
				for(j=0;j<16;j++) WriteData( Cdotlib[pcar[i]+106].Msk[j*3 + k]); 
			} 
			uRow +=2;                                									
			i++;       									
		} 
		else                                        									
		{ 
			if(pcar[i]<81)
	 		{
	    		WriteCommand( mWrite );                										
				for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-55+33)*16 +j ]); 
				uRow=+1;    																								
				i++; 
	    		
	 		}
	 		else
	 		{
	     	WriteCommand( mWrite );                										
				for(j=0;j<16;j++) WriteData(ASC_MSK[(pcar[i]-81+16)*16 +j ]); 
				uRow=+1;    																								
				i++; 
	 		}
	 	
		} 
		if(uRow >= 40)                                					
		{ 
			uCol += 16;                                						
			uRow = 0;                                							
			if( uCol >= 240 ) uCol = 0; 
		} 
		Locatexy(uRow,uCol,att); 
	} 
} 

⌨️ 快捷键说明

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