调试硬件平台:SP0605-51/AVR单片机实验开发板
调试软件环境:Keil8.01版本( www.keil.com )
最近给客户开发的项目中要求通过单片机打印相关的记录问题,该项目中的微打采用北京炜煌公司生产的WHXX05/<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />08A一款微型打印机,该打印可以通过并口或串口实现微打功能,由于单片机串口的使用是最普遍,因此通过单片机串口与微型打印机之间连接起来,在使用过程中要设置微打的跳线使其工作在串口模式下。
由于该微打的串口数据格式是:1位起始位+8位数据位+1位奇偶校验位+1位停止。对于51单片机来说可以让51单片机工作在方式3模式下,可以实现9位数据的传输,而将TB8或RB8作为奇偶校验位即可。
由于51单片机的TB8/RB8是作为多机通信的命令/数据标识位,没有专门的奇偶位,我们需要在发送每个字节之前对该字节进行奇偶校验。具体实现的源程序段如下:
void SendDataToPrint(unsigned char SendByte)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
{
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 )
文章评论(0条评论)
登录后参与讨论