我們在設計MP3或其他的一些動態顯示時,需要作平滑移動的處理,如:向左移動或者向右移動!一般有硬件方式和軟模擬方式,硬件方式需要LCD驅動芯片的支持,而軟件方式較為靈活,不依賴于驅動芯片,但耗費CPU的處理時間。 例如:MP3的LCD屏只有128*32,也就是:除去圖標只能顯示一行漢字。而MP3的歌名加上ID3信息超過8個中文字符(16*16)或者16個英文字符(16*8),這樣只能采取移動的方式了。通常的做法有兩種:一種是平滑移動方式,另一種是半個字符移動方式。 平滑移動需要占用CPU的時間比較多,一幀數據:28*16/8 = 256 BYTES ,如果一秒鐘移動一個中文字符,就要送16次,共4K BYTES。如果LCD用并行口,還可以勉強接受,但是如果是串口,就有32K BITS的數據量。 半字符移動方式比較簡單,不需要緩沖區,直接把中西文的點陣數據寫到屏就可以了,如果一秒鐘移動一個中文字符,就只要送2次,共512 BYTES。相對數據量較小。 TRACK001.MP3 When a man love woman Michael Bolton如圖1所示:這是一首MP3的顯示內容 dislay_buff[]。 水平超過128,由于要實現移動所以我們的BUFFER必須大于128,由于空間的限制,取(128+16)×2空間作為緩沖區,既是多取一個字符的空間。首先把要顯示的內容(圖1)dislay_buff[],取0-17個字符,轉換到點陣依次填滿BUFFER區(注意小心處理中西文混合,以后另述)。一般的液晶用的是垂直正序或垂直倒序的方式顯示,一個BYTE顯示八行一列,一個16*16的中文字符占用32個字符。 圖2 我們把點陣字符按液晶的排列方式送到顯示緩沖區,然后就開始送BUFFER的上半行的128個字節(0-127)和下半行的128個字節(0-127),大約50-60毫秒再送BUFFER的上半行的128個字節(1-128)和下半行的128個字節(1-128)。。。如此一直到BUFFER的上半行的128個字節(16-143)和下半行的128個字節(16-143)。 接下來把要顯示的內容(圖1)去掉兩個西文字后的轉換點陣送到BUFFER區,重復上述操作一直到顯示完成。 |