最近在做使用STC15系列W404S
单片机串口输出到便携式热敏打印机上,通过IO口模拟串口经过max3232输出到打印机上,结果输出乱码,在电脑上用串口助手测试没有问题,但是到打印机上就是乱码,根本不是我想要的,想了好几天实在不知道问题出在哪里,只能求助,望大神指点,以下附上代码:
***it SoftTxd = P1^0; //向打印机输出的引脚
void Delay8us() //@5.5296MHz 系统频率 串口波特率115200
{
unsigned char i;
_nop_();
_nop_();
i = 8;
while (--i);
}
void SoftUartSend(unsigned char dat)
{
//严格控制时序在48个机器周期延迟触发一次数据
//数据帧:1个开始位+8bit数据+1个停止位
//系统频率5.5296MHZ 串口波特率115200
bdata unsigned char D;
D = dat;
SoftTxd = 0;//发送开始位
Delay8us();//延时48个周期
SoftTxd = D&0x01;
Delay8us();
SoftTxd = D&0x02;
Delay8us();
SoftTxd = D&0x04;
Delay8us();
SoftTxd = D&0x08;
Delay8us();
SoftTxd = D&0x10;
Delay8us();
SoftTxd = D&0x20;
Delay8us();
SoftTxd = D&0x40;
Delay8us();
SoftTxd = D&0x80;
Delay8us();
SoftTxd = 1;//发送停止位
Delay8us();
}
void SoftSendString(unsigned char *s)
{
while (*s) //检测字符串结束标志
{
SoftUartSend(*s++); //发送当前字符
}
}
void main(){
SoftTxd = 1;
SoftUartSend(0x1B);
SoftUartSend(0x40); //初始化打印机
SoftSendString("中国石油大学");
SoftUartSend(0x0A); //打印并换行
while(1);
}