STM32单片机实现二维码显示
最近工作中的项目需要LCD显示二维码,目前的需求较为简单,只需要显示一个二维码演示功能。因此,我只是做了一个图片显示功能,用取模软件,把二维码图片取模转换为数组。
鉴于是通讯设备,图片的内容较大,肯定影响使用体验,而且操作不灵活。接下来,我就想如何实现单片机自己生产二维码,如果上位机只是下发要显示的字符串,通讯速度肯定快很多啊。比如1个128*128大小的图片需要128*128*2Byte字节=32KBytes来显示,就算是单色的也需要128*128/8=2KByte这么大的buf。用115200的波特率来收发的话,需要很多时间。
网上查了一些资料,找到很多开源的库,qrencode、Zbar、Zint、ZiXing。初步评估了一下,感觉还是qrencode比较精简,易于嵌入式移植。以下是我的移植qrencode3.4.4的过程,学习中参考了很多大神帖子。http://www.51hei.com/bbs/blog-197280-5673.html。毕竟我确实自己亲手实现了这个移植的过程,希望不要被认为是抄袭。
(1) 首先下载qrencode源码,网站https://fukuchi.org/works/qrencode/
(2)找一个自己的工程,我就用了自己的开发版的LCD显示历程的工程。
(3)新建一个qr文件夹,把qrencode的所以源文件.c和.h放进去。并新建一个congfig.h文件,填充必要的宏定义。
(4)在MDK工程中添加这些文件。
(5)添加头文件路径引用
(6)给工程添加全局宏定义
(7)main文件中添加必要的头文件引用和调用测试代码如下:
#include "qrencode.h"
#include "qrspec.h"
#include "mqrspec.h"
#include "bitstream.h"
#include "qrinput.h"
#include "split.h"
#include "mask.h"
#include "mmask.h"
printf("\r\nHY-RedBull\r\n");
printf("Development Board V1.0\r\n");
qrcode= QRcode_encodeString("sissi",7, QR_ECLEVEL_L, QR_MODE_8,0);
printf("====version=%d========\r\n",qrcode->version);
printf("====width=%d========\r\n",qrcode->width);
for(i=0;i<qrcode->width;i++){
for(j=0;j<qrcode->width;j++){
if(qrcode->data[i*qrcode->width+j]&0x01){
printf("*");
}
else{
printf(" ");
}
}
printf("\r\n");
}
printf("\r\n");
lcd_display_singlepicture(64,64,qrcode->width,qrcode->width,qrcode->data);
(8)修改栈和堆的大小
(9)编译和下载测试
工程代码下载路径:https://download.csdn.net/download/a931500274/10339439
STM32单片机实现二维码显示相关推荐
- STM32开发板动态二维码显示
业务场景需要扫码互动,咨询了小熊派官方,并没有提供案例,之前出厂时屏幕可以显示的二维码只是一个固定图片,显然不适合.到网上找了一些资料,解说的不算完整,不能直接应用.根据这些前人的提醒,自己迁移一份. ...
- 51单片机生成二维码
最近搞了个单片机生成二维码,步骤如下 1.下载QRCode生成的驱动源代码,这个驱动是c语言编写的可以移植到各种c语言写的工程上去,下面附上下载链接: https://download.csdn.ne ...
- 单片机生成二维码 C语言代码
随着二维码支付的普及,现在对设备端生成二维码的要求越来越多,前些时间做了一些项目,刚好是要在单片机接12864LCD屏生成二维码. 单片机生成二维码的源码,C语言编写,封装成函数,简单易用.本程序需要 ...
- 百度网盘登陆验证提示:无法访问此页面,或者二维码显示失败,弹窗显示:无法访问此页面,确保web地址。。。。
百度网盘登陆验证提示:无法访问此页面,或者二维码显示失败,弹窗显示:无法访问此页面,确保web地址.... 遇到百度网盘登陆时显示下面的情况: 原因:是自己电脑的IE浏览器设置出了问题,没有显示出来应 ...
- 微信扫码登录自定义二维码显示信息
微信扫码登录,自定义二维码显示信息 <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js& ...
- 支付宝支付二维码显示在商家网站页面,不跳转到支付宝?
如何控制二维码显示在商家电脑网站页面?根据官方文档说明,是可以实现的. 以下段落摘自支付宝官方文档 电脑网站支付本身是调用接口跳转到支付宝收银台页面显示二维码和账户登录方式支付的. 如果需要将该二维码 ...
- Ecshop 2.7.1 B2B2C 小京东 商城网站 商品详情页二维码显示出错
出现二维码显示出错的问题总结了三种: 一:可以看到上述的页面,左侧为商品详情二维码,此二维码可以在商城总后台设置,设置时注意格式,要与你的手机端页面链接相同,最后面的id值是你的商品id,如:http ...
- 谷歌 浏览器二维码显示异常,形成的二维码无法被扫描
一.二维码显示异常,如图: 这是电脑显卡驱动问题,更新一下显卡驱动就好了. 二.安装一个"驱动人生",–>驱动管理,找到要更新的显卡驱动,点击升级驱动 三.更新完驱动,重启电 ...
- 单片机嵌入式二维码解码识别
1)单片机嵌入式二维码(QRcode)生成 2)单片机嵌入式二维码(QRcode)解码 在我另一篇博客关于 "嵌入式二维码生成" 的博客里,经常会有小伙伴咨询关于单片机上做二维码解 ...
- android TV端如何读取微信网页版二维码显示生成一张图片
今天讲下TV端接二维码遇到的一些问题,由于是在微信平台申请的是以网站那种形式申请的,而不是服务号申请的,所以客户端显示的二维码是以网页的形式展现的,网页是用WebView加载实现的,但是我们的界面是这 ...
最新文章
- c++调用python3
- mysql五补充部分:SQL逻辑查询语句执行顺序
- kbengine定义实体
- dev项目属性按钮是灰色_Spring Boot 中的项目属性配置
- Contact Manager Web API 示例[4] 异常处理(Exception Handling)
- 音视频技术(25)---MPEG-2、MPEG-4、H.264 与视频带宽
- 马斯克2021五大预测:重返月球并比赛遥控汽车,全面实现自动驾驶,你pick哪一个?...
- 北美程序员面试常见问题
- Windows2000计划任务对机器进行重新启动
- 上课解除教师机控制(红蜘蛛)超详细
- matlab 线性回归 参数显著性,matlab做多元线性回归后回归系数的显著性检验
- ipython怎么安装_ipython安装(python3.6.1)(转载)
- 你有想过如何合适地给 JavaScript 变量命名吗?
- The server encountered an unexpected condition that prevented it from fulfilling the request
- 有关H5的第三章表单介绍
- 数据治理系列文章:(7)数据安全
- 科普 | 你需要了解的物联网卡基础知识
- 无人驾驶避障方法研究
- 大学的python选修课好学吗_中国大学MOOC(慕课)_用Python玩转数据_章节考试选修课答案...
- ERROR 2002 (HY00O) : Can‘t connect to local MySQL server through socket ‘ /var/ tib/ mysqL /mysgL.s
热门文章
- 勒索软件频繁升级,了解常见勒索软件很有必要
- FlexBox 行间距
- 感知颗粒度与高手之间的关系
- ZOJ - 3939(日期规律)
- Android使用串口打印机打印图片方法
- js 格式化prettier配置_使用Prettier eslint pre-commit进行js代码自动检测,格式化统一风格...
- 不带HDMI的PD HUB方案深度解析(LDR6023A)性价比极高的充电数据方案
- 西游记中金箍棒的来历和巨大威力
- 010-win10任务栏假死—重启“Windows资源管理器”。
- 74HC595级联电路编程篇(四)