- Технические характеристики и подключение принтера
- Предпосылки
- Принципиальная схема и объяснение
- Код Пояснение
Термопринтер часто называют чековым принтером. Он широко используется в ресторанах, банкоматах, магазинах и многих других местах, где требуются квитанции или счета. Это экономичное решение, которое очень удобно использовать как со стороны пользователя, так и со стороны разработчика. Термопринтер использует особый процесс печати, в котором для печати используется термохромная бумага или термобумага. Головка принтера нагревается до определенной температуры, когда термобумага выходит из печатающей головки, покрытие бумаги становится черным в тех областях, где нагревается головка принтера.
В этом руководстве мы будем сопрягать термопринтер CSN A1 с широко используемым микроконтроллером PIC PIC16F877A. Здесь, в этом проекте, термопринтер подключен к PIC16F877A, а тактильный переключатель используется для запуска печати. Светодиодный индикатор уведомлений также используется для уведомления о состоянии печати. Он будет светиться только во время печати.
Технические характеристики и подключение принтера
Мы используем термопринтер CSN A1 от Cashino, который легко доступен по невысокой цене.
Если мы увидим спецификацию на официальном сайте, мы увидим таблицу с подробными спецификациями -
На задней стороне принтера мы увидим следующее соединение -
Разъем TTL обеспечивает соединение Rx Tx для связи с блоком микроконтроллера. Мы также можем использовать протокол RS232 для связи с принтером. Разъем питания предназначен для питания принтера, а кнопка используется для тестирования принтера. Когда принтер включен, если мы нажмем кнопку самотестирования, принтер распечатает лист, на котором будут напечатаны спецификации и образцы строк. Вот лист самопроверки -
Как мы видим, принтер использует скорость 9600 бод для связи с микроконтроллером. Принтер может печатать символы ASCII. Связь очень проста, мы можем распечатать что угодно, просто используя UART, передавая строку или символ.
Принтеру требуется источник питания 5 В 2 А для нагрева головки принтера. Это недостаток термопринтера, поскольку он потребляет большой ток нагрузки в процессе печати.
Предпосылки
Для создания следующего проекта нам понадобится следующее: -
- Макетная плата
- Подключите провода
- PIC16F877A
- 2шт 33pF керамический дисковый конденсатор
- Резистор 680R
- Любой цвет светодиода
- Тактильный переключатель
- 2шт резисторы 4.7k
- Термопринтер CSN A1 с бумажным рулоном
- Блок питания с номинальным напряжением 5 В, 2 А.
Принципиальная схема и объяснение
Схема управления принтером с помощью микроконтроллера PIC приведена ниже:
Здесь мы используем PIC16F877A в качестве микроконтроллера. Резистор 4,7 кОм используется для подключения вывода MCLR к источнику питания 5 В. Мы также подключили внешний генератор 20 МГц с конденсаторами 33 пФ для тактового сигнала. Светодиод уведомления подключен к порту RB2 с токоограничивающим резистором 680R. Переключатель Тактильный подключен через RB0 контактный, когда кнопка нажата она обеспечит высокий логический уровень в противном случае чеку получит низкий логический уровень на 4.7K резистор.
Принтер CSN A1 подключается с использованием перекрестной конфигурации, вывод передачи микроконтроллера соединяется с выводом приема принтера. Принтер также подключен к источнику питания 5V и GND.
Мы собрали схему на макете и проверили ее.
Код Пояснение
Код довольно прост для понимания. Полный код для сопряжения термопринтера с PIC16F877A приведен в конце статьи. Как всегда, нам сначала нужно установить биты конфигурации в микроконтроллере PIC.
// Настройка битов конфигурации PIC16F877A // Операторы конфигурации исходной строки 'C' // CONFIG #pragma config FOSC = HS // Биты выбора генератора (генератор HS) #pragma config WDTE = OFF // Бит включения сторожевого таймера (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 // Биты разрешения записи в флэш-память программ (защита от записи отключена; вся программная память может быть записана с помощью управления EECON) #pragma config CP = OFF // Бит защиты кода флэш-памяти программ (защита кода выключена)
После этого мы определили макросы, относящиеся к системному оборудованию, и использовали файл заголовка eusart1.h для управления оборудованием, связанным с eusart. UART настроен на скорость 9600 бод внутри файла заголовка.
#включают
В основной функции мы сначала проверили «нажатие кнопки», а также использовали тактику противодействия переключению для устранения сбоев переключения. Мы создали оператор if для условия «кнопка нажата». Сначала загорится светодиод, и UART распечатает строки. Пользовательские строки могут быть созданы внутри оператора if и могут быть напечатаны в виде строки.
недействительный основной (недействительный) { system_init (); while (1) { if (printer_sw == 1) {// нажат переключатель __delay_ms (50); // задержка устранения неполадок if (printer_sw == 1) {// переключатель все еще нажат notification_led = 1; put_string ("Hello! \ n \ r"); // Печать на термопринтер __delay_ms (50); put_string ("Учебное пособие по термопринтеру. \ n \ r"); __delay_ms (50); put_string ("Дайджест схемы. \ 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; } } } }
Полный код и рабочее видео приведены ниже.