- Pagtutukoy ng Printer at Mga Koneksyon
- Mga Pangangailangan
- Circuit Diagram at Paliwanag
- Paliwanag sa Code
Ang Thermal printer ay madalas na tinukoy bilang resibo ng resibo. Malawakang ginagamit ito sa mga restawran, ATM, tindahan at maraming iba pang mga lugar kung saan kinakailangan ang mga resibo o bayarin. Ito ay isang solusyon na epektibo sa gastos at napaka madaling gamiting gamitin mula sa panig ng gumagamit pati na rin mula sa panig ng developer. Ang isang thermal printer ay gumagamit ng isang espesyal na proseso ng pagpi-print na gumagamit ng thermochromic paper o thermal paper para sa pagpi-print. Ang ulo ng printer ay pinainit sa isang tiyak na temperatura na kapag ang thermal paper ay dumaan mula sa print head, ang patong ng papel ay nagiging itim sa mga lugar kung saan pinainit ang ulo ng printer.
Sa tutorial na ito, makikipag-ugnay kami sa isang thermal printer na CSN A1 na may malawak na ginamit na PIC microcontroller PIC16F877A. Dito sa proyektong ito, ang isang thermal printer ay nakakonekta sa kabuuan ng PIC16F877A at ginagamit ang isang tactile switch upang simulan ang pag-print. Ginagamit din ang isang LED notification upang abisuhan ang katayuan sa pagpi-print. Mag-iilaw lamang ito kapag nangyayari ang aktibidad sa pag-print.
Pagtutukoy ng Printer at Mga Koneksyon
Gumagamit kami ng CSN A1 Thermal Printer mula sa Cashino, na madaling magagamit at ang presyo ay hindi masyadong mataas.
Kung nakikita namin ang detalye sa opisyal na website, makakakita kami ng isang talahanayan na nagbibigay ng detalyadong mga pagtutukoy-
Sa likurang bahagi ng printer, makikita namin ang sumusunod na koneksyon-
Ang konektor ng TTL ay nagbibigay ng koneksyon sa Rx Tx upang makipag-usap sa yunit ng microcontroller. Maaari din naming gamitin ang RS232 na protocol upang makipag-usap sa printer. Ang konektor ng kuryente ay para sa pagpapagana ng printer at ang pindutan ay ginagamit para sa layunin ng pagsubok ng printer. Kapag pinapatakbo ang printer, kung pipilitin namin ang pindutan ng self-test ang printer, magpi-print ng isang sheet kung saan mai-print ang mga pagtutukoy at sample na linya. Narito ang pansubok na sheet-
Tulad ng nakikita natin ang printer na gumagamit ng 9600 baud rate upang makipag-usap sa yunit ng microcontroller. Maaaring i-print ng printer ang mga character na ASCII. Napakadali ng komunikasyon, maaari naming mai-print ang anumang bagay sa pamamagitan lamang ng paggamit ng UART, paglilipat ng string o character.
Ang printer ay nangangailangan ng isang 5V 2A power supply para sa pag-init ng ulo ng printer. Ito ang disbentaha ng thermal printer dahil tumatagal ito ng napakalaking kasalukuyang pag-load sa panahon ng proseso ng pag-print.
Mga Pangangailangan
Upang gawin ang sumusunod na proyekto, kailangan namin ang mga sumusunod na bagay: -
- Breadboard
- I-hook up ang mga wire
- PIC16F877A
- 2 pcs 33pF ceramic disc capacitor
- Risistor ng 680R
- Anumang kulay na humantong
- Tactile switch
- 2pcs 4.7k resistors
- Thermal Printer CSN A1 na may papel na roll
- 5V 2A na na-rate na power supply unit.
Circuit Diagram at Paliwanag
Ang iskematika para sa pagkontrol sa printer na may PIC Microcontroller ay ibinibigay sa ibaba:
Narito ginagamit namin ang PIC16F877A bilang unit ng microcontroller. Ang isang 4.7k risistor ay ginagamit upang ikonekta ang MCLR pin sa 5V power supply. Nakakonekta din namin ang isang panlabas na oscillator na 20 MHz na may 33pF capacitor para sa signal ng orasan. Ang isang LED notification ay konektado sa kabuuan ng port ng RB2 na may 680R na humantong sa kasalukuyang paglilimita sa risistor. Ang Tactile switch ay konektado sa kabuuan ng RB0 pin kapag pinindot ang pindutan ay magbibigay ito ng Logic High kung hindi man ang tatang ay makakatanggap ng low Logic ng 4.7k resistor.
Ang printer na CSN A1 ay konektado gamit ang cross config, ang Microcontroller Transmit pin ay konektado sa Nakatanggap na pin ng printer. Nakakonekta din ang printer sa 5V at GND supply.
Itinayo namin ang circuit sa isang breadboard at sinubukan ito.
Paliwanag sa Code
Ang code ay medyo simple upang maunawaan. Ang kumpletong code para sa interfacing Thermal Printer na may PIC16F877A ay ibinibigay sa pagtatapos ng artikulo. Tulad ng nakasanayan, kailangan muna naming itakda ang mga config bit sa PIC microcontroller.
// PIC16F877A Configuration Bit Setting // 'C' source line config statements // CONFIG #pragma config FOSC = HS // Oscillator Selection bits (HS oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT naka-disable) # pragma config PWRTE = OFF // Power-up Timer Paganahin ang bit (hindi pinagana ang PWRT) #pragma config BOREN = ON // Brown-out I-reset Paganahin ang bit (pinagana ang BOR) #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Paganahin ang bit (Ang RB3 / PGM pin ay may function na PGM; pinagana ang mababang-boltahe na programa) #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Proteksyon ang code ng EEPROM code) #pragma config WRT = OFF // Flash Program Memory Sumulat Paganahin ang mga bit (Isulat ang proteksyon; ang lahat ng memorya ng programa ay maaaring maisulat ng kontrol ng EECON) #pragma config CP = OFF // Flash Program Memory Code Protection Protection (Proteksyon ang code)
Pagkatapos nito, tinukoy namin ang mga hardware na nauugnay sa hardware ng system at ginamit ang eusart1.h header file para sa eusart na kaugnay ng kontrol sa hardware. Ang UART ay naka-configure sa 9600 rate ng Baud sa loob ng header file.
# isama
Sa pangunahing pag- andar, sinuri muna namin ang 'pindutin ang pindutan' at ginamit din ang mga taktika ng paglipat ng debounce upang maalis ang mga switch glitches. Lumikha kami ng isang kung pahayag para sa kundisyon na 'pinindot ang pindutan'. Una nangunguna ang glow at i-print ng UART ang mga string. Ang mga pasadyang linya ay maaaring mabuo sa loob ng kung pahayag at maaaring mai-print bilang isang string.
void main (void) { system_init (); habang (1) { kung (printer_sw == 1) {// switch ay pinindot __delay_ms (50); // debounce delay kung (printer_sw == 1) {// switch ay pinindot pa rin ang notification_led = 1; put_string ("Hello! \ n \ r"); // I-print sa Thermal printer __delay_ms (50); put_string ("Thermal Printer Tutorial. \ 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 ("Salamat"); put_string ("\ n \ r"); put_string ("\ n \ r"); put_string ("\ n \ r"); notification_led = 0; } } } }
Ang kumpletong Code at gumaganang Video ay ibinibigay sa ibaba.