lcdfile.c

来自「基于DSP(5402)平台的LCD键盘接口函数。 基于DSP(5402)平台的」· C语言 代码 · 共 502 行 · 第 1/2 页

C
502
字号
		}
	}
	
	i1 = o_y * 0x20;
	i1 = i1 + o_x;
	dat1_temp = i1 & 0xff;
	dat1_temp = dat1_temp ;
	dat2_temp = (i1>>8) & 0xff;
	dat2_temp = dat2_temp;
	code_temp = &hex_code[0];
	
	for(i2 = 0; i2 < 16 ; i2++)
	{
		wr_data(dat1_temp);			/* 汉字点阵在LCD中的位置 */
		wr_data(dat2_temp);
		wr_com(0x24);
			
		wr_data(*code_temp);			/* 写入汉字点阵 */
		wr_com(0xc0);
		
		wr_data(*(code_temp + 0x10));
		wr_com(0xc0);
		
		code_temp++;
		i1 = i1 + 0x20;
		dat1_temp = i1 & 0xff;
		dat2_temp = (i1>>8) & 0xff;		/* 修改汉字点阵在LCD中的位置 */
	}
}

/***************************************************************************
*	函数:	void wr_dot(unsigned int o_y,unsigned int o_x,unsigned short flag)

*	目的:	描点,根据flag的状态,在LCD显示器的指定在o_y和o_x处描点,如果flag=1,
		描点;如果flag=0,清除点
		
*	输入:	o_y	Y轴,范围0~127
		o_x	Y轴,范围0~239
		flag	是否描点,flag=1,描点;flag=0,清点
		
*	输出:	无返回

***************************************************************************/
void wr_dot(unsigned int o_y,unsigned int o_x,unsigned short flag)
{
	int i,dat1_temp,dat2_temp,temp,temp1;
//	i = o_y & 0x7f;
	i = o_y * 0x20;
	dat1_temp = i & 0xff;
	dat2_temp = (i >> 8) & 0xff;
	temp = o_x / 8;
	dat1_temp = dat1_temp + temp;
	temp1 = o_x - (temp * 8);
	temp1 = 7 - temp1;			/* 设定描点的位置 */
	
	wr_data(dat1_temp);
	wr_data(dat2_temp);
	wr_com(0x24);
	
	if(flag == 1)
	{
		wr_com(0xf8 | temp1);
	}
	else
	{
		wr_com(0xf0 | temp1);
	}
}

/***************************************************************************
*	函数:	extern void GUILCD_writeCharStr(unsigned int Row, unsigned int Column, unsigned char *cString ,bool fanxian)
*	目的:	写汉字字符串,将函数传递的字符串放在LCD屏的ROW行和COLUMN列的位置显示
			自动写屏,直到字符串尾,判断为0停止。根据变量fanxi是否为0,
			决定当前字符串是否反显。显示位置从LCD屏的ROW行和COLUMN列的位置开始,
			为行显示,既ROW不变,COLUMN加1变化。
*	输入:	string	代码字符串
		ROW	汉字行,范围(0到7),代表字符串起始Y位置
		COLUMN	汉字列,范围(0到14),代表字符串起始X位置
		fanxian 反显 0:无 非0:反显
*	输出:	无
***************************************************************************/
extern void GUILCD_writeCharStr(unsigned int Row, unsigned int Column, unsigned char *cString ,unsigned short fanxian)
{
	unsigned int ii1,ii4;
	ii4 = 0;
	ii1 = *cString;
	while(ii1 != 0)				/* 判断字符串是否结束 */
	{
		wr_hex(ii1,Row*0x10,Column*2,fanxian);	/* 写汉字 */
		Column++;				/* 列位置+1 */
		ii4++;
		ii1 = *(cString + ii4);		/* 读字符串内的值 */
	}
}

/***************************************************************************
*	函数:	extern void GUILCD_writeLetterStr(unsigned int Row, unsigned int Column, unsigned char *cString,unsigned short fanxian )

*	目的:	写ASC码字符串,16*16点阵格式,将字符串string中的ASC码在LCD屏的
		ROW和COLUMN坐标处显示,连续显示,直到字符串string串尾为0,ROW保持
		不变,COLUMN加1。
*	输入:	string	ASC代码字符串
		ROW	y坐标,范围(0到7),代表字符串起始Y位置
		COLUMN	x坐标,范围(0到14),代表字符串起始X位置
		fanxian 反显 0:无 非0:反显
*	输出:	无
***************************************************************************/
extern void GUILCD_writeLetterStr(unsigned int Row, unsigned int Column, unsigned char *cString,unsigned short fanxian )
{
	unsigned int iii1,iii2;	
	iii2 = 0;
	iii1 = *cString;
	while(iii1 != 0)			/* 判断字符串是否结束 */
	{
		iii2++;
		wr_letter(iii1,Row*0x10,Column*2,fanxian);
		Column++;
		iii1 = *(cString + iii2);
	}
}
/***************************************************************************
*	函数:	extern void GUILCD_writeCurse(unsigned int Row, unsigned int Column)
*	目的:	显示光标,光标地址为Row(y轴),Column(x轴)
			
*	输入:	Row	y坐标(范围:0到7,代表8行汉字)
		Column	x坐标(范围:0到14,代表15列汉字)
			
*	输出:	无
*	参数:	无全局变量
***************************************************************************/
extern void GUILCD_writeCurse(unsigned int Row, unsigned int Column)
{
	unsigned int i1,dat1_temp,dat2_temp;
	Row = Row * 0x10;
	Column = Column * 2;
	i1 = Row * 0x20;
	i1 = i1 + Column + 0x1e0;
	dat1_temp = i1 & 0xff;
	dat2_temp = (i1>>8) & 0xff;
	
	wr_data(dat1_temp);
	wr_data(dat2_temp);
	wr_com(0x24);
		
	wr_data(0xff);
	wr_com(0xc0);
		
	wr_data(0xff);
	wr_com(0xc0);	
}

/***************************************************************************
*	函数:	extern void GUILCD_clearCurse(unsigned int Row, unsigned int Column)
*	目的:	清光标,光标地址为ROW(y轴),COLUMN(x轴)
			
*	输入:	ROW	y坐标(范围:0到7,代表8行汉字)
		COLUMN	x坐标(范围:0到14,代表15列汉字)
			
*	输出:	无
*	参数:	无全局变量
***************************************************************************/

extern void GUILCD_clearCurse(unsigned int Row, unsigned int Column)
{
	unsigned int i1,dat1_temp,dat2_temp;
	Row = Row * 0x10;
	Column = Column * 2;
	i1 = Row * 0x20;
	i1 = i1 + Column + 0x1e0;
	dat1_temp = i1 & 0xff;
	dat2_temp = (i1>>8) & 0xff;
	
	wr_data(dat1_temp);
	wr_data(dat2_temp);
	wr_com(0x24);
		
	wr_data(0x00);
	wr_com(0xc0);
		
	wr_data(0x00);
	wr_com(0xc0);
		
}

/***************************************************************************
*	函数:	extern void GUILCD_drawChart(unsigned int Row, unsigned int Column, int *Data, unsigned short flag)
*	目的:	描点,从原点ROW和COLUMN处起始画一条线,线上每个点的位置根据*DATA定,FLAG来判断是否显示这条线。
			
*	输入:	Column	y坐标原点(范围:0到127,代表128行点)
		Row	x坐标(范围:0到239,代表240列点)
		*Data	数据,函数表达式为y=f(x),y为y轴,x为x轴
		flag	显示	1:显示	0:不显示
*	输出:	无
*	参数:	无全局变量
***************************************************************************/
extern void GUILCD_drawxChart(unsigned int Row, unsigned int Column, int *Data, unsigned short flag)
{
	int i,x,y;
	for(i = 0; i < 240 - Column; i++)
	{
		x = Column + i;
		//y = Row - *(Data + i);
		y=Row;
		wr_dot(y,x,flag);
	}
}

/***************************************************************************
*	函数:	extern void GUILCD_drawyChart(unsigned int Row, unsigned int Column, int *Data, unsigned short flag)
*	
***************************************************************************/
extern void GUILCD_drawyChart(unsigned int Row, unsigned int Column, int *Data, unsigned short flag)
{
	int i,x,y;
	for(i = 0; i < 128 ; i++)
	{
		y = Row + i;
		//y = Row - *(Data + i);
		x = Column;
		wr_dot(y,x,flag);
	}
}
/***************************************************************************
*	函数:	extern void GUILCD_onLed(void)
*	目的:	开背光灯
			
*	输入:	无
			
*	输出:	无
*	参数:	无全局变量
***************************************************************************/
extern void GUILCD_onLed(void)
{
	asm(" ssbx XF");
}

/***************************************************************************
*	函数:	extern void GUILCD_offLed(void)
*	目的:	关背光灯
			
*	输入:	无
			
*	输出:	无
*	参数:	无全局变量
***************************************************************************/
extern void GUILCD_offLed(void)
{
	asm(" rsbx XF");
}

⌨️ 快捷键说明

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