Termisk skriver blir ofte referert til som kvitteringsskriver. Det brukes mye i restauranter, minibanker, butikker og mange andre steder der det kreves kvitteringer eller regninger. Det er en kostnadseffektiv løsning og veldig praktisk å bruke fra brukerens side så vel som fra utviklersiden. En termisk skriver bruker en spesiell utskriftsprosess som bruker termokrom papir eller termisk papir for utskrift. Skriverhodet varmes opp til en viss temperatur at når termopapiret går fra skrivehodet blir papirbelegget svart i områdene der skriverhodet varmes opp.
I denne veiledningen vil vi grensesnitt en termisk skriver CSN A1 med mye brukt PIC-mikrokontroller PIC16F877A. Her i dette prosjektet er en termisk skriver koblet over PIC16F877A, og en taktil bryter brukes til å starte utskriften. En varslings-LED brukes også til å varsle utskriftsstatusen. Den lyser bare når utskriftsaktiviteten pågår.
Skriverspesifikasjon og tilkoblinger
Vi bruker CSN A1 termisk skriver fra Cashino, som er lett tilgjengelig og prisen ikke er for høy.
Hvis vi ser spesifikasjonen på den offisielle nettsiden, vil vi se en tabell som inneholder detaljerte spesifikasjoner-
På baksiden av skriveren ser vi følgende tilkobling-
TTL-kontakten gir Rx Tx-tilkoblingen for å kommunisere med mikrokontrollerenheten. Vi kan også bruke RS232-protokollen til å kommunisere med skriveren. Strømkontakten er for strømforsyning til skriveren, og knappen brukes til å teste formålet med skriveren. Hvis vi trykker på selvtestknappen, vil skriveren skrive ut et ark der spesifikasjoner og eksempler skal skrives ut når skriveren får strøm. Her er selvtestarket-
Som vi kan se, bruker skriveren 9600 baudrate for å kommunisere med mikrokontrollerenheten. Skriveren kan skrive ut ASCII-tegn. Kommunikasjonen er veldig enkel, vi kan skrive ut hva som helst ved å bruke UART, overføre streng eller karakter.
Skriveren trenger en 5V 2A strømforsyning for å varme opp skriverhodet. Dette er ulempen med den termiske skriveren da den tar enorm belastningsstrøm under utskriftsprosessen.
Forutsetninger
For å lage følgende prosjekt trenger vi følgende ting: -
- Brettbrett
- Koble ledninger
- PIC16F877A
- 2stk 33pF keramisk skivekondensator
- 680R motstand
- Enhver fargeledning
- Taktil bryter
- 2 stk 4,7 k motstander
- Termisk skriver CSN A1 med papirrull
- 5V 2A nominell strømforsyningsenhet.
Kretsdiagram og forklaring
Skjema for styring av skriver med PIC Microcontroller er gitt nedenfor:
Her bruker vi PIC16F877A som mikrokontrollerenhet. En 4,7k motstand brukes til å koble MCLR-pinnen til 5V strømforsyning. Vi har også koblet til en ekstern oscillator på 20 MHz med 33pF kondensatorer for kloksignalet. En varslings-LED er koblet over RB2-porten med 680R ledet strømbegrensende motstand. Den taktile bryteren er koblet over RB0-pinnen når du trykker på knappen, den vil gi Logic High, ellers vil pinnen motta Logic low av 4.7k-motstanden.
Skriveren CSN A1 er koblet til ved hjelp av krysskonfigurasjonen, Microcontroller Transmit pin er koblet til skriverens mottaksstift. Skriveren kobles også til 5V og GND-forsyningen.
Vi konstruerte kretsen i et brødbrett og testet den.
Kode Forklaring
Koden er ganske enkel å forstå. Komplett kode for grensesnitt for termisk skriver med PIC16F877A er gitt på slutten av artikkelen. Som alltid må vi først sette konfigurasjonsbitene i PIC-mikrokontrolleren.
// 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 har PGM-funksjon; lavspenningsprogrammering aktivert) #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 (Skrivebeskyttelse av; alt programminne kan skrives til av EECON-kontroll) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
Etter det definerte vi systemmaskinrelaterte makroer og brukte eusart1.h headerfil for eusart-relatert maskinvarekontroll. UART er konfigurert til 9600 Baud rate i toppfilen.
#inkludere
I hovedfunksjon, må vi først sjekket 'knappetrykk' og også brukt bryter debounce taktikk for å eliminere bryter glitches. Vi har laget en if- setning for "knappetrykket" -tilstand. Først lyser LED og UART vil skrive ut strengene. Egendefinerte linjer kan genereres inne i if-setningen og kan skrives ut som en streng.
ugyldig hoved (ugyldig) { system_init (); mens (1) { hvis (printer_sw == 1) {// bryteren trykkes __forsink_ms (50); // avvisningsforsinkelse hvis (printer_sw == 1) {// bryteren fremdeles trykkes varsling_led = 1; put_string ("Hei! \ n \ r"); // Skriv ut til termisk skriver __delay_ms (50); put_string ("Veiledning for termisk skriver. \ 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 ("Takk"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); varsel_led = 0; } } } }
Fullstendig kode og arbeidsvideo er gitt nedenfor.