STM32+GM65二维码识别模块

前言

朋友毕设需要用到扫码模块,但是网上这方面的资源比较少,下载源码还需要收费。所以自己写了一个简单实用的,大家可以来我这下载源码。

功能介绍

本案例主要实现的功能是,GM65扫描到二维码包含的信息后,将信息通过串口传输给32单片机,32单片机再将信息使用OLED显示屏显示出来,同时可以实现扫码开灯、关灯等功能。

主要硬件

STM32F103C8T6最小系统板、GM65二维码识别模块、0.96寸4针OLED显示屏

模块接线

GM65二维码识别模块—接32的串口3
TX—PB11 RX—PB10 VCC—5V GND—GND
4针OLED显示屏
SCL—PA5 SDA–PA7 VCC—3V3 GND—GND

实验效果

当二维码的内容是字符串D1时灯亮,是D0时灯灭。OLED显示屏的第2行显示了二维码的内容。第3行显示灯的开关。
在这里插入图片描述
当二维码的内容是字符串xixihaha时,不会执行开关灯的操作,但也会显示内容在显示屏上。
在这里插入图片描述
程序中,串口3收到二维码信息后会通过串口1返发给PC,故除了可以用显示屏看到效果外,也可以用串口助手看到二维码的内容。
在这里插入图片描述

二维码及模块的一些配置

1、二维码的生成是在微信小程序的草料二维码。
在这里插入图片描述

在这里插入图片描述

2、GM65模块设置成串行通讯模式,同时设置波特率为9600
当模块发出嘀嘀嘀声响时,说明设置成功。
在这里插入图片描述
3、如果觉得模块的灯太亮,声音太大可以按下面扫码设置
在这里插入图片描述
在这里插入图片描述

代码实现

main.c文件

/*=======================main.c======================*/
#include "stm32f10x.h"
#include "usart.h"
#include "led.h"
#include "oled.h"
#include "string.h"

u8 recv_ok = 0;       //接收完成标志
u8 uart_buf[32]={0};  //用于保存串口数据
u8 uart_cnt=0;        //用于定位串口数据的位置

int main()
{
    Init_Usart();   //初始化3个串口
	led_init();      //初始化LED
	OLED_Init();     //初始化OLED
	OLED_Clear();        //OLED清屏
	
	printf("================GM65二维码模块测试=================\r\n");	
	OLED_ShowString(30,0,(u8*)"GM65 TEST!",16);
	OLED_Refresh();

    while(1)
    {
		
		if(recv_ok==1)  //接收完成
		{
			OLED_Clear();        //OLED清屏
			OLED_ShowString(30,0,(u8*)"GM65 TEST!",16); 
			//命令判断,当收到D0关灯,D1开灯 
			if(strstr((char*)uart_buf,"D0"))  
			{
				GPIO_SetBits(GPIOC,GPIO_Pin_13);   //关灯
				OLED_ShowString(0,32,(u8*)"LED OFF",16); 
			}
			else if(strstr((char*)uart_buf,"D1"))
			{
				GPIO_ResetBits(GPIOC,GPIO_Pin_13); //开灯
				OLED_ShowString(0,32,(u8*)"LED ON",16); 
			}
			OLED_ShowString(0,16,(u8*)"QRCode:",16); 
			OLED_ShowString(8*7,16,(u8*)uart_buf,16); //显示二维码内容
			OLED_Refresh();      //刷新OLED
			uart_cnt = 0;        //最后清零,重新计数
			recv_ok = 0;         //接收完成标志置0
		}
		
    }
}

//串口3中断
void USART3_IRQHandler(void)      //串口3中断服务程序
{
	uint8_t d;

	//检测标志位
	if(USART_GetITStatus(USART3, USART_IT_RXNE)==SET)
	{
		//接收数据
		d = USART_ReceiveData(USART3);
	    //将接收到的数据依次保存到数组里
		uart_buf[uart_cnt++] = d;  
		//GM65模块发完一组数据后会自动发送一个回车符,所以通过检测是否接受到回车来判断数据是否接收完成
		if(d == 0x0D) 
		{
			recv_ok = 1;  //接收完成
		}
	
		//将接收到的数据,通过串口1返发给PC
		USART_SendData(USART1, d);
	    while( USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET); //等待发送完成
		USART_ClearFlag(USART1,USART_FLAG_TXE);         //清空标志位
		USART_ClearITPendingBit(USART3,USART_IT_RXNE);	//清空标志位
	}	
} 

资源下载

需要源码的可以自行下载。https://github.com/J-CHUN/STM32-GM65.git
下载操作:
在这里插入图片描述

  • 57
    点赞
  • 305
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 34
    评论
要在STM32 12864液晶显示屏上生成二维码,你可以按照以下步骤进行操作: 1. 载入所需的库文件:你需要使用一个支持二维码生成的库文件。可以选择一些开源的库文件,比如ZXing(Zebra Crossing)或者QR Code Library。将这些库文件加载到你的STM32开发环境中。 2. 配置STM32 12864液晶显示屏:你需要确保已经正确配置和初始化你的液晶显示屏。这涉及到设置引脚、串行通信协议和其他必需的设置。请参考液晶显示屏的数据手册和参考资料以确保正确设置。 3. 编写STM32代码:使用你选择的库文件,编写STM32代码来生成二维码。你需要指定二维码的尺寸、内容和其他相关参数。在代码中,你需要将生成的二维码数据逐行写入到液晶显示屏的相应行上。 4. 显示二维码:在液晶显示屏上,使用生成的二维码数据来显示二维码图像。你可以通过逐行扫描二维码数据,并将其转换为相应的显示格式,然后将其写入到液晶显示屏上,从而显示二维码。 5. 调试和优化:在显示二维码之前,你可能需要进行一些调试和优化工作。这包括检查生成的二维码数据是否正确,以及确保液晶显示屏是否正常工作。通过连接调试工具,如调试器或逻辑分析仪,来检查是否存在任何问题。 总结起来,要在STM32 12864液晶显示屏上生成二维码,你需要加载库文件,配置液晶显示屏,编写STM32代码来生成和显示二维码,以及进行调试和优化工作。请确保正确设置和操作,以确保二维码在液晶显示屏上正确地生成和显示。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

⁽⁽ଘ晴空万里ଓ⁾⁾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值