有木有做过热敏打印机的,STC15单片机串口输出到热敏打印机上乱码,小白求助

2019-07-15 14:22发布

最近在做使用STC15系列W404S单片机串口输出到便携式热敏打印机上,通过IO口模拟串口经过max3232输出到打印机上,结果输出乱码,在电脑上用串口助手测试没有问题,但是到打印机上就是乱码,根本不是我想要的,想了好几天实在不知道问题出在哪里,只能求助,望大神指点,以下附上代码:

sbit 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);

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。