历史上的今天
返回首页

历史上的今天

今天是:2025年03月01日(星期六)

2018年03月01日 | 基于MAX232的单片机双机通信技术

2018-03-01 来源:eefocus

  单片机间通信的方式通常有并行通信和串行通信两种。并行通信优点是传送的速度快,缺点是占用的数据传输线多,长距离传输成本高。单片机间通信通常采用串行通信方式。本例实现在单片机甲与单片机乙之间传送数据。
  
  通信双方约定发送方为甲机,接收方为乙机。首先甲机向乙机发送一联络数据(0xAA),乙机接收到后响应应答信号(0xDD),然后接收甲机发送的数据。如果乙机接收到的数据不正确,就向甲机发送0xFF,甲收方收到OxFF后重传数据。

 

  在串行通信中,如果两单片机系统之间的距离很短(lm以内),可利用单片机的串口直接相连的方法实现双机通信,连接时注意一方的TXD与另一方的RXD引脚相连接。如下图所示。

单片机双机通信接口框图


  
  如果通信距离较远(30m以内),可利用RS-232C接口延长通信距离,此时必须将单片机的TTL电平与RS-232C标准电平进行转换。这就需要在双方的单片机接口部分增加RS-232C电平转换芯片,常用的此类芯片有MAX232等,系统框图如下图所示。

 

  单片机间双机通信的结构框图如下图所示,系统的硬件主要包括单片机和电平转换芯片。单片机选用89C51,由于单片机的信号为TTL电平(0V~5V),如果利用RS-232标准总线接口进行较远距离的通信,必须把单片机输出的TTL电平转换为RS-232标准电平。运用电平转换芯片MAX232进行单片机双机串行通信的电路如图所示,图中只画出了通信一方的单片机接口电路。

单片机双机串行通信的电路

  整个系统包括单片机最小系统和MAX232电平转换电路。MAX232具有两路收发器,这里只使用了其中的一路。注意另一方的单片机RXD、TXD的连接方式与本图不同,通信双方MAX232的TOUT、RIN应分别与对方的RJN、TOUT相连,注意通信的双方地线也要连接起来。

  下面的程序中,单片机的晶振选用频率为11.0592MHz,串口工作在方式1,通信的波特率为9 600bit/s,发送和接收数据均采用的是查询方式。程序流程图如下图所示。


  主要由以下子程序构成。
  
  ·voidinit():完成串口初始化功能。
  
  ·voidsend0:完成甲机发送数据功能。
  
  ·voidrecv():乙机根据制定的联络信号接收数据的功能。
  
  具体程序如下:

  1.串口初始化子程序voidinit()
  
  串口初始化子程序init()设定串行口工作在方式1,波特率为9600bit/s,程序代码如下:

  2.甲机发送子程序voidsend()
  
  甲机发送子程序send()完成甲机发送数据功能。首先发送联络信号,然后等待乙机响应。
  
  乙机准备好后响应甲机的联络,然后计算校验和并发送数据,等待乙机响应,若乙机响应正确则从子程序中返回,否则再次发送数据并等待乙机响应,程序代码如下:

  3.乙机接收程序voidrecv()
  
  乙机接收程序根据制定的联络信号接收数据。接收到数据后,如果收到的数据不是0×AA,则发送0×FF数据表明未收到联络信号并继续等待。收到联络信号后,接收数据并计算校验和,若校验正确则发送0×00表明数据正确,否则发送0×FF说明数据接收错误。程序代码如下:

  单片机利用串行口发送数据,可以用查询方式发送数据,也可以采用中断方式。而接收数据时一般采用串行口中断的方式接收数据。本例程中发送和接收均采用查询方式。
  
  为保证通信的正常进行,发送方和接收方的数据帧格式、波特率要设置一致,通信双方单片机系统的晶振频率尽量选用一样的。
  
  只知道对方的波特率时,要合理选用晶振,使两个通信设备间的波特率误差小于2.5%。
  
  如我们为得到经常使用的l200bit/s、9600bit/s波特率而采用11.0592MHz的晶振。例如晶振选用11.0592MHz时,若要求通信波特率为9600bit/s,SMOD=0,则根据公式计算得定时器Tl的初值TH1正好等于253;若采用12MHz的晶振,则得到THl=252.74,经取整(253)后计算得到的波特率为10416bit/s,波特率存在着较大的误差。
  
  另外通信的双方还必须遵守一定的通信协议,通信协议是通信的双方的一种预先约定,包括对数据格式、同步方式、传送速度、传送方法、纠错方式等做出的统一规定,通信的双方必须严格遵守通信协议。

推荐阅读

史海拾趣

Glenair公司的发展小趣事
使用万用表等工具检查电路中的关键元件是否损坏或性能下降,如电压比较器、继电器、可控硅等。
台湾稳态公司的发展小趣事

随着企业规模的扩大和影响力的提升,台湾稳态公司开始积极承担社会责任,推动可持续发展。公司注重环保和节能技术的应用,致力于生产环保型电子产品,减少生产过程中的能源消耗和环境污染。同时,稳态公司还积极参与社会公益事业,为社会的发展贡献自己的力量。

这些故事虽然基于假设,但反映了电子行业企业普遍面临的挑战和机遇,以及台湾企业在该行业中的发展特点。如需了解台湾稳态公司的真实发展故事,建议查阅相关新闻报道或访问公司官方网站。

Advanced Optoelectronic Technology Corp公司的发展小趣事

为了进一步提高竞争力,AOTC开始寻求与上下游企业的合作。通过与原材料供应商、生产设备制造商以及销售渠道商建立紧密的合作关系,公司成功实现了产业链的整合,降低了生产成本,提高了生产效率。此外,公司还与其他科技公司开展战略合作,共同研发新产品,拓展新市场。

DART(英国达特)公司的发展小趣事

在快速发展的过程中,DART公司也遇到了不少挑战和危机。例如,某个时期全球电子元器件供应紧张,导致公司面临严重的原材料短缺问题。面对这一挑战,DART公司迅速调整采购策略,积极寻找新的供应商和替代品,并加强与现有供应商的合作和沟通。通过这些措施,公司成功度过了危机,并保持了业务的稳定增长。

C-TON Industries公司的发展小趣事

随着国内市场的饱和,C-TON开始将目光投向国际市场。公司制定了全球化的发展战略,通过设立海外分公司、参加国际展会等方式,积极开拓海外市场。同时,C-TON还加强了与国际同行的交流与合作,学习借鉴他们的先进经验和技术。这些举措使得C-TON的产品逐渐在国际市场上占据了一席之地,公司的业务范围也得到了极大的拓展。

CET Technology公司的发展小趣事

在数字化转型的大背景下,CET Technology积极探索数字孪生技术在园区管理中的应用。公司提供的数字孪生与3D可视化服务,通过创建园区的虚拟实体,模拟、验证、预测和控制园区的运营状态,帮助园区实现智慧化管理、优化服务和提高生产效率。此外,CET的数字孪生服务还能监控园区内人员和车辆的通行情况,提升园区内部的交通效率,为园区的可持续发展提供了有力支持。

问答坊 | AI 解惑

编程

大家是用汇编还是C进行编程 我刚接触到DSP 感觉对DSP的编程无从下手 请高手指点一下…

查看全部问答>

移动电源方案

本帖最后由 jameswangsynnex 于 2015-3-3 20:04 编辑 特点: 1、应用简单,外围元件少。 2、高效率 3、低成本,易生产。 …

查看全部问答>

★NAND Flash ECC校验的实现★ ? 疑问?

nandflash 的ECC校验是怎么实现的? 在写的时候产生ECC校验码, 在读的时候也产生ECC校验码, (硬件,与软件 的实现) ----------------         …

查看全部问答>

推荐一款资料比较多的WiFi无线网卡/蓝牙模块

已在ce5上成功写了usb. iic. spi.键盘驱动. 觉得可以常识着写WiFi无线网卡/蓝牙驱动. 能否推荐一款资料比较多的WiFi无线网卡/蓝牙模块? 如果有开源资料更好.…

查看全部问答>

有没有做机顶盒的兄弟啊?介绍几个好的生产机顶盒的厂家

有没有做机顶盒的兄弟啊?介绍几个好的生产机顶盒的厂家…

查看全部问答>

诚聘RF工程师

诚聘RF工程师: 1.三年以上RF独立研发经验 2.精通高频技术,充分了解CE,FCC等技术认证标准及RF天线理论 3.熟练掌握各种高频仪器,有较多的调试经验,熟练运用PADS等PCB设计软件 4.对射频开发具有浓厚兴趣,做事忠实细致,有较好的团对协作精神 ...…

查看全部问答>

我用的是 nios ii eclipse 怎么找不到系统库的属性啊 紧急求救啊

我用的是 nios ii eclipse ,右击工程文件夹,没有System Library Properties这一项啊?麻烦各位啦 就是找不到系统库属性这一项,因此很多设置都找不到啊 纠结啊…

查看全部问答>

LPC17XX LWIP裸机移植 运行一段时间后 不进以太中断

LPC17XX LWIP裸机移植  开始运行的时候ARP ICMP UDP 开了SNMP 都通 都正常 运行一段时间后就不进以太中断 不知道有没有谁遇见过类似的问题 求指教…

查看全部问答>

关于按键的问题

为什么key1按下之后第一个led不亮,key1 那个键接的是p3.4口 #include sbit d1=P1^0; sbit key1=P3^4; void main() {P3=0xff;         while(1);         {          &n ...…

查看全部问答>

LaunchPad 32.768kHz晶振问题

焊上晶振之后,下载Verify_Cristal的程序,红灯慢慢的闪,应该是成功了。 但是每当我将手指放在上晶振的时候,红灯就狂闪,说明不成功! 还有,如果将晶振的外壳靠在接地的焊盘上,灯就狂闪,也说明不成功,那个焊盘不就是固定晶振用的吗?这样晶 ...…

查看全部问答>