從最初得到CH554開發(fā)板起,就期待著有一塊能讀取U盤的開發(fā)板,后來CH579M EVT開發(fā)板出來,可惜沒能如愿,于是就將力量集中在CH579M- R1開發(fā)板身上。 盡管CH579M- R1較之CH579M EVT的外設(shè)相差很多,當還是能夠通過它來實現(xiàn)U盤讀寫數(shù)據(jù)的愿望。 由于該開發(fā)板的例程對U盤讀寫功能展示的不很完整,因此在這方面投入了許多時間和精力,但起色不大。 直到近幾日才最終達到了預期的目標,使彩色OLED屏與U盤讀寫功能相結(jié)合,實現(xiàn)了一個迷你版的數(shù)碼相框。 在此期間,所經(jīng)歷的歷程如下: 1. 在OLED屏上顯示U盤信息 其實對U盤功能的期許并不在于它的寫入能力多強,能記錄采集的數(shù)據(jù)即可,但對它的讀取能力就另眼相看了,因為在微處理器這方面,你給它再大的內(nèi)存也不嫌多,不得以只能寄托于U盤之類的外存。相較于Flash,U盤更便于交換數(shù)據(jù)和信息。要想實現(xiàn)數(shù)碼相框功能,首先就要過讀取這一關(guān)。 1)首先新建一個文件“CH579HFT.TXT”,然后將字符串“CH579M-R1 OK”等信息寫入其中見圖1所示。
1.jpg (35.67 KB, 下載次數(shù): 44)
下載附件
2020-10-20 16:21 上傳
圖1 創(chuàng)建新文件
2)通過串行通訊來顯示讀取的內(nèi)容,見圖2所示。其中,是以語句TotalCount = 12;來限定讀取的字節(jié)長度。 由此,可見數(shù)據(jù)的讀取是成功的。
2.jpg (48.83 KB, 下載次數(shù): 57)
下載附件
2020-10-20 16:21 上傳
圖2 顯示讀取內(nèi)容 3)添加OLED屏顯示程序,通過語句OLED_ShowString(0,0,mCmdParam.ByteRead.mByteBuffer,16); 來顯示讀取的內(nèi)容,見圖3所示。這樣,我們打開了U盤讀取應(yīng)用的大門。
3.jpg (30.94 KB, 下載次數(shù): 55)
下載附件
2020-10-20 16:21 上傳
圖3 OLED屏顯示 2. 讀取U盤軟字庫來顯示漢字 有了前面的字符讀取基礎(chǔ),我們可以把它改造為讀取字節(jié)數(shù)據(jù),從而以U盤來構(gòu)建軟字庫,并通過OLED屏與顯示函數(shù)的配合來實現(xiàn)漢子的顯示。 1)以“海內(nèi)存知己天涯若比鄰”10個漢字為例,先用字模提取軟件提取其字模,見圖4所示。
4.jpg (59.43 KB, 下載次數(shù): 66)
下載附件
2020-10-20 16:21 上傳
圖4 提取字模 2)將字模生成的文件整理成轉(zhuǎn)換軟件所要求的格式,然后進行轉(zhuǎn)換即可得到存放字模的二進制文件,見圖5所示。
5.jpg (56.35 KB, 下載次數(shù): 64)
下載附件
2020-10-20 16:21 上傳
圖5 數(shù)據(jù)格式轉(zhuǎn)換 3)通過工具軟件對數(shù)據(jù)進行審核,見圖6所示。經(jīng)審核兩者的內(nèi)容一致,只是數(shù)據(jù)類型不再不同。
6.jpg (81.56 KB, 下載次數(shù): 53)
下載附件
2020-10-20 16:21 上傳
圖6 審核BIN文件 4)通過串行通訊來分批次讀取字模,每次32 個字節(jié),其結(jié)果如圖7所示,經(jīng)判別讀取無誤。
7.png (26.78 KB, 下載次數(shù): 44)
下載附件
2020-10-20 16:21 上傳
圖7 讀取字模 5)配置相應(yīng)的漢字顯示函數(shù),實現(xiàn)字模的讀寫和漢字再現(xiàn),見圖8所示。 當然這是利用小字庫來進行顯示,若改為大字庫進行顯示,則需要構(gòu)建一個索引表,來使?jié)h字的內(nèi)碼與字模的存儲位置建立對應(yīng)關(guān)系以便定位讀取。
8.png (878.67 KB, 下載次數(shù): 49)
下載附件
2020-10-20 16:21 上傳
圖8 軟字庫再現(xiàn)漢字 3. 讀取U盤中BMP來顯示圖片 對于漢字我們可以把它看成是一幅黑白兩色的圖片,有了漢字顯示的基礎(chǔ),就可以嘗試用彩色OLED屏來顯示圖片了。 由于OLED屏的尺寸限制,所以在完成顯示任務(wù)前,需多加一道工序,那就是制備可供OLED屏顯示的圖片。 1) 以工具軟件來制備供OLED屏顯示的圖片文件,該圖片的長寬值為160*80像素,其內(nèi)容見圖9所示。
9.png (61.06 KB, 下載次數(shù): 60)
下載附件
2020-10-20 16:21 上傳
圖9圖片處理 2) 修改圖片顯示函數(shù),將其拆散來融入數(shù)據(jù)讀取過程中,則運行后的效果如圖10所示。 這里我們之所以來講圖片顯示函數(shù)打散,也是出于MCU內(nèi)存小的考慮,是將一副圖片的數(shù)據(jù)拆分成若干塊來分批讀取,自然顯示函數(shù)也不宜在整體工作,而是服務(wù)于分批分塊逐次進行顯示。
10.png (382.88 KB, 下載次數(shù): 59)
下載附件
2020-10-20 16:21 上傳
圖10 圖片顯示 4.數(shù)碼相框功能的實現(xiàn) 完成了圖片的顯示功能,我們就可以利用U盤容量大、可對大量文件進行管理的特點來實現(xiàn)數(shù)碼相框的功能,其基本思路是每顯示完一幅圖片后,經(jīng)延時再打開另一個圖片文件以進行讀取和顯示,其效果如圖11~圖13所示。
11.png (808.6 KB, 下載次數(shù): 47)
下載附件
2020-10-20 16:21 上傳
圖11 開通圖片
12.png (888.69 KB, 下載次數(shù): 39)
下載附件
2020-10-20 16:21 上傳
圖12 風景圖片
13.jpg (24.32 KB, 下載次數(shù): 45)
下載附件
2020-10-20 16:23 上傳
圖13 顯示細節(jié)
建立在CH579M- R1開發(fā)板上,最終以讀取U盤的形式,實現(xiàn)了數(shù)碼相框的功能。CH579M是個功能很強的芯片,真心希望有一塊CH579M EVT開發(fā)板以對SD卡的讀寫功能作進一步的探索,以發(fā)揮其更大的潛能。
|