当前位置:首页 > 单片机 > 单片机
[导读]   51单片机和IBM - PC机是目前我国应用最广的两种微型计算机。作为单片机,51单片机不但功能强,体积小,价格低,而且使用方便,特别市场上提供的多种51单片机开发系统,为开发应用51单片机提供了非常

  51单片机和IBM - PC机是目前我国应用最广的两种微型计算机。作为单片机,51单片机不但功能强,体积小,价格低,而且使用方便,特别市场上提供的多种51单片机开发系统,为开发应用51单片机提供了非常方便的手段。因此,51单片机在许多领域,特别是工业控制和智能仪器领域已得到广泛的应用。事实已证明,51单片机已成为8位微机之首。作为系统机,IBM - PC的优点已众所周知,可以说,IBM - PC微机的出现为微机领域带来了一场革命。在我国,由于汉字操作系统(CCDOS)的引入,使得IBM - PC在各个领域得到迅速的推广使用。
  
  串行通信是计算机进行数据通信的主要方式之一。由于其连线少,成本低,再加上有调制/解调功能,因而特别适合于距离较远,且通信点较多的场合,如各种计算机网络和分布式系统等。RS - 232C是最常用的一种串行通信标准。在IBM - PC微机中,一般都有1~2个标准RS - 232C串行口,简称COM1和COM2。利用这两个串行口,IBM - PC可以与其他数字设备(计算机)进行一般的数据传送,或构成局部网络、多用户系统和分布式控制系统等。
  
  51单片机片内即含有一个全双工的串行口,并具有多机通信功能,可以方便地构成多机控制系统。但是,由于51单片机的串行口并非标准的RS -232C,加上其波特率是采用系统时钟由内部通用定时器产生的,误差大;而其数据处理速度也比系统机低得多。因此当其与IBM - PC微机进行串行数据通信,特别是构成分布式多机控制系统时,将会遇到许多意想不到的技术问题,诸如硬件连接、波特率选择、数据同步以及多机通信控制等。我们根据多年的实践经验,对这些问题提出了一些具体解决办法,供广大同行参考。
  
  一、硬件连接
  
  RS - 232C采用负逻辑。其电平范围通常为:逻辑1=-3~-15 V;逻辑0=+3~+15 V。由于51单片机的串行口是TTL电平,故必须进行电平转换,一般都采用MC1488(输出)和MC1489(输入)来完成。其连接方法如图1- 32所示。图中,MC1488采用土12 V电源,MC1489采用+5 V电源。IBM - PC串行口中的第4脚RTS(请求发送,输出)与第5脚CTS(清除发送,输入),以及第6脚DSR(数据装置准备好,输入)与第20脚DTR(数据终端准备好,输出)分别连接在一起,主要是因为PC机BIOS中的INT14H(串行通信程序)在接收和发送数据时,均要判别CTS和DSR是否有效。如果用户自己编制通信程序,采用判断收/发缓冲区是否满/空的办法来完成数据输入/输出,则可不必短接。


  
  顺便指出,IBM - PC及其兼容机串行口中的电平转换器通常有两种:老式原装机和长城0520机,采用7515075154。而一般的兼容机均用75188( MC1488)/75189 (MC1489)。1489中的每个接收门均有一个阈值电平控制端。当该脚开路或接一电容C至地时,其阈值电平VT =1. 1~1. 25 V,即当Vi≤1.1 V时,V。=1;V1≥1. 25 V时,V0=0。不难看出,这种电平与TTL电平具有兼容性。因此,图1- 32中1488和1489均可用普通TTL反相器代换,从而省去了土12 V电源。但要注意的是,替换1488的反相器最好用OC门,以便扩大电平范围和增加驱动电流;而替换1489的反相器输入端应加双向二极管电平箝位。此外,这种接法传送距离不宜太长,一般应在3m以内(标准RS - 232C电平传送距离可达15 m以上),距离过长,因两端地电位不一致以及噪声干扰会导致电平范围出错。
  
  上述做法虽然省去了士12 V电源,但只适合于使用MC1488/1489的PC机,且传送距离近。为了与标准RS - 232C电平兼容,又不用±12 V电源,可采用图1- 33所示的准RS -232C电平转换电路。图中虚线框内电路产生-7.0~-9.0 V的负电压。其工作原理是,由CMOS反相器F1和F2构成的多谐振荡器产生f=0.7 MHz的方波,经F3和F4双门驱动后,高电平时对Cl充电,低电平时,Cl反过来又对C2充电,从而在C2上产生一定的负电压。这里采用CMOS反相器,主要是为了降低其自身的功耗以及提高高电平电压。值得一提的是,如果8031的ALE脚负载不重,亦可直接利用它作为时钟源(1 MHz),这时由Fi和F2构成的多谐振荡器就可省去了;不过C1和C2要适当加大些。

  产生负电源还有一种既简单,又实用的方法,如图1- 34所示。如果将RTS引出,亦可产生正电压而代替图1- 33中的+5 V,这样可进一步扩大电平范
围。但要注意的是,图1- 34中正负电压是从信号中提取的,其驱动能力差,因此不宜带过重的负载。
  
  从图1- 33中可以看出,这种电平转换电路省去了±12 V电源,而且仅用2只廉价的三极管取代了较贵的1488/1489,因而大大降低了接口电路的成本,是一种非常实用的方法,特别是对于像前端控制机、单片机开发系统等提供土12 V电源有困难的系统。

二、波特率的选择
  
  波特率是串行通信中的一个关键参数。通信双方波特率的一致性直接影响数据传输的正确性。当误差太大时,甚至无法进行正常的传输。通常对于11位的串行帧(1位起始位+8位数据位+1位标志位+1位停止位),所允许的最大波特率误差应不超过4.5%。
  
  RS - 232C通信标准中,标称波特率有:50,110,150,300,600,1 200,2 400,4 800,9 600及19 200等。其中以1 200~9 600最为常用。IBM - PC的串行通信控制器采用的是In-te18250.其波特率是采用1.843 2 MHz专用时钟,由16位的除法器产生的,可以精确地定出各种标称波特率。而51单片机的波特率是采用系统时钟由定时器T,产生的。由于系统时钟一般为6.0 MHz或12.O MHz,有效位数少,而T.又是用的8位自动装入定时方式,因此,很难精确地定出各种标称波特率。当两台51单片机进行串行通信时,只要两机的系统时钟和定  时常数一致,就能保证数据正确传输。这时的波特率只是反映传送的快慢,而不是非要达到多少精度。因为两机的波特率即使有误差,也只是系统时钟(晶体)上的误差。这种误差通常是很小的,可忽略不计;但当51单片机与IBM - PC进行串行通信时,这种误差就大了。以4800波特为例:
  
  对于PC机,除法器控制常数为:


  
无误差。式中,B为波特率。
  
  对于51单片机,当系统时钟fosc=6 MHz时,定时常数为:


  
  因n必须为整数,四舍五入后n=253(FDH);反过来,因取整得出的实际波特率为:
  
  波特率误差:


  
  比所允许的误差大,当然数据也就无法正确传输了。同理,不难证明,在1200-9600的标称波特率范围内,只有1 200是唯一可用的,其n=243(F3H),x-96(0060H)。显然,对于那些想用高波特率传送数据的用户来说,这无形之中提出了一个难题。那么是否有办法解决这一难题呢?办法是有的,只是不能局限于几个标称波特率上。其算法如下:
  
  ①假定51单片机上的一个定时常数n,一般n取值为F4H~FEH(波特率为1200~9600);


  
  大n值重复上述①~④步求出下一个可用波特率。
  
  根据上述算法,不难求出1 200~9 600的所有可用波特率(假定fosc=6.0 MHz),如表1- 16所列。注意,如果使用表1- 16中的非标称波特率来进行通信,那么PC机程序就不能调用INT14H的功能0来初始化串行口波特率了,而只能采用下述子程序(以COMi为例),即直接往除法器送控制常数。

三、数据同步
  
  串行通信分同步和异步两种方式。尽管51单片机的串行口既可进行同步通信(方式0),又可进行异步通信(方式1~3),但IBM - PC机的串行口只有异步方式。在异步串行通信中,波特率的一致性是数据位同步的保证,而帧同步只能靠DSR/DTR和RTS/CTS等异步通信控制信号了。遗憾的是,51单片机串行口没有这些控制信号。因此,当51单片机与IBM - PC进行串行通信时,虽然波特率选择一致,能保证单个字节传输正确,但无法保证大块数据传输正确。例如,当PC机往单片机每次单独传送一字节时,51单片机都能正确接收,但连续传送一批数据时,由于单片机比PC机的指令处理速度低,PC机发送一字节后,单片机可能还没取走,PC机就发出下一字节了。这样就会导致大量数据被丢失。由此可见,在PC机与51单片机的串行通信中,数据帧(1帧-10或11位)同步也是一关键问题,下面介绍两种同步方法。
  
  1.硬件方法
  
  在图1- 32的基础上,借助于8031 P。口的其他位来模拟各异步通信控制信号。其连接方法如图1- 35所示。这样利用RTS/CTS和DSR/DTR就可方便地完成异步双向串行数据传输了。如果PC机程序不是通过调用INT14H,而是通过自己设计的一个子程序来完成收/发数据的,那么只要使用两组信号中任意一组,即可完成异步传输,这样又可省去两根连线。
  
  通过8031外部扩展一个异步通信控制器8251,也是一种行之有效的方法,只是那样做以后,硬件成本提高,软件控制也变得复杂了。

  2.软件方法
  
  一种很容易想到的软件方法就是“延时法”。例如,当PC机要往单片机发送一批数据时,每发一个字节,就延时一段时间,以便单片机能及时将刚收到的字节取走并处理完。这种做法的困难在于延时常数不好确定。一种改进方法就是,一方面发送方采取一定的延时,另一方面在发送一组(可以是一字节,也以可是若干字节)数据后,接收方应回答一个数据信号(不是控制信号!)。该信号既可表示接收到的数据正确与否,又可起同步作用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek隆重推出全新一代32-bit Arm® Cortex®-M0+ 5V CAN MCU - HT32F53231/HT32F53241/HT32F53242/HT32F53252。这一系列单片机带有来自Bosc...

关键字: MCU 工业自动化 单片机

Holtek精益求精,宣布推出全新5V宽电压Arm® Cortex®-M0+ 32-bit MCU系列HT32F50431/HT32F50441/HT32F50442/HT32F50452。此系列MCU经多方位升级能满...

关键字: 单片机 智能家居 工业控制

泰克实时示波器支持TekExpressLVDS自动测量软件,涵盖LVDS时钟和数据的30多个测量项目,一键完成一致性测量。

关键字: 通信 示波器 测试测量

单片机小精灵是一款针对单片机开发者的辅助工具,它集成了代码编辑、编译、调试等多项功能,旨在帮助开发者更加高效地进行单片机项目的开发。本文将详细介绍单片机小精灵的使用方法,帮助读者快速掌握这款工具,提高开发效率。

关键字: 单片机 代码编辑 辅助工具

单片机和PLC将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对二者的相关情况以及信息有所认识和了解,详细内容如下。

关键字: PLC 单片机

在这篇文章中,小编将对单片机的相关内容和情况加以介绍以帮助大家增进对单片机的了解程度,和小编一起来阅读以下内容吧。

关键字: 单片机 芯片 集成电路

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 控制器

业内消息,近日IBM要求其员工在新一轮全球裁员中自愿离职,其中很大一部分裁员发生在人力资源(HR)等部门。报道称,裁员的原因是出于重组公司的计划,而不仅仅是基于财务压力。IBM公司委婉地将其为“资源行动”而不是裁员。

关键字: IBM 裁员

2024年2月26日,国际通信行业盛会MWC 24于西班牙巴塞罗那召开,全球通信及其相关供应链的顶尖企业荟聚一堂,展示移动通信领域的前沿研究成果,与国际行业同仁展开深入技术交流。三安集成作为射频前端整合解决方案服务提供商...

关键字: 三安集成 射频 通信

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32
关闭
关闭