1、 in order to implement a machine of distributed control, this is introduced a effective program, realized the implementation of a machine under temperature monitoring. A machine under temperature gathering to through ds18b20, stc89c52 single chip microcomputer temperature data processing and display
2、, and real-time through a serial port sending to the PC. In the upper machine, to use Visual C+ write the corresponding serial interface communication software, thus fulfilling the complete temperature monitoring system design.Keywords: Visual C+; PC; Single chip microcomputer; temperature前 言 随着电子技术
3、和计算机技术的发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。温度是工业生产中主要的被控参数之一,与之相关的跟中温度控制是工业生产过程中经常遇到的过过程控制,有些工艺过程对其温度的控制效果直接影响着产品的质量。温度控制在实际生产中有着广泛的应用,例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中。在这些领域中人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。因而设计一种较为理想的温度控制系统是非常有价值的。 本论文正以上位机与下位机通讯为主要内容,对远程温度控制系统作了较详尽的介绍。在实时检测和自动控制的应用
4、系统中,单个单片机控制作为一个核心部件来使用往往是不够的,还应根据具体硬件结构,以及针对具体应用对象特点,编写对应的上位机软件,加以完善,才能设计出完整的系统。本文设计的一种温度控制系统,用STC89C52单片机作为温控器,选用DS18B20数字温度传感器,可以实现如温度自动控制,设定温度、实时温度显示,温度上下限报警,温度上下限报警值设定,目标温度值设定,自动调零等各种不同的功能。1、设计方案及原理 在设计的过程中,充分考虑了法案的可行性,在通信这一块,由于目前的PC机都淘汰了串口,故采用PL2302芯片进行了USB与RS232的通信协议转换,从而在上位机中模拟了一个串口,经实验证明,其稳定
5、性与通信速率方面都能满足要求。在下位机中,采用了常用的STC89C52单片机,该单片机集成了片内eeprom,可以记录温度数据,且能掉电保存。为了验证通信的准确性,下位机同时把温度数据在LCD上显示出来,本设计的整体框图如图1所示: 图1 温度检测系统整体原理框图2、 上位机设计 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布
6、命令,智能控制单元在接收到正确的命令后作出应答。在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。本设计中我采用了ActiveX控件的方式。串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。在上位机编程中,采用如下步骤完成串口通信的核心
7、框架: (1) 打开并配置串口,双击“打开串口”控件,进入TemperDlg.cpp源程序,在CTemperDlg:OnBtnopen() 函数中加入如下代码:void CTemperDlg:OnBtnopen() / TODO: Add your control notification handler code here if(!m_bOpenPort) /第一次点击,打开串口 if(m_ctrlComm.GetPortOpen() AfxMessageBox(该端口已经被打开或者被占用!); int ComSel; ComSel=(CComboBox *)GetDlgItem(IDC_C
8、OMBO1)-GetCurSel(); m_ctrlComm.SetCommPort(ComSel+1); /串口的初始化 m_ctrlComm.SetInputMode(1); /二进制 m_ctrlComm.SetInBufferSize(1024); m_ctrlComm.SetOutBufferSize(512); m_ctrlComm.SetSettings(9600,n,8,1 /无奇偶校验,1个停止位 if(!m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(TRUE); /MessageBox(NULL,串口初始化成功!,0); e
9、lse该端口已经被打开或者被占用! m_ctrlComm.SetRThreshold(1); m_ctrlComm.SetInputLen(0); m_ctrlComm.GetInput(); EnableSetting(FALSE); m_ctrlIconOpenoff.SetIcon(m_hIconon); (CButton *)GetDlgItem(IDC_BTNOPEN)-SetWindowText(关闭串口 m_bOpenPort=TRUE; else if(m_bOpenPort) /第2次点击,关闭串口 ComSel=(CComboBox *)GetDlgItem(IDC_COM
10、BO1)- m_ctrlComm.SetPortOpen(FALSE); EnableSetting(TRUE); m_ctrlIconOpenoff.SetIcon(m_hIconoff);打开串口 m_bOpenPort=FALSE; (2)读写串口:即温度数据的接收与处理,在void CTemperDlg:OnCommMscomm() 函数中加入代码如下:OnCommMscomm() m_strRXData= ; /每次进入编辑框内容清空等待显示新的数据 VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE
11、rxdata2048; /设置BYTE数组 CString strtemp; static int flag; /识别码数字标志位 if(m_ctrlComm.GetCommEvent()=2)/事件值为2表示接收缓冲区内有字符 /以下你可以根据自己的通信协议加入/处理代码 variant_inp=m_ctrlComm.GetInput();/读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为/ColeSafeArray型变量 len=safearray_inp.GetOneDimSize();/得到有效数据长度 for(k=0;k0x07) /判断负
12、温度 negative_flag=1; TH=TH; /把负数的补码换算成绝对值 TL=TL; /如果TL向TH右进位? TL+; temp=(TH*256+TL)/16; /提取温度整数部分,temp已经扩大了1000 /除16即乘以精度0.0625, temperature0=temp/100; /百位 temperature1=temp%100/10; /分离十位 temperature2=temp%100%10; /分离个位 point=TL&0x0f; /得温度数据小数部分,屏高四位,低四位为小数位 /若point*10000则超出了65535的范围 temperature3=(po
13、int*1000/16)/100; /个分位 temperature4=(point*1000/16)%100/10; /十分位 temperature5=(point*1000/16)%100%10; /百分位 下位机软件编程4 分析与结论通过本次课程设计的软件仿真与在线调试,以及下位机单片机系统的设计。我从中学到了很多知识。通过实践,虽然暴露了我学习的不足之处,但同时也巩固和提高了所学的知识,使我的专业技能得到锻炼和提高。最后终于调试成功,下位机的温度能准确无误的传送到上位机。5 参考文献1 STC Microcontroller Handbook,2007 2 童诗白、华成英 模拟电子技术基础 北京:高等教育出版社3 VC知识库4 谢剑英、贾青 微型计算机控制技术 北京:国防工业出版社5周航慈. 单片机程序设计基础M.北京:航空航天大学出版社,2003.07附录:源代码及实物作品 蔡志威现场总线课设源代码.rar 下载链接:图5 Keil C51 的下位机编程图6 下位机显示温度20.125度图7 上位机Visual C+ 编程图8 调试成功
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2