白天明
摘要:本文給出了一種以STC系列單片機為核心的微型打印機電路的設計方法,著重介紹了該系統的硬件設計及其軟件驅動程序。該打印機電路可以實現數字、符號、漢字和圖形的打印。
關鍵詞:STC;單片機;微型打印機
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2019)05-0211-02
單片機具有體積小、功耗低、價格廉、抗干擾能力強的特點。微型打印機是智能儀表、測控儀器重要的輸出設備。本文系統地介紹了STC單片機與熱敏微型打印機的接口電路及軟件實現方法。
1 系統硬件組成
STC系列高性能單片機是由宏晶公司科技設計、生產的一款新型單片微型計算機。與傳統的51系列單片微型計算機相比,具有功能強、功耗低、價格低、運算速度快的優點。指令代碼與傳統的8051系列完全兼容,但由于系統采用單時鐘方式,運算速度非常快。系統內部了集成高可靠復位電路,可以內置復位與低電壓復位。特別適用于高速通信、電機控制、智能控制、強干擾場合。
單片機的片內ROM為FLASH存儲器,最大可達63.5K字節,擦寫次數超過10萬次。片內RAM數據存儲器最大為8192字節。芯片內還集成了EEPROM,最大48KB。片內有40個通用輸入輸出口,可以通過對PxM1、PxM0設置端口狀態為準雙向口/弱上拉、推挽/強上拉、僅為輸入/高阻和開漏四種工作模式。可以進行在線編程,無須專用編程器、仿真器,即可實現在線調試。
RD--D系列打印機采用熱敏方式進行打印,不僅可以打印國標一、二級漢字庫中全部漢字,還可以打印英文字符、圖形符號等。與單片機連接可以采用標準并行接口、RS23串行接口,TTL電平串口,485接口,USB等多種接口形式。在消費電子、醫療設備、消防報警、測量設備、電力儀器、電子衡器、票據打印等行業都有廣泛的應用。
微型打印機的串口引腳信號如下:
以串口為例介紹一下STC單片機與打印機的接口電路。
RD-D 型熱敏打印機可直接由單片機控制,串行接口與標準RS232C接口完全兼容。與單片機接口的連接方法如下:
1、將單片機串行口與打印機的串口TXD、RXD引腳與相連接,由單片機發送打印數據。系統默認的單片機串行口為P3.0(RXD)、P3.1(TXD),由于程序下載專用通信口占用了P3.0(RXD)、P3.1(TXD),所以可以將串行口設置在P1.6、P1.7。
其中,S1_S1=1、S1_S0=0可以實現將串口由P3.1、P3.0切換到P1.6、P1.7,指令如下:
ORL AUXR1,#080H ;將AURX1的第七位置一
2、打印機的BUSY端子輸出“設備忙”信號。可以接到單片機的P4.2引腳。表示打印機正“忙”時,該信號為“1”狀態,不能接收數據。打印機“空閑”時,該信號為“0”狀態,表示可以接收數據。
由于傳統的51系列單片機沒有P4口,而STC單片機有P4口。如果在程序進行“BUSY BIT P4.2”定義,在編譯時仿真軟件會有“符號未定義”的錯誤提示。
對STC系列單片機P4口進行訪問,與訪問常規的輸入輸出口相同,但是需要進行位地址的定義。位地址如下:
2 打印指令
RD-D 型微型打印機提供豐富的打印指令,打印指令與很多的打印機指令完全兼容。而且增加了中文字符打印、漢字字符旋轉、行間距調整、二維條型碼打印等多種功能。
1)初始化指令:
十六進制: 1BH 40H
執行該指令后打印機恢復為默認的狀態,將當前緩沖區清空。一般在發送打印指令之前執行該指令,以免數據殘留在打印緩沖區中,打印出亂碼。
2)漢字打印指令:
十六進制: 1BH 38H xH
打印機在接收該指令之后將根據x值選擇不同點陣的漢字。在漢字打印方式時,打印機接收漢字代碼格式是2個字節,對應標準機內碼中的一個漢字的。即打印機每調出一個漢字,需要接收2個字節的機內碼。打印機接收機內碼的順序為先高位字節,再低位字節。
當熱敏打印機的漢字庫為24×24點陣時,x選擇為0,只能打印24×24點陣中文字符,以及12×24 點陣字符。
3)設置x點行間距指令:
十六進制:1BH 31H xh
為換行指令設置x點行間距,x的取值范圍一般應在0~255 之間。默認值為3。如果需要連續打印圖形,需要將x設置為0。
4)打印空格或空行指令:
十六進制:1BH 66H xH yH
如果x=0,y表示空格的數量,執行1BH 66H 00H yH指令將打印y個空格。如果x=1,y表示空行的數量,執行1BH 66H 01H yH指令將打印n行空行。
一般打印空格的寬度按字間距+12計算,y的值應不超過該型號打印機的行寬。每個空行的高度按行間距+16計算,y的取值范圍應不超過255。
5)換行指令:
十六進制:0AH
打印機將當前緩沖器里的數據進行打印,并向前走紙一行。如果緩沖器里沒有數據,則不進行打印,只向前走紙一行,一行為行間距+16。
3 單片機串行打印程序設計
將“遼寧機電職業技術學院”打印出來,其參考程序如下:
BUSY EQU 0C2H ;打印機端口設置
AUXR1 EQU 0A2H
ORG 0000H
JMP MAIN
ORG 0030H
MAIN: CALL PRN
SJMP $
PRN: CALL PRN_INT ;初始化打印機
MOV DPTR,#PRN_D1
CALL PRN_S
MOV DPTR,#PR1_C2
CALL PRN_S
RET
PRN_D1: DB '遼寧機電職業技術學院'
DB 0FFH
PRN_INT:
MOV TH1,#250
MOV TMOD,#00100000B
MOV SCON,#11010000B
SETB TR1
ORL AUXR1,#80H
MOV DPTR,#PRN_C1
CALL PRN_S
RET
PRN_C1: DB 1BH,40H ;初始化打印機
DB 1BH,38H,00H ;選擇不同點陣漢字
DB 1BH,31H,06H ;選擇不同行間距
DB 0FFH ;參數設置完畢
PR1_C2: DB 1BH,66H,01H,06H ;打印6行空行
DB 0FFH ;參數設置完畢
PRN_S: CLR A
MOVC A,@A+DPTR ;取數據
CJNE A,#0FFH,PR_S1 ;”0FFH”發送結束標志
SJMP PR_SE
PR_S1: INC DPTR ;地址加一
CALL OUT_BYTE ;向打印機輸出
SJMP PRN_S
PR_SE: RET
OUT_BYTE:
SETB BUSY
JB BUSY,OUT_BYTE ;判斷打印機是否忙?
CLR TI
NOP
NOP
NOP
MOV SBUF,A
JNB TI,$
CLR TI
RET
END
4 結束語
本文介紹的是STC單片機與RD系列微型打印機接口電路以及程序設計方法。該電路已經得到實際應用,效果很好,具有硬件電路簡單、低成本、編程方便、通信可靠性高的特點。
但是在實際應用中要注意,熱敏打印機的工作電流大,可達到3A,最好單獨對打印機提供電源,以保證其可靠、穩定工作。
參考文獻:
[1] 康華光,陳大欽.電子技術基礎(模擬部分[M].北京:高等教育出版社,2002.
[2] 何為民.低功耗單片微機系統設計[M].北京:北京航空航天大學出版社,1994.
[3] 黃曙,梁慧冰.微型打印機打印程序設計[M].北京:控制工程出版社,2004.
[4] 張培仁.基于C語言MCS 51單片機原理與應用[M].北京:清華大學出版社,2003.
【通聯編輯:唐一東】