ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:545.64KB ,
资源ID:789884      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-789884.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于VC++的温度检测系统设计文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于VC++的温度检测系统设计文档格式.docx

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