|
記得我第一次接觸點(diǎn)陣屏,是大二時(shí)舉行的校內(nèi)電子設(shè)計(jì)大賽,一個(gè)09級的師兄做的,覺得很神奇。看他的演示,推測大概的方案是:
用VB做一個(gè)上位機(jī)界面,通過用戶輸入想要的漢字(或字母、表情),然后PC端生成取模后的數(shù)據(jù),通過無線模塊發(fā)送至點(diǎn)陣屏控制器,進(jìn)行文字顯示。當(dāng)然還不止這些,可以控制文字移動(dòng)的方式(上、下、左、右),移動(dòng)速度等。其實(shí)就是現(xiàn)在市場上的廣告屏啦。
因?yàn)楫厴I(yè)設(shè)計(jì)的緣故,我有機(jī)會(huì)深究點(diǎn)陣屏,在家的這段日子一直在與點(diǎn)陣屏打交道。也就萌生了一些想法。
我的想法如下:
整個(gè)系統(tǒng)分為2個(gè)部分。一個(gè)是用stm32f10x主控的,以TFT_LCD液晶屏做交互界面的主控制系統(tǒng)(主系統(tǒng)),另一個(gè)是用stc 1T主控、用來控制點(diǎn)陣屏(我的點(diǎn)陣屏的16x64)顯示的(從系統(tǒng))。
(1)主系統(tǒng)做一個(gè)漢字輸入程序(如下)。由用戶自行定義要在點(diǎn)陣上顯示的字(字?jǐn)?shù)由從系統(tǒng)的EEPROM或RAM大小決定);
(2)由這些用戶輸入的漢字的內(nèi)碼,去查找放在SD卡(或外拓flash)上的GBK/GB2312字庫。(其實(shí)就是找到內(nèi)碼對應(yīng)的漢字的點(diǎn)陣數(shù)據(jù),比如,如果一個(gè)字是16bx16b,就相當(dāng)于32B,在GBK16中,一個(gè)漢字所對應(yīng)的點(diǎn)陣數(shù)據(jù)就有32B)。
(3)因?yàn)槲宜玫纳勺謳斓能浖恢С?種模式,其中橫向掃描方式只有一種(高位在前,低位在后),而我的點(diǎn)陣屏顯示需要低位在前,高位在后(目前還不清楚原理)。所以我需要再這里寫一個(gè)高位轉(zhuǎn)低位的函數(shù) unsigned char MSB2LSB(unsigned char input)。
下面是由主系統(tǒng)的串口輸出的數(shù)據(jù):
建
0x0 0x2 0x0 0x2 0xdf 0x1f 0x10 0x12 0xe8 0x7f 0x8 0x12 0xc4 0x1f 0x1e 0x2 0xd0 0x1f 0x10 0x2 0x12 0x2 0xec 0x3f 0x8 0x2 0x34 0x2 0xc2 0x7f 0x1 0x0
設(shè)
0x0 0x0 0x84 0xf 0x88 0x8 0x88 0x8 0x80 0x8 0x40 0x70 0x2f 0x0 0xc8 0x1f 0x88 0x10 0x88 0x8 0x8 0x9 0x28 0x5 0x18 0x2 0x8 0x5 0xc0 0x18 0x30 0x60
銀
0x8 0x0 0x88 0x1f 0xbc 0x10 0x84 0x10 0x82 0x1f 0xbd 0x10 0x88 0x10 0x88 0x1f 0xbf 0x22 0x88 0x12 0x88 0xc 0x88 0x4 0xa8 0x8 0x98 0x12 0x88 0x61 0x80 0x0
行
0x10 0x0 0x90 0x3f 0x8 0x0 0x4 0x0 0x12 0x0 0x10 0x0 0xc8 0x7f 0xc 0x4 0xa 0x4 0x9 0x4 0x8 0x4 0x8 0x4 0x8 0x4 0x8 0x4 0x8 0x5 0x8 0x2
漢字取模程序已經(jīng)做好了,接下來的問題是怎么將這些數(shù)據(jù)傳輸?shù)綇南到y(tǒng)去顯示。對此,我采用的是無線透傳的方案,加上一個(gè)定制的通訊協(xié)議。
|
|