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