/*********************************************************
// 新荣达电子打印机测试程序
// 51 单片机,晶振 11.0592
// 时间:2009-7-10
// 用与测试串行接口打印机
// 常用打印机指令以函数行式体现
// 可根据需要自行调用单一函数
**********************************************************/
#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_chs("汉字命令测试:");
for(i=0;i<5;i++) //搋环打印 5 次
{