Termalni tiskalnik se pogosto imenuje potrditveni tiskalnik. Pogosto se uporablja v restavracijah, bankomatih, trgovinah in mnogih drugih krajih, kjer so potrebni računi ali računi. Je stroškovno učinkovita rešitev in zelo priročna za uporabo tako s strani uporabnika kot tudi s strani razvijalca. Termalni tiskalnik uporablja poseben postopek tiskanja, ki za tiskanje uporablja termokromni papir ali termo papir. Tiskalna glava se segreva pri določeni temperaturi, tako da ob prehodu termo papirja s tiskalne glave papirna prevleka postane črna na območjih, kjer se glava tiskalnika glasi.
V tej vadnici bomo povezali termalni tiskalnik CSN A1 s široko uporabljenim mikrokrmilnikom PIC PIC16F877A. Pri tem projektu je preko PIC16F877A priključen termični tiskalnik, za začetek tiskanja pa se uporablja otipno stikalo. Lučka za obvestila se uporablja tudi za obveščanje o stanju tiskanja. Zasijalo bo šele, ko se bo tiskanje nadaljevalo.
Specifikacija tiskalnika in povezave
Uporabljamo termalni tiskalnik CSN A1 podjetja Cashino, ki je na voljo enostavno in cena ni previsoka.
Če na svojem uradnem spletnem mestu vidimo specifikacijo, bomo videli tabelo, ki vsebuje podrobne specifikacije -
Na zadnji strani tiskalnika bomo videli naslednjo povezavo -
Priključek TTL zagotavlja povezavo Rx Tx za komunikacijo z enoto mikrokrmilnika. Za komunikacijo s tiskalnikom lahko uporabimo tudi protokol RS232. Priključek za napajanje služi za napajanje tiskalnika, gumb pa se uporablja za preskušanje tiskalnika. Ko pritisnemo gumb za samopreizkus, bo tiskalnik med napajanjem tiskal list, na katerem bodo natisnjene specifikacije in vzorčne vrstice. Tu je list za samotestiranje -
Kot lahko vidimo, tiskalnik za komunikacijo z enoto mikrokrmilnika uporablja hitrost 9600 baudov. Tiskalnik lahko natisne znake ASCII. Komunikacija je zelo enostavna, lahko natisnemo karkoli s preprosto uporabo UART-a, s prenosom niza ali znaka.
Tiskalnik potrebuje napajalnik 5V 2A za ogrevanje glave tiskalnika. To je pomanjkljivost termalnega tiskalnika, saj med tiskanjem potrebuje velik obremenitveni tok.
Pogoji
Za izdelavo naslednjega projekta potrebujemo naslednje stvari: -
- Breadboard
- Priklopite žice
- PIC16F877A
- 2pcs 33pF keramični kondenzator kolutov
- 680R upor
- Vsaka barva vodi
- Taktilno stikalo
- 2pcs 4.7k upori
- Termalni tiskalnik CSN A1 s papirnatim zvitkom
- 5V 2A nazivna napajalna enota.
Shema vezja in razlaga
Shema za upravljanje tiskalnika z mikrokrmilnikom PIC je navedena spodaj:
Tu uporabljamo PIC16F877A kot enoto mikrokrmilnika. Upor 4.7k se uporablja za priključitev zatiča MCLR na napajanje 5V. Za urni signal smo povezali tudi zunanji oscilator 20 MHz s kondenzatorji 33pF. Lučka za obvestila je prek vrat RB2 priključena z uporom za omejevanje toka 680R. Stikalo Tactile je povezan preko RB0 pin, ko je gumb pritisnjen, da bo logika visoko drugače pin bodo prejeli Logic nizko ga je 4.7k upor.
Tiskalnik CSN A1 je povezan z navzkrižno konfiguracijo, prenosni zatič mikrokrmilnika je povezan s sprejemnim zatičem tiskalnika. Tiskalnik je povezan tudi z napajalnikom 5V in GND.
Vezje smo zgradili v tabli in ga preizkusili.
Razlaga kode
Koda je precej preprosta za razumevanje. Popolna koda za povezovanje termičnega tiskalnika s PIC16F877A je podana na koncu članka. Kot vedno moramo najprej nastaviti konfiguracijske bite v mikrokrmilniku PIC.
// PIC16F877A Nastavitve konfiguracijskega bita // Izjave o konfiguraciji izvorne vrstice 'C' // CONFIG #pragma config FOSC = HS // Oscilator Izbirni bit (HS oscilator) #pragma config WDTE = OFF // Bit Watchg Enable bit (WDT disabled) # pragma config PWRTE = OFF // bit za vklop časovnika za vklop (PWRT onemogočen) #pragma config BOREN = ON // bit za omogočanje ponastavitve Brown-out (omogočen BOR) #pragma config LVP = OFF // nizkonapetostna (enojna napajalna enota)) Bit za omogočanje serijskega programiranja v krogu (pin RB3 / PGM ima funkcijo PGM; nizkonapetostno programiranje je omogočeno) #pragma config CPD = OFF // Bit zaščite pomnilniške kode EEPROM (zaščita kode EEPROM podatkov izključena) #pragma config WRT = OFF // Flash Program Memory Flash Omogoči bitove (Zaščita pred izklopom; ves programski pomnilnik lahko zapišete z nadzorom EECON) #pragma config CP = OFF // Flash Program Flash Code Protection bit (Zaščita kode izključena)
Po tem smo opredelili sistemske makre, povezane s strojno opremo, in uporabili glavo datoteke eusart1.h za nadzor strojne opreme, povezane z eusart. UART je konfiguriran s hitrostjo 9600 baudov znotraj datoteke glave.
#include
V glavni funkciji smo najprej preverili 'pritisk gumba' in uporabili tudi taktiko odklopa stikala, da smo odpravili napake stikal. Ustvarili smo izjavo if za pogoj "pritisnjen gumb". Najprej bo led zasvetil in UART bo natisnil nize. Vrstice po meri lahko ustvarite znotraj stavka if in jih lahko natisnete kot niz.
void main (void) { sistem_init (); while (1) { if (printer_sw == 1) {// stikalo je pritisnjeno __delay_ms (50); // zakasnitev prekinitve, če je (printer_sw == 1) {// stikalo še vedno pritisnjeno message_led = 1; put_string ("Pozdravljeni! \ n \ r"); // Tiskanje na termalni tiskalnik __delay_ms (50); put_string ("Vadnica za termalni tiskalnik. \ n \ r"); __zakasnitev_ms (50); put_string ("Circuit Digest. \ n \ r"); __zakasnitev_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Hvala"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); obvestilo_led = 0; } } } }
Celotna koda in delujoči video je podan spodaj.