二维码生成:STM32F407 + LCD屏(GUI)制作二维码

说明:文件简单,移植方便,程序占用空间小,简单易懂,
全部编程做好的,测试通过的,还有文字备注,源码下载 :
本文二维码源码下载后直接跳入第四步

1、下载QRcode 二维码源码 Git下载

2、解压后得到,如下文件
在这里插入图片描述
3、文件很多,只需要提取库文件就可以了,下图三个文件
在这里插入图片描述
4、添加到工程上编辑后,如果会报错就加对应的头文件即可
5、创建两个处理二维码显示的文件QRcode_main.c和Rcode_main.h

在QRcode_main.c中添加两个函数,

一个用来获取二维码数据

void QRGenerator(char *input)
{
	int side, i,j,a;
	uint8_t bitdata[QR_MAX_BITDATA];
		
	//remove newline
	if(input[strlen(input) - 1] == '\n')
	{
		input[strlen(input) - 1] = 0;
	}
     
	side = qr_encode(QR_LEVEL_M, 0, input, 0, bitdata);//QR_LEVEL_L
	displayQRCode(side, bitdata);
}

一个是显示二维码数据

void displayQRCode(int side, uint8_t *bitdata)
{
	int i=0;
	int j=0;
	int a=0;
	int l=0;
	int n=0;
	int OUT_FILE_PIXEL_PRESCALER = 10;//查看发现太小了,我们可以修改显示函数的参数
    
//	ILI9341_DrawRectangle(0,0,320,240,0xFFFF,1);//LCD
	GUI_FillRect(55,10,280,230);
	GUI_SetColor(GUI_WHITE);
	
	if(side==21)
	{
		OUT_FILE_PIXEL_PRESCALER = 10;
	}

	for (i = 0; i < side; i++)
	{
		for (j = 0; j < side; j++) 
		{
			a=j*side+i;

			if((bitdata[a / 8] & (1 << (7 - a%8))))
			{
				for (l = 0; l < OUT_FILE_PIXEL_PRESCALER; l++)
				{
					for(n = 0; n < OUT_FILE_PIXEL_PRESCALER; n++)
					{
//						ILI9341_SetPointPixel(OUT_FILE_PIXEL_PRESCALER*i+l,OUT_FILE_PIXEL_PRESCALER*(j)+n,0x0);
						GUI_SetColor(GUI_BLUE);//GUI_BLACK
						GUI_DrawPixel(OUT_FILE_PIXEL_PRESCALER*i+l+m_OFFSET_VALUE_X,OUT_FILE_PIXEL_PRESCALER*(j)+n+m_OFFSET_VALUE_Y);//GUI_DrawPoint
					}
				}
			}
		}
	}
} 

6、调用QRGenerator()函数进行测试
QRGenerator(“UID:0x000000000000”);

7、烧录程序,查看结果
在这里插入图片描述
8、我们可以修改显示函数的参数

#define m_OFFSET_VALUE_X  60  //X坐标偏移
#define m_OFFSET_VALUE_Y  15  //Y坐标偏移
int OUT_FILE_PIXEL_PRESCALER = 10;//查看发现太小了,我们可以修改显示函数的参数

可以根据自己的 需要来修改显示的位置、大小、颜色------小kiss

结果看着还可以,使用微信扫码测试一下,登陆成功!!!

HAL库是针对STM32F407微控制器开发的一个软件库,用于简化软件开发过程。而LCD是液晶显示器的缩写,是一种常见的显示设备。 使用HAL库来驱动STM32F407微控制器上的LCD可以实现图形和文本的显示。首先,我们需要初始化LCD引脚的配置,设置为输出模式,并根据LCD的特性选择合适的通信接口(如SPI或I2C)。 接下来,我们可以使用HAL库提供的函数来控制LCD的显示,比如写入数据或命令。HAL库可以为我们提供一个便捷的方式来设置LCD的显示模式、清除幕、打印文本和绘制图形等。 例如,我们可以使用HAL库的函数来设置LCD的显示模式,比如设置为单行或多行显示,选择字符显示格式(如5x7或8x8),以及光标闪烁等。 我们还可以使用HAL库的函数来清除幕,比如使用填充函数将幕上的所有像素点清零,或使用擦除函数将幕上的特定区域清除。 当需要显示文本时,我们可以使用HAL库的函数来设置文本的字体大小、颜色和位置,并使用打印函数将文本显示在LCD上的指定位置。 如果需要在LCD上绘制图形,我们可以使用HAL库提供的函数来设置图形的类型(如线、矩形、圆形等)、位置和颜色,并使用绘制函数将图形绘制在LCD上。 综上所述,使用HAL库可以简化STM32F407微控制器上LCD的驱动过程,帮助我们更方便地实现图形和文本的显示,并为开发者提供了丰富的函数库来满足各种显示需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值