锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

单片机通信技术要点

时间:2024-05-27 04:07:11

这几天研究单片机通信,发现一些非常有趣的事情。在与单片机通信时,尽管程序没有任何问题,但是通信始终出现大量错误码,发送与接收的数据对应不上。后来不断实验,查找相关资料,发现一些重要的技术细节要引起重视,经过相应的调整,单片机通信终于顺利完成。先后测试了C12C4052AD单片机与 STC12C5A602S单片机,都成功通信,基本没有发现错误码,接收与发送一切正常。现将要点记下备忘:
1.单片机的晶振。无论是内部晶振还是外部晶振,都能正常通信,关键在于晶振的频率。大神们都说用外部晶振比较稳定,这个因为测试中没发现区别太大,所以不作评论。
2.单片机波特率的计算。这个是关键中的重点。建议使用大神们写的51串口通信计算器这个软件进行计算,比较精确。波特率的大小设置,直接影响了错误码的多少。这个问题没得到足够重视,往往是通信失败的直接原因。
3.串口初始化的设置还比较靠谱,网上资料都可以用。诸如:

TMOD =0x20;//T1工作为方式2
SC =0x50;//方式1:10位异步同通讯,串口允许接收
PCON =0x80;//波特率倍增,SMOD='1'
TH1==0xe6; // 波特率2400
TR1=1;// 启动定时器1
ES=1;
EA=1;//总中断允许

以上设置可以通用,直接复制,粘贴即可使用。TH,TL值用51串口计算器计算取得,尽可能用最小误差的数值。

4.发送数据标准程序
void send_char(unsigned char txd)
// 传送一个字符
{
SBUF = txd;
while(!);
TI=0;
}
5.接收数据的标准程序
void re_char(unsigned char txd)
//接收一个字符
{

while(1)
{
if(RI) // 是否有数据到来
{
tmp = SBUF; // 暂存接收到的数据
P0=tmp; //点亮P0一组灯。
RI = 0; //RI清零
}

}

}

6.补充要点;刷机软件版本选择。STC12C4052AD单片机用STC-IV488版本可以快速刷机;STC12C5A602S只能用STC-ISP 480版本刷机。原因也许只能向宏晶科技官方咨询了。


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章