- Технічні характеристики принтера та підключення
- Передумови
- Принципова схема та пояснення
- Пояснення коду
Термопринтер часто називають принтером квитанцій. Він широко використовується в ресторанах, банкоматах, магазинах та багатьох інших місцях, де потрібні квитанції або рахунок. Це економічно вигідне рішення і дуже зручне у використанні як з боку користувача, так і з боку розробника. Термопринтер використовує спеціальний процес друку, який використовує термохромний папір або термопапір для друку. Головка принтера нагрівається при певній температурі, щоб, коли термопапір проходить від друкуючої головки, паперове покриття чорніло в місцях, де нагрівається головка принтера.
У цьому підручнику ми взаємодіємо з термопринтером 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 як мікроконтролер. Для підключення штифта MCLR до джерела живлення 5 В використовується резистор 4.7k. Ми також підключили зовнішній генератор 20 МГц з конденсаторами 33pF для тактового сигналу. Світлодіод сповіщення підключений через порт RB2 за допомогою резистора обмеження струму 680R. Перемикач Тактильний підключений через RB0 контактний, коли кнопка натиснута вона забезпечить високий логічний рівень в іншому випадку чеку отримає низький логічний рівень на 4.7K резистор.
Принтер CSN A1 підключений за допомогою перехресної конфігурації, штифт передачі мікроконтролера підключений до контакту прийому принтера. Принтер також підключений до джерела живлення 5 В та 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 // Біт захисту коду пам'яті Flash-програми (захист коду вимкнено)
Після цього ми визначили системні макроси, пов’язані з апаратним забезпеченням, і використали файл заголовка eusart1.h для управління апаратним забезпеченням, пов’язаним з eusart. UART налаштовано на швидкість 9600 бод усередині файлу заголовка.
#включати
У головній функції ми спочатку перевірили `` натискання кнопки '', а також використали тактику відключення перемикача, щоб усунути збої в роботі перемикача. Ми створили оператор if для умови "натиснута кнопка". Спочатку світлодіод засвітиться, а UART надрукує рядки. Спеціальні рядки можуть бути сформовані всередині оператора if і можуть бути надруковані у вигляді рядка.
void main (void) { system_init (); while (1) { if (printer_sw == 1) {// натиснуто перемикач __delay_ms (50); // затримка розмови, якщо (printer_sw == 1) {// перемикач все ще натиснуто уведомление_led = 1; put_string ("Привіт! \ n \ r"); // Друк на термопринтері __delay_ms (50); put_string ("Підручник з термопринтера. \ n \ r"); __delay_ms (50); put_string ("Circuit 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"); message_led = 0; } } } }
Повний код та робоче відео наведено нижче.