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

📄 lcm.c

📁 这个是一个带有IC卡
💻 C
📖 第 1 页 / 共 4 页
字号:
	uint8 Data_from_Lcd;
	volatile uint32  *ip;
	
	ip = ( uint32  *)Right_Read_Com_ADDR;				//设置读状态字的指针值(右边)
	while(((*ip)&0x80)==0x80);								//当"忙"标志位为1时继续读端口的数据。(右边)
	ip = ( uint32  *)Right_Read_Data_ADDR;	
	Data_from_Lcd=*ip;											//从lcd读数据到变量.Data_from_Lcd(右边)
	return(Data_from_Lcd);
}
/**********************************************************************************************************
*函数名: LCD_Delay_1ms_unit()
*功能描述:用于lcd中需要延时的时候用
*调用函数:无
*全局变量:无
*输入:无
*返回:无
*设计者:潘江长                              日期:2006.1.11
*修改者:                                    日期:
*版本:
***********************************************************************************************************/
void LCD_Delay_1ms_unit(uint8 n)
 {
 	uint8 j;
	while(n--)
	{
		j=73;
		while(j--);
	}
 }
/**********************************************************************************************************
*函数名:lcdinit
*功能描述:对液晶初始化
*调用函数:无
*全局变量:无
*输入:无
*返回:无
*设计者:潘江长                              日期:2006.1.11
*修改者:                                    日期:
*版本:
***********************************************************************************************************/
void Lcdinit(void)
{
uint8 i;												

i=0xC0;					//设置第一行为起始行
Wr_Com_LCD_Left(i);
Wr_Com_LCD_Middle(i);
Wr_Com_LCD_Right(i);

i=0xB8;
Wr_Com_LCD_Left(i);		//设置页面地址为第一页
Wr_Com_LCD_Middle(i);
Wr_Com_LCD_Right(i);

i=0x40;
Wr_Com_LCD_Left(i);		//设置列地址为第一列
Wr_Com_LCD_Middle(i);
Wr_Com_LCD_Right(i);

i=0x3F;					//开显示开关
Wr_Com_LCD_Left(i);
Wr_Com_LCD_Middle(i);
Wr_Com_LCD_Right(i);
}
/**********************************************************************************************************
*函数名:lcdclear
*功能描述:对液晶清屏
*调用函数:无
*全局变量:无
*输入:无
*返回:无
*设计者:潘江长                              日期:2006.1.11
*修改者:潘妙青                              日期:2008.2.23
*版本:
***********************************************************************************************************/
void Lcdclear(void)
{
	uint8 i,j;										
	uint8 c;											//局部变量c用于存放命令字
	c=0;
	for(i=0;i<=7;i++)
	{	
		c=i|0xb8;												//得到对应的页面地址
		Wr_Com_LCD_Left(c);										//设置对应的页面地址(左)
		Wr_Com_LCD_Middle(c);									//设置对应的页面地址(中)
		Wr_Com_LCD_Right(c);									//设置对应的页面地址(右)
		
		Wr_Com_LCD_Left(0x40);									//设置对应的列地址(左)
		Wr_Com_LCD_Middle(0x40);								//设置对应的列地址(中)
		Wr_Com_LCD_Right(0x40);									//设置对应的列地址(右)
		
		for(j=0;j<=63;j++)										//写入数据0
		{
			Wr_Data_LCD_Left(0x00);
			Wr_Data_LCD_Middle(0x00);
			Wr_Data_LCD_Right(0x00);
		}
	}
}

void Lcdset(void)
{
	uint8 i,j;										
	uint8 c;											//局部变量c用于存放命令字
	c=0;
	for(i=0;i<=7;i++)
	{	
		c=i|0xb8;												//得到对应的页面地址
		Wr_Com_LCD_Left(c);										//设置对应的页面地址(左)
		Wr_Com_LCD_Middle(c);									//设置对应的页面地址(中)
		Wr_Com_LCD_Right(c);									//设置对应的页面地址(右)
		
		Wr_Com_LCD_Left(0x40);									//设置对应的列地址(左)
		Wr_Com_LCD_Middle(0x40);								//设置对应的列地址(中)
		Wr_Com_LCD_Right(0x40);									//设置对应的列地址(右)
		
		for(j=0;j<=63;j++)										//写入数据0
		{
			Wr_Data_LCD_Left(0xFF);
			Wr_Data_LCD_Middle(0xFF);
			Wr_Data_LCD_Right(0xFF);
		}
	}
}
/**********************************************************************************************************
*函数名:wrzw16x16
*功能描述:写16x16中文字
*调用函数:无
*全局变量:无
*输入:无
*返回:无
*设计者:潘江长                              日期:2006.1.11
*修改者:潘妙青                              日期:2008.2.23
*版本:
***********************************************************************************************************/

void Wrzw16x16(uint8 x,uint8 y,char *z)	 		//x为列地址范围为0~11。y为行地址范围为0~3.
{
	uint8 i,j,k;
	uint8 x2,x3,y2;
	uint8 d;
	uint8 findflag;												//此位为在字库的搜索结果标志位,0为没有找到,1为找到
	findflag=0;
	x2=0;
	y2=0;
	d=0;
	x=x*16;
	y=y*2;
	x3=x;														//下面的循环体实现在字库中搜索对应的点阵
	k=0;
	while(k<ZWZKZS16X16)										//@@@@@@@@@@这里k不能超过字库的(总字数)@@@@@@@@@@@/ 									
	{
		if((((*z)*256)+*(z+1)) == zwzk[k].index[0]*256+zwzk[k].index[1])
		{	
			findflag=1;
			for(i=0;i<=1;i++)
			{
			
				x=x3;
				for(j=0;j<=15;j++)
				{
					if(x<64)
					{
					y2=(y+i)|0xb8;								  	//y2为写入到lcd的命令字,用来设置行号
					Wr_Com_LCD_Left(y2);
					x2=x|0x40;										//x2为写入到lcd的命令字,用来设置列号
					Wr_Com_LCD_Left(x2);
					d = zwzk[k].zwdot[16*!i+j];
					Wr_Data_LCD_Left(d);
					
					}

					if(x >= 64 && x < 128)
					{
					y2=(y+i)|0xb8;								  	//y2为写入到lcd的命令字,用来设置行号
					Wr_Com_LCD_Middle(y2);
					x2 = (x - 64)|0x40;										//x2为写入到lcd的命令字,用来设置列号
					Wr_Com_LCD_Middle(x2);
					d = zwzk[k].zwdot[16*!i+j];
					Wr_Data_LCD_Middle(d);	
					}

					if(x >= 128)
					{
					y2=(y+i)|0xb8;								  	//y2为写入到lcd的命令字,用来设置行号
					Wr_Com_LCD_Right(y2);

					x2=(x - 128)|0x40;
					Wr_Com_LCD_Right(x2);
					d=zwzk[k].zwdot[16*!i+j];
					Wr_Data_LCD_Right(d);
											
					}
					x++;

				}
			}
			
		}

	k++;
	}  
	if(findflag==0)
	{
																	//如果找不到这个字模则会显示黑框
		for(i=0;i<=1;i++)
		{
			
			x=x3;
			for(j=0;j<=15;j++)
			{
				if(x<64)
				{
				y2=(y+i)|0xb8;								 	 	//y2为写入到lcd的命令字,用来设置行号
				Wr_Com_LCD_Left(y2);
				x2=x|0x40;											//x2为写入到lcd的命令字,用来设置列号
				Wr_Com_LCD_Left(x2);
				Wr_Data_LCD_Left(0xff);
				
				}
	
				if(x >= 64 && x < 128)
				{
				y2 = (y+i)|0xb8;								 	 	//y2为写入到lcd的命令字,用来设置行号
				Wr_Com_LCD_Middle(y2);
				x2 = (x - 64) | 0x40;											//x2为写入到lcd的命令字,用来设置列号
				Wr_Com_LCD_Middle(x2);
				Wr_Data_LCD_Middle(0xff);
				
				}

				if(x >= 128)
				{
				y2=(y+i)|0xb8;								  		//y2为写入到lcd的命令字,用来设置行号
				Wr_Com_LCD_Right(y2);

				x2 = (x - 128)|0x40;
				Wr_Com_LCD_Right(x2);
				Wr_Data_LCD_Right(0xff);
										
				}
				x++;
			}
		}
	}
}




void wrzw16x16_string(uint8 x,uint8 y,char *z,uint8 length)
{
	uint8 i;
	for(i=0;i<length;i++)
	{
		Wrzw16x16(x+i,y,(z+2*i));
	}
}


/**********************************************************************************************************
*函数名:wryw16x8
*功能描述:写16x8的字
*调用函数:无
*全局变量:无
*输入:无
*返回:无
*设计者:潘江长                              日期:2006.1.11
*修改者:潘妙青                              日期:2008.2.23
*版本:
***********************************************************************************************************/

void wryw16x8(uint8 x,uint8 y,char *z)
{
	uint8 i,j,k;
	uint8 x2,x3,y2;
	uint8 d;
	uint8 findflag;													//此位为在字库的搜索结果标志位,0为没有找到,1为找到
	findflag=0;
	x2=0;
	y2=0;
	d=0;
	x=x*8;
	y=y*2;
	x3=x;														//下面的循环体实现在字库中搜索对应的点阵
	k=0;
	while(k<YWZKZS16X8)													//@@@@@@@@@@这里k不能超过字库的(总字数)@@@@@@@@@@@/ 									

⌨️ 快捷键说明

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