- Προδιαγραφές και συνδέσεις εκτυπωτή
- Προαπαιτούμενα
- Διάγραμμα κυκλώματος και επεξήγηση
- Επεξήγηση κώδικα
Ο θερμικός εκτυπωτής αναφέρεται συχνά ως εκτυπωτής απόδειξης. Χρησιμοποιείται ευρέως σε εστιατόρια, ATM, καταστήματα και πολλά άλλα μέρη όπου απαιτούνται αποδείξεις ή λογαριασμοί. Είναι μια οικονομικά αποδοτική λύση και πολύ βολική στη χρήση από την πλευρά του χρήστη καθώς και από την πλευρά του προγραμματιστή. Ένας θερμικός εκτυπωτής χρησιμοποιεί μια ειδική διαδικασία εκτύπωσης που χρησιμοποιεί θερμοχρωμικό χαρτί ή θερμικό χαρτί για εκτύπωση. Η κεφαλή του εκτυπωτή θερμαίνεται σε μια συγκεκριμένη θερμοκρασία που όταν το θερμικό χαρτί περνά από την κεφαλή εκτύπωσης, η επίστρωση χαρτιού γίνεται μαύρη στις περιοχές όπου θερμαίνεται η κεφαλή του εκτυπωτή.
Σε αυτό το σεμινάριο, θα συνδέσουμε έναν θερμικό εκτυπωτή CSN A1 με ευρέως χρησιμοποιούμενο μικροελεγκτή PIC PIC16F877A. Εδώ σε αυτό το έργο, ένας θερμικός εκτυπωτής συνδέεται μέσω του PIC16F877A και χρησιμοποιείται ένας διακόπτης αφής για να ξεκινήσει η εκτύπωση. Ένα LED ειδοποίησης χρησιμοποιείται επίσης για την ειδοποίηση της κατάστασης εκτύπωσης. Θα ανάβει μόνο όταν η δραστηριότητα εκτύπωσης συνεχίζεται.
Προδιαγραφές και συνδέσεις εκτυπωτή
Χρησιμοποιούμε θερμικό εκτυπωτή CSN A1 από το Cashino, ο οποίος διατίθεται εύκολα και η τιμή δεν είναι πολύ υψηλή.
Εάν δούμε τις προδιαγραφές στον επίσημο ιστότοπό της, θα δούμε έναν πίνακα που παρέχει τις λεπτομερείς προδιαγραφές-
Στην πίσω πλευρά του εκτυπωτή, θα δούμε την ακόλουθη σύνδεση-
Η σύνδεση TTL παρέχει τη σύνδεση Rx Tx για επικοινωνία με τη μονάδα μικροελεγκτή. Μπορούμε επίσης να χρησιμοποιήσουμε το πρωτόκολλο RS232 για επικοινωνία με τον εκτυπωτή. Ο σύνδεσμος τροφοδοσίας προορίζεται για τροφοδοσία του εκτυπωτή και το κουμπί χρησιμοποιείται για σκοπούς δοκιμής εκτυπωτή. Όταν τροφοδοτείται ο εκτυπωτής, εάν πατήσουμε το κουμπί αυτόματης δοκιμής, ο εκτυπωτής θα εκτυπώσει ένα φύλλο όπου θα εκτυπωθούν οι προδιαγραφές και οι γραμμές δείγματος. Εδώ είναι το φύλλο αυτοελέγχου-
Όπως μπορούμε να δούμε ο εκτυπωτής χρησιμοποιεί 9600 baud rate για επικοινωνία με τη μονάδα μικροελεγκτή. Ο εκτυπωτής μπορεί να εκτυπώσει χαρακτήρες ASCII. Η επικοινωνία είναι πολύ εύκολη, μπορούμε να εκτυπώσουμε οτιδήποτε χρησιμοποιώντας απλά UART, μεταδίδοντας συμβολοσειρά ή χαρακτήρα.
Ο εκτυπωτής χρειάζεται τροφοδοτικό 5V 2A για τη θέρμανση της κεφαλής του εκτυπωτή. Αυτό είναι το μειονέκτημα του θερμικού εκτυπωτή καθώς παίρνει τεράστιο ρεύμα φορτίου κατά τη διαδικασία εκτύπωσης.
Προαπαιτούμενα
Για να κάνουμε το ακόλουθο έργο, χρειαζόμαστε τα ακόλουθα πράγματα: -
- Ψωμί
- Συνδέστε τα καλώδια
- PIC16F877Α
- Πυκνωτής κεραμικών δίσκων 2τμχ 33τμ
- 680R αντίσταση
- Οποιοδήποτε χρώμα οδήγησε
- Διακόπτης αφής
- 2 τεμ 4,7k αντιστάσεις
- Θερμικός εκτυπωτής CSN A1 με ρολό χαρτιού
- 5V 2A ονομαστική μονάδα τροφοδοσίας.
Διάγραμμα κυκλώματος και επεξήγηση
Σχηματικό για τον έλεγχο του εκτυπωτή με μικροελεγκτή PIC δίνεται παρακάτω:
Εδώ χρησιμοποιούμε το PIC16F877A ως μονάδα μικροελεγκτή. Μια αντίσταση 4,7k χρησιμοποιείται για τη σύνδεση του πείρου MCLR στην τροφοδοσία 5V. Έχουμε επίσης συνδέσει έναν εξωτερικό ταλαντωτή των 20 MHz με πυκνωτές 33pF για το σήμα ρολογιού. Ένα LED ειδοποίησης συνδέεται σε θύρα RB2 με αντίσταση περιορισμού ρεύματος LED 680R. Ο διακόπτης Tactile είναι συνδεδεμένος σε πείρο RB0 όταν πατηθεί το κουμπί, θα παρέχει Logic High διαφορετικά ο πείρος θα λάβει χαμηλό Logic από την αντίσταση 4,7k.
Ο εκτυπωτής CSN A1 συνδέεται χρησιμοποιώντας τη διασταυρούμενη διαμόρφωση, ο πείρος μικροελεγκτή Transmit είναι συνδεδεμένος με τον πείρο λήψης του εκτυπωτή. Ο εκτυπωτής συνδέθηκε επίσης με την τροφοδοσία 5V και GND.
Κατασκευάσαμε το κύκλωμα σε ένα breadboard και το δοκιμάσαμε.
Επεξήγηση κώδικα
Ο κώδικας είναι πολύ απλός να κατανοηθεί. Ο πλήρης κωδικός διασύνδεσης του θερμικού εκτυπωτή με το PIC16F877A δίνεται στο τέλος του άρθρου. Όπως πάντα, πρέπει πρώτα να ορίσουμε τα bits διαμόρφωσης στον μικροελεγκτή PIC.
// PIC16F877A Ρυθμίσεις Bit Ρυθμίσεις // Δηλώσεις διαμόρφωσης γραμμής πηγής «C» // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT απενεργοποιημένο) # pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT απενεργοποιημένο) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled) #pragma config LVP = OFF // Χαμηλή τάση (Μονή παροχή) In-Circuit Serial Programming Enable bit (Ο πείρος RB3 / PGM έχει λειτουργία PGM, ενεργοποιημένος προγραμματισμός χαμηλής τάσης) #pragma config CPD = OFF // Δεδομένα EEPROM Memory Code Protection bit (Data EEPROM code protection off) #pragma config WRT = OFF // Μνήμη προγράμματος Flash Εγγραφή Ενεργοποίηση bit (Απενεργοποίηση προστασίας; όλη η μνήμη προγράμματος μπορεί να γραφτεί από τον έλεγχο EECON) #pragma config CP = OFF // Μνήμη προγράμματος Flash Προστασία κωδικού μνήμης (Απενεργοποίηση προστασίας κώδικα)
Μετά από αυτό, ορίσαμε μακροεντολές που σχετίζονται με το υλικό του συστήματος και χρησιμοποιήσαμε το αρχείο κεφαλίδας eusart1.h για έλεγχο υλικού που σχετίζεται με το eusart. Το UART έχει ρυθμιστεί με ρυθμό 9600 Baud μέσα στο αρχείο κεφαλίδας.
#περιλαμβάνω
Στην κύρια λειτουργία, ελέγξαμε αρχικά το «πάτημα του κουμπιού» και χρησιμοποιήσαμε επίσης τακτικές διακόπτη αποσύνδεσης για την εξάλειψη των δυσλειτουργιών του διακόπτη. Έχουμε δημιουργήσει μια δήλωση if για συνθήκη «πατημένο κουμπί». Αρχικά το led θα ανάψει και το UART θα εκτυπώσει τις χορδές. Οι προσαρμοσμένες γραμμές μπορούν να δημιουργηθούν μέσα στη δήλωση if και μπορούν να εκτυπωθούν ως συμβολοσειρά.
void main (void) { system_init (); ενώ (1) { if (printer_sw == 1) {// ο διακόπτης είναι πατημένος __delay_ms (50); // καθυστέρηση απόρριψης εάν (printer_sw == 1) {// ο διακόπτης εξακολουθεί να πιέζεται notification_led = 1; put_string ("Γεια! \ n \ r"); // Εκτύπωση σε θερμικό εκτυπωτή __delay_ms (50); put_string ("Θερμικός Εκτυπωτής Εκμάθηση. \ n \ r"); __delay_ms (50); put_string ("Κύκλωμα Digest. \ n \ r"); __delay_ms (50); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("---------------------------- \ n \ r"); put_string ("Ευχαριστώ"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
Ο πλήρης κώδικας και το βίντεο εργασίας δίνονται παρακάτω.