記得我第一次接觸點陣屏,是大二時舉行的校內電子設計大賽,一個09級的師兄做的,覺得很神奇。看他的演示,推測大概的方案是:
用VB做一個上位機界面,通過用戶輸入想要的漢字(或字母、表情),然后PC端生成取模后的數據,通過無線模塊發送至點陣屏控制器,進行文字顯示。當然還不止這些,可以控制文字移動的方式(上、下、左、右),移動速度等。其實就是現在市場上的廣告屏啦。
因為畢業設計的緣故,我有機會深究點陣屏,在家的這段日子一直在與點陣屏打交道。也就萌生了一些想法。
我的想法如下:
整個系統分為2個部分。一個是用stm32f10x主控的,以TFT_LCD液晶屏做交互界面的主控制系統(主系統),另一個是用stc 1T主控、用來控制點陣屏(我的點陣屏的16x64)顯示的(從系統)。
(1)主系統做一個漢字輸入程序(如下)。由用戶自行定義要在點陣上顯示的字(字數由從系統的EEPROM或RAM大小決定);
(2)由這些用戶輸入的漢字的內碼,去查找放在SD卡(或外拓flash)上的GBK/GB2312字庫。(其實就是找到內碼對應的漢字的點陣數據,比如,如果一個字是16bx16b,就相當于32B,在GBK16中,一個漢字所對應的點陣數據就有32B)。
(3)因為我所用的生成字庫的軟件只支持4種模式,其中橫向掃描方式只有一種(高位在前,低位在后),而我的點陣屏顯示需要低位在前,高位在后(目前還不清楚原理)。所以我需要再這里寫一個高位轉低位的函數 unsigned char MSB2LSB(unsigned char input)。
下面是由主系統的串口輸出的數據:
建
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
設
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
漢字取模程序已經做好了,接下來的問題是怎么將這些數據傳輸到從系統去顯示。對此,我采用的是無線透傳的方案,加上一個定制的通訊協議。
|