日志档案

发表于 2007-8-6 23:59:40

2

标签: SP0605开发板  西谱电子  

单片机串口实现微型热敏打印机的方法

       调试硬件平台:SP0605-51/AVR单片机实验开发板

       调试软件环境:Keil8.01版本( www.keil.com

       最近给客户开发的项目中要求通过单片机打印相关的记录问题,该项目中的微打采用北京炜煌公司生产的WHXX05/08A一款微型打印机,该打印可以通过并口或串口实现微打功能,由于单片机串口的使用是最普遍,因此通过单片机串口与微型打印机之间连接起来,在使用过程中要设置微打的跳线使其工作在串口模式下。

       由于该微打的串口数据格式是:1位起始位+8位数据位+1位奇偶校验位+1位停止。对于51单片机来说可以让51单片机工作在方式3模式下,可以实现9位数据的传输,而将TB8RB8作为奇偶校验位即可。

       由于51单片机的TB8/RB8是作为多机通信的命令/数据标识位,没有专门的奇偶位,我们需要在发送每个字节之前对该字节进行奇偶校验。具体实现的源程序段如下:

void SendDataToPrint(unsigned char SendByte)

{

  unsigned char i;

  unsigned char j;

  unsigned char temp;

 

  j=0;

  temp=SendByte;

  for(i=0;i<8;i++)

    {

      if(0!=(temp & 0x01))

        {

          j++;

        }

      temp>>=1;

    }

  if(0!=(j%2))

    {

      TB8=1;   

    }

    else

      {

        TB8=0;

      }

  SBUF=SendByte;

  TI=0;

  while(0==TI);

  TI=0;

}

       因此,在主程序中只需要调用SendDataToPrint函数来实现内容打印即可。

       下面是主程序段

unsigned char TestStr[]={"西 "};

 

void main(void)

{

  unsigned char i;

 

  SCON=0xC0;//串口工作于方式3,禁止接收

  TMOD|=0x20;

  TH1=0xFA;//Fosc=22.1184MHz,9600波特率

  TL1=0xFA;

  TR1=1;

  Delay(60000);

  Delay(60000);

  SendStrToPrint(TestStr);

  SendDataToPrint(13);//换行命令

  Delay(60000);

  Delay(60000);

  Delay(60000);

  Delay(60000);

  Delay(60000);

  Delay(60000);

  Delay(60000);

  Delay(60000);

  SendDataToPrint(27);

  SendDataToPrint(74);

  SendDataToPrint(60);

  while(1);

}

运行的效果是在热敏纸上打印出“西 子”

我们的网站:西谱电子( www.supermcu.com

       SP0605-51/AVR实验开发板( www.supermcu.com/p_info.asp?id=247

系统分类: 单片机   |   用户分类: C51单片机   |   来源: 原创   |   【推荐给朋友】

    阅读(1096)    回复(0)  

投一票您将和博主都有获奖机会!