Termisk skrivare kallas ofta kvittoskrivare. Det används ofta i restauranger, bankomater, butiker och många andra platser där kvitton eller faktura krävs. Det är en kostnadseffektiv lösning och mycket praktisk att använda både från användarens sida och från utvecklarens sida. En termisk skrivare använder en speciell tryckprocess som använder termokromt papper eller termiskt papper för utskrift. Skrivarhuvudet värms upp vid en viss temperatur att när värmepapperet passerar från skrivhuvudet blir pappersbeläggningen svart i de områden där skrivarhuvudet värms upp.
I denna handledning kommer vi att koppla ihop en termisk skrivare CSN A1 med den allmänt använda PIC-mikrokontrollern PIC16F877A. Här i det här projektet är en termisk skrivare ansluten över PIC16F877A och en taktil switch används för att starta utskriften. En aviserings-LED används också för att meddela utskriftsstatusen. Den lyser först när utskriftsaktiviteten pågår.
Skrivarspecifikation och anslutningar
Vi använder CSN A1 termisk skrivare från Cashino, som är lätt tillgänglig och priset inte är för högt.
Om vi ser specifikationen på dess officiella webbplats kommer vi att se en tabell som innehåller detaljerade specifikationer-
På baksidan av skrivaren ser vi följande anslutning-
TTL-kontakten tillhandahåller Rx Tx-anslutningen för att kommunicera med mikrokontroller-enheten. Vi kan också använda protokollet RS232 för att kommunicera med skrivaren. Strömkontakten är avsedd för strömförsörjning av skrivaren och knappen används för testning av skrivare. Om vi trycker på självtestknappen kommer skrivaren att skriva ut ett ark där specifikationer och provrader skrivs ut när skrivaren är igång. Här är självtestarket-
Som vi kan se använder skrivaren 9600 baudhastighet för att kommunicera med mikrokontrollenheten. Skrivaren kan skriva ut ASCII-tecken. Kommunikationen är väldigt enkel, vi kan skriva ut vad som helst genom att helt enkelt använda UART, sända sträng eller tecken.
Skrivaren behöver en 5V 2A strömförsörjning för att värma skrivarhuvudet. Detta är nackdelen med den termiska skrivaren eftersom den tar enorm belastningsström under tryckprocessen.
Förutsättningar
För att göra följande projekt behöver vi följande saker: -
- Bakbord
- Anslut ledningar
- PIC16F877A
- 2st 33pF keramisk skivkondensator
- 680R motstånd
- Vilken färg som helst
- Taktil brytare
- 2st 4,7k motstånd
- Termisk skrivare CSN A1 med pappersrulle
- 5V 2A märkt nätaggregat.
Kretsschema och förklaring
Schema för styrning av skrivare med PIC Microcontroller ges nedan:
Här använder vi PIC16F877A som mikrokontroller. Ett 4,7 k motstånd används för att ansluta MCLR-stift till 5 V-strömförsörjningen. Vi har också anslutit en extern oscillator på 20 MHz med 33pF kondensatorer för klocksignalen. En aviserings-LED är ansluten över RB2-porten med 680R ledt strömbegränsningsmotstånd. Den taktila omkopplaren är ansluten över RB0-stiftet när du trycker på knappen för att ge Logic High annars kommer stiftet att få Logic low av 4,7k-motståndet.
Skrivaren CSN A1 är ansluten med tvärkonfigurationen, Microcontroller Transmit pin är ansluten till skrivarens mottagningsstift. Skrivaren är också ansluten till 5V- och GND-matningen.
Vi konstruerade kretsen i ett brödbräda och testade den.
Kodförklaring
Koden är ganska enkel att förstå. Komplett kod för gränssnitt mellan termisk skrivare och PIC16F877A ges i slutet av artikeln. Som alltid måste vi först ställa in konfigurationsbitarna i PIC-mikrokontrollern.
// 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)) Seriell programmering i kretsen aktiverar bit (RB3 / PGM-stift har PGM-funktion; lågspänningsprogrammering aktiverad) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Flash Program Memory Write Aktivera bitar (skrivskydd av; allt programminne kan skrivas till av EECON-kontroll) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
Därefter definierade vi systemhårdvarurelaterade makron och använde eusart1.h-rubrikfilen för eusart-relaterad hårdvarukontroll. UART är konfigurerad till 9600 Baud rate inuti rubrikfilen.
#omfatta
I huvudfunktionen först kontrolleras vi 'knapptryckning' och även används switch debounce taktik för att eliminera växel buggar. Vi har skapat ett if- uttalande för "knapptryckt" villkor. Först lyser lysdioden och UART skriver ut strängarna. Anpassade rader kan genereras inuti if-uttalandet och kan skrivas ut som en sträng.
ogiltigt huvud (ogiltigt) { system_init (); medan (1) { om (printer_sw == 1) {// omkopplaren trycks ned __fördröja_ms (50); // avstängningsfördröjning om (printer_sw == 1) {// switch fortfarande är intryckt anmälan_led = 1; put_string ("Hej! \ n \ r"); // Skriv ut till termisk skrivare __fördröjning_ms (50); put_string ("Tutorial för termisk skrivare. \ n \ r"); __fördröja_ms (50); put_string ("Circuit Digest. \ n \ r"); __fördröja_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Tack"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); anmälan_led = 0; } } } }
Komplett kod och arbetsvideo ges nedan.