1. 程式人生 > >簡談二維碼(QRcode)的C語言生成,在微控制器平臺的實現

簡談二維碼(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)把二維碼原始程式碼新增到你的工程檔案中,不管什麼微控制器,直接新增不做任何修改。如下:

(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顯示屏顯示出來,最終就會得到你要的二維碼。

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

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

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