AVR单片机发送数据,通过usb-232数据线连接电脑,用串口助手接收到的数据是乱码,求大神解答,代码如下:
void Part_Init()
{
PORTD = 0xff; //全设置高电平
DDRD = 0x02; //PD1为TXD设置为输出,PD0为RXD设置为输入
}
void Usart_Init()
{
UCSRA=0x00; //串口控制器A清零
UCSRB=0x00; //串口控制器B清零
UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UPM1)|(1<<UCSZ0); //选择USCRC,异步操作,偶检验,1个停止位,八位数据
//UCSRC|=BIT(URSEL)|BIT(UCSZ1)|BIT(UCSZ0); //选择USCRC,异步操作,禁止检验危,1个停止位,八位数据
UBRRH = 0x00;
UBRRL = 0x2F;
//UBRR=47; //从手册中直接取得赋值,9600kbps
UCSRB|=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE); //发送使能,接收使能,接收完毕中断使能
SREG|=0x80; //全局中断使能
}
void Usart_SendChar(unsigned char ucSendData)
{
while (!(UCSRA & (1<<UDRE))); //数据寄存器UDR是否为空?
UDR = ucSendData; //UDR赋值
while(!(UCSRA&((1<<TXC)))); //数据是否已经发送完毕?
UCSRA|=(1<<TXC); //清除发送完毕标志位
}
|