单片机系统制作微型打印机的源程序及方案

来源:本站
导读:目前正在解读《单片机系统制作微型打印机的源程序及方案》的相关信息,《单片机系统制作微型打印机的源程序及方案》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《单片机系统制作微型打印机的源程序及方案》的详细说明。
简介:在这里和大家分享一个单片机系统制作微型打印机的源程序。

//单片机系统打印机程序思路如下: // 打印规格(16×16点阵),打印机执行单片机n点行走纸指令:0x1B-0x4A-n。向前走n点行,n的值是1-255范围内。//设置 n点行间距:0x1B-0x31-n。n的值是0-255之间,//在使用ESC/K命令打印点阵图形时,通常设置n=0。文本打印时通常设置n=3。//-----------------------函数声明--------------------------------------------------------#include"stdio.h"#include"absacc.h"#include"reg51.h"//-----------------------LCD接口管脚声明--------------------------------------------------------sbit STB=P3^0;  //输出,数据选通触发脉冲上升沿时读入数据。sbit BUSY=P3^1; //输入,"高"表示打印机正"忙",不能接收数据。sbit ACK=P3^2;  //输入,应答脉冲"低"电平表示数据已被接收而且已准备好接收下一个数据。sbit ERR=P3^3;  //输入,经电阻上拉"高"电平,表示打印机无故障。sbit SEL=P3^4;  //输入,经电阻上拉"高"电平,表示打印机在线。#define DATA_OUT  P1 //P1为数据端口bit printer_ERR=0;        //打印机故障标志:0表示正常,1表示故障bit printer_online=1;     //打印机在先标志:1表示在线,0表示离线#define check_ERR() printer_ERR=~ERR      //检查打印机是否出错#define check_online() printer_online=SEL  //检查打印机是否在线//-----------------------定义各命令字--------------------------------------------------------#define printer_init()     SEND_2BYTE(0x1B,0x40)  //初始化打印机#define enter_hangzimode() SEND_2BYTE(0x1C,0x26)  //进入汉字打印命令:0x1C-0x26。#define exit_hangzimode()  SEND_2BYTE(0x1C,0x2E) //退出汉字打印命令:0x1C-0x2E。#define setting_LARGEhz()  SEND_2BYTE(0x1C,0x0E) //打印的汉字将在横向放大一倍,纵向不改变。#define cancel_LARGEhz()   SEND_2BYTE(0x1C,0x14)//取消汉字倍宽打印:。#define select_muster1()   SEND_2BYTE(0x1B,0x36)//选择字符集1:。#define select_muster2()   SEND_2BYTE(0x1B-0x37)//选择字符集2:。#define change_row()       SEND_BYTE(0x0A)     //换行:。#define change_page()      SEND_BYTE(0xOC)     //换页:。#define made_CZtable()     SEND_BYTE(0x0B)    //执行垂直造表:0x0B。#define made_SPtable()     SEND_BYTE(0x09)    //执行水平造表:0x0B。#define setting_rowLG()    SEND_BYTE(0x0E)        //一行内倍宽度打印:0x0E。#define cancel_rowLG()     SEND_BYTE(0x14)        //撤除一行内倍宽度打印:0x14。#define renew_char_set()   SEND_2BYTE(0x1B,0x3A)  //恢复字符集中的字符:0x1B-0x3A。#define enter()            SEND_BYTE(0x0D)       //回车:0x0D。#define delete_row()       SEND_BYTE(0x18)       //删除一行:0x18。#define delete_byte()      SEND_BYTE(0x7F)       //删除一字节:0x7F。#define execute_NULL()     SEND_BYTE(00)         //(4) 空:00。//设置汉字点阵打印规格(16×16点阵):0x1C-0x69-n//设定汉字点阵:n=0,16×16点阵//n=1,8 ×16点阵?//n=2,16×8点阵//n=3,8×8点阵。#define setting_HZmode(n)   SEND_2BYTE(0x1C,0x69);SEND_BYTE(n)// 执行n点行走纸:0x1B-0x4A-n。向前走n点行,n的值是1-255范围内。#define goahead_nrow(n)   SEND_2BYTE(0x1B,0x4A);SEND_BYTE(n)//设置 n点行间距:0x1B-0x31-n。n的值是0-255之间,//在使用ESC/K命令打印点阵图形时,通常设置n=0。文本打印时通常设置n=3。#define setting_rowgap(n)   SEND_2BYTE(0x1B,0x31);SEND_BYTE(n)//--------------------------------------------------------------------------------------------------// 函数名称: SEND_BYTE// 入口参数: ndata// 函数功能: 送出1BYTE数据//--------------------------------------------------------------------------------------------------void SEND_BYTE(unsigned char ndata)             {              STB=1;     while(BUSY);        DATA_OUT=ndata;     STB=0;     STB=1;     }//--------------------------------------------------------------------------------------------------// 函数名称: SEND_2BYTE// 入口参数: ndata1,ndata2// 函数功能: 送出1BYTE数据//--------------------------------------------------------------------------------------------------void SEND_2BYTE(unsigned char ndata1,ndata2)             {              SEND_BYTE(ndata1);     SEND_BYTE(ndata2);     }//--------------------------------------------------------------------------------------------------// 函数名称: SEND_nBYTE// 入口参数: ndata// 函数功能: 送出1BYTE数据//--------------------------------------------------------------------------------------------------void SEND_nBYTE(unsigned char n,unsigned char *ndata)             {              while(n--)     {     SEND_BYTE(*ndata++);      }              }//--------------------------------------------------------------------------------------------------// 函数名称: main// 函数功能: 主函数//--------------------------------------------------------------------------------------------------main(){unsigned char ndata[]="I love DPJ";check_ERR();           //检查打印机是否出错check_online();       //检查打印机是否在线while(printer_ERR==0&&printer_online);printer_init();        //初始化打印机SEND_nBYTE(11,ndata);SEND_2BYTE(0x0D,0x0D);}

提醒:《单片机系统制作微型打印机的源程序及方案》最后刷新时间 2024-03-14 01:02:26,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《单片机系统制作微型打印机的源程序及方案》该内容的真实性请自行鉴别。