1.44寸LCD如何显示图片,字符,字符串

显示图片

一般用Img2Lcd软件进行取模,配置如下

 取模出的.c文件数组元素的个数通常为宽*高*2,这是因为LCD的颜色命令为16位数据,而取模出的为8位数据,需要两个数组元素组成一个点的颜色数据,即(p[i]<<8)|p[i+1],先通过Lcd_SetRegion函数确定图像范围,再将每一个点的颜色数据送入LCD

/*************************************************
函数名:LCD_Set_Region
功能:设置lcd显示区域,在此区域写点数据自动换行
入口参数:xy起点和终点
返回值:无
*************************************************/
void Lcd_SetRegion(uint x_start,uint y_start,uint x_end,uint y_end)
{	
/*#ifdef 
	USE_LANDSCAPE//使用横屏模式
	Lcd_WriteIndex(0x2a);
	Lcd_WriteData(0x00);
	Lcd_WriteData(x_start+3);
	Lcd_WriteData(0x00);
	Lcd_WriteData(x_end+3);

	Lcd_WriteIndex(0x2b);
	Lcd_WriteData(0x00);
	Lcd_WriteData(y_start+2);
	Lcd_WriteData(0x00);
	Lcd_WriteData(y_end+2);
*/
//#else//竖屏模式	
	Lcd_WriteIndex(0x2a);
	Lcd_WriteData(0x00);
	Lcd_WriteData(x_start+2);
	Lcd_WriteData(0x00);
	Lcd_WriteData(x_end+2);

	Lcd_WriteIndex(0x2b);
	Lcd_WriteData(0x00);
	Lcd_WriteData(y_start+3);
	Lcd_WriteData(0x00);
	Lcd_WriteData(y_end+3);	
//#endif
	Lcd_WriteIndex(0x2c);
}

//显示图片
//x,y:起点坐标
//width,height:区域大小
//*p:图片起始地址
//高位在前
void LCD_ShowPicture(uint16_t x,uint16_t y,uint16_t width,uint16_t height,const unsigned char *p)
{
	uint16_t i=0,j=0;
	uint16_t pcolor = 0;
	//设置显示区域
	//设置光标位置(0x2A 0x2B)
	
	Lcd_SetRegion(x,y,x+width-1,y+height-1);

	//TFTLCD->LCD_REG=lcddev.wramcmd;//开始写入GRAM(0x2C)
	for(j=0;j<height;j++)
	{
		for(i=0;i<width;i++)
		{
			pcolor = (*p<<8)|(*(p+1));
			LCD_WriteData_16Bit(pcolor);  //写显示颜色
			p+=2;
		}
	}
}

显示汉字字符

/*************************************************
函数名:LCD_ShowChar
功能:写字符函数,阴码,高位在前,逐行式
入口参数:x,y:起始位置;*p:字符指针
返回值:无
*************************************************/
void LCD_ShowChar(uint x,uint y,uint16_t width,uint16_t heigth,const unsigned char *p,uint16_t char_color)
{
	//uchar a;
	int i,j;
	uint new_x,new_y;
	//Lcd_SetRegion(x,y,x+width-1,y+heigth-1);
	for(j=0;j<(width*heigth/8);j++)
	{
		for(i=0;i<8;i++)
		{
			new_y=y+(j*8+i)/width;
			new_x=x+(j*8+i)%width;
			//a=*p;
			if(((*p<<i)&0x80)==0x80)
				//LCD_WriteData_16Bit(char_color); //写显示颜色
			{
				Gui_DrawPoint(new_x,new_y,char_color);
			}
			
			//else 
				//LCD_WriteData_16Bit(back_color);
		}
		p++;
	}	
	//LCD_ShowPicture(0,0,70,63,gImage_beidou);
}

PCtoLCD2002软件设置如下

 取模出的16进制数代表了,8个像素点的亮灭,取模得到一个16进制数时,要判断从高位到低位,第几位是1,并在那一位写入颜色命令,根据字模大小,以16*16汉字为例,,一行需要2个16进制数表示,一共有16行,利用for(j=0;j<(width*heigth/8);j++)判断在第几个16进制数时需要写入颜色,再用for(i=0;i<8;i++){if(((*p<<i)&0x80)==0x80)第几个点,利用new_y=y+(j*8+i)/width;new_x=x+(j*8+i)%width;确定点的坐标

之所以不像图片那样用Lcd_SetRegion函数,是因为,这个函数要求范围内每一个点都要写颜色,这样导致汉字再图片上显示不方便;

这个函数应该可以适用任意大小字符,如果不行,请留言一起学习。

void LCD_ShowString(uint x,uint y,uint16_t width,uint16_t heigth,const unsigned char *p,uint16_t char_color,uint16_t longth)
{
	int i;
	for(i=0;i<longth;i++)
	{
		LCD_ShowChar(x+i*width,y,width,heigth,p+((width/8*heigth)*i),char_color);
	}
}

字符串函数基于字符函数编写

唉,写的好麻烦,自己明白和写出来根本不是一回事儿

这是结果图

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要使用STM32F103RCT6驱动1.44TFT LCD显示屏,首先需要了解TFT LCD显示屏的基本工作原理和通信接口。 TFT LCD显示屏由控制器和显示面板组成,控制器负责将图像数据发送到显示面板,并控制显示面板的驱动方式。STM32F103RCT6是一款32位ARM Cortex-M3核心的微控制器,具有丰富的外设和较高的处理能力,适合用于驱动TFT LCD显示屏。 接下来需要确定TFT LCD显示屏的通信接口是什么,常见的通信接口有SPI、I2C和8080并行接口等。对于1.44TFT LCD显示屏,通常采用SPI接口进行通信。 在进行硬件连接之前,需要查看TFT LCD显示屏的规格书和STM32F103RC6的数据手册来了解各个引脚的功能和连接方式。通常,SPI接口需要如下连接:使用STM32F103RCT6的SPI主机模式,分别连接STM32F103RCT6的SPI主机的SCK、MISO、MOSI管脚(对应SPI1或SPI2)与TFT LCD显示屏的SCK、SDO、SDI管脚,还需要连接片选管脚,以及连接显示屏的复位管脚和片选管脚以及电源供应和地。 在软件方面,需要先配置STM32F103RCT6的SPI外设,并设置通信速率、数据位长度等参数。然后,编写驱动程序,通过SPI与TFT LCD显示屏进行数据通信,将显示数据发送到TFT LCD显示屏,以实现图像显示的功能。 总的来说,驱动1.44TFT LCD显示屏需要进行硬件设置和软件编程。通过了解TFT LCD显示屏的通信接口和STM32F103RCT6的外设特性,并编写相应的驱动程序,就可以实现TFT LCD显示屏的驱动及图像显示功能。 ### 回答2: 要驱动1.44TFTLCD显示屏,首先要使用STM32F103RCT6开发板与显示屏进行连接。我们可以通过GPIO口实现数据线与显示屏相连,而控制线则通过专门的引脚连接。 接下来需要编写相关的驱动代码来控制显示屏。我们可以使用HAL库提供的函数,来设置GPIO口的输出模式,以及数据传输相关的操作。利用SPI或者I2C通信协议,我们可以通过发送命令和数据来控制显示屏的显示内容。 在驱动代码中,我们需要先初始化SPI或者I2C通信,并配置相应的参数,比如时钟频率、传输模式等。 接着,我们需要编写命令和数据的发送函数,通过SPI或I2C发送相关指令给显示屏。比如,我们可以通过发送命令来设置显示区域、背光亮度等参数。 最后,我们可以编写显示函数来实现在显示屏上显示图像或者文字。通过发送数据来更新显示内容,并且可以设置不同的显示模式,如图形显示字符显示等。 需要注意的是,针对不同的显示屏型号,具体的驱动代码可能会有所不同。因此,在编写驱动代码时,需要结合显示屏的数据手册来编写相应的控制指令和函数。 以上是关于如何驱动1.44TFTLCD显示屏的大致步骤。在实际应用中,还需要对具体的硬件结构和功能要求进行详细调试和开发。 ### 回答3: STM32F103RCT6是一款ARM Cortex-M3内核的微控制器,可以用于控制各种外设和驱动显示屏。在驱动1.44TFT LCD显示屏时,我们需要按照以下步骤进行设置和编程: 1. 连接硬件:首先,将STM32F103RCT6与1.44TFT LCD显示屏连接起来。根据显示屏和微控制器的规格书或引脚配置表,将引脚正确连接。 2. 配置GPIO引脚:在STM32F103RCT6的寄存器中,通过设置GPIO引脚的模式和速度,将其配置为输出模式。将对应的引脚配置为控制显示屏的D/C引脚(用于选择数据/指令)、CS引脚(用于片选)、以及时钟引脚和数据引脚等。 3. 编写驱动程序:使用C语言或其他适合的编程语言,编写代码来控制和驱动1.44TFT LCD显示屏。根据显示屏的数据手册和命令集,实现显示屏的初始化、清屏、写入像素数据等功能。 4. 设置显示屏参数:根据需要,设置显示屏的相关参数,例如屏幕分辨率、颜色模式、显示方向等。这些参数需要根据具体的显示屏型号来设置。 5. 显示数据:通过驱动程序发送像素数据,将需要显示的图像或文本等内容写入显示屏。 6. 刷新显示:根据需要,定时刷新显示屏内容,以保持实时更新的效果。 通过以上步骤,我们可以实现STM32F103RCT6对1.44TFT LCD显示屏的驱动。需要根据具体的硬件和显示屏型号进行适配和调试,确保驱动程序的正确性和稳定性。同时,根据项目的需求和复杂度,可能需要更详细的代码和配置设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值