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

    文章

    7646

    浏览量

    152010
  • PIC16F877A
    +关注

    关注

    2

    文章

    43

    浏览量

    21853
  • 热敏打印机
    +关注

    关注

    1

    文章

    45

    浏览量

    12142
收藏 人收藏

    评论

    相关推荐

    热敏小票打印机的原理介绍

    本帖最后由 微笑的鱼020 于 2016-5-25 16:57 编辑 热敏小票打印机为何物 热敏小票打印机其实是小票
    发表于 05-25 16:47

    热敏打印机的设计

    想自己设计一个简单的热敏打印机,现有LPC1114板一块,热敏打印机芯一个,控制程序该如何编写?哪位大神能指点一下啊???
    发表于 04-18 16:17

    基于飞思卡尔微型热敏打印机的设计与实现

    循环移位8位,移入热敏打印头内部的移位寄存器中,实现了数据的加载。 5 软件设计 本热敏打印机的软件设计主要是通过RS-232通信模块接收由
    发表于 12-03 15:30

    pic16f877a中文资料pdf

    pic16f877a中文资料
    发表于 07-15 13:20 4548次下载
    <b class='flag-5'>pic16f877a</b>中文资料pdf

    什么是热敏打印机

    什么是热敏打印机 热敏打印机图片 热敏打印机的原理是,在淡色材料上(通
    发表于 10-13 09:19 5703次阅读

    视频打印机热敏头/灰度

    视频打印机热敏头/灰度        视频打印机热敏
    发表于 12-31 10:23 1262次阅读

    热敏打印头开发打印机实例

    微型热敏打印头对打印时序和温度要求较高,本文选用FTP-628系列热敏打印头开展打印机研发工作。
    发表于 12-19 11:12 1.3w次阅读
    <b class='flag-5'>热敏</b><b class='flag-5'>打印</b>头开发<b class='flag-5'>打印机</b>实例

    热敏打印机工作原理

    热敏打印机的工作原理是打印头上安装有半导体加热元件,打印头加热接触热敏
    发表于 12-19 14:23 242次下载
    <b class='flag-5'>热敏</b><b class='flag-5'>打印机</b>工作原理

    PIC16F877A串口发送查询方式

    PIC16F877A串口发送,查询方式,就为了调出这个费了我一天时间,原来是串口芯片电压问题,现总结如下
    发表于 09-01 11:03 10次下载
    <b class='flag-5'>PIC16F877A</b>串口发送查询方式

    PIC16F877A串口芯片电压问题

    PIC16F877A串口发送,查询方式,就为了调出这个费了我一天时间,原来是串口芯片电压问题,现总结如下
    发表于 09-01 11:15 9次下载
    <b class='flag-5'>PIC16F877A</b>串口芯片电压问题

    热敏打印机的工作原理是什么?

    热敏打印机应用十分广泛,但工作原理却不是每个人都清楚的。热敏打印机热敏纸配合能够解决我们日常打印
    发表于 03-18 16:41 1.9w次阅读

    PIC16F877A开发板 数码管动态扫描实验

    //****************电子园PIC16F877A开发板 数码管动态扫描实验****************//////mcu: PIC16F877A 4MHz //2010年12月
    发表于 11-16 19:51 13次下载
    <b class='flag-5'>PIC16F877A</b>开发板 数码管动态扫描实验

    PIC16F877A开发板 普通IO驱动74595实验

    //*****************电子园PIC16F877A开发板 普通IO驱动74595实验***************////PIC16F877A 实验板////mcu
    发表于 11-16 19:51 13次下载
    <b class='flag-5'>PIC16F877A</b>开发板 普通IO驱动74595实验

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图免费下载。
    发表于 03-21 15:47 12次下载

    热敏打印机的设计实现

    热敏打印机是一种通过对热敏纸加热之后显示文字或图案的打印机
    的头像 发表于 07-21 14:32 4236次阅读
    <b class='flag-5'>热敏</b><b class='flag-5'>打印机</b>的设计<b class='flag-5'>实现</b>