毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

单片机温度监控系统的设计 第11页

更新时间:2009-10-24:  来源:毕业论文
单片机温度监控系统的设计 第11页
pdwWritten, //已写长度操作前应置为0
lpOverlapped) //异步方式
//设置通信事件掩码
DWORD dwMask=EV_RXCHAR;
SetCommMask(m_hFile,dwMask)) //设置通信事件掩码
//等待通信事件的发生
OVERLAPPED os ;
memset( &os, 0, sizeof( OVERLAPPED ) ) ;
os.hEvent=CreateEvent(NULL TRUE FALSE NULL)
if(!WaitCommEvent(m_hFile, &dwEvtMask, &os)) // 重叠操作
if(GetLastError()==ERROR_IO_PENDING)
{
// 无限等待重叠操作结果
GetOverlappedResult(mHandle, &os, &dwTrans, true);
//事件已发生安排读操作
ReadFile(mHandle, //串口句柄
pDataBuff, //存放数据缓种区
iLen, //所读数据的长度
pdwRead, //实际所读长度
lpOverlapped) //异步方式
}
在上例中,我们无限等待通信事件的发生。如果通信事件一直没有发生则系统将不会继续执行。在实际程序设计中我们可以设置一时限,超过此时限通信事件未到则执行相应错误处理此时,只需将GetOverlappedResult函数替换为WaitForSingleObject函数此函数的声明形式如下:
WaitForSingleObject(
HANDLE hEvent, //事件句柄
unsigned long mTimeOuts //超时设置
)
(4) 关闭串口
通信完毕调用CloseHandle() 函数关闭串口例如
CloseHandle(mHandle); //关闭mHandle为打开串口时返回的句柄
6.4 单片机软件设计
我们知道影响数据转输产生错误的因素有:转输线分布参数上下位机间的波特率误差现场干扰等。而针对近程小批量数据的通信,下位机的波特率误差性是影响可靠通信的最主要因素。所以在单片机软件的设计时应重点考虑并设置好波特率。
6.4.1波特率
(1)波特率误差来源分析
①单片机的振荡电路是由晶体及电容C1 和C2 构成。晶振频率主要由晶体的因有频率决定,同时也与电容C1、C2及外界温度有一定的关系。另外,晶体频率的标称值与实际值也不可能完全一致。
②波特率最大允许误差分析
在异步串行通信方式1中单片机以16倍波特率的采样速率对接收数据(RXD)不断采样,一旦检测到由1到0的负跳变,16分频计数器立刻复位,使之满度翻转的时刻恰好与输入位的边沿对准。16分频计数器把每个接收位的时间分为16 份,在中间三位即7 ,8 ,9 ,状态时位检测器对RXD 端的值采样,并以3取2的表决方式确定所接收的数据位。由此可见,当波特率的误差使得在接收某位数据位时,采样点离该位的中点半位间隔时将会对该位采样两次。即:欲使接收的第N位为正确位时,须满足下式成立:
所允许的波特率误差N > 0.54
故当所传输的一帧数据为10 位时,所允许的最大的波特率允许误差为5 %对于其它常用的8位,9位,11位,一帧的串行传输,其最大的波特率允许误差分别为6.25%,5.56%, 和4.5%。
③减小波特率误差的措施
我们知道使用离散度小的晶振是减小波特率误差的关键。如果,晶振的离散度已超过所允许的范围,此时不宜用其标称值,可以采用测量其波特率的方法来得出实际的晶振波特率值。
(2)单片机软件的实现
①设置通信方式和波特率的值例
……………………
……………………
……………………
MOV SCON,#50H 初始化串口设为方式1
MOV TMOD,#20H 利用定时器1为波特率发生器并设为模式2
MOV PCON,#XXH 设置SMOD值
MOV TH1,#XXH 设置定时器初始值
SETB TR1 启动定时器1
…………………………
…………………………
…………………………
②等待接收PC机发来的信号帧并按通信协议作出相应响应。

6.5 通信协议设计结论
6.5.1通信可靠性分析
通信的可靠性主要体现在所使用通信协议的可靠性上,本通信协议的可靠性主要有两点理论基础:
(1)通过判断帧头起始字符来决定一帧的开始,这样就避免了部分数据进入到内部数据处理之中。这个可能性在1/256, 通过停止位的判断可将这个可能性再降低1/256。 另外通过帧类型字节的判断可使之进一步降低。
(2)校验字将整帧信号进行异或校验则使误收的可能很小。如果将此异或校验改为CRC校验则出错的可能性更是微乎其微了。本通信所用协议具有纠错功能,这体现在当PC 发送或接收数据时,当所接收的应答信号出现失误时,将重新发送或接收此帧数据,直至接收到了正确的应答,具体在程序中最多允许连续出错三次,超过后则放弃通信。在实际应用中,应用本通信时传输距离只有几米以内而且环境干扰比较小,从而从外部因素上进一步保证了通信的可靠性。
6.5.2通信速度分析
如果在不考虑错误发生的情况下,PC 机每发送一帧数据时需要附加12 个字节,其中8 个字节用于发送4 个字节用于应答PC 机。每接收一帧数据时,需要附加13 个字节其中5 个字节用于接收8 个字节用于应答。如:按每帧传送32个字节计算的话,其发送和接收的效率为为忽略PC和PIC16F877A单片机的处理时间计算。发送数据速率、接收数据速率计算公式如下:
发送数据速率:9600*32/44=6981bit/s
接收数据速率:9600*32/45=6826bit/s
这是理论上的速率,实际中还应包含PC和PIC16F877A单片机的处理信号帧,等待信号帧的时间。在本通信协议中,不会出现某信号帧已到达但PC或PIC16F877A单片机还未开始准备接收的现象。在实际应用中,因具体应用环境不同PC和PIC16F877A单片机处理信号帧的时间会有不同,所以具体速率值依具体应用而变化。

 << 上一页  [11] [12] [13] 下一页

单片机温度监控系统的设计 第11页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。