Термичният принтер често се нарича принтер за разписки. Той се използва широко в ресторанти, банкомати, магазини и много други места, където се изискват касови бележки или сметки. Това е рентабилно решение и много удобно за използване от страна на потребителя, както и от страна на разработчика. Термичният принтер използва специален процес на печат, който използва термохромна хартия или термохартия за печат. Главата на принтера се загрява при определена температура, така че когато термохартията преминава от печатащата глава, хартиеното покритие почернява в зоните, където главата на принтера се нагрява.
В този урок ще свържем термопринтер CSN A1 с широко използвания PIC микроконтролер PIC16F877A. Тук в този проект е свързан термопринтер през PIC16F877A и се използва тактилен превключвател за стартиране на печата. Светодиодът за известяване също се използва за уведомяване за състоянието на печат. Той ще свети само когато печатната дейност продължава.
Спецификация и връзки на принтера
Използваме термопринтер CSN A1 от Cashino, който се предлага лесно и цената не е твърде висока.
Ако видим спецификацията на официалния му уебсайт, ще видим таблица, която предоставя подробните спецификации-
На задната страна на принтера ще видим следната връзка -
TTL конекторът осигурява Rx Tx връзка за комуникация с микроконтролера. Също така можем да използваме протокола RS232 за комуникация с принтера. Конекторът за захранване е за захранване на принтера, а бутонът се използва за тестване на принтера. Когато принтерът се захранва, ако натиснем бутона за самопроверка, принтерът ще отпечата лист, където ще бъдат отпечатани спецификации и примерни линии. Ето листа за самопроверка-
Както виждаме, принтерът използва 9600 скорости на предаване за комуникация с микроконтролера. Принтерът може да отпечатва ASCII символи. Комуникацията е много лесна, можем да отпечатаме всичко, като просто използваме UART, предавайки низ или символ.
Принтерът се нуждае от 5V 2A захранване за отопление на главата на принтера. Това е недостатъкът на термопринтера, тъй като отнема огромен ток на натоварване по време на процеса на печат.
Предпоставки
За да направим следния проект, са ни необходими следните неща: -
- Макет
- Закачете проводници
- PIC16F877A
- 2бр. 33pF керамичен дисков кондензатор
- 680R резистор
- Всеки цвят, воден
- Тактилен превключвател
- 2бр 4.7k резистори
- Термопринтер CSN A1 с хартиена ролка
- 5V 2A номинален захранващ блок.
Електрическа схема и обяснение
Схемата за управление на принтера с PIC Microcontroller е дадена по-долу:
Тук използваме PIC16F877A като микроконтролер. 4.7k резистор се използва за свързване на MCLR щифт към 5V захранване. Също така сме свързали външен генератор от 20 MHz с кондензатори 33pF за тактовия сигнал. Светодиодът за известяване е свързан през порт RB2 с резистор за ограничаване на тока 680R. В ключа Tactile е свързан през RB0 щифт, когато бутонът е натиснат ще осигури Logic Високо в противен случай ще получите ПИН Logic ниска от 4.7k резистор.
Принтерът CSN A1 е свързан чрез кръстосана конфигурация, ПИН за предаване на микроконтролера е свързан с ПИН за получаване на принтера. Принтерът също е свързан с 5V и GND захранване.
Изградихме веригата в макет и я тествахме.
Обяснение на кода
Кодът е доста лесен за разбиране. Пълен код за свързване на термопринтер с PIC16F877A е даден в края на статията. Както винаги, първо трябва да зададем конфигурационните битове в микроконтролера PIC.
// Настройки на бита за конфигуриране PIC16F877A // Изявления за конфигуриране на линията на източника „C“ // CONFIG #pragma config FOSC = HS // Битове за избор на осцилатор (HS осцилатор) #pragma config WDTE = OFF // Бит за активиране на Watchdog Timer (WDT деактивиран) # pragma config PWRTE = OFF // Бит за разрешаване на таймера за включване (PWRT деактивиран) #pragma config BOREN = ON // Разрешаване на бита за нулиране (активиран BOR) #pragma config LVP = OFF // Ниско напрежение (единично захранване) Бит за активиране на последователно програмиране в веригата (RB3 / PGM щифт има PGM функция; активирано програмиране с ниско напрежение) #pragma config CPD = OFF // Бит за защита на EEPROM памет за данни (защита на EEPROM код за данни изключена) #pragma config WRT = OFF // Flash Program Memory Активиране на битове (Защита срещу записване изключена; цялата памет на програмата може да бъде записана от контрола EECON) #pragma config CP = OFF // Бит за защита на кода на паметта на Flash програма (защита на кода изключена)
След това дефинирахме системни хардуерни макроси и използвахме заглавния файл eusart1.h за хардуерен контрол, свързан с eusart. UART е конфигуриран на скорост от 9600 бода в заглавния файл.
#include
В основната функция първо проверихме „натискане на бутон“ и също така използвахме тактиката за изключване на превключвателя, за да премахнем бъговете на превключвателя. Създадохме оператор if за условието „натиснат бутон“. Първо светодиодът ще свети и UART ще отпечата струните. Потребителски редове могат да бъдат генерирани вътре в оператора if и могат да бъдат отпечатани като низ.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// превключвателят е натиснат __delay_ms (50); // забавяне на забавяне, ако (printer_sw == 1) {// превключвателят все още е натиснат уведомление_лед = 1; put_string ("Здравейте! \ n \ r"); // Печат на термопринтер __delay_ms (50); put_string ("Урок за термопринтер. \ n \ r"); __забавяне_ms (50); put_string ("Circuit Digest. \ n \ r"); __забавяне_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"); уведомление_лед = 0; } } } }
Пълният код и работещото видео е дадено по-долу.