Termální tiskárna se často označuje jako tiskárna účtenek. Je široce používán v restauracích, bankomatech, obchodech a na mnoha dalších místech, kde jsou vyžadovány účtenky nebo faktury. Jedná se o nákladově efektivní řešení a jeho použití je velmi užitečné jak ze strany uživatele, tak ze strany vývojáře. Termální tiskárna používá speciální tiskový proces, při kterém se k tisku používá termochromní papír nebo termální papír. Hlava tiskárny se zahřívá na určitou teplotu, že když termální papír prochází z tiskové hlavy, potah papíru zčerná v oblastech, kde se zahřívá hlava tiskárny.
V tomto tutoriálu propojíme termální tiskárnu CSN A1 s široce používaným mikrokontrolérem PIC PIC16F877A. Zde v tomto projektu je termální tiskárna připojena přes PIC16F877A a ke spuštění tisku se používá dotykový spínač. K upozornění na stav tisku se také používá oznamovací LED. Rozsvítí se, pouze když probíhá tisk.
Specifikace tiskárny a připojení
Používáme termální tiskárnu CSN A1 od společnosti Cashino, která je snadno dostupná a cena není příliš vysoká.
Pokud uvidíme specifikaci na jejích oficiálních webových stránkách, uvidíme tabulku s podrobnými specifikacemi -
Na zadní straně tiskárny uvidíme následující připojení -
Konektor TTL poskytuje připojení Rx Tx ke komunikaci s jednotkou mikrokontroléru. Ke komunikaci s tiskárnou můžeme také použít protokol RS232. Napájecí konektor slouží k napájení tiskárny a tlačítko slouží k testování tiskárny. Když je tiskárna napájena, pokud stiskneme tlačítko autotestu, tiskárna vytiskne list, kde se vytisknou specifikace a řádky vzorků. Zde je samokontrolní list -
Jak vidíme, tiskárna používá pro komunikaci s jednotkou mikrokontroléru 9600 baudů. Tiskárna dokáže tisknout znaky ASCII. Komunikace je velmi snadná, můžeme tisknout cokoli jednoduše pomocí UART, přenášením řetězce nebo znaku.
Tiskárna potřebuje k zahřátí hlavy tiskárny napájecí zdroj 5 V 2 A. To je nevýhoda termální tiskárny, protože během procesu tisku odebírá obrovský zatěžovací proud.
Předpoklady
K vytvoření následujícího projektu potřebujeme následující věci: -
- Nepájivá deska
- Připojte vodiče
- PIC16F877A
- 2ks keramický diskový kondenzátor 33pF
- Rezistor 680R
- Jakákoli barva vedla
- Hmatový spínač
- 2ks 4,7k rezistory
- Termální tiskárna CSN A1 s rolkou papíru
- 5V 2A jmenovitý napájecí zdroj.
Schéma zapojení a vysvětlení
Schéma ovládání tiskárny pomocí mikrokontroléru PIC je uvedeno níže:
Zde používáme PIC16F877A jako jednotku mikrokontroléru. K připojení pinu MCLR k napájecímu zdroji 5 V se používá odpor 4,7 k. Také jsme připojili externí oscilátor 20 MHz s kondenzátory 33pF pro hodinový signál. Oznamovací LED je připojena přes port RB2 s rezistorem omezujícím proud vedeným 680R. Přepínač Hmatové je připojen přes RB0 pin při stisknutí tlačítka bude poskytovat logiku vysoká jinak kolík obdrží Logic nízko u 4.7K odpor.
Tiskárna CSN A1 je připojena pomocí křížové konfigurace, mikrokontrolér Transmit pin je spojen s tiskárnou Receive pin. Tiskárna je rovněž připojena k napájení 5 V a GND.
Zkonstruovali jsme obvod v prkénku a vyzkoušeli ho.
Vysvětlení kódu
Tento kód je docela jednoduchý na pochopení. Kompletní kód pro propojení termální tiskárny s PIC16F877A je uveden na konci článku. Jako vždy musíme nejprve nastavit konfigurační bity v mikrokontroléru PIC.
// PIC16F877A Configuration Bit Settings // 'C' source line config commands // 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 deaktivováno) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR povoleno) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (Pin RB3 / PGM má funkci PGM; programování nízkého napětí povoleno) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = VYPNUTO // Zápis do paměti Flash programu Povolení bitů (ochrana proti zápisu vypnuta; veškerá programová paměť může být zapsána ovládáním EECON) #pragma config CP = VYPNUTO // Bit kódu ochrany kódu paměti programu (ochrana kódu vypnuta)
Poté jsme definovali makra související se systémovým hardwarem a použili jsme záhlaví souboru eusart1.h pro ovládání hardwaru souvisejícího s eusart. UART je v hlavičkovém souboru nakonfigurován na 9600 baudů.
#zahrnout
V hlavní funkci jsme nejprve zkontrolovali „stisknutí tlačítka“ a také jsme použili taktiku debounce spínače k odstranění závad spínače. Vytvořili jsme příkaz if pro podmínku „stisknutí tlačítka“. Nejprve se rozsvítí kontrolka a UART vytiskne řetězce. Vlastní řádky lze generovat uvnitř příkazu if a lze je vytisknout jako řetězec.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// je stisknut spínač __delay_ms (50); // zpoždění debounce if (printer_sw == 1) {// přepínač je stále stisknutý notification_led = 1; put_string ("Dobrý den! \ n \ r"); // Tisk na termální tiskárnu __delay_ms (50); put_string ("Výukový program pro termální tiskárny. \ n \ r"); __delay_ms (50); put_string ("Přehled okruhu. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Děkuji"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
Kompletní kód a funkční video jsou uvedeny níže.