如何通过单片机串口发送一个汉字

来源:百度知道 编辑:UC知道 时间:2024/07/06 20:56:59
我只能通过串口发送或者接收数字或字母,汉字则不能显示,如何才能发送一个汉字呢,请大家指教,我愿意送上所有的分数
程序如下:
#include <reg51.h>
unsigned char *str="123456789xyz";

//初始化串行口
void csh()
{
SCON=0x40; //设定串口工作方式1
TMOD=0x20; //用定时器1
TH1=0xf4; //波特率为2400
TL1=0xf4;
ET1=0;
TR1=1;
PCON=0x00;//令SMOD=0
EA=0;
ES=0;
}
void send_bite(unsigned char txd) //发送一个字节
{
SBUF=txd;
while(!TI);
TI=0;
}
void send_data() //发送字符串
{ unsigned int i,a;
for(i=0;i<13;i++)
{
send_bite(*str);
str++;
for(a=0;a<30000;a++);
}
}
void main() //主程序
{
unsigned int i,a;
csh();
send_data();
while(1)
{}
}
我这几天上网找过,一般都是发送一个字符的,看了些资料知道应该发两个字节,不过我那个程序是发了一个字节后就会转到字符串的下一个字符去,就相当于转到数组的下个元素,好象没有机会发送两个字节,大家可不可以写个简单的程序让我看下啊,最好仿真通过的,谢谢

我只能通过串口发送或者接收数字或字母,汉字则不能显示,如何才能发送一个汉字呢,
---------------------------------
从程序看,发送汉字是可以的,估计是你的单片机系统不能显示汉字。
能说一下你是怎么显示的吗?

在电脑这边生成汉字的矩阵
然后发送矩阵过去显示
这样子就不用在单片机那里储存汉字的点阵了
winTC有生成汉字点阵的小工具

发送汉字的编码吧,只要2个字节。
汉字的每个字节编码必须大于127.

发汉字就是发两个字节,关键看你的PC端软件会不会译码