<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用熱敏打印機連接PIC16F877A并使用輕觸開關實現打印的教程

科技觀察員 ? 來源:circuitdigest ? 作者:蘇拉夫·古普塔 ? 2022-11-04 15:10 ? 次閱讀

熱敏打印機通常稱為收據打印機。它廣泛用于餐館,自動取款機,商店和許多其他需要收據或賬單的地方。這是一個具有成本效益的解決方案,從用戶和開發人員的角度來看都非常方便。熱敏打印機使用特殊的打印工藝,使用熱致變色紙或熱敏紙進行打印。打印機頭在一定溫度下加熱,當熱敏紙從打印頭通過時,紙張涂層在打印頭被加熱的區域變黑。

在本教程中,我們將熱敏打印機 CSN A1 與廣泛使用的 PIC 微控制器 PIC16F877A 連接。在本項目中,熱敏打印機連接在PIC16F877A上,并使用輕觸開關開始打印。通知 LED 還用于通知打印狀態。僅當打印活動正在進行時,它才會發光。

打印機規格和連接

我們正在使用Cashino的CSN A1熱敏打印機,它很容易獲得,價格也不太高。

pYYBAGNkutGAKOo4AABotX8_zzQ545.jpg

如果我們在其官方網站上看到該規范,我們將看到一個提供詳細規格的表格-

pYYBAGNkutOAS1edAAA3kisNJI0528.png

在打印機的背面,我們將看到以下連接-

poYBAGNkuteAfW9OAACMMP8QHWQ619.jpg

TTL 連接器提供 Rx Tx 連接以與微控制器單元通信。我們還可以使用RS232協議與打印機通信。電源連接器用于為打印機供電,按鈕用于打印機測試。打印機通電時,如果我們按下自檢按鈕,打印機將打印一張紙,其中將打印規格和樣品行。這是自測表-

pYYBAGNkutiAPEbDAABHQmKb_0A440.jpg

正如我們所看到的,打印機使用9600波特率與微控制器單元通信。打印機可以打印 ASCII 字符。通信非常簡單,我們可以通過簡單地使用UART,傳輸字符串或字符來打印任何東西。

打印機需要5V 2A電源來加熱打印機頭。這是熱敏打印機的缺點,因為它在打印過程中需要巨大的負載電流。

先決條件

要進行以下項目,我們需要以下東西:-

面包板

連接電線

PIC16F877A

2個33pF陶瓷盤式電容器

680R電阻

任何顏色的指示燈

輕觸開關

2個4.7K電阻器

帶紙卷的熱敏打印機 CSN A1

5V 2A 額定電源單元。

電路圖及說明

使用PIC微控制器控制打印機的原理圖如下:

pYYBAGNkuVeAZaHVAAFvamRqknw435.png

這里我們使用PIC16F877A作為微控制器單元。一個 4.7k 電阻用于將 MCLR 引腳連接到 5V 電源。我們還將一個 20 MHz 的外部振蕩器與用于時鐘信號的 33pF 電容器連接起來。通知LED 通過 680R LED 限流電阻器連接在 RB2 端口上。按下按鈕時,輕觸開關連接在RB0引腳上,它將提供邏輯高電平,否則引腳將通過4.7k電阻接收邏輯低電平。

打印機CSN A1使用交叉配置連接,微控制器傳輸引腳與打印機的接收引腳連接。打印機還與 5V 和 GND 電源連接。

我們在試驗板中構建電路并對其進行了測試。

pYYBAGNkutqAI0IxAADGvIEVqC8990.jpg

poYBAGNkutyAK7fMAAB9shhSX00946.jpg

代碼說明

代碼非常簡單易懂。文章末尾給出了將熱敏打印機與PIC16F877A接口的完整代碼。與往常一樣,我們首先需要在PIC微控制器中設置配置位。

// PIC16F877A Configuration Bit Settings

// 'C' source line config statements

// CONFIG

#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)

#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)

#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)

#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)

#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)

#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)

#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)

#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

之后,我們定義了與系統硬件相關的宏,并使用 eusart1.h 頭文件進行與 eusart相關的硬件控制。UART 在頭文件中配置為 9600 波特率。

#include

#include "supporting_cfileeusart1.h"

/*

* System hardware related macros

*/

#define _XTAL_FREQ 200000000 //Crystal Frequency, used in delay routine

#define printer_sw PORTBbits.RB0 //this macro is for defining the printing switch

#define notification_led PORTBbits.RB2

void system_init(void);

在主函數中,我們首先檢查了“按鈕按下”,并使用了開關去抖動策略來消除開關故障。我們為“按鈕按下”條件創建了一個 if 語句。首先,LED 將發光,UART 將打印字符串。自定義行可以在 if 語句內生成,并且可以打印為字符串。

void main(void) {

system_init();

while(1){

if(printer_sw == 1){ //switch is pressed

__delay_ms(50); // debounce delay

if (printer_sw == 1){ // switch is still pressed

notification_led = 1;

put_string("Hello! nr");//Print to Thermal printer

__delay_ms(50);

put_string("Thermal Printer Tutorial.nr");

__delay_ms(50);

put_string("Circuit Digest. nr");

__delay_ms(50);

put_string ("nr");

put_string ("nr");

put_string ("nr");

put_string ("---------------------------- n r");

put_string ("Thank You");

put_string ("nr");

put_string ("nr");

put_string ("nr");

notification_led = 0;

}

}

}

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    6877

    瀏覽量

    148444
  • PIC16F877A
    +關注

    關注

    2

    文章

    43

    瀏覽量

    21708
  • 熱敏打印機
    +關注

    關注

    1

    文章

    45

    瀏覽量

    12009
收藏 人收藏

    評論

    相關推薦

    有誰知道如何在熱敏打印機實現圖片的灰階打印效果嗎?

    有誰知道如何在熱敏打印機實現圖片的灰階打印效果。 現在基本上文字打印,圖片打印功能都已開發結束
    發表于 04-24 15:43

    基于飛思卡爾微型熱敏打印機的設計與實現

    基于飛思卡爾微型熱敏打印機的設計與實現引言 本課題來源于北京普析通用公司的一個項目。由于公司現有單機版光譜儀器產品(如1810、T6等)采用的是并行口打印技術,而隨著USB
    發表于 09-22 16:00

    PIC16F877A在proteus中讀寫AT24C512

    此時把I2C DEBUGGER的SCL線連接PIC16F877A和AT24C512的SCL線上,這樣PIC16F877A可以正常的寫AT24C512。當PIC16F877A發送啟動信
    發表于 12-30 16:09

    連接USB打印機怎樣控制打印

    連接USB打印機怎樣控制打印
    發表于 06-03 20:51

    熱敏小票打印機的原理介紹

    本帖最后由 微笑的魚020 于 2016-5-25 16:57 編輯 熱敏小票打印機為何物 熱敏小票打印機其實是小票
    發表于 05-25 16:47

    熱敏打印機的設計

    想自己設計一個簡單的熱敏打印機,現有LPC1114板一塊,熱敏打印機芯一個,控制程序該如何編寫?哪位大神能指點一下?????
    發表于 04-18 16:17

    基于飛思卡爾微型熱敏打印機的設計與實現

    循環移位8位,移入熱敏打印頭內部的移位寄存器中,實現了數據的加載。 5 軟件設計 本熱敏打印機的軟件設計主要是通過RS-232通信模塊接收由
    發表于 12-03 15:30

    如何選擇打印機進行打印?

    條碼打印軟件中設置好條碼標簽之后該如何選擇打印機進行打印呢?接下來我們一起來看下:  1.使用條碼打印機打印  條碼
    發表于 12-02 15:30

    何種性能的芯片能滿足熱敏打印機應用?

    、數據存儲等,實現可靠的數據轉換和傳輸,以及有效確保熱敏打印機的穩定且精準運行。 MG32F10x系列還支持12位ADC,轉換率達1Msps,支持1
    發表于 04-21 15:51

    什么是熱敏打印機

    什么是熱敏打印機 熱敏打印機圖片 熱敏打印機的原理是,在淡色材料上(通
    發表于 10-13 09:19 ?5246次閱讀

    視頻打印機熱敏頭/灰度

    視頻打印機熱敏頭/灰度        視頻打印機熱敏
    發表于 12-31 10:23 ?1222次閱讀

    熱敏打印頭開發打印機實例

    微型熱敏打印頭對打印時序和溫度要求較高,本文選用FTP-628系列熱敏打印頭開展打印機研發工作。
    發表于 12-19 11:12 ?1.2w次閱讀
    <b class='flag-5'>熱敏</b><b class='flag-5'>打印</b>頭開發<b class='flag-5'>打印機</b>實例

    熱敏打印機的工作原理是什么?

    熱敏打印機應用十分廣泛,但工作原理卻不是每個人都清楚的。熱敏打印機熱敏紙配合能夠解決我們日常打印
    發表于 03-18 16:41 ?1.8w次閱讀

    3D打印機和普通打印機的區別

    打印機對于我們來說并不陌生,不僅可以打印黑白文檔,還可以打印彩色的圖案。打印機按采用的技術不同分為噴墨式、熱敏式、激光式、靜電式、磁式、發光
    發表于 03-15 12:12 ?7805次閱讀

    熱敏打印機的設計實現

    熱敏打印機是一種通過對熱敏紙加熱之后顯示文字或圖案的打印機。
    的頭像 發表于 07-21 14:32 ?2621次閱讀
    <b class='flag-5'>熱敏</b><b class='flag-5'>打印機</b>的設計<b class='flag-5'>實現</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>