相关服务

  • 《现代电子技术》2006年第21期摘录:2(306年第21期总第236

如发现有乱码,请点击下面链接浏览原文
正文摘录:

2(306年第21期总第236表1Rs232(:接口电气特性驱动器输出电平c。~,t0,::;i:;;:了不带负栽时的驱动嚣输出电平一25~+25V驱动器时的输出阻抗>300n输出短路电流<0.5A驱动器转换速率<30V/ps接收器输入阻抗3~7kn接收器输入电压的允许范围一25~+25V输入开路时接收器的输出逻辑1输入经300Q接地时接收器的输出逻辑1+3V输入时接收器的输出逻辑O一3V输入时接收器的输出逻辑1最大负载电容21500pF表2Rs232(::与Tn。的逻辑电平比较可见,要使得SP(:E061A与RS232(:正常通信的关键是要解决电平转换问题,本系统采用MAXIM公司的单一+5V供电的MAX232(:电平转换芯片来实现,传输速率为120kb/s。该芯片具有使用简单等优点,仅需外接几个电容即可完成从TTL电平到RS232(:电平的转换,同时也避免了供电电源的复杂性。硬件接线图如图1所示。图1硬件接线图3单片机串行通信程序设计3.1通信协议该系统异步串行通信协议如下:(1)数据帧格式由1位起始位、8位数据位、无奇偶校验位、1位停止位组成。如图2所示。0lD01D1lD2ID3lD41D5lD61D78位数掘图2串行通信采用数据帧格式(2)在系统时钟频率(,0。。)为49.152MHz情况下,通信的波特率设定为9600kb/s,通过设置PuARTBaudScalarLOW(7024H)和PUARTBaudScalarHigh(7025H)单元的值分别为00H和05H来实现。当六。。一49.152MHz,UART波特率计算公式:Baud一(^。。/4)/Scale由此可得出Scale的值,Scale为7024H和7025H单元组成的十进制整数。为了保证数据传输的准确性,上位机串口通信波特率也设定为9.6kb/s。3.2程序设计中的关键问题3.2.1设置数据发送和接收标志(Flag)凌阳16位单片机SP(:E061A的PUARTData(7023H)单元是用于串行通信接收和发送数据的缓存,向该单元写入数据,可以将发送的数据送入缓存器,从该单元读数据,可以从缓存器读出数据字节。但必须注意,PUARTData单元每次只支持读写8位数据,想要发送或接收一个字,需分两次进行,这时需要设置标志(Flag)来判断当前读写字节是高8位还是低8位,当Flag一1时,表示当前字节是高8位,当Flag:O时,表示是低8位,最后通过移位、组合,还原成一个字。3.2.2设置数据发送和接收计数器(Counter)该计数器是作为数据发送和接收完毕后,强行关闭uARTIRQ中断的依据。以单片机接收Pc机数据为例,在PC机发送给单片机的数据当中.第一个字表示将要发送的有用数据个数,单片机接收到第一个字时,将他暂存在一个变量中,然后再接收后面的数据,同时计数器开始计数,当计数值和变量中暂存的数据个数值相等时,表示数据接收完毕,强行关闭中断,防止接收非法数据。3.2.3设置中断控制单元SP(:E061A单片机UART模块的通信功能主要是通过设置PUARTCommandl(7021H)和PUARTC()remand2(7022H)单元激活的。其中设置PUARTcOi3qmandl单元的第6,7位可以激活uARTIRQ中断,并决定中断是由TXRDY或RXRDY信号触发以及由两者共同触发;设置PUARTcommand2单元的第6,7位可以激活uARTTX,Rx引脚功能。需要注意,在进行通信时,必须事先分别将RX(I(:)B7),Tx(IOBlO)设置为输入状态、输出状态,这通过设置B组管脚的属性向量PI()BAttrib、方向向量PIOBDir、数据向量P10BData来实现。通常,在开机初始化部分对PUARTCorI:1iTIandl和PUARTC()mmand2单元进行设置,这样在以后程序运行中,不管有无数据的接收或发送,UART通信中断一直处于打开状态,笔者在实验过程中发现,此情况可能导致接收或发送无用数据。为了防止这种情况发生,本系统仅把PUARTCommand2的设置49

阅读此文(图):   点击此处在线翻阅