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