Termisk printer kaldes ofte kvitteringsprinter. Det bruges i vid udstrækning i restauranter, pengeautomater, butikker og mange andre steder, hvor kvitteringer eller faktura er påkrævet. Det er en omkostningseffektiv løsning og meget praktisk at bruge fra brugerens side såvel som fra udviklerens side. En termoprinter bruger en speciel udskrivningsproces, der bruger termokrom papir eller termopapir til udskrivning. Printerhovedet opvarmes til en bestemt temperatur, at når termopapiret passerer fra printhovedet, bliver papirbelægningen sort i de områder, hvor printerhovedet opvarmes.
I denne vejledning vil vi grænseflade til en termisk printer CSN A1 med udbredt PIC-mikrocontroller PIC16F877A. Her i dette projekt er en termisk printer tilsluttet på tværs af PIC16F877A, og en taktil switch bruges til at starte udskrivningen. En meddelelses-LED bruges også til at underrette udskrivningsstatus. Den lyser kun, når udskrivningsaktiviteten foregår.
Printerspecifikation og forbindelser
Vi bruger CSN A1 termoprinter fra Cashino, som er let tilgængelig, og prisen ikke er for høj.
Hvis vi ser specifikationen på dens officielle hjemmeside, vil vi se en tabel, der indeholder de detaljerede specifikationer-
På bagsiden af printeren ser vi følgende forbindelse -
TTL-stikket tilvejebringer Rx Tx-forbindelsen til at kommunikere med mikrocontrollerenheden. Vi kan også bruge RS232-protokollen til at kommunikere med printeren. Strømstikket er til strømforsyning til printeren, og knappen bruges til printertestformål. Når printeren tændes, udskriver printeren et ark, hvor specifikationer og prøvelinjer udskrives, hvis vi trykker på selvtestknappen. Her er selvtestarket-
Som vi kan se, bruger printeren 9600 baudhastighed til at kommunikere med mikrocontrollerenheden. Printeren kan udskrive ASCII-tegn. Kommunikationen er meget let, vi kan udskrive hvad som helst ved blot at bruge UART, sende streng eller karakter.
Printeren har brug for en 5V 2A strømforsyning til opvarmning af printerhovedet. Dette er ulempen ved den termiske printer, da den tager enorm belastningsstrøm under udskrivningsprocessen.
Forudsætninger
For at lave følgende projekt har vi brug for følgende ting: -
- Brødbræt
- Tilslut ledninger
- PIC16F877A
- 2stk 33pF keramisk diskkondensator
- 680R modstand
- Enhver farve ledet
- Taktil kontakt
- 2stk 4.7k modstande
- Termisk printer CSN A1 med papirrulle
- 5V 2A nominel strømforsyning.
Kredsløbsdiagram og forklaring
Skema for styring af printer med PIC Microcontroller er angivet nedenfor:
Her bruger vi PIC16F877A som en mikrocontroller-enhed. En 4,7 k modstand bruges til at forbinde MCLR-pin til 5V strømforsyning. Vi har også tilsluttet en ekstern oscillator på 20 MHz med 33pF kondensatorer til kloksignalet. En meddelelses-LED er forbundet over RB2-port med 680R ledet strømbegrænsende modstand. Den Taktil kontakten er forbundet på tværs RB0 pin, når knappen er trykket det vil give Logic Høj ellers stiften modtager Logic lav ved 4.7k modstand.
Printeren CSN A1 er tilsluttet ved hjælp af krydskonfigurationen, Microcontroller Transmit pin er forbundet med printerens modtagestift. Printeren er også forbundet med 5V- og GND-forsyningen.
Vi konstruerede kredsløbet i et brødbræt og testede det.
Kode Forklaring
Koden er ret enkel at forstå. Komplet kode til interface af termisk printer med PIC16F877A er angivet i slutningen af artiklen. Som altid er vi først nødt til at indstille konfigurationsbitene i PIC-mikrocontrolleren.
// 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 deaktiveret) # pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT deaktiveret) # pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) # pragma config LVP = OFF // Low-Voltage (Single-Supply)) Seriel programmering i kredsløb muliggør bit (RB3 / PGM-pin har PGM-funktion; lavspændingsprogrammering aktiveret) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash-programhukommelse Skriv Aktiver bits (skrivebeskyttelse er slået fra; al programhukommelse kan skrives til af EECON-kontrol) #pragma config CP = OFF // Flash- programhukommelseskodebeskyttelsesbit (kodebeskyttelse fra)
Derefter definerede vi systemhardwarerelaterede makroer og brugte eusart1.h headerfil til eusart-relateret hardwarekontrol. UART er konfigureret til 9600 Baud rate inde i headerfilen.
#omfatte
I hovedfunktionen tjekkede vi først 'tryk på knappen' og brugte også switch-afvisningstaktik for at eliminere switchfejl. Vi har oprettet en if- sætning for 'knappen trykket' -tilstand. Først lyser ledet, og UART udskriver strengene. Brugerdefinerede linjer kan genereres inde i if-erklæringen og kan udskrives som en streng.
ugyldigt hoved (ugyldigt) { system_init (); mens (1) { hvis (printer_sw == 1) {// kontakten trykkes __forsink_ms (50); // afvisningsforsinkelse, hvis (printer_sw == 1) {// switch stadig er trykket på notifikation_led = 1; put_string ("Hej! \ n \ r"); // Udskriv til termisk printer __forsink_ms (50); put_string ("Tutorial til termisk printer. \ n \ r"); __forsink_ms (50); put_string ("Circuit Digest. \ n \ r"); __forsink_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Tak"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); underretning_led = 0; } } } }
Komplet kode og arbejdsvideo er angivet nedenfor.