熱敏打印機通常稱為收據打印機。它廣泛用于餐館,自動取款機,商店和許多其他需要收據或賬單的地方。這是一個具有成本效益的解決方案,從用戶和開發人員的角度來看都非常方便。熱敏打印機使用特殊的打印工藝,使用熱致變色紙或熱敏紙進行打印。打印機頭在一定溫度下加熱,當熱敏紙從打印頭通過時,紙張涂層在打印頭被加熱的區域變黑。
在本教程中,我們將熱敏打印機 CSN A1 與廣泛使用的 PIC 微控制器 PIC16F877A 連接。在本項目中,熱敏打印機連接在PIC16F877A上,并使用輕觸開關開始打印。通知 LED 還用于通知打印狀態。僅當打印活動正在進行時,它才會發光。
打印機規格和連接
我們正在使用Cashino的CSN A1熱敏打印機,它很容易獲得,價格也不太高。
如果我們在其官方網站上看到該規范,我們將看到一個提供詳細規格的表格-
在打印機的背面,我們將看到以下連接-
TTL 連接器提供 Rx Tx 連接以與微控制器單元通信。我們還可以使用RS232協議與打印機通信。電源連接器用于為打印機供電,按鈕用于打印機測試。打印機通電時,如果我們按下自檢按鈕,打印機將打印一張紙,其中將打印規格和樣品行。這是自測表-
正如我們所看到的,打印機使用9600波特率與微控制器單元通信。打印機可以打印 ASCII 字符。通信非常簡單,我們可以通過簡單地使用UART,傳輸字符串或字符來打印任何東西。
打印機需要5V 2A電源來加熱打印機頭。這是熱敏打印機的缺點,因為它在打印過程中需要巨大的負載電流。
先決條件
要進行以下項目,我們需要以下東西:-
面包板
連接電線
PIC16F877A
2個33pF陶瓷盤式電容器
680R電阻
任何顏色的指示燈
輕觸開關
2個4.7K電阻器
帶紙卷的熱敏打印機 CSN A1
5V 2A 額定電源單元。
電路圖及說明
使用PIC微控制器控制打印機的原理圖如下:
這里我們使用PIC16F877A作為微控制器單元。一個 4.7k 電阻用于將 MCLR 引腳連接到 5V 電源。我們還將一個 20 MHz 的外部振蕩器與用于時鐘信號的 33pF 電容器連接起來。通知LED 通過 680R LED 限流電阻器連接在 RB2 端口上。按下按鈕時,輕觸開關連接在RB0引腳上,它將提供邏輯高電平,否則引腳將通過4.7k電阻接收邏輯低電平。
打印機CSN A1使用交叉配置連接,微控制器傳輸引腳與打印機的接收引腳連接。打印機還與 5V 和 GND 電源連接。
我們在試驗板中構建電路并對其進行了測試。
代碼說明
代碼非常簡單易懂。文章末尾給出了將熱敏打印機與PIC16F877A接口的完整代碼。與往常一樣,我們首先需要在PIC微控制器中設置配置位。
// PIC16F877A Configuration Bit Settings
// 'C' source line config statements
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
之后,我們定義了與系統硬件相關的宏,并使用 eusart1.h 頭文件進行與 eusart相關的硬件控制。UART 在頭文件中配置為 9600 波特率。
#include
#include "supporting_cfileeusart1.h"
/*
* System hardware related macros
*/
#define _XTAL_FREQ 200000000 //Crystal Frequency, used in delay routine
#define printer_sw PORTBbits.RB0 //this macro is for defining the printing switch
#define notification_led PORTBbits.RB2
void system_init(void);
在主函數中,我們首先檢查了“按鈕按下”,并使用了開關去抖動策略來消除開關故障。我們為“按鈕按下”條件創建了一個 if 語句。首先,LED 將發光,UART 將打印字符串。自定義行可以在 if 語句內生成,并且可以打印為字符串。
void main(void) {
system_init();
while(1){
if(printer_sw == 1){ //switch is pressed
__delay_ms(50); // debounce delay
if (printer_sw == 1){ // switch is still pressed
notification_led = 1;
put_string("Hello! nr");//Print to Thermal printer
__delay_ms(50);
put_string("Thermal Printer Tutorial.nr");
__delay_ms(50);
put_string("Circuit Digest. nr");
__delay_ms(50);
put_string ("nr");
put_string ("nr");
put_string ("nr");
put_string ("---------------------------- n r");
put_string ("Thank You");
put_string ("nr");
put_string ("nr");
put_string ("nr");
notification_led = 0;
}
}
}
}
-
微控制器
+關注
關注
48文章
7336瀏覽量
150105 -
PIC16F877A
+關注
關注
2文章
43瀏覽量
21737 -
熱敏打印機
+關注
關注
1文章
45瀏覽量
12039
發布評論請先 登錄
相關推薦
評論