STM32 LCD基于画点函数的单色图片制作与显示

需要准备:

        1.MCU利用LTDC或FMC,驱动RGB屏或MCU屏。

        2.Image2Lcd PC软件 百度网盘1iax

        3.已经测试过的画点函数,参数为坐标与颜色(即LCD_Fast_DrawPoint)

图片制作:

画点函数是与取模参数对应的,除最大宽高,其他参数需要与下方的配置完全一致。

绘图函数:

说明一下函数的参数,若软件输出图片分辨率为:(x,y),当需要在屏幕的(xstr,ystr)处显示图片,那么xend = xstr+x,yend = ystr + y。这个函数是用来显示一些纯色图片的,前景和背景色写死了。

/****************************************************************************
* 名    称:void LCD_DrawPicture(u16 StartX,u16 StartY,u16 EndX,u16 EndY,u16 *pic)
* 功    能:在指定位置显示一幅单色图
* 入口参数:StartX     行起始座标
*           StartY     列起始座标
*           EndX       行结束座标
*           EndY       列结束座标
            pic        图片头指针
* 出口参数:无
* 说    明:
* 调用方法:LCD_DrawPicture(0,0,100,100,(u16*)demo);
****************************************************************************/
void LCD_Draw_Picture(u16 xstr,u16 ystr,u16 xend,u16 yend,u8 *pic)	    //画图
{
	u8 temp,t1;
	u16 x_t=xstr,y_t=ystr;//,x=xstr,y=ystr;
	u8 *pusMsk = pic;//480000 65536
	for(y_t=ystr;y_t<yend;)
    {	
			temp = *pusMsk;
			for(t1=0;t1<8;t1++)
			{
				if(temp&0x80)LCD_Fast_DrawPoint(x_t,y_t,POINT_COLOR);//画实心点
				else LCD_Fast_DrawPoint(x_t,y_t,BACK_COLOR);   //画空白点(使用背景色)
				temp<<=1;
				x_t++;
				if(x_t>=xend)
				{
					x_t=xstr;
					y_t++;
					break;
				}
			}
			pusMsk++; 
    }
}

示例:

遇到显示乱码不要慌,如果你的画点函数没问题,那一定是取模参数不对,或者画图函数参数不对。

const unsigned char gImage_4[600] = { /* 0X10,0X01,0X00,0X50,0X00,0X3C, */
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,
0XFF,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0XFE,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X3F,0XFF,0XFF,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7F,0X80,0X3F,
0X80,0X00,0X00,0X00,0X00,0X00,0X00,0XFE,0X00,0X0F,0XE0,0X00,0X00,0X00,0X00,0X00,
0X00,0XF8,0X00,0X03,0XFF,0X80,0X00,0X00,0X00,0X00,0X01,0XF0,0X00,0X01,0XFF,0XE0,
0X00,0X00,0X00,0X00,0X03,0XE0,0X00,0X00,0XFF,0XF8,0X00,0X00,0X00,0X00,0X03,0XC0,
0X00,0X00,0X7F,0XFC,0X00,0X00,0X00,0X00,0X07,0XC0,0X00,0X00,0X00,0XFF,0X00,0X00,
0X00,0X00,0X07,0X80,0X00,0X00,0X00,0X1F,0X00,0X00,0X00,0X00,0X0F,0X80,0X00,0X00,
0X00,0X0F,0X80,0X00,0X00,0X00,0X3F,0X80,0X00,0X00,0X00,0X07,0XC0,0X00,0X00,0X00,
0XFF,0X80,0X00,0X00,0X00,0X03,0XC0,0X00,0X00,0X03,0XFF,0X00,0X00,0X00,0X00,0X03,
0XC0,0X00,0X00,0X07,0XFE,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X0F,0XE0,0X00,
0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X0F,0X80,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,
0X00,0X1F,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,
0X00,0X01,0XE0,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X1C,
0X00,0X00,0X00,0X00,0X00,0X01,0XE0,0X00,0X00,0X1C,0X00,0X00,0X00,0X00,0X00,0X01,
0XE0,0X00,0X00,0X1E,0X00,0X00,0X00,0X00,0X00,0X03,0XC0,0X00,0X00,0X1E,0X00,0X00,
0X00,0X00,0X00,0X03,0XC0,0X00,0X00,0X1F,0X00,0X00,0X00,0X00,0X00,0X07,0XC0,0X00,
0X00,0X0F,0X00,0X00,0X00,0X00,0X00,0X1F,0X80,0X00,0X00,0X0F,0XC0,0X00,0X17,0X80,
0X00,0X3F,0X00,0X00,0X00,0X07,0XF8,0X00,0X7F,0X80,0X00,0XFE,0X00,0X00,0X00,0X03,
0XFF,0X00,0XFF,0X00,0X00,0XFC,0X00,0X00,0X00,0X01,0XFF,0X00,0XFE,0X00,0X00,0XF8,
0X00,0X00,0X00,0X00,0X7E,0X01,0XFC,0X00,0X80,0XE0,0X00,0X00,0X00,0X00,0X00,0X03,
0XF8,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XF0,0X01,0XC0,0X00,0X00,0X00,
0X00,0X00,0X00,0X07,0XF0,0X03,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X07,0XF3,0X03,
0XE0,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0XFF,0X07,0XE0,0X00,0X00,0X00,0X00,0X00,
0X00,0X01,0XFE,0X07,0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X7C,0X07,0XF0,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X78,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0XF0,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XC0,0X0F,0XF8,0X00,0X00,0X00,
0X00,0X00,0X00,0X01,0X80,0X0F,0XF8,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0X00,0X0F,
0XF0,0X00,0X00,0X00,0X00,0X00,0X00,0X06,0X00,0X07,0XF0,0X00,0X00,0X00,0X00,0X00,
0X00,0X04,0X00,0X03,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,};

int main(void)
 {	 
		LED_Init();			     //LED端口初始化
		LCD_Init();
		POINT_COLOR=RED;

		LCD_Draw_Picture(0,60,80,120,(u8 *)gImage_4);
		while(1);
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F103是意法半导体公司(STMicroelectronics)推出的一款32位微控制器,具有强大的处理能力和丰富的外设接口。在STM32F103上实现LCD图片显示需要编写相关的驱动函数,主要包括初始化函数显示函数。 首先,需要编写初始化函数,用于配置STM32F103的外设和LCD显示屏的参数。具体步骤包括选择合适的时钟源、配置GPIO引脚、设置时序和信号参数等。初始化函数的目的是为了让STM32F103和LCD显示屏之间能够正常通信。 接下来,编写显示函数。在显示函数中,需要先选择显示区域,确定图片LCD屏幕上的位置和大小。然后,将图片的数据逐个点写入到LCD的显存中。写入显存的方法可以是逐点、逐行或者逐块进行。具体的写入方法需要根据LCD显示屏的型号和驱动芯片的规格进行设置。 在编写驱动函数时,还需要注意扫描方向、像素位宽、像素格式等参数的配置。此外,还需要考虑屏幕刷新的速度和功耗等方面的问题。对于一些特殊功能的要求,还需要参考LCD显示屏的手册和数据手册。 总结起来,STM32F103的LCD图片显示驱动函数主要包括初始化函数显示函数。初始化函数用于配置STM32F103和LCD显示屏之间的通信,显示函数用于将图片数据写入到LCD的显存中,从而实现图片显示。编写驱动函数需要根据具体的LCD显示屏的规格和要求,来进行相关的参数配置和功能实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值