غالبًا ما يشار إلى الطابعة الحرارية باسم طابعة الإيصالات. يستخدم على نطاق واسع في المطاعم وأجهزة الصراف الآلي والمحلات التجارية والعديد من الأماكن الأخرى التي تتطلب إيصالات أو فاتورة. إنه حل فعال من حيث التكلفة وسهل الاستخدام من جانب المستخدم وكذلك من جانب المطور. تستخدم الطابعة الحرارية عملية طباعة خاصة تستخدم ورق حراري أو ورق حراري للطباعة. يتم تسخين رأس الطابعة عند درجة حرارة معينة أنه عندما يمر الورق الحراري من رأس الطباعة ، يتحول طلاء الورق إلى اللون الأسود في المناطق التي يتم فيها تسخين رأس الطابعة.
في هذا البرنامج التعليمي ، سنقوم بواجهة طابعة حرارية CSN A1 مع متحكم PIC PIC16F877A واسع الاستخدام. هنا في هذا المشروع ، يتم توصيل طابعة حرارية عبر PIC16F877A ويتم استخدام مفتاح لمسي لبدء الطباعة. يستخدم أيضًا مؤشر LED للإعلام لإخطار حالة الطباعة. سوف يتوهج فقط عندما يستمر نشاط الطباعة.
مواصفات الطابعة والتوصيلات
نحن نستخدم طابعة حرارية CSN A1 من كاشينو ، وهي متوفرة بسهولة والسعر ليس مرتفعًا جدًا.
إذا رأينا المواصفات على موقعها الرسمي ، فسنرى جدولاً يوضح المواصفات التفصيلية-
على الجانب الخلفي من الطابعة ، سنرى الاتصال التالي-
يوفر موصل TTL اتصال Rx Tx للتواصل مع وحدة الميكروكونترولر. يمكننا أيضًا استخدام بروتوكول RS232 للتواصل مع الطابعة. موصل الطاقة مخصص لتشغيل الطابعة ويستخدم الزر لغرض اختبار الطابعة. عندما يتم تشغيل الطابعة ، إذا ضغطنا على زر الاختبار الذاتي ، فستقوم الطابعة بطباعة ورقة حيث ستتم طباعة المواصفات وخطوط العينة. هنا ورقة الاختبار الذاتي-
كما نرى الطابعة تستخدم معدل الباود 9600 للتواصل مع وحدة التحكم الدقيقة. يمكن للطابعة طباعة أحرف ASCII. الاتصال سهل للغاية ، يمكننا طباعة أي شيء ببساطة باستخدام UART ، أو إرسال سلسلة أو حرف.
تحتاج الطابعة إلى مصدر طاقة 5 فولت 2 أمبير لتسخين رأس الطابعة. هذا هو عيب الطابعة الحرارية لأنها تستهلك تيارًا ضخمًا أثناء عملية الطباعة.
المتطلبات الأساسية
لعمل المشروع التالي نحتاج إلى الأشياء التالية: -
- اللوح
- ربط الأسلاك
- PIC16F877A
- 2 قطعة 33pF مكثف قرص السيراميك
- 680R المقاوم
- أدى أي لون
- مفتاح اللمس
- 2 قطعة 4.7 كيلو مقاومات
- طابعة حرارية CSN A1 مع لفة ورق
- 5V 2A تصنيف وحدة امدادات الطاقة.
مخطط الدائرة وشرحها
رسم تخطيطي للتحكم في الطابعة باستخدام متحكم PIC موضح أدناه:
نحن هنا نستخدم PIC16F877A كوحدة تحكم دقيقة. يتم استخدام المقاوم 4.7 كيلو لتوصيل دبوس MCLR بمصدر الطاقة 5 فولت. لقد قمنا أيضًا بتوصيل مذبذب خارجي 20 ميجا هرتز مع مكثفات 33pF لإشارة الساعة. يتم توصيل مؤشر LED للإشعار عبر منفذ RB2 بمقاوم الحد من التيار 680R. و التبديل اللمس متصل عبر دبوس RB0 عندما يتم الضغط على زر وسوف توفر المنطق السامي وإلا فإن دبوس سوف تتلقى أدنى المنطق من قبل المقاوم 4.7K.
يتم توصيل الطابعة CSN A1 باستخدام التكوين المتقاطع ، ويتم توصيل دبوس الإرسال متحكم دقيق مع دبوس التلقي بالطابعة. الطابعة متصلة أيضًا بمصدر 5V و GND.
قمنا ببناء الدائرة في لوحة واختبارها.
شرح الكود
الشفرة سهلة الفهم. تم تقديم الكود الكامل لربط الطابعة الحرارية بـ PIC16F877A في نهاية المقالة. كما هو الحال دائمًا ، نحتاج أولاً إلى ضبط بتات التكوين في الميكروكونترولر PIC.
// PIC16F877A إعدادات بت التكوين // عبارات تكوين سطر المصدر 'C' // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer تمكين البت (WDT معطل) # pragma config PWRTE = إيقاف // Power-up Timer تمكين بت (PWRT معطل) #pragma config BOREN = ON // Brown-out Reset Enable bit (BOR تمكين) #pragma config LVP = OFF // Low-Voltage (Single-Supply) بت تمكين البرمجة التسلسلية داخل الدائرة (دبوس RB3 / PGM به وظيفة PGM ؛ تم تمكين برمجة الجهد المنخفض) #pragma config CPD = إيقاف // بت حماية رمز الذاكرة EEPROM (إيقاف حماية رمز EEPROM للبيانات) #pragma config WRT = إيقاف // Flash Program Memory Write Enable bits (اكتب الحماية ، يمكن كتابة كل ذاكرة البرنامج بواسطة EECON control) #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code Protection off)
بعد ذلك ، حددنا وحدات الماكرو المتعلقة بأجهزة النظام واستخدمنا ملف الرأس eusart1.h للتحكم في الأجهزة ذات الصلة بـ eusart. تم تكوين UART بمعدل 9600 Baud داخل ملف الرأس.
#تضمن
في الوظيفة الرئيسية ، تحققنا أولاً من "الضغط على الزر" واستخدمنا أيضًا تكتيكات تبديل التبديل للقضاء على مواطن الخلل في التبديل. لقد أنشأنا بيان if لشرط "الضغط على الزر". أولاً ، سوف يتوهج المصباح وسيقوم UART بطباعة الأوتار. يمكن إنشاء أسطر مخصصة داخل عبارة if ويمكن طباعتها كسلسلة.
باطل رئيسي (باطل) { system_init () ؛ بينما (1) { إذا (printer_sw == 1) {// تم الضغط على المفتاح __delay_ms (50) ؛ // تأخير debounce if (printer_sw == 1) {// switch لا يزال مضغوطًا Notification_led = 1 ؛ put_string ("Hello! \ n \ r")؛ // Print to Thermal printer __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") ؛ الإخطار_led = 0 ؛ } } } }
ويرد أدناه رمز كامل وفيديو العمل.