原创 WH-E17 微型打印机 调试报告

2011-9-24 00:13 1986 6 6 分类: MCU/ 嵌入式
最近调试 WH-E17打印机, 串口模式,按照给的demo,编写了程序,但始终print 乱码。
使用工具: avr128 、 WH-E17微型打印机 、 串口模式
demo 程序如下:

//编译器     :ICCAVR, avr128;  devices configuration : atmega128/CAN
// 连接方式    :串口0连接 9600   1 -- 8 -- 1 没有校验位
// 错误现象  : 打印乱码  
//  2011.9.24---0:11         

#include <iom128v.h>
#include <macros.h>
#define  uchar unsigned char
#define  uint  unsigned int
#define  F_CPU 8000000

void Print_Byte(uchar data)

   //while (BUSY());
//   while(!(UCSR0A&(1<<UDRE0))) ;
//   while(PINF&(BIT(0)));  //忙线去掉
   UDR0=data;
   while(!(UCSR0A&(1<<TXC0)));
   UCSR0A|=BIT(TXC0);
}
//定义发送一个数组的数据到串口的函数
void Print_Array(array,n)
uchar array[]; 符串送到串口的函数
void Print_String(uchar *str){
while(*str){
  Print_Byte(*str++);
  }
}
void uart_init()
{
   UCSR0B=0x00;    //00
   UCSR0A=0x00;       //控制寄存器清零
   UCSR0C =0x06;                                                           //选择UCSRC,异步模式,禁止                                                                        //   校验,1位停止位,8位数据位
   UBRR0L=(F_CPU/16/(9600+1))%256;
   UBRR0H=(F_CPU/16/(9600+1))/256;
//   UCSR0B=0x9B;
   UCSR0B=0x0B;   //8位收发
//   SEI();                                                   //接收、发送使能,接收中断使能
   //SREG=BIT(7);                 //全局中断开放
   DDRE|=0x02;                 //配置TX为输出(很重要)
   PORTE = 0xFF;
}
void delay_ms(uint MS)   
{
uint i,j;
for( i=0;i<MS;i++)
for(j=0;j<1141;j++);                                                         //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
}
main (void)
{
  DDRF = 0;
  PORTF = 0xff;
  uart_init();
 
  //init printer
  Print_Byte(0x1B);    
  Print_Byte(0x40);
  delay_ms(3);
   
  {
  Print_Byte(0x1c);   //1c
  Print_Byte(0x26);   //26
  Print_Byte(0x00);
  Print_String("打印吧");
  Print_Byte(13);
  }
   while(1);
 
}

 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条