熱敏打印機(jī)通常稱為收據(jù)打印機(jī)。它廣泛用于餐館,自動(dòng)取款機(jī),商店和許多其他需要收據(jù)或賬單的地方。這是一個(gè)具有成本效益的解決方案,從用戶和開發(fā)人員的角度來看都非常方便。熱敏打印機(jī)使用特殊的打印工藝,使用熱致變色紙或熱敏紙進(jìn)行打印。打印機(jī)頭在一定溫度下加熱,當(dāng)熱敏紙從打印頭通過時(shí),紙張涂層在打印頭被加熱的區(qū)域變黑。
在本教程中,我們將熱敏打印機(jī) CSN A1 與廣泛使用的 PIC 微控制器 PIC16F877A 連接。在本項(xiàng)目中,熱敏打印機(jī)連接在PIC16F877A上,并使用輕觸開關(guān)開始打印。通知 LED 還用于通知打印狀態(tài)。僅當(dāng)打印活動(dòng)正在進(jìn)行時(shí),它才會(huì)發(fā)光。
打印機(jī)規(guī)格和連接
我們正在使用Cashino的CSN A1熱敏打印機(jī),它很容易獲得,價(jià)格也不太高。
如果我們?cè)谄涔俜骄W(wǎng)站上看到該規(guī)范,我們將看到一個(gè)提供詳細(xì)規(guī)格的表格-
在打印機(jī)的背面,我們將看到以下連接-
TTL 連接器提供 Rx Tx 連接以與微控制器單元通信。我們還可以使用RS232協(xié)議與打印機(jī)通信。電源連接器用于為打印機(jī)供電,按鈕用于打印機(jī)測(cè)試。打印機(jī)通電時(shí),如果我們按下自檢按鈕,打印機(jī)將打印一張紙,其中將打印規(guī)格和樣品行。這是自測(cè)表-
正如我們所看到的,打印機(jī)使用9600波特率與微控制器單元通信。打印機(jī)可以打印 ASCII 字符。通信非常簡(jiǎn)單,我們可以通過簡(jiǎn)單地使用UART,傳輸字符串或字符來打印任何東西。
打印機(jī)需要5V 2A電源來加熱打印機(jī)頭。這是熱敏打印機(jī)的缺點(diǎn),因?yàn)樗诖蛴∵^程中需要巨大的負(fù)載電流。
先決條件
要進(jìn)行以下項(xiàng)目,我們需要以下東西:-
面包板
連接電線
PIC16F877A
2個(gè)33pF陶瓷盤式電容器
680R電阻
任何顏色的指示燈
輕觸開關(guān)
2個(gè)4.7K電阻器
帶紙卷的熱敏打印機(jī) CSN A1
5V 2A 額定電源單元。
電路圖及說明
使用PIC微控制器控制打印機(jī)的原理圖如下:
這里我們使用PIC16F877A作為微控制器單元。一個(gè) 4.7k 電阻用于將 MCLR 引腳連接到 5V 電源。我們還將一個(gè) 20 MHz 的外部振蕩器與用于時(shí)鐘信號(hào)的 33pF 電容器連接起來。通知LED 通過 680R LED 限流電阻器連接在 RB2 端口上。按下按鈕時(shí),輕觸開關(guān)連接在RB0引腳上,它將提供邏輯高電平,否則引腳將通過4.7k電阻接收邏輯低電平。
打印機(jī)CSN A1使用交叉配置連接,微控制器傳輸引腳與打印機(jī)的接收引腳連接。打印機(jī)還與 5V 和 GND 電源連接。
我們?cè)谠囼?yàn)板中構(gòu)建電路并對(duì)其進(jìn)行了測(cè)試。
代碼說明
代碼非常簡(jiǎn)單易懂。文章末尾給出了將熱敏打印機(jī)與PIC16F877A接口的完整代碼。與往常一樣,我們首先需要在PIC微控制器中設(shè)置配置位。
// 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)
之后,我們定義了與系統(tǒng)硬件相關(guān)的宏,并使用 eusart1.h 頭文件進(jìn)行與 eusart相關(guān)的硬件控制。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);
在主函數(shù)中,我們首先檢查了“按鈕按下”,并使用了開關(guān)去抖動(dòng)策略來消除開關(guān)故障。我們?yōu)椤鞍粹o按下”條件創(chuàng)建了一個(gè) if 語句。首先,LED 將發(fā)光,UART 將打印字符串。自定義行可以在 if 語句內(nèi)生成,并且可以打印為字符串。
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;
}
}
}
}
-
微控制器
+關(guān)注
關(guān)注
48文章
7900瀏覽量
153645 -
PIC16F877A
+關(guān)注
關(guān)注
2文章
43瀏覽量
22041 -
熱敏打印機(jī)
+關(guān)注
關(guān)注
1文章
45瀏覽量
12221
發(fā)布評(píng)論請(qǐng)先 登錄
熱敏小票打印機(jī)的原理介紹
熱敏打印機(jī)的設(shè)計(jì)
基于飛思卡爾微型熱敏打印機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
熱敏打印頭開發(fā)打印機(jī)實(shí)例

PIC16F877A串口發(fā)送查詢方式

PIC16F877A串口芯片電壓?jiǎn)栴}

熱敏打印機(jī)的工作原理是什么?
PIC16F877A開發(fā)板 數(shù)碼管動(dòng)態(tài)掃描實(shí)驗(yàn)

PIC16F877A開發(fā)板 普通IO驅(qū)動(dòng)74595實(shí)驗(yàn)

評(píng)論