基于LPC2103的藍(lán)牙熱敏打印機(jī)的開發(fā)
1.引言
常用的微型針式打印機(jī)速度慢、噪聲大, 無法滿足某些場合的需要。微型熱敏打印機(jī)具有打印速度快、噪音低、可靠性高、字跡清晰、機(jī)頭小而輕等優(yōu)點, 可滿足各種場合的打印要求, 因此得到廣泛應(yīng)用。微型熱敏打印頭對打印時序和溫度要求較高, 一旦控制不當(dāng)極易造成打印頭燒毀, 其控制系統(tǒng)的軟硬件設(shè)計較復(fù)雜。本文選用FTP-628MCL101熱敏打印頭開展研發(fā)工作。此便攜式微型熱敏打印機(jī)為支持藍(lán)牙無線通訊技術(shù)的便攜式票據(jù)打印機(jī),可廣泛使用在移動政務(wù)、警務(wù)、煙草、郵政、運輸、配送等等行業(yè)。
2.系統(tǒng)組成
本系統(tǒng)由LPC2103控制系統(tǒng),藍(lán)牙通信模塊,打印頭接口模塊,外存芯片,電源模塊組成。
組成框圖如下:
3.打印原理
選用的FTP-628MCL101作為熱敏打印頭。該熱敏打印頭點結(jié)構(gòu)384 點/行, 水平方向點密度: 8 點/mm, 垂直方向行間距: 8 點/mm。有效打印寬度48mm。打印速度最大為60mm/秒。要打印的數(shù)據(jù)在時鐘CLK 的配合下, 經(jīng)由數(shù)據(jù)輸入腳DI 移到熱敏機(jī)芯內(nèi)部的移位寄存器中。經(jīng)384 個時鐘周期, 一行384 位數(shù)據(jù)全部移到移位寄存器后, 鎖存端的鎖存信號/LAT 由CPU 置低,移位寄存器的數(shù)據(jù)被鎖存到鎖存器。然后熱敏頭加熱控制信號STB 產(chǎn)生高電平, 此時根據(jù)384 點輸入的DI 數(shù)據(jù)是1 或者是0決定發(fā)熱元件是否發(fā)熱, 由此在熱敏紙上產(chǎn)生要打印的點行。打印時序圖如下:
[!--empirenews.page--]
步進(jìn)電機(jī)時序如下:
打印頭打印一點行,步進(jìn)電機(jī)前進(jìn)一點行。由于打印電流過大,所以打印頭是逐段加熱的,在打印一點行的過程中,1,2,3,4,5,6這6段是逐段加熱的。供電電源選項用7.5V,電流2A以上電源。布線方面需要注意的就是藍(lán)牙模塊的天線不能被鋪地銅給屏蔽,藍(lán)牙模塊那邊地應(yīng)空出來。
4.軟件設(shè)計:
4.1 啟動代碼:
在用LPC2103進(jìn)行熱敏打印機(jī)開發(fā)中,啟動代碼是周立功公司提供的啟動代碼,包括三個文件,Init.s,Vectors.s,init.c,需要改動的地方就是堆棧大小,還有就是系統(tǒng)時鐘的設(shè)置。
4.2 軟件驅(qū)動:
熱敏打印機(jī)是一個打印命令和控制面板驅(qū)動的系統(tǒng)。系統(tǒng)根據(jù)上位機(jī)傳下來的打印命令流,完成相應(yīng)的打印命令,打印命令可以以串口或是并口,或是藍(lán)牙的方式從上位機(jī)獲得;控制面板上的消息也可以對打印機(jī)進(jìn)行驅(qū)動,如進(jìn)紙鍵,切紙鍵。
系統(tǒng)主程序框圖如下:
[!--empirenews.page--]
4.3 打印協(xié)議:
串口緩沖區(qū)采用循環(huán)隊列,RS232的串口0與藍(lán)牙的串口1共用同一緩沖區(qū),打印處理的主要依據(jù)是協(xié)議主要是基于ESC/POS® 標(biāo)準(zhǔn)的命令協(xié)議,它包括打印控制命令,字符參數(shù)設(shè)置命令,打印排版設(shè)置命令,圖形打印命令,條碼打印命令,曲線打印命令,用戶自定義命令,漢字打印命令等,下表給出一些打印控制命令的格式化式和功能:
還有一些具體命令,可以參考
UnifiedPOS Version 1.10 -- Released February 10, 2006
4.4 字庫部分說明:
支持英數(shù)字符ANK、GB18030 漢字字符。
字庫在FLASH中從0X30存放,0X10起為英文字庫的行列(兩個字) ,起始位置(2個字,高位在前),結(jié)束字節(jié)((2個字,高位在前); 0X20起為中文字庫的行列(兩個字) 起始位置(2個字,高位在前),結(jié)束字節(jié)((2個字,高位在前);
英文字庫下載命令為: 1D 55 ziku_line ziku_row Plongl Plongh,Pl Ph ;
中文字庫下載命令為: 1D 5A ziku_line ziku_row Plongl Plongh,Pl Ph ;
代碼如下:
unsigned char doGS(void)
{
unsigned char mm;
if(comcome()==TRUE) mm = comcomedata ;
else return FALSE;
switch(mm)
{
case 'U':englishZiKuDown();break; // 0x55='U'
case 'Z':chinaZiKuDown();break; // 0x5a='Z'
default :break;
}
return ENABLE;
}
5.小結(jié)
為了使打印機(jī)易于使用,我們設(shè)計了簡潔的按鍵和指示燈。在這款打印機(jī)中,我們設(shè)計了兩個LED燈,用來指示打印機(jī)的狀態(tài),一個是錯誤指示燈,一個是有紙無紙指示也作電源指示用,在不同狀態(tài)下燈的閃爍情況也不一樣,在正常打印下,錯誤指示燈滅,有紙燈亮;在下載位圖和字庫的時候,有紙燈會閃爍;當(dāng)無紙時,錯誤指示燈亮,有紙燈滅;當(dāng)打印頭溫度這高時,錯誤指示燈也會亮。
本文創(chuàng)新點:通過增加藍(lán)牙通信模塊的增加,使得此熱敏打印機(jī)的應(yīng)該范圍更廣,只要上位機(jī)擁有一個藍(lán)牙Dongle,就可以實現(xiàn)無線打印。可廣泛使用在移動政務(wù)、警務(wù)、煙草、郵政、運輸、配送等等行業(yè)。通過合理的配置加熱時間,可使得打印效果和打印速度之間的實現(xiàn)最最佳配置。
參考文獻(xiàn):
[1]王俊紅,等.基于AT89C52 單片機(jī)的變量噴霧控制器設(shè)計[J].微計算機(jī)信息,2006,2:8- 10 .
[2] UnifiedPOS Version 1.10 -- Released February 10, 2006
[3]林銳.軟件工程思想
[4]林銳.高質(zhì)量C++/C 編程指南,2001.7
[5]美國 Micbeal Barr .C/C++嵌入式系統(tǒng)編程,中國電力出版社
[6]美國Steve McConnell.代碼大全, 學(xué)苑出版社,1993