M-150针打印机驱动程序开发指南
"M-150针打驱动程序是一个针对M-150针式打印机的专用软件组件,用于确保打印机与计算机之间的通信和数据处理。该驱动程序可能包括了打印机的控制指令集,使得操作系统能够理解并执行打印任务。在描述中提到的代码片段可能是用于C51微控制器的程序,它涉及到打印过程中的数据处理和控制信号的发送。" M-150针打驱动程序是连接M-150型针式打印机与计算机系统的关键软件,它允许用户通过计算机发送打印指令到打印机,并确保这些指令正确地被解释和执行。针式打印机通常使用多针打印头来打印文本或图像,而M-150针打驱动程序会针对这种特定的打印机制进行优化。 在提供的代码中,可以看到一些定义和常量,它们对于理解打印过程至关重要。例如,`HEAD4`定义了每行打印有4个头部,`LET_PER_HEAD4`表示每个头部打印4个字母,`VOL_PER_LET6`代表每个字母由6个像素点组成。`LINE9`则表明每行可以打印9个这样的字母行,考虑到行间距,实际打印的行数可能是8行加上一个额外的空行。 `xdataprint_at_0x7fff`变量用于存储要打印的数据位置,这可能是指内存中的某个地址,其中0x7fff是十六进制的地址值。`LetBuf`和`PrtBuf`两个缓冲区分别用于存储字母和打印数据,这在处理打印任务时是常见的做法,可以提高效率并减少延迟。 `ASCSTART0X20`定义了ASCII码的起始值,通常为32(0x20),表示ASCII字符集中可打印字符的开始。`ASCTable`是一个二维数组,包含了ASCII码对应的点阵图案,用于将字符转换为打印机可以识别的格式。这个表格可能包含5708个字符,每个字符占用6个像素点宽,8个像素点高,总共5708个6x8的像素点阵,覆盖了从32到127的ASCII码范围。 代码中还提到了一些P1_1、P3_2和P3_3等端口操作,这些都是在C51环境下对微控制器AT89x52的直接控制,这些端口可能分别用于控制打印头的移动、打印信号的发出以及纸张的进给等。 M-150针打驱动程序涉及到硬件控制、数据处理和字符编码等多个方面,确保了从计算机到M-150针式打印机的高效、准确的打印流程。编写这样的驱动程序需要对硬件接口、微控制器编程和打印机工作原理有深入的理解。
1 只需要15+15字节缓冲
2 提供一个6*8字库,绝大多数使用到的字符都有了
缺点:
没有优化,代码比较大.
下面我就简单介绍一下:
硬件情况:
1 打印机口地址在 0x7fff.四个打印针头分别对应本端口的第0到第3位,比如送0x11就
是第一个针头在纸上打一个点.
2 P1_1 开关打印机电源
3 P3_2 用于检测针头同步
4 P3_3 用于检测行就位(就是开始新行时有一个信号)
5 m-150的资料实在是难找,所以我对口地址的第5位送1是什么意思到现在还不知道(我
估计是一个脉冲,用来驱动步进电机),希望高手指教.也希望有兴趣的网友和我交流.
C51程序:
#include <string.h>
#include <stdio.h>
#include <AT89x52.h>
#define HEAD 4 //针头数
#define LET_PER_HEAD 4 //一个针头负责打印的字符数
#define VOL_PER_LET 6 //多少个点列构成一个字符
#define LINE 9 //每个字符要打印多少个点行,8+1,最后一行是空行,
unsigned char xdata print _at_ 0x7fff; //打印就口地址
unsigned char LetBuf[HEAD][LET_PER_HEAD]; //字符缓冲letter buffer
unsigned char PrtBuf[HEAD][LET_PER_HEAD]; //打印缓冲print buffer
#define ASCSTART 0X20
//asc字符的打印代码表,从空格(0x20)开始,注意最后一个字符是自己另加的
unsigned char code ASCTable[][VOL_PER_LET] = {
-----
源文件 / 文字 : !\"#$%&\'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]
^_`abcdefghijklmnopqrstuvwxyz{|}u
宽×高(像素): 570×8
字模格式/大小 : 单色点阵液晶字模,纵向取模,字节倒序/570字节
数据转换日期 : 02-8-13 9:44:55
---------------------------------------------------------------------------
---*/
0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x06,0x5F,0x06,0x00,
0x00,0x07,0x03,0x00,0x07,0x03,
0x00,0x24,0x7E,0x24,0x7E,0x24, 0x00,0x24,0x2B,0x6A,0x12,0x00,
0x00,0x63,0x13,0x08,0x64,0x63,
0x00,0x36,0x49,0x56,0x20,0x50, 0x00,0x00,0x07,0x03,0x00,0x00,
0x00,0x00,0x3E,0x41,0x00,0x00,
0x00,0x00,0x41,0x3E,0x00,0x00, 0x00,0x08,0x3E,0x1C,0x3E,0x08,
0x00,0x08,0x08,0x3E,0x08,0x08,
0x00,0x00,0xE0,0x60,0x00,0x00, 0x00,0x08,0x08,0x08,0x08,0x08,
0x00,0x00,0x60,0x60,0x00,0x00,
0x00,0x20,0x10,0x08,0x04,0x02, 0x00,0x3E,0x51,0x49,0x45,0x3E,
0x00,0x00,0x42,0x7F,0x40,0x00,
0x00,0x62,0x51,0x49,0x49,0x46, 0x00,0x22,0x49,0x49,0x49,0x36,
0x00,0x18,0x14,0x12,0x7F,0x10,
0x00,0x2F,0x49,0x49,0x49,0x31, 0x00,0x3C,0x4A,0x49,0x49,0x30,
0x00,0x01,0x71,0x09,0x05,0x03,
0x00,0x36,0x49,0x49,0x49,0x36, 0x00,0x06,0x49,0x49,0x29,0x1E,
0x00,0x00,0x6C,0x6C,0x00,0x00,
0x00,0x00,0xEC,0x6C,0x00,0x00, 0x00,0x08,0x14,0x22,0x41,0x00,
0x00,0x24,0x24,0x24,0x24,0x24,
剩余6页未读,继续阅读
- 粉丝: 2
- 资源: 46
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 彩虹rain bow point鼠标指针压缩包使用指南
- C#开发的C++作业自动批改系统
- Java实战项目:城市公交查询系统及部署教程
- 深入掌握Spring Boot基础技巧与实践
- 基于SSM+Mysql的校园通讯录信息管理系统毕业设计源码
- 精选简历模板分享:简约大气,适用于应届生与在校生
- 个性化Windows桌面:自制图标大全指南
- 51单片机超声波测距项目源码解析
- 掌握SpringBoot实战:深度学习笔记解析
- 掌握Java基础语法的关键知识点
- SSM+mysql邮件管理系统毕业设计源码免费下载
- wkhtmltox下载困难?找到正确的安装包攻略
- Python全栈开发项目资源包 - 功能复刻与开发支持
- 即时消息分发系统架构设计:以tio为基础
- 基于SSM框架和MySQL的在线书城项目源码
- 认知OFDM技术在802.11标准中的项目实践