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