51单片机控制串口热敏打印机程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<reg52.h> //51头文件
#include<string.h> //字串处理函数头文件
//#include<math.h>
#define uchar unsigned char
sbit BUSY=P3^4; //并口打印机的BUSY,串口打印机的CTS
/**************************单字节打印函数************************************/
void print(unsigned char ch)
{
while (BUSY==1) //busy为1时,等待,如数据量小,可不判BUSY
{;}
SBUF= ch; //busy=0,将数据送到P1口
while(TI==0) //当TI为0时,表示数据未发送完成,一直等待,直到为1
{;}
TI=0; //将TI清0
}
/*********************串口初始化**********************************************/
void com_init(void)
{
TH1=0XFD; //波特率值装入计数器,9600BPS
TMOD=0X20; //串口设置,定时器1,设为方式2,8位自动重载,用于产生波特率SCON=0X50; //串口发送方式1,8位数据位,1位停止位
TR1=1; //开启定时器1
}
/**********************字符打印函数********************************************/ void print_chs(uchar ch[])
{
uchar i;
for(i=0;i<strlen(ch);i++) //应用到字串处理函数,故须调用
print(ch[i]);
}
/*************************汉字打印例程***************************************/
void hanzitest(void)
{
//uchar i;
print(0x1b);print(0x40); //初始化打印机
print(0x1b);print(0x38);print(0x00); //调用16*16点阵汉字,24点阵为24*24
print(0x1b);print(0x31);print(6); // 设置后面的内容行间距为6点,默认为n = 3;
print_chs("操作人:\n");
print(0x0d);
print_chs("仪器编号:\n");
print(0x0d);
print_chs("操作日期:2015年3月12日\n");
print(0x0d);
print_chs("工序四时间:\n");
print(0x0d);
print_chs("工序三时间:\n");
print(0x0d);
print_chs("工序二时间:\n");
print(0x0d);
print_chs("工序一时间:\n");
print(0x0d);
/*
for(i=0;i<1;i++) //搋环打印5次
{
print(0x1b);print(0x38);print(0x00); //调用16*16点阵汉字,24点阵为24*24
//print(0x1b);print(0x38);print(0x04); //调用12*12点阵汉字,24点阵为24*24
print(0xc8);print(0xd9);print(0xb4);print(0xef); //打印数据“荣达”
print(0x0d); //回车
}
*/
}
/*************************左限例程**********************************/
void zuoxian(void)
{
print(0x1b);print(0x40); //初始化打印机
print(0x1b);print(0x38);print(0x00); //调用16*16点阵汉字,24点阵为24*24
//print_chs("左限测试:\n");
//print_chs("12345678901234567890123456789012");//标尺
print(0x1b);print(0x6c);print(0x06); //ESC I 命令,左限为6
//print(0x1b);print(0x69);print(1); //设置下面的文字为反白打印。

print_chs("ABCDE仪器");//打印字串
//print(0x1b);print(0x69);print(0); //设置下面的文字为禁止反白打印。

print(0x0d); //回车
print(0x0d); //回车
}
/************************反白指令例程**********************************/
/*
void fanbai(void)
{
uchar i;
print(0x1b);print(0x40); //初始化指令
for(i=0;i<2;i++) //i为1时,反白打印
{
print(0x1b);print(0x69);print(i);
print(0x1b);print(0x38);print(0);
print_chs("反白测试");
}
print(0x0d);
}
*/
Main()
{
com_init();
hanzitest();
zuoxian();
//fanbai();
//print(0x0d); //回车print(0x0d); //回车print(0x0d); //回车while(1); //死循环}。

相关文档
最新文档