天天看點

簡談二維碼(QRcode)的C語言生成,在單片機平台的實作

轉載自:

https://blog.csdn.net/qq_21475601/article/details/71480028

二維碼又稱QR Code,QR全稱Quick Response,越來越多的在生活中出現,作為一種辨別,以其廉價簡單友善的使用很快普及到生活的角角落落。像衣、食、住、行、社交等等,就連發這篇部落格時,登入CSDN也是掃碼登入,确實好用。而且這種增長趨勢還在持續。

以往我們所使用到的二維碼大多依賴網絡平台或者智能終端,今天我們來談談在單片機平台上的實作過程。二維碼看起來是一堆雜亂無章的點陣集合,實則有自己的編碼規則(點選這裡)。規則比較複雜有興趣可以深究,如果僅僅想為了使用而學習請忽略之,并往下看。

這次我所使用的是一個基于cotex M0的ARM處理器(看成一個單片機),全程C語言實作。單片機性能比較一般但是就效果來看,做二維碼生成已經綽綽有餘。開始正題,需要準備的材料有:

(1)C語言生成二維碼的原始代碼(點選這裡下載下傳)

(2)編譯器和調試工具

(3)單片機平台一個(任意單片機)

(4)LCD12864顯示器一個(其他顯示器也行,大點的)

代碼移植步驟:

(1)把二維碼原始代碼添加到你的工程檔案中,不管什麼單片機,直接添加不做任何修改。如下:

簡談二維碼(QRcode)的C語言生成,在單片機平台的實作

(2)打開二維碼原始代碼找到QR_Encode.c檔案,并找到在此檔案中找到BOOL EncodeData(char *lpsSource)函數,這個函數就是生成二維碼的核心函數,用法也很簡單,隻需把你需要轉換的字元作為參數傳入即可。如 EncodeData("http://www.csdn.net/")。

這時二維碼的轉換結果,已經儲存在全局變量 二維數組m_byModuleData[MAX_MODULESIZE][MAX_MODULESIZE]中,這個二維數組中儲存的都是0、1比特值(有點像單色BMP位圖),0就代表二維碼的空白點,1就代表二維碼的黑點了。現在你需要做的就是把這些空白點和黑點通過LCD顯示屏顯示出來,最終就會得到你要的二維碼。

簡談二維碼(QRcode)的C語言生成,在單片機平台的實作

(3)至于LCD顯示部分,能看這篇文章的小夥伴應該很熟悉了,右側掃碼logo是我加上去的。

over 大功告成,講的比較糙,但是應該能用的上。有問題或者建議歡迎留言或Q群474917846(*——*)

應大家反應,建了二維碼讨論群,掃碼進++

簡談二維碼(QRcode)的C語言生成,在單片機平台的實作
c