基于51单片机设计的喷墨打印机控制技术

发布者:幸福的老农最新更新时间:2014-09-15 来源: 21ic关键字:89C52  喷墨打印机  打印驱动控制 手机看文章 扫描二维码
随时随地手机看文章

单片机应用系统中最常用的输出打印设备是微型打印机,例如TP系列、UP系列打印机等,对它们的控制技术也较为成熟。但是近年来随着通用打印机的广泛使用,微型打印机的缺点也日益明显:一是通用性及互换性不强;二是打印输出文档的幅面过小,不便于装订及存档。而通用打印机都配有国际标准并行接口 (CENTRONICS)和串行接口(RS232/422),纸张大小可任意选择。这些特点是微型打印机所无法抗衡的。因此在越来越多的单片机应用系统中逐渐趋向于使用通用打印机作为打印输出设备。本文介绍了以MCS-51系列单片机为核心,通过CENTRONICS国际标准8位并行接口控制驱动HP- DJ 600/800系列喷墨打印机的硬件接口电路没计方法及控制程序设计方法。

1 CENT日ONICS接口标准

HP-DJ 600/800 系列喷墨打印机采用与C正N-TRONICS标准兼容的并行打印机接口,接口各引脚信号的定义如表1所示。

1.jpg

2硬件设计

本着统一编址控制的原则,硬件原理如图1所示。

2.jpg

本设计采用MCS-51系列的89C52型单片机,其内部有8K字节的程序存储器,尽可满足本设计的程序、表格的存储要求。在外部扩展了一片数据存储器62256作为打印数据缓冲区,RAM62256的存储容量为32K字节,可以存放大量的打印数据。从原理框图可看出,RAM62256的片选CS端由单片机的P2.7口控制,因此RAM的地址范围为:0000H~7FFFH。

本设计采用查询方式进行打印驱动控制,单片机与打印机的接口包括如下内容:

(1)单片机的八位数据线通过74LS377锁存后与打印机的八位数据线相连,传送打印数据。单片机的P2.7口通过74LS04反相后与74LS377的G端相连,因此单片机向打印机传送数据的口地址为8000H。

(2)单片机的P1.0口提供数据选通信号,它与打印机STB端连接,进行将打印数据送打印机的选通控制。

(3)单片机的P1.1口接打印机的BUSY端,以BUSY信号作为打印机"忙"或"闲"状态查询信号。

3单片机驱动控制打印机的软件设计

3.1打印机的控制方法

系统上电后,当需要打印的数据出现在数据线上时,只要主机向打印机的STB端发一个负脉冲,就把数据送入了打印机。本设计对打印机的控制采取查询等待方式。首先主机读打印机BUSY线,如果BUSY为高电子则表示打印机正"忙",禁止接收数据,需等待。当打印机取走数据并处理完毕后,BUSY线被置为闲(低电平),同时输出应答脉冲ACK通知主机,可以再次输入数据。控制时序如图2所示。

 

3.jpg

STB为数据选通信号,打印机在其上升沿时读入数据。当主机发送数据后,需要有0.5μs以上的延时才能向STB线发负脉冲,即图2中的t1值不小于0.5μs;当STB信号从高电平变为低电子后,要保证负脉冲的宽度,亦即图2中的t2值不小于0.5μs;当STB信号从低电平变为高电平后,要保证有0.5μs以上的延时,亦即图2中的t3值不小于0.5μs,以确保打印机将数据可靠读入。控制流程见图3所示。

 

4.jpg

无论打印机打印输出的是文字还是图形,主机向其发送的.皆是一系列以字节为单位的数据,因此如何向打印机发送数据是关键所在。以下为一数据发送程序实

 

5.jpg

3.2控制程序设计

HP-DJ 600/800系列喷墨打印机使用HP PCLLEVEL 3语言,而在单片机控制系统中使用十六进制代码。因此在以下程序设计中,将PCL命令全部替换为用十六进制代码表示。

在单片机实时控制系统中,打印机最常用的功能是将控制系统的测试结果打印出来。下面通过如何实现一张表格的打印来具体说明单片机控制驱动喷墨打印机的软件设计方法。

需要打印的表格如表2所示。首先在windows界面的"附件"的"画图"中制作好如表2的表格,将其保存为文件名:REPORT.BMP,并且在向单片机的程序存储器中烧写程序代码时将此BMP文档代码一并写入,存放在以BMP_ADDR为起始地址的程序区内。BMP_ ADDR的值由所制作的表格大小决定,表格的宽度和长度分别用paper_width和paper_length表示。[page]

 

6.jpg

由流程图4可看出,首项工作是由主机向打印机发送命令,利用软件实现打印机的初始化。初始化的内容包括纸张型号、文本长度、上下边距、左右边距的设置等。在本设计中初始化程序如下:

 

7.jpg

 

8.jpg

 

9.jpg

打印机初始化完成后,将打印缓冲区清零。这个打印缓冲区实际上就是位于外部RAM 62256内的一段存储区域,RAM 62256的地址范围是0000H~7FFFH,在本设计中将打印缓冲区的首地址定义为0000H。为了书写方便在以下的程序中用PRINT_BUF表示这个地址值。接着将ROM中以BMP_ADDR为首址的内容读出并写入首址为PRINT_BUF的打印缓冲区内,其代码长度即所设定 打印数据全部存入打印缓冲区后,只要主机向打印机发开始打印命令,将打印缓冲区内的数据按字节依次发往打印机,一张符合要求的表格即打印出来了。具体程序如下:

 

10.jpg

打印数据全部存入打印缓冲区后,只要主机向打印机发开始打印命令,将打印缓冲区的数据按字节依次发往打印机,一长符合要求的表格即打印出来了。具体程序如下:

 

11.jpg

所设计的MCS-51系列单片机与喷墨打印机的硬件接口和程序在衡阳无线电总厂的多种测试仪器中应用,效果良好。该硬件接口和软件编程方法具有一定的通用性,适用于采用HP PCL LEVEL 3打印机命令语言并且配有Centronics并行接口的各种打印机,只需在程序中根据不同机型修改个别参数值,即可实现打印输出。

关键字:89C52  喷墨打印机  打印驱动控制 引用地址:基于51单片机设计的喷墨打印机控制技术

上一篇:工业控制计算机红外线遥控键盘的设计
下一篇:过程校准仪中高精度电压源的设计

推荐阅读最新更新时间:2024-03-16 13:41

基于51单片机的喷墨打印控制技术
单片机应用系统中最常用的输出打印设备是微型打印机,例如TP系列、UP系列打印机等,对它们的控制技术也较为成熟。但是近年来随着通用打印机的广泛使用,微型打印机的缺点也日益明显:一是通用性及互换性不强;二是打印输出文档的幅面过小,不便于装订及存档。而通用打印机都配有国际标准并行接口(CENTRONICS)和串行接口(RS232/422),纸张大小可任意选择。这些特点是微型打印机所无法抗衡的。因此在越来越多的单片机应用系统中逐渐趋向于使用通用打印?魑?蛴∈涑錾璞浮1疚慕樯芰艘訫CS-51系列单片机为核心,通过CENTRONICS国际标准8位并行接口控制驱动HP-DJ 600/800系列喷墨打印机的硬件接口电路没计方法及控制程序设计方法。
[单片机]
基于51单片机的<font color='red'>喷墨打印</font>机<font color='red'>控制</font>技术
一种新的单片机“看门狗”电路软件设计方法
    随着MCS-51系列单片机的发展,其芯片价格在不断下降,但同时也带来了单片机芯片的抗干扰问题,该问题可能导致一些智能型仪器仪表单片机工业控制系统发生“死机”。笔者通过近几年的设计实践及不断试验,总结了一套可靠的“看门狗”硬件电路及软件设计方法。由于一些专业期刊曾经刊登过许多关于“看门狗” 硬件电路构成的文章,同时也详细的关于“看门狗”电路非正常失效故障原因的分析及针对性软件设计技巧 ,本文给出了一个采用MAX706和89C52 构成的“看门狗”硬件电路,并且从新的角度说明了如何确保“看门狗”电路的正常工作,同时给出了它的软件设计方法。 1 “看门狗”硬件电路简述     现以MAX706监控电路为例(见图1)来说明
[单片机]
一种新的单片机“看门狗”电路软件设计方法
89C52与LCD1602
这两天看了下C51的资料,熟悉一下语句,51的资源都还没看,就急着写了个这程序 ,很生硬的,总算是LCD1602工作并显示起来了, 难点1:时序,难点2:LCD1602的11条指令; 时序对了,LCD1602基本上就能显示了:(LCD1602的老是忙等待,所以把忙等待改成10MS延时程序了); 下面是程序: //------------------------------------------- #include reg52.h #include intrins.h #define dataport P0 #define uchar unsigned char #define uint unsigned int //
[单片机]
基于89C52的电子钟设计
1.实验任务 (1).开机时,显示12:00:00的时间开始计时; (2).P0.0/AD0控制“秒”的调整,每按一次加1秒; (3).P0.1/AD1控制“分”的调整,每按一次加1分; (4).P0.2/AD2控制“时”的调整,每按一次加1个小时; 2.电路原理图 图4.20.1 3.系统板上硬件连线 (1).把“ 单片机 系统”区域中的P1.0-P1.7端口用8芯排线连接到“动态数码显示”区域中的A-H端口上; (2).把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上; (3).把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接
[单片机]
基于<font color='red'>89C52</font>的电子钟设计
利用89C52设计的温度控制
1.实验任务   用可调电阻调节电压值作为模拟温度的输入量,当温度低于30℃时,发出长嘀报警声和光报警,当温度高于60℃时,发出短嘀报警声和光报警。测量的温度范围在0-99℃。 2.电路原理图                 图4.29.1 3.系统板上硬件连线 a)把“ 单片机 系统”区域中的P1.0-P1.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。 b)把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。 c)把“单片机系统”区域中的P3.0与“模数转换模块”区域中的ST端子用导线相连接。 d)把“单片机系统”区域中的P3.1与“模数转
[单片机]
利用<font color='red'>89C52</font>设计的温度<font color='red'>控制</font>器
关于89C52单片机11.0592M晶振产生115200波特率的方法
当然下面所讨论产生115200波特率的最大难题就是因为它的时钟周期是等于12个机器周期的(12T模式) 定时器T1要想作为波特率发生器,必须是工作在8位自动重装载模式下,并且禁止使能T1的中断! 还有一个重要的寄存器就是PCON了,最高位SMOD可以使得波特率加倍!当然这里由于这里的8位自动重装载模式的限制,也并不是像我们想象的那样,既然可以产生9600的波特率那个加倍以下不就是115200了嘛?! Too young, Too simple! 先看两个公式吧,, 当波特率不加倍使用定时器T1,产生波特率的计算方法: TH1 = TL1 = 256 - 晶振值/12/2/16/波特率 使用波特率加倍后的
[单片机]
关于<font color='red'>89C52</font>单片机11.0592M晶振产生115200波特率的方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved