51单片机生成二维码

时间: 2023-07-18 admin 互联网

51单片机生成二维码

51单片机生成二维码

最近搞了个单片机生成二维码,步骤如下

1.下载QRCode生成的驱动源代码,这个驱动是c语言编写的可以移植到各种c语言写的工程上去,下面附上下载链接:

下载好了后,里面有一个QR Code源码库,还有一个我根据源码写好的示例工程,按照里面说明的硬件搭一下,直接烧录程序就可以生成QR code。

2.接下来是源码的用法

由于我只用到了生成二维码,也不需要解析或者其他什么的,所以源码很多内容对于我来说是用不到的,单是生成二维码只需要源码压缩包里的三个文件,分别是QR_Encode.c,QR_Encode.h,data_type.h,把这三个复制到自己项目的工程底下,然后添加进去,就可以调用里面的函数了。

里面需要用到的函数只有一个 就是:EncodeData("需要转化为二维码的文本内容");//这个函数的意思就是 把文本转化为二维码,转化完成后,它会将转化好的二维码数据保存到m_byModuleData[x][y];这个二维数组中,二维码只由黑白块组成,因此这个数组的内容也就只有0和1,1代表黑块,0代表白块。只需要根据这个二维数组,把黑快和白块在液晶屏或者上位机上显示就可以了!二维数组打印都会吧,for嵌套就完事了,哈哈,so easy。

3.QR_Encode.h里面参数配置

QR_Encode.h里有很多参数可以配置,例如最大容量,最大纠错等等,这些根据你的需要去改就可以了。不知道这些参数是什么意思的话,可以钻研一下下面的博客:.html。

4.注意事项!!!主要浪费了时间的地方,也是很难解决的地方- =

1)51单片机内存资源问题

如果你采用的是高级的单片机,STM32之类的,这一条稍作参考即可,如果是51,那问题就比较大,51的性能很差,内存很小,直接把上述三个文件复制到工程里并且使用的话,51的内存是不够的,这样是生成不出来二维码的,现象就是,液晶啥也不显示。那么如何解决呢? 编译发现,主要的不足是RAM不足,那么就可以对源文件稍微修改,QR_Encode.c中有很多数组的内容是固定的,们可以在数组前加一个code关键字,把这些固定的内容移入ROM,用这样的方法根据编译结果下面的data=xxx,xdata=xxx,code=xxx慢慢修改,直到RAM和ROM都不溢出为止。如果嫌麻烦,或者改不好,可以直接把我的工程根目录改了的QR_Encode.c,QR_Encode.h考出来,添加到你自己的工程里。

所以STC89C51RC这样的就不要用了,内存一定是不够的,89c51系列的话,就用STC89C516RD+吧,具体区别看下表,反正驱动代码都是一样的,买一块516直接插上就完事了。

2)液晶的选择

成功显示二维码之后,看看会不会出现二维码扫不出来的情况,如果会,很可能就是你的屏幕不是黑白屏幕的,如果你是蓝色底的屏幕,和绿色底的,这个都会影响二维码扫描,因为二维码是黑色吸光,白色反射,你弄个绿色底,自然有问题。如果是彩屏那就好办了,直接打印黑白点就行。

3)参数不当引起二维码无法识别

这个就是要理解好二维码的参数设置,具体参看第3点。

我遇到的就是,最大纠错设置的不对,我设置的空间不足以在程序中存储计算出来的纠错码。因为纠错率越高,代表要加入的纠错码越大,那对应的空间就要设置大了,不然就存不下。因此,提高纠错率是会影响内存的,要注意这里的内存问题,总而言之,设置完了根据编译改~。

 

最后上一张成功后的图片

如果实在是出不来,不妨根据我给的工程先弄一套硬件出来(很快的,拿个最小系统插上stc89c516rd+,再插上12864,例程里的12864打点代码是并口屏幕,注意不要用串口屏,改一下引脚就行,然后直接烧录代码,一定是可以出来的。先弄出个结果再去做,会容易不少的,哈哈。