《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于LPC2148的手持式熱敏條碼打印機(jī)研制
基于LPC2148的手持式熱敏條碼打印機(jī)研制
朱海洋, 歐陽明星
廣東松山職業(yè)技術(shù)學(xué)院 電氣工程系, 廣東 韶關(guān)512126
摘要: 介紹了EAN-13常見商用條碼編碼格式,給出一個(gè)打印實(shí)例,,設(shè)計(jì)一種基于LPC2148的熱敏打印機(jī)控制主板,,并給出了系統(tǒng)硬件組成框圖。為使打印機(jī)工作于電池供電的便攜模式,設(shè)計(jì)了高效率電源管理電路。同時(shí)對(duì)中文字庫的編碼方法進(jìn)行研究后,按字庫使用頻度設(shè)計(jì)兩個(gè)字庫,,并將常用字庫集成在CPU內(nèi)部。最后給出條碼,、漢字及字符的打印編程思路,。
Abstract:
Key words :

摘  要: 介紹了EAN-13常見商用條碼編碼格式,給出一個(gè)打印實(shí)例,,設(shè)計(jì)一種基于LPC2148熱敏打印機(jī)控制主板,,并給出了系統(tǒng)硬件組成框圖。為使打印機(jī)工作于電池供電的便攜模式,,設(shè)計(jì)了高效率電源管理電路,。同時(shí)對(duì)中文字庫的編碼方法進(jìn)行研究后,按字庫使用頻度設(shè)計(jì)兩個(gè)字庫,,并將常用字庫集成在CPU內(nèi)部,。最后給出條碼、漢字及字符的打印編程思路,。
關(guān)鍵詞: 熱敏打印機(jī),; ARM控制器,; 條碼; 機(jī)內(nèi)碼,; 字庫,; 電池供電; 保護(hù)電路

  條碼技術(shù)是自動(dòng)識(shí)別與數(shù)據(jù)采集(AIDC)技術(shù)中應(yīng)用最古老,、最成熟的技術(shù),,具有輸入速度快、可靠性高,、采集信息量大,、靈活實(shí)用等特點(diǎn),是迄今為止最經(jīng)濟(jì),、實(shí)用的一種自動(dòng)識(shí)別技術(shù),,且條碼標(biāo)簽易于制作,識(shí)別裝置便宜,、操作簡(jiǎn)單,。
  熱敏打印機(jī)具有噪聲低、速度快,、可靠性高,、打印字符清晰等優(yōu)點(diǎn),被廣泛應(yīng)用在POS終端系統(tǒng),、銀行系統(tǒng),、醫(yī)療儀器等領(lǐng)域,,尤其在物流,、倉儲(chǔ)、工業(yè)生產(chǎn)等場(chǎng)合,。
  本文設(shè)計(jì)一種基于LPC2148的手持高速熱敏打印機(jī)器,,采用電池供電,能打印條碼,、漢字和字符等,,可應(yīng)用于工業(yè)生產(chǎn),物流運(yùn)輸跟蹤等方面,。其體積小,,易于嵌入到其他需要打印功能的產(chǎn)品中。
1 一維條形碼打印原理
  一維條形碼是由一組粗細(xì)不同的黑白條按一定編碼規(guī)則排列組成的標(biāo)記,有UPC-E,、EAN-8,、EAN-13等多種格式,其中以EAN-8,、EAN-13在商業(yè)領(lǐng)域最為常見[1],。
  EAN-13碼共有13位數(shù)字,,按照“模塊組合法”進(jìn)行編碼。其符號(hào)結(jié)構(gòu)由8部分組成,,如圖1所示,。其中,最左邊第一個(gè)數(shù)字為前置碼,,代表左側(cè)數(shù)據(jù)編碼規(guī)則,。起始符不代表任何資料,為固定邏輯101,。分隔符為固定邏輯01010,,將數(shù)據(jù)資料分成左右兩部分。左側(cè)6個(gè)數(shù)字的編碼方式取決于前置碼類型,。前置碼共10個(gè),,它決定左側(cè)6個(gè)數(shù)字的10種編碼方式,分A類和B類,,具體編碼值可根據(jù)相關(guān)表格查找,。右側(cè)有5位數(shù)據(jù)和1位校驗(yàn)碼,其編碼方式為固定C類,,校驗(yàn)碼也可用作數(shù)據(jù),。

  圖1中條碼的前置碼為9,左側(cè)數(shù)據(jù)編碼方式為ABBABA,右側(cè)為固定的CCCCCC,,所以770157001687的編碼為101(起始)-0111011-0010001-0100111-0011001-000101-0111011-01010(中間碼)-1110010-1110010-1100110-1010000-1001000-1000100-101(結(jié)束),。其中,0代表?xiàng)l碼的白細(xì)條,,1代表?xiàng)l碼的黑細(xì)條,。每個(gè)黑、白細(xì)條的寬度為0.33 mm[1],,實(shí)際中可由熱敏打印機(jī)的熱敏元件大小確定,。打印機(jī)根據(jù)這個(gè)二進(jìn)制編碼即可打印出圖1所示的條碼。
2 熱敏打印機(jī)時(shí)序
  選用精工LTPA245高速熱敏打印機(jī),,它共有384個(gè)熱敏打印機(jī)元件,,排成行的形式。打印寬度為48 mm,,驅(qū)動(dòng)電壓為4.5 V~8.5 V,,邏輯電壓為2.7 V~5.25 V,打印速度為427個(gè)點(diǎn)行/秒(53.4 mm/s)~720個(gè)點(diǎn)行/秒(90 mm/s)[2],。LTPA245具有小巧,、打印速度快等優(yōu)點(diǎn),適用于條碼打印,。
  LTPA245采用串行通信接口,,數(shù)據(jù)通過串行方式移入打印機(jī)內(nèi)部,,其驅(qū)動(dòng)時(shí)序如圖2所示。其中,,CLK為串行移位時(shí)鐘,,DAT為串行移位數(shù)據(jù),/LATCH為鎖存信號(hào),,DST為分段加熱控制信號(hào),。384 bit為一行數(shù)據(jù),在CLK作用下,,數(shù)據(jù)從DAT端逐一移入打印機(jī)內(nèi)數(shù)據(jù)寄存器中,。每一個(gè)數(shù)據(jù)位對(duì)應(yīng)1個(gè)加熱元件,當(dāng)該單元數(shù)據(jù)為0時(shí),,表示不加熱,,為1時(shí)表示加熱。熱敏紙被加熱的位置變黑,,不加熱的位置不變色(白),。當(dāng)384個(gè)bit(12 words)全部移入打印機(jī)之后應(yīng)產(chǎn)生1個(gè)/LATCH的鎖存信號(hào)(負(fù)脈沖),將數(shù)據(jù)送到打印寄存器,。為防止打印電流過大,,控制DST0~DST5,使之逐一輸出1,,這樣一行數(shù)據(jù)就分為6段(次)打印完畢,。一行打印結(jié)束后,從A,、/A,、B、/B端送出脈沖,,驅(qū)動(dòng)進(jìn)給電機(jī)帶動(dòng)紙前移一段距離,,繼續(xù)打印[3]。

3 系統(tǒng)組成
  打印機(jī)控制主板結(jié)構(gòu)如圖3所示,,由主控CPU(AMR7)、打印頭,、電機(jī)驅(qū)動(dòng),、保護(hù)電路、通信接口,、中文字庫,、電源管理電路等組成。采用全SMT貼片工藝,,所有元件集成在一塊60 mm×70 mm的PCB電路板上,,體積小巧,。

4 硬件電路設(shè)計(jì)
4.1 主控CPU[4]
  主控CPU選用NXP公司LPC2148微處理器。這是一片64腳的ARM7TDMI-S內(nèi)核微處理器,。體積小,,共有44個(gè)通用I/O口。內(nèi)部集成USB2.0協(xié)議塊,、IIC總線,、SPI接口、2個(gè)ADC(14路),、1個(gè)DAC,、2個(gè)UART。片上存儲(chǔ)器容量大,,共有512 KB Flash,、32 KB RAM(8 KB與USB共享)。支持串口ISP,、JTAG下載方式,,功能強(qiáng)大,開發(fā)周期短,,更為詳細(xì)的資料見參考文獻(xiàn)[4],。
4.2 進(jìn)給電機(jī)驅(qū)動(dòng)
  一行打印結(jié)束,由進(jìn)給電機(jī)帶動(dòng)熱敏紙移動(dòng)到下一行繼續(xù)打印,。LPTA245打印機(jī)采用2線4相微型小體積,、大力矩精密步進(jìn)電機(jī)。電機(jī)有A,、B兩組線圈,,4個(gè)控制端,分別為A,、/A,、B、/B,。當(dāng)按表1的規(guī)律給這些控制端送入脈沖時(shí),,電機(jī)便能勻速傳動(dòng)。

  選用專用步進(jìn)電機(jī)驅(qū)動(dòng)芯片LB1836,。該芯片共14個(gè)引腳,,無需外圍元件,通電即可工作,。
4.3 電源管理電路
  電源管理電路包括電池充電,、電源切換、穩(wěn)壓電路,,如圖4所示,。由CPU的硬件PWM模塊產(chǎn)生38 kHz的脈沖驅(qū)動(dòng)Bust電路,,輸出一個(gè)穩(wěn)定的直流電壓。輸入12 V電壓,,經(jīng)Bust電路降壓得到一個(gè)穩(wěn)定的8.2 V電壓給鋰電池充電,。在充電的過程中,CPU實(shí)時(shí)監(jiān)測(cè)電池電壓(VB),、充電電流(Vi)及電池溫度(VT),,以保護(hù)其不被過沖或異常溫升損壞。此外,,通過控制Q1可在外接電源和電池之間切換,。

  LM2576是開關(guān)型電源穩(wěn)壓芯片,效率高,,最大輸出電流為3 A,,能為打印機(jī)提供穩(wěn)定、較大的工作電流及電壓(VPP/VE),。AM1117產(chǎn)生3.3 V電壓供所有集成電路使用,。需要說明的是,LPTA245的邏輯電壓能工作在3.3 V,,與CPU的邏輯一致,,所以能直接連接。
4.4 標(biāo)準(zhǔn)字庫
  國標(biāo)碼共有一級(jí)漢字3 755,二級(jí)漢字3 008,,共有漢字6 763個(gè),。若按Ucdos漢字系統(tǒng)標(biāo)準(zhǔn)字庫計(jì)算,每個(gè)漢字為24×24點(diǎn)陣,,一級(jí)簡(jiǎn)碼共需270 360 B個(gè)存儲(chǔ)單元,,二級(jí)簡(jiǎn)碼共需216 576 B個(gè)存儲(chǔ)單元。數(shù)字,、字母,、符號(hào)等682個(gè),為24×12點(diǎn)陣,共需24 552 B存儲(chǔ)單元[5-6],??紤]到LPC2148內(nèi)部已集成512 KB Flash非揮發(fā)性存儲(chǔ)器,將常用的一級(jí)漢字簡(jiǎn)碼和682個(gè)常用的符號(hào)存儲(chǔ)在CPU內(nèi)部,,以提高訪問速度,,大約需占用CPU 295 KB個(gè)存儲(chǔ)單元。余下二級(jí)簡(jiǎn)碼則存放在外部擴(kuò)展的EEPROM芯片25LC040中,。25LC040內(nèi)有512 KB存儲(chǔ)單元,接到CPU的UART1口,,其工作在3.3 V時(shí)的傳輸速度為2 Mb/s[7],。
4.5 通信及保護(hù)電路
  與外部通信采用USB及RS-232通信接口,。由于LPC2148內(nèi)部集成USB2.0協(xié)議及接口電路[4],外接插頭即可工作,。LPC2148內(nèi)部集成2個(gè)兼容16C550的符合工業(yè)標(biāo)準(zhǔn)的UART口,,每口帶16個(gè)發(fā)送/接收FIFO緩沖器,外接RS-232電平轉(zhuǎn)換芯片即可使用,。
  為保護(hù)打印機(jī),,電路應(yīng)該具有缺紙、過熱檢測(cè)功能,。圖5(a)為溫度檢測(cè)電路,。圖中U3A接成比較器,負(fù)極接打印頭內(nèi)的NTC溫度電阻,,正極接U3B輸出,。U3B輸入來自CPU內(nèi)的DAC輸出。當(dāng)溫度超過設(shè)定值后從T-PR端產(chǎn)生脈沖觸發(fā)CPU中斷,。由于NTC電阻的非線性及環(huán)境溫度的影響,,U3A端的電壓可能不固定,CPU通過內(nèi)置可編程DAC輸出可變模擬電壓,能消除NTC的非線性影響以及提高對(duì)環(huán)境溫度的適應(yīng)能力,。
圖5(b)為缺紙檢測(cè)電路,,當(dāng)打印機(jī)缺紙時(shí)Q5受D3光照而導(dǎo)通,P-V端輸出低電平觸發(fā)CPU中斷,。CPU響應(yīng)圖5中的兩個(gè)中斷以保護(hù)打印機(jī)不會(huì)因過熱和缺紙空打而損壞,。

5   軟件設(shè)計(jì)
  這里介紹兩個(gè)重要的打印機(jī)進(jìn)程:(1)條碼打印;(2)非條碼打印。當(dāng)CPU接收的數(shù)據(jù)作為條碼打印時(shí),,按圖6(a)流程合成EAN-13的條碼數(shù)據(jù),。當(dāng)CPU接收到的數(shù)據(jù)作為非條碼的數(shù)字、符號(hào),、漢字,、控制符時(shí),按圖6(b)流程合成非條碼的點(diǎn)陣數(shù)據(jù),。根據(jù)GB2312-80國標(biāo),數(shù)字,、符號(hào)、漢字,、控制符等按區(qū)位碼排列,,每個(gè)漢字用2個(gè)字節(jié)表示其位置,第2個(gè)字節(jié)表示區(qū)位,,第1個(gè)字節(jié)表示區(qū)中位置,。計(jì)算機(jī)大多以機(jī)內(nèi)碼作為標(biāo)準(zhǔn)交換信息。區(qū)位碼和機(jī)內(nèi)碼的轉(zhuǎn)換按下式進(jìn)行:

  機(jī)內(nèi)碼=區(qū)位碼+A0A0H                                   (1)
  無論是機(jī)內(nèi)碼或區(qū)位碼,都無法直接獲得漢字或字符在字庫中的存儲(chǔ)位置,,因此還要將(1)式按下式映射到字庫的起始地址,,忽略字庫存放的起始地址,只要求得其偏移量即可在字庫中找到其點(diǎn)陣數(shù)據(jù),。因字符點(diǎn)陣占36 B,,故:
  字符起始地址=(機(jī)內(nèi)碼-A0A1H)×36     (2)
  漢字點(diǎn)陣占72 B,故:
  漢字起始地址=(機(jī)內(nèi)碼-A0A1H)×72     (3)
  本文設(shè)計(jì)的熱敏打印機(jī),通過USB及RS-232通信口接收計(jì)算機(jī)標(biāo)準(zhǔn)機(jī)內(nèi)碼交換碼,,能打印條碼,、字符、漢字等,,具有體積小,、重量輕、速度快的優(yōu)點(diǎn),?;贚PC2148的打印機(jī)控制主板、元件少,、體積小,、性能可靠、集成度高,,重要的是可嵌入到其他產(chǎn)品中,,具有一定的市場(chǎng)價(jià)值。
參考文獻(xiàn)
[1] 韋元華,,丹子.條碼技術(shù)與應(yīng)用[M].北京:中國紡織出版 社,,2003(3):51-54.
[2] Seiko Instruments INC. LPTA245’s technical reference.
[3] 張會(huì)生.基于77E58的高速行式熱敏打印機(jī)控制板的研制[J].電子技術(shù)應(yīng)用,2004,30(1): 14-16.
[4] NXP Corp. LPC2148’s datasheet. 2005.
[5] 萬芳瑛.微型打印機(jī)應(yīng)用系統(tǒng)字符點(diǎn)陣格式轉(zhuǎn)換技術(shù)[J]. 湖南工程學(xué)院學(xué)報(bào), 2004,14(1):15-17.
[6] 黃永順.從國標(biāo)字庫中提取漢字點(diǎn)陣信息的方法及應(yīng)用[J]. 漳州師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2004,17(1):
 10-12.
[7] Micro Corp.25LC040’s datasheet. 2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。