904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc

上传人:文库蛋蛋多 文档编号:3931303 上传时间:2023-03-28 格式:DOC 页数:78 大小:795.50KB
返回 下载 相关 举报
904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc_第1页
第1页 / 共78页
904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc_第2页
第2页 / 共78页
904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc_第3页
第3页 / 共78页
904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc_第4页
第4页 / 共78页
904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc》由会员分享,可在线阅读,更多相关《904953410基于VB6.0的温度数据采集系统毕业设计论文(单片机控制).doc(78页珍藏版)》请在三一办公上搜索。

1、设计 题目: 基于VB6.0的数据采集系统设计 系 部: 电子与通信工程系 专 业: 电气工程及其自动化 目 录第一部分 设计说明书一、设计说明书第二部分 外文资料翻译一、外文资料原文二、外文资料翻译第三部分 过程管理资料一、 毕业设计课题任务书二、 本科毕业设计开题报告三、 本科毕业设计中期报告四、 毕业设计指导教师评阅表五、 毕业设计评阅教师评阅表六、 毕业设计答辩评审表基于VB6.0的数据采集系统设计系 (部):电子与通信工程系 专 业:电气工程及其自动化 摘 要温度是一种被广泛应用于生产和生活的重要的物理量。针对与不同的应用领域,生产和研制适当的测温系统是十分必要的。本文设计的是近距离

2、温度检测系统。该系统涵盖了传感器技术,信息处理技术,计算机通信技术等几个方面的技术。此技术主要包括:传感器,模数转换,单片机与PC机接口,串行通讯,VB等部分。整个测温系统以数据采集原理为主要理论依据,将传感器DS18B20所测的温度转换成为电信号,再由单片机对其进行量化编码,转化为十六进制数据,为单片机与微机进行通讯打下了基础。根据串行通讯原理,设计了单片机与PC机的接口电路,建立了单片机与PC机之间的串行通讯协议,并利用VB6.0对测温系统实现了对象化操作将采集到的温度信号编码进行接受和描述,将其直接显示在可视的界面当中。该测温系统具有实时存储功能,便于对信号进行分析和处理。在本设计中,我

3、们为了能实现人机的对话及及时知道系统的运行状况,我们给本系统增加了报警功能。在对实测信号进行分析的过程中发现,实测信号编码与理论上的信号编码基本呈线形关系,这说明了系统具有很高的精确度和稳定性。完成了对每个通道的实测信号编码值与温度的实时曲线的绘制,如果再实现对各个通道建立独立的数据库,即可达到对每个通道的温度标定的目的。关键词:温度,编码,单片机,实时曲线,DS18B20,VB6.0 ABSTRACT Temperature is a very important physical quantity which used in production and life .For the dif

4、ferent applications, it is necessary to produce the proper system of measuring temperature. In this article I will discuss the system of measuring close quarters temperature.This system involves sensor technic, information processing technic, communication technic and so on .The design mainly includ

5、es the sensor part , analog-digital conversion ,the interface between the microcontroller and PC ,serial communication and so on .The main theoretical base is theory of data collection . The temperature signals measured by 18B20 sensors transform to the voltage signals .The single chip transforms th

6、e voltage code to 16M code which is the basic of communication .I design the interface circuit between the single chip and PC .The temperature signals are received and described by VB and then displayed on the screen .All the signals can be Real-time memory in order to analyze them .Form the result

7、the metrical signals and the theoretical signals have the linearity relation .the result indicates that the has high precision and stability We can draw the curve of temperature value and the code and establish the database ,form which we can get the real temperature of the different objects. Keywor

8、ds: temperature ,coding ,microcontroller ,current curve,18B20,vb6.0 目 录摘 要IABSTRACTII第 1章 绪论11.1 AT89C51简介21.2 DS18B20传感器简介5第2章 系统设计92.1功能与设计方案92.1.1功能要求92.1.2设计方案92.2设计中所需要的器件112.3 系统硬件设计122.4系统软件设计132.4.1下位机软件设计132.4.2 上位机软件设计16第3章 程序设计193.1 下位机程序193.2 上位机程序22第4章 结论25参考文献26致 谢27附录 1 下位机程序28附录2 上位机

9、程序34 第 1章 绪论随着科学技术的迅猛发展,电子学的发展也越来越快,带动了大批相关产业的发展,其应用的范围也越来越广泛。如今,计算机的使用领域已经扩展到了各行各业,甚至介入个人家庭。在这种形式下,对于计算机的认识是势在必得的,而且使用微机已经成为了当代人的一种基本技能。所以对于我们来说,仅仅会使用微机是远远不够的,要想适应当今社会的需要,我们就必须能够设计出基于PC技术的新的电子仪器,以满足社会更高层次的需求。近年来,单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机已经渗透到工业,农业,国防,科研及日常生活等各个领域。传统的温度采集的方法不仅费时,而且精度差,满足

10、不了各行业对于温度数据高精度,设备高可靠性的需求。单片机的出现使得温度数据的采集和处理得到了很好的解决。选择适当的单片机和温度传感器及前端处理电路,可以获得较高精度的测量。不但方便快捷,成本低廉,省事省力,而且大幅度提高了测量精度1。本文介绍了一种利用单片机实现温度数据的采集和处理的一种设计方法。其中涉及了传感器,数据采集,单片机数据处理,单片机和PC机通讯VB等一系列相关理论。本文就如何将温度这一连续的物理量转换成模拟的电压信号,再将电压信号通过单片机编码转换成数字信号这一过程,进行了阐述和分析。并且增加了报警电路。同时在通过软件进行温度补偿和数据处理方面,也作为了具体介绍。在硬件电路设计方

11、面,从电路的简单,可靠数字化,低成本等角度出发,设计者采用了硬件滤波软件补偿两方面入手,使得设计达到所需精度要求,具有较高的性能价格比。1.1 AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于

12、将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 图1.1 AT89C51管脚图主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/

13、O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电

14、流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)

15、这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间

16、,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期

17、间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的

18、宽度。芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止2。1.2 DS18B20传感器简介 DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传

19、感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.05.5;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20采用脚PR35封装或8脚SOIC封装,其内部结构框图如图1.2所示。C64 位ROM和单线

20、接口高速缓存存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器Vdd I/O图1.2 DS18B20内部结构图64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图1.3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新

21、。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低5位一直为,是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图1.3 DS18B20字节定义由表1.1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 表1.1

22、 DS18B20温度转换时间表高速暂存的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。表1

23、.2一部分温度对应值表温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100

24、1001 0000FC90HDS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产

25、生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所

26、测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据3。第2章 系统设计2.1功能与设计方案2.1.1功能要求设计一个基于Visual Basic 6.0的数据采集系统。用单片机系统接收温度传感器的温度数据,并在数码管上显示当前温度值,可测温范围55-125摄氏度,精度0.1摄氏度。 使用VB6.0编写上位机程序,接收温

27、度数据并储存在数据库中;接收数据时,要求能同步画出温度变化的曲线;要求系统可查询历史温度信息。基于VB6.0的数据采集系统在设计时主要应该满足如下功能指标:1测量温度,并在数码管上显示当前温度值;2可测温范围55-125摄氏度,精度0.1摄氏度;3每秒给上位机传送一次温度数据;4上位机接收温度数据,并将数据、接收数据时间以及测温批次等信息存储到数据库中;5测温批次可以自动生成也可手动输入;6接收温度数据时,同步画出温度变化的曲线;7可按批次以及测温时间查询温度数据;8将上位机软件打包,生成安装文件。2.1.2设计方案2.1.2.1方案论证方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件

28、利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。方案二 :进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。2.1.2.2总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C51,温度传感

29、器采用DS18B20,用8位LED数码管以串口传送数据实现温度显示并通过串口与上位机PC通讯,把数据传送给上位机,并用VB编写的图形界面把温度的变化曲线显示出来,并通过数据库存储,可查询历史温度记录。单片机LED显 示温 度 传 感 器复位电路时钟振荡蜂鸣器 P C图2.1总体设计框图主控制器单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。显示电路显示电路采用8位共阳极LED数码管,从P0口输出段码,P2口为LED的位选信号。温度传感器采用DS18B20温度传感器,它能直接读出被测温度,并且可

30、根据实际要求通过简单的编程实现912位的数字值读数方式。PC实时显示界面显示实时温度数据变化曲线的界面,采用VB6.0编辑,在程序使用VB6.0的通用串口控件MSCOMM来对发送到串口的数据进行采集处理。上下位机定义好通信协议和波特率。2.2设计中所需要的器件1、 单片机:AT89C51 一块;2、 温度传感器:DS18B20 一块;3、8位共阳极数码管 一块;4、 30PF电容一个,开关一个,蜂鸣器一个;5、 10K电阻 2个、5K的电阻排;6、 串行通信线。2.3 系统硬件设计系统整体硬件电路包括,传感器数据采集电路,温度显示电路,报警电路,单片机主板电路等,如图2.2所示。 图2.2设计

31、原理图温度传感器的数据线接单片机的P3.3口,单片机通过反复读写P3.3口的状态采集数据,不过硬件简单,软件肯定复杂,读写时都有严格的时序要求。显示电路采用8个共阳极的LED显示,显示代码由P0口发送,当使用P0口时需要接上拉电阻,P2口的逻辑状态作位选线信号,达到分时选通的目的,当相应口为高电平时LED才能显示相应代码。实际使用中只用到七个LED,最后2个用来显示摄氏度符号,第二个用来显示温度的正负,当温度为负时,显示“”号,为正时不显示,同样由软件可以实现,当百位为零时,百位不显示,百位十位为零时,百位十位都不显示,这样设计方便观察,更加直观。此外还接有蜂鸣器,当DS18B20不能正常工作

32、时可以达到报警的目的。最后还要实现单片机与上位机通信的功能,所以要连接好串口,以便能向上位机发送或接受数据。按健复位电路是最简单的手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。2.4系统软件设计2.4.1下位机软件设计系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。2.4.1.1主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图2.3所示。 Y发DS18B20复位命令发跳过ROM命令发

33、读取温度命令读取操作,CRC校验9字节完?CRC校验正?确?移入温度暂存器结束NNY初始化调用显示子程序1S到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令的法国风格 法国 NYNY图2.3主程序流程图 图2.4读温度流程图 2.4.1.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图2.4所示。2.4.1.3 计算温度子程序计算温度子程序将RAM中读取值进行转换运算,并进行温度值正负的判定,其程序流程图如图2.5所示。 开始温度零下?温度值取补码置“”标志计算小数位温度值 计算整数位温度

34、值 结束置“+”标志NY发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束图2.5计算温度流程图 图2.6温度转换流程图 2.4.1.4温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成,如图2.6所示。2.4.1.5 显示数据刷新子程序温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图2.7所示。图

35、2.7显示数据刷新流程图 2.4.2 上位机软件设计上位机是应用VB进行编写的,它把下位机传送上来是两字节的十六进制数据进行解码显示出来。当点击采集温度时,上位机向下位机发送采集温度命令字符“1”,当下位机接受到命令时,向上位机发送数据。使用VB6.0编写上位机程序,接收温度数据并储存在数据库中;接收数据时,能同步画出温度变化的曲线,系统可查询历史温度信息。具体在上下位机程序里面体现出来。下图2.8为上位机工作流程图。图2.8上位机工作流程图数据采集实时显示程序设计思路:本程序使用VB6.0的通用串口控件MSComm来对发送到串口的数据进行采集处理。VB6.0的MSComm通信控件提供了一系列

36、标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem)还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工 、事件驱动的、高效实用的通信程序。一般说来,计算机都有一个或多个串行端口,它们依次为Com1、Com2、,这些串口还提供了外部设备与PC进行数据传输和通信的通道。这些串口在CPU和外设之间充当解释器的角色。基本属性与描述如下:属性 描述CommPort 设置或返回通信端口号Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位PortOpen 设置或返回通信端口的状态。也可以打开和关闭端口Inp

37、ut 返回和删除接收缓冲区中的字符Output 将字符串写入发送缓冲区 CommEvent属性为通信事件或错误返回下列值之一,在该控件的对象库中也可以找到这些常量。你只首先要确定一个mscomm控件在system目录下并且该控件已经被windows注册,程序才能正常运行。有数据向串口发过来时,程序可以将数据接收到,接收的数据是字符型的,那么将数据转化为数字型的,再将这个数据的大小作为画图的某一个点的纵坐标,横坐标为数据的序号.将这些点用线连起来就是一个曲线图了,这个就是图形显示基本原理。查看原来的数据的原理也是这样的,不同的地方就是,数据是从文件中来,同样的也是将多个数据分成一个一个的,然后这

38、一个数据的大小就是画图的某一个点的纵坐标,横坐标同样为数据的序号,再将这些点用线连起来就是曲线图。图形能移动的原理,是我们首先改变的只是数据,图形并没有变,但图形的形式是由这些数据来确定的,当数据发生变化后,我们通过刷新显示区来变化的。VB编写的实时显示界面如图2.9所示,点击查询可查询历史温度信息。图2.9实时温度曲线显示及查询图串口的波特率,串口号都采用下拉选择的方式,在使用中可跟据情况选择读串口数据的原理是,只要当有数据向串口发数据来时,计算机就会自动将其数据写到一个特定的缓冲区,我们只要写程序去读那个特定的缓冲区就可以了。此外为了保存和查询历史温度数据还要在VB中设计建立连接到Acce

39、ss数据库的控件,Data控件是Visual Basic 6.0中的一个内置数据控件,可以通过设置Data控件的connect、DatabaseName、RecordSource属性实现对数据库的连接和访问。建立的数据库库文件和VB中创建的工程文件必须放在放在同一目录下5。第3章 程序设计3.1 下位机程序下位机程序的编写主要使用C语言进行编写,可读性要比汇编语言好很多。其中包括DS18B20的测温模块,显示模块和串口通信模块,当上位机向下位机发送读温度指令时,单片机才会将所测得的数据传给上位机。温度采集系统的主程序设计如下:void main(void)uchar receive; init

40、(); while(1) Read_Temperature(); if (flash=0) Disp_Temperature(); else P2 = 0x00; if (RI) RI = 0;receive = SBUF;if (receive = s) send_char(); 主程序为一无限循环,单片机不断从DS18B20的数据口采集数据信号,用flash标志DS18B20是否正常,当flash=1时表示DS18B20不正常,就由软件设置及时关闭LED显示并由蜂鸣器报警。当一帧数据采集完毕即RI接受中断标志位为1,判断下位机是否接受到来自上位机的字符“1”对应的ASC码49时接收到时才开

41、始将采集到的数据发送给上位机进行处理,RI标志位必须由软件清零。在串口通信模块中,baudrate的在程序初始化时已经定义为9600b/s,晶振频率也已设定好。波特率的产生用定时器产生,在设置时选择定时器1,并将它的设为工作方式2,8位的常数自动重新装载的定时器,这种工作方式可以省去用户软件中重装初值的程序,简化定时初值的计算方法,可以相当精确的确定定时时间。计算出定时器的初值之后,在设定串行口的工作方式,在这里令SCON=0X50,即SCON各位中,SM0=0,SM1=1,REN=1,其他控制字为0,选择为工作方式1,8位异步收发。令TCON中的TR1=1,启动定时器,并禁止其他中断。程序设

42、计内容如下所示:void init(void)EA = 1; TMOD = 0x20;TH1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate);TL1=(unsigned char)(256 - (XTAL / (32L * 12L * baudrate); SCON = 0x50;PCON &= 0x00;TR1 = 1;IE = 0x00;此外,在显示模块中,小数位的转化才用了一定的技巧,由于实际显示中只要求显示一位小数,而DS18B20每一位的转化温度为0.0625LSB,当每一位变化时,第一位小数只有16种状态,我们只需一一算出放在一个数组中,通过查表指令即可获取第一位小数的十进制值。由于每一位变化为0.0625LSB,通过移位操作,即可获得一个新的关于温度整数部分的数据,部分设计显示转化程序如下:display4=temp_data0&0x0f;display0=ditabdisplay4; display4=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;其中小数位所查的表为:unsigned cha

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号