電子制作小心得:
電子書要用到滾屏,在寫lcd12864底層驅(qū)動的時候就開始研究如何能實(shí)現(xiàn)滾屏,可惜液晶屏的寄存器所描述的滾屏只能實(shí)現(xiàn)一次滾,第2次滾的時候就失效了,再把滾屏禁止,原來的數(shù)據(jù)又回來了,弄了好久滾屏這塊還是沒弄懂。最后我只能每次翻一頁,每次重新刷數(shù)據(jù)。還有一個問題是這樣的,因?yàn)橐粋文檔里可以有英文、漢字、特殊符號(ascii里 小于32的那些)這樣一屏顯示多少數(shù)據(jù)是不固定的,有可能是540 也有可能是530 或者更少,所以每次翻頁文件指針移動的多少都不固定,向下翻頁的時候很簡單,只要記錄上一屏給lcd上顯示了幾個數(shù)據(jù),然后下翻的時候只要把文件指針向后移動多少就行了。但向上翻頁時怎么辦?必須要知道上上一屏的數(shù)據(jù)是從哪個文件指針開始讀的,這就要做記錄。可以開一個20 長度的unsigned long型數(shù)據(jù)來存儲,當(dāng)然這只能支持向上翻18頁,其實(shí)這塊完全可以根據(jù)要讀的txt文檔的大小來計(jì)算出最壞情況下需要的數(shù)據(jù)長度,然后用malloc動態(tài)分配出這么長的內(nèi)存單元來做記錄(這要保證啟動代碼里分配了足夠大的heap,因?yàn)閙alloc申請的內(nèi)存來源于堆) |