基于PROTEUS的DS18B20测温仿真与VB上位机显示

上传人:无*** 文档编号:77985637 上传时间:2022-04-21 格式:DOC 页数:19 大小:383.50KB
收藏 版权申诉 举报 下载
基于PROTEUS的DS18B20测温仿真与VB上位机显示_第1页
第1页 / 共19页
基于PROTEUS的DS18B20测温仿真与VB上位机显示_第2页
第2页 / 共19页
基于PROTEUS的DS18B20测温仿真与VB上位机显示_第3页
第3页 / 共19页
资源描述:

《基于PROTEUS的DS18B20测温仿真与VB上位机显示》由会员分享,可在线阅读,更多相关《基于PROTEUS的DS18B20测温仿真与VB上位机显示(19页珍藏版)》请在装配图网上搜索。

1、 淮南师范学院电气信息工程学院电子信息科学与技术专业Proteus课程论文 成绩课程论文 题 目:基于PROTEUS的DS18B20测温仿真 与VB上位机显示 学生姓名: 方 瑞 学生学号: 1008050110 系 别: 电气信息工程学院 专 业: 电子信息科学与技术 年 级: 2010级 任课教师: 沈晓波 电气信息工程学院制2012年12月基于PROTEUS的DS18B20测温仿真与VB上位机显示学生:指导教师:电气信息工程学院电子信息科学与技术专业摘要:本设计是基于在PROTEUS平台上仿真51单片机与DS18B20的测温,并将结果反馈到用VB开发的上位机界面,进行实时温控。关键词:P

2、ROTEUS、DS18B20、VB、上位机目录1、原理图绘制42、程序设计63、VB上位机设计64、虚拟串口设置85、设计结果95.1串口选择错误95.2 开始工作95.3 上下限值监控96、课程设计总结107、附录A11A.1参考文献11A.2 单片机程序12A.3 VB上位机程序18A.4 基于PROTEUS的DS18B20测温仿真原理图20A.5 基于PROTEUS的DS18B20测温仿真PCB图21A.6 基于PROTEUS的DS18B20测温仿真3D图22 1、 原理图绘制 PROTEUS软件是英国Lab Center Electronics公司开发的EDA工具软件。PROTEUS软

3、件由ISIS(Intelligent Schematic Input System)和ARES(Advanced Routing and Editing Software)两个软件构成,其中ISIS是一款智能原理图输入系统软件,可作为电子系统仿真平台;ARES是一款高级布线编辑软件,用于制作PCB。本设计选用51系列AT89C52单片机和Dallas公司生产的DS18B20智能数字温度传感器。AT89C52是高性能8位单片机,其主要特点如下:8位CPU。片内带振荡器,频率范围1.2MHz12MHz。片内带128B的数据程序存储器。 32可编程I/O线 三个16位定时器/计数器 6个中断源 一个

4、全双工的串行I/O接口,可多机通信。 可编程串行通道。 低功耗的闲置和掉电模式。 片内振荡器和时钟电路。DS18B20是Dallas公司开发的一款智能数字温度传感器,其主要特点如下:使用电压范围宽,电压范围3.05.5V。独特的单线接口方式,可实现组网多点测温。测量温度范围-55 +125,在-10+85时精度为0.5。可编程分辨率为912位,对应的可分辨温度分别为0.5,0.25,0.125和0.0625,可实现高精度测温。在9位分辨率时,最多在93.75ms内把温度转换为数字;12位分辨率时,最多在750ms内把温度值转换为数字,显然速度很快。测量结果直接输出数字温度信号,以“一线总线”串

5、行传送给CPU,同时可传送CRC校验码,具有较强的抗干扰纠错能力。负压特性。电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。以下为电路原理图: 图1 电路原理图在PROTEUS中选择COMPIM元件可以很方便地实现单片机串口与PC机的串口通信,建立上位机控制。 COMPIM的设置如下图图2 COMPIM设置2、 程序设计KEIL C51是当前使用最广泛的基于80C51内核的软件开发平台之一,由德国Keil Software公司推出。uVision4是Keil Software公司推出的关于51系列单片机的开发工具。uVision4集成开发环境IDE是一个基于Windows的软件开发平台,

6、集编辑、编译、仿真与一体,支持汇编语言和C语言的程序设计。 本设计的软件流程图如下:图3 AT89C52工作流程图 在这里须注意的是串口波特率的设置,这里设置的晶振为11.0592MHz,串口的波特率是由定时器T1产生的,按照波特率计算公式,当波特率为9600,SMOD=0时,TH1和TH0的初值都设为0xFD;具体程序见附录A.2。3、VB上位机设计Microsoft Visual Basic6.0是一个功能强大的软件开发工具。使用它,可方便的在WINDOWS系统下开发应用软件。VB6是Microsoft公司最新推出的一个可视化的面向对象的应用开发环境,继承了Basic语言的简单、易学的优点

7、,很快成了一种易学实用的WINDOWS平台上面向对象开发的应用工具。上位机程序设计核心问题是对MSComm串行通信控件的控制,在这里需了解MSComm的一些属性设置。Comport:设置和返回通信串口号Setting:设置和返回波特率以及字节的奇偶位、数据位和停止位。Port Open:设置和返回通信端口状态InBufferSize:接收缓存区分配的内存OutBufferSize:发送缓存区分配的内存InputMode:接收的信息的模式InBufferCount:接收的字节总数 VB程序流程图图4 VB上位机工作流程图图5 VB上位机工作界面具体程序见附录A.3。4、虚拟串口的设置虚拟串口软件

8、很多,在此以Virtual Serial Port Driver为本实验的虚拟串口软件。图6 VSPD虚拟串口工作界面VSPD建立两个虚拟串口的连接后,就可以进行两个串口之间的通信。5、 设计结果5.1串口选择错误当串口选择错误,打开工作时,VB上位机软件能够弹出一对话框告知串口错误。图7 VB上位机串口错误5.2开始工作 当串口建立连接后,打开工作,工作状态由红变绿,就能够实时显示温度,并能够实时监控上下限的值是否超出。图8 VB上位机开始工作状态 5.3上下限值监控开始工作后,VB上位机并实时监控温度,当超过上下值的范围,并会弹出警告窗口。图9 超上限值警告图10 低下限值警告6、 课程设

9、计总结通过本次设计,将PROTEUS的仿真从头到尾做了一遍,掌握了PROTEUS基本使用方法,再通过学习VB语言,编写上位机软件,使得跟好的完成了对这次的基于PROTEUS的51单片机串口通信仿真设计,完成了理论与实践的结合。当然在本次设计中也有不足之处,首先,由于时间仓促,不能系统的学习VB语言,使得设计的上位机存在不稳定运行问题,第二,本来想做个温度波形图,可惜精力有限,不能完成,希望在以后的学习中再去慢慢完善。总体来说,通过这次学习,掌握了单片机串口通信的基本原理和使用方法,为以后的应用,积累了一定的经验。7、附录AA.1参考文献1陈忠平.基于Proteus的51系列单片机设计与仿真M.

10、2012.北京:电子工业出版社2周荣富,曾 技.电子线路CADM. 2011.北京:北京大学出版社3谢维成,杨加国.单片机原理与应用及C51程序设计M.2009.北京:清华出版社4郭天祥.新概念51单片机C语言教程M.2009.北京:电子工业出版社5范逸之,陈立元.Visual Basic与RS-232串行通信控制M.2002.北京:清华大学出版社A.2 单片机程序/* DS18B20测量温度*/#include #include #include #define uchar unsigned char #define uint unsigned intuchar temp_h,temp_l;

11、uchar buff5;uchar list_flag = 0;sbit DQ = P32; void delay(unsigned int i) while(i-); /初始化函数bit int_DS18B20(void)unsigned char x=0; DQ = 1; /DQ复位 delay(8); /延时片刻 DQ = 0; /单片机将DQ拉低 delay(90); /精确延时大于480us DQ = 1; /拉高总线 delay(8); x = DQ; /延时片刻后,如果x=0则初始化成功,x=1则初始化失败 delay(100); DQ = 1;return x;/读一个字节Re

12、ad(void)unsigned char i = 0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat = 1; DQ = 1; / 给脉冲信号 _nop_(); _nop_(); if(DQ) dat |= 0x80; delay(4); DQ = 1; return(dat);/写一个字节void Write(unsigned char dat) unsigned char i = 0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat = 1;

13、delay(4);/启动转换void int_(void) if(int_DS18B20()=1)/如果为一重新初始化 list_flag = 1; else list_flag = 0;Write(0xCC); / 跳过读序号列号的操作 Write(0x44); / 启动温度转换int_DS18B20();Write(0xCC); /跳过读序号列号的操作 Write(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 temp_l=Read(); /读取温度值低位 temp_h=Read(); /读取温度值高位 void init_com(void)TMOD = 0x20;

14、PCON = 0x00;SCON = 0x50;TH1 = 0xfd;/波特率9600TL1 = 0xfd;TI = 0;TR1 = 1;EA = 1;ES = 1;void comm(char *parr)doSBUF = *parr+;/发送数据while(!TI); /等待发送完成标志为一TI = 0;/标志请0while(*parr);/保持循环直到字符为0void Tem_trans() /温度处理 小于零显示 大于零显示 重点uchar ng = 0;if(temp_h&0xf8)=0xf8)temp_h = temp_h;temp_l = temp_l + 1;if(temp_l

15、 = 0x00)temp_h+;ng = 1;buff0 = temp_l&0x0f;buff4 = buff0+0x30;/小数位buff0 = (temp_l&0xf0)4)|(temp_h&0x0f)4);buff1 = buff0/10+0x30;/十位buff3 = buff0%10;buff2 = buff3+0x30;/个位buff3 = .;/小数点if(ng=1)buff0 = -; /正负位else buff0 = +; void main(void) init_com(); while(1) int_(); Tem_trans();if(list_flag=0) comm

16、(buff); delay(5000); A.3 VB上位机程序Private max As SinglePrivate min As SingleDim rec As StringPrivate Sub Check1_Click()On Error GoTo Handle_ErrorIf Check1.Value = 1 Then MSComm1.CommPort = Combo1.ListIndex + 1 设置串口 MSComm1.PortOpen = True Shape1.FillColor = vbGreen Check1.Caption = 结束工作End IfIf Check1

17、.Value = 0 Then Shape1.FillColor = vbRed Check1.Caption = 开始工作 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False 关闭串口 End If End IfHandle_Error: If Err.Number = comPortInvalid Then Check1.Value = 0 Shape1.FillColor = vbRed Check1.Caption = 开始工作 MsgBox (ERROR:串口错误!) End IfEnd SubPrivate Sub Co

18、mmand1_Click(Index As Integer)Select Case Index Case 0 max = Text1(1).Text min = Text1(2).Text Case 1 End End SelectEnd SubPrivate Sub Form_Load()max = 35#min = 20#rec = 35#For i = 1 To 16Combo1.AddItem COM & iNext iCombo1.ListIndex = 0Label2.Caption = Now()MSComm1.Settings = 9600,N,8,1MSComm1.InBuf

19、ferSize = 5MSComm1.RThreshold = 5MSComm1.SThreshold = 1MSComm1.InputLen = 0MSComm1.InputMode = comInputModeTextMSComm1.InBufferCount = 0End SubPrivate Sub MSComm1_OnComm() rec = MSComm1.Input Label1.Caption = rec MSComm1.InBufferCount = 0End SubPrivate Sub Timer1_Timer()Label2.Caption = Format(Now(), yyyy年mm月dd日 hh:mm:ss)End SubPrivate Sub Timer2_Timer()On Error GoTo Handle_Error2If Check1.Value = 1 Then If max Label1.Caption Then MsgBox (WARING:低下限值!) End If End IfHandle_Error2:End Sub第 19 页

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!