8路温度采集系统
- 格式:doc
- 大小:462.00 KB
- 文档页数:21
具有RS485通信功能的8路温度检测仪软件设计毕业设计摘要温度是工业生产和自动控制中最常见的工艺参数之一,生产过程需要对温度进行检测和控制。
为了满足对温度采集和测量要求,实现对各个支路温度的检测,本系统就是采用了AT89S52为主控的8路温度检测的系统。
该系统可以实现多个点的温度检测和数值显示并且具有RS-485通信功能。
该系统包括的模块主要有温度的采集,单片机的控制,AD转换,温度值的显示,RS-485通信。
它主要使用的是热敏电阻Pt100温度传感器实现温度检测,并通过AD转换对采集到的数值进行转换,随后将温度显示在液晶屏上,并对温度设置上下阈值来实现温度报警功能。
论文首先简单介绍了该系统的基本原理及整体结构,接着分硬件、软件两部分对整个系统进行阐述,其中软件部分详细描述。
最后是系统的调试与分析,对系统的功能进行了验证。
关键词:AT89S52, RS-485,AD转换, PT100温度传感器ABSTRACTTemperature is one of the most common parameters in industrial production and automatic control of technological, there is the need of the detection and control in the productive process. In order to meet the requirement of temperature acquisition and measurement to detect eight-channel`s temperature, so we will design a simply temperature detection system which focus on the AT89S52.This system can detect the temperature, display the values of number with RS-485 communication function. This system includes the collection of temperature, the control of the single chip microcomputer, AD conversion, display the temperature value and RS-485 communication. It detect temperature and transfer the temperature which is mainly use a PT100 temperature sensor. Then display the temperature on the Liquid Crystal Display. And set up the top and the bottom temperature value. If the temperature doesn`t reach the range of the top and bottom ,the system will give an alarm.This paper first introduces the basic principle and the massive structure of the system. Then it is divided into two parts to the whole system hard ware and software are described, the software part will give a detail description. Finally there is a need to debug and analyze the system to testify the system.KEY WORDS:AT89S52, RS-485 communication, AD conversion,Pt100 temperature sensor目录前言 (1)第1章绪论 (3)1.1基本原理 (3)1.1.1传感器部分 (3)1.1.2 主控制部分 (4)1.1.3 AD转换模块 (4)1.1.3.1 ADC0809简介 (4)1.1.3.2 ADC0809原理 (5)1.1.4 485通信模块 (6)1.2系统方案 (6)1.2.1系统的整体结构 (6)1.2.2 软件介绍 (7)1.3 章节安排 (8)第2章硬件设计 (9)2.1 总体设计 (9)2.2 系统主要器件的介绍 (10)2.2.1 单片机AT89S52 (10)2.2.2 A/D转换芯片 (11)2.2.3 温度传感器 (12)2.2.4 显示LCD 1602 (12)2.2.5 MAX485芯片 (12)2.3 总体电路图 (13)第3章软件设计 (15)3.1 主程序的设计 (15)3.2 AD转换子程序设计 (17)3.3 LCD温度显示程序设计 (19)3.4 报警子程序设计 (22)3.5 按键设置程序设计 (22)3.6 RS-485通信模块程序设计 (24)第4章调试与仿真 (26)4.1 软件仿真 (26)4.1.1 建立程序文件 (26)4.1.2 加载目标代码文件 (29)4.1.3 进行调试与仿真 (29)4.2 硬件调试 (31)4.3 产生的问题与分析 (33)第5章结论与展望 (34)5.1 结论 (34)5.2 展望 (34)参考文献 (35)附录系统程序 (38)前言在人类的生产生活之中,温度扮演着极其重要的角色,温度对工业的发展有着及其重要的影响,因此传感器也有着飞速的发展,来适应这种对温度的检测要求。
DWK8H温控模块说明书版本:V3.001.1.产品特点DWK8H温度控制模块集成了8路温度采集、12路晶体管开关量输出(8路控温输出,4路自由输出)。
具有PID,自整定,手动输出,上位机控制等多种控制方式,能方便灵活的组成各种温控系统。
该产品可用于各种需要温度控制的场合,特别适合于与PLC,触摸屏组成一体化控制系统或与计算机组成分布式控制系统。
DWK8H温控模块连接八路热电偶温度传感器,开关量输出口以PWM方式直接驱动继电器,通过继电器接通或断开加热器,实现控温。
8个控温输出除用于控温外,还可以作为自由输出点由上位机控制,其余4路也可以由上位机单独控制。
WK8模块通过RS-485总线接口和主设备相连,主设备可以是计算机和PLC等控制器,也可以是通用人机界面设备(例如触摸屏,文本显示器)。
DWK8H温控模块支持MODBUS-RTU 通讯协议。
本产品的特点如下:1、1、采用32位处理器,运算能力强大,控制算法先进。
2、2、采用16位Σ-△ AD,采样精度高,并能有效抑制工频干扰。
3、3、具有多种控制方法,包括:PID控制、手动控制、上位机控制。
具有PID自整定功能。
4、4、使用隔离DC-DC变换器,隔离热电偶输入和开关量输出接口,抗干扰能力强。
3、3、模块内置测温元件,软件完成热电偶冷端温度补偿。
4、4、热电偶输入加有完善的保护电路。
5、5、电源监视电路和看门狗电路,保证恶劣环境下可靠运行。
2.2.技术指标1、传感器:K,J,E,N,R,S,T型热电偶2、路数:8路3、分辨率:0.1℃4、电路精度:±0.2℃5、冷端补偿误差: <±2℃6、6、50Hz与60Hz工频干扰抑制:CMR>120dB NMR>80dB7、7、热电偶输入过压保护:±24V8、开关量输出:12路集电极开路输出,每路最大电流200mA9、通讯接口:RS485,波特率可选1200-115200,通信地址可选 1-5910、供电电源:24V11、功耗:< 3W12、环境温度: 0℃~60℃13、相对湿度:< 85%无凝结3.外型尺寸与安装图1为模块底部外型装配图,外型尺寸为145×90×40(单位mm),模块装配在工业标准导轨上。
KD AA: 全隔离信号(0.1秒采样)C: 通用隔离输入E: 4-20mA专用输入G: 单热电偶全隔离输入H: 单热电偶非隔离输入J: 隔离输入支持 10A电流输入K: 隔离输入(独立馈电接线)M: 标准信号(独立馈电接线)U: 单热电偶全隔离输入(热电偶专用插头)7-24V 6通道工作电源最大输入7-24V 12通道7-24V7-24V16通道16通道7-24V7-24V16通道6通道7-24V7-24V7-24V8通道8通道8通道RS485输出接口RS485RS485RS485RS485RS485RS485RS485RS485产品尺寸: 187(W)X34(H)mmX112(D)mm 导轨安装或桌面放置KD BA: 全隔离信号(0.1秒采样) B: 标准信号 (0.3秒采样)C: 通用隔离输入D: 经济型标准输入E: 4-20mA专用输入G: 单热电偶全隔离输入H: 单热电偶非隔离输入J: 隔离输入支持 10A电流输入7-24V7-24V6通道6通道工作电源最大输入7-24V7-24V6通道6通道7-24V7-24V6通道8通道7-24V7-24V8通道6通道RS485RS485输出接口RS485RS485RS485RS485RS485RS485产品尺寸: 93(W)X35(H)mmX121(D)mm 导轨安装或桌面放置KD CE: 4-20mA专用输入H: 单热电偶非隔离输入7-24V7-24V1通道1通道工作电源最大输入RS485RS485输出接口产品尺寸: 54(W)X32(H)mmX82(D)mm 导轨安装或桌面放置输入信号选型附表U: 单热电偶全隔离输入(热电偶专用插头)U注 C系列信号板与A系列信号功能接近,C系列信号板不支持NTC输入,不支持0-50V输入C系列热电偶冷端精度为正负0.1度,而A系列冷端精度则为正负0.5度(影响热电偶绝对误差)C系列信号板侧重于热电偶精度,而A系列侧重于兼容性,抗干扰能力区别不大,均为隔离差分186mm前视图后视图186mm34m mR S 485转U S B 通讯接口上图为了看清接线,USB 被放大了,非实物比例在电脑上按装U 盘里的驱动复制电脑在线监控系统到电脑上如果是无线模块,已接好线,分别插在仪表上与电脑上如果是布线的将仪表的485+接转换器直接将热电偶插头插入每个通道B A 24V (不分正负极)-485+模块供电CH01 CH02CH03 CH04CH05 CH06CH07 CH08热电偶插头热电偶插头0008050301ST E J K -200.0~1300.0-200.0~800.0-200.0~1000.0-200.0~400.0-50.0~1650.0输入代码SN 与信号类型接上电源,通过485通讯连接到电脑或PLC 或人机界面 连电脑时我们有配套的监控软件 一台电脑或人机界面可以接64个模块 每个模块可以设置不同的地址或波特率RS48安装软件在电脑上按装盘里的驱动341复制电脑在线监控系统到电脑上如果是无线模块,已接好线,分别插在仪表上与电脑上315转USB 通讯接口24RS 485转US B 通讯接口接仪表RS 485+接仪表RS 485-1台电脑可监控20台无纸记录仪,最大多可达255测试点仪表连接电脑后,扫描电脑二维码,可通过手机远程监控电脑监控软件免费,一台电脑需要一个可根据实际定制电脑上位机软件接仪表RS 485+接仪表RS 485-自定义通道名称及单位名称 上下限电脑报警查询数据只需0.1秒 高速而稳定同时显示所有通道曲线 曲线放大 坐标位移功能视频教程 高效而稳定的上位机软件研发费用至少在数百万元之上无疑给成长中仪器仪表厂商带来困惑;为此科顺仪器愿将上位机软件共享给仪器仪表厂商使用;软件可永久授权软件并提共源代码;具有完全自主知识产权;自绘数据显示控件, 自主研发实时数据库,极小体积;可导出EXCEL软件仅供我司仪器仪表用户免费使用,不支持第三方硬件商业授权主要面向仪器仪表厂商即仪器仪表厂商生产的仪表或采集模块使用我们的软件来监控商业授权提供三年以上技术支持,并提供驱动开发;商业授权提供10种硬件驱动开发,并提供软件所有源码;为我司模块提供量程上下限配置设置模块输入类型如 4-20mA 0-5V Pt100等模块误差修正功能等视频教程 读测量值功能码寄存器地址寄存器说明0400-151~16通道温度值数据类型INT16功能码寄存器地址寄存器说明数据类型读内部寄存器0300-15返回通道1-16mV 值INT160316-311~16通道温度值INT1603254仪表类型INT1603255环境温度INT160332-471~16通道传感器输入类型表INT160348-631-16通道传感器误差修正值INT160364-791~16通道K 型热电偶温度值INT160380-951~16通道E 型热电偶温度值INT160396-1111~16通道N 型热电偶温度值INT1603112-1281~16通道J 型热电偶温度值INT1603128-1431~16通道Wre 3-25热电偶温度值INT1603144-1591~16通道T 型热电偶温度值INT1603160-1751~16通道B 型热电偶温度值INT1603175-1911~16通道R 型热电偶温度值INT1603192-2071~16通道S 型热电偶温度值INT1603208-2231~16通道Wre 5-26热电偶温度值INT1603224-2401~16通道F2型热电偶温度值INT1603253通讯地址INT1603252波特率INT16通讯协议模块适用于标准Modbus RTU 通讯协议,仪表支持下文中所描述的功能码。
M-3002用户手册V1.0基于Modbus的8路模拟量输入采集模块1 产品简介M-3002(基于Modbus的8路模拟量输入采集模块)作为通用型模拟量采集模块广泛应用于冶金、化工、机械、消防、建筑、电力、交通等工业行业中,可接入8路温度、湿度、液位、压力、流量、PH值等传感器输出的0~20mA、4~20mA、0~5V、-5~5V、0~10V、-10~10V等模拟量信号。
支持标准的Modbus RTU 协议,并具有通讯超时检测功能,可同其它遵循Modbus RTU 协议的设备联合使用。
1.1 系统概述M-3002模块主要由电源电路、模拟量输入采样电路、隔离RS485收发电路及MCU等部分组成。
采用高速ARM处理器作为控制单元,拥有隔离的RS485通讯接口,具有ESD、过压、过流保护功能,避免了工业现场信号对模块通讯接口的影响,使通讯稳定可靠。
1.2 主要技术指标1)系统参数供电电压:5~40VDC,电源反接保护功率消耗:0.5W工作温度:-10℃~60℃存储温度:-40℃~85℃相对湿度:5%~95%不结露2)模拟量输入参数输入路数:8路正常输入范围:电流输入:0~20mA、4~20mA,输入阻抗250Ω;电压输入:0~5V、-5~5V、0~10V、-10~10V,输入阻抗1MΩESD电压:7KV信噪比:96dB SNRADC分辨率:16位采样精度:0.1%3)通讯接口通讯接口:RS485 接口,隔离1500VDC,±15kV ESD 保护、过流保护隔离电压:1500V通讯协议:Modbus RTU 协议波特率:1.2k,2.4k,4.8k,9.6k,19.2k,38.4k,57.6k,115.2k通讯数据格式:1个起始位,8个数据位,无、奇或偶校验,1个或2个停止位1.3 外形及尺寸外壳材料:ABS工程塑料尺寸大小:145mm(长) * 90mm(宽) * 40mm(高)安装方式:标准DIN35导轨安装和螺钉安装,安装尺寸如图所示。
自动化工程训练课程设计学院名称信息科学与工程学院专业班级自动化1202班姓名黎毅刚指导老师刘芳目录第一章绪论第二章方案论证2.1温度采集方案2.2显示界面方案第三章系统整体设计3.1 系统总体分析3.2设计原理第四章各个元器件及芯片简介4.1 AT89C51单片机介绍4.2 K型热电偶简介4.3 MAX6675简介4.4 LCD12864简介第五章各部分电路设计5.1温度采集电路5.2数据处理电路5.3温度显示电路5.4超限报警电路第六章心得体会附录1 硬件仿真图与运行效果展示附录2 软件代码第一章绪论在工业生产中,需要检测工艺生产线的温度,而且这个温度范围还很大。
该系统采集主要以Atmel公司的AT89C51单片机为控制处理核心,由它完成对数据的采集处理以及控制数据的无线传输。
AT89C51单片机是一种低功耗/低电压/高性能的8位单片机,片内带有一个8KB的可编程/可擦除/只读存储器。
无线收发一体数传MODEM模块PTR2000芯片性能优异,在业界居领先水平,它的显著特点是所需外围元件少,因而设计非常方便。
因此用来设计工业温度检测系统相当的合适。
在本文中,主要说明单片机与K型热电偶以及K型热电偶模数转换器—MAX6675的组合,形成单片机的温度检测系统。
包括:如何针对系统的需求选择合适的温度检测器件,如何根据选择的器件设计外围电路和单片机的接口电路,如何编写控制温度检测器件进行数据传输的单片机程序,并简要介绍数字温度传感器MAX6675的应用。
第二章方案论证2.1温度采集方案方案一:模拟温度传感器。
采用热敏电阻,将温度值转换为电压值,经运算放大器放大后送A/D转换器将模拟信号变换为数字信号,再由单片机经过比较计算得到温度值。
优点:应用广泛,特别是工程领域,采用不同的热敏电阻,可实现低温到超高温的测量。
缺点:必须采用高速高位A/D转换器,系统复杂,成本高,还以引进非线性误差,得通过软件差值修正方案二:采用集成数字温度传感器DS18B20。
温度采集系统-Date: 8/20/2009背景介绍钢化玻璃是一种预应力玻璃,为提高玻璃的强度,通常使用化学或物理的方法,在玻璃表面形成压应力,玻璃承受外力时首先抵消表层应力,从而提高了承载能力,增强玻璃自身抗风压性,寒暑性,冲击性等。
生产钢化玻璃工艺有两种:一种是将普通平板玻璃或浮法玻璃在特定工艺条件下,经淬火法或风冷淬火法加工处理而成。
另一种是将普通平板玻璃或浮法玻璃通过离子交换方法,将玻璃表面成分改变,使玻璃表面形成一层压应力层加工处理而成。
由于第一种方法生产效率高,周期短,安全性好,并且成本低,所以这种方法广泛采用,工艺流程如图所示:玻璃钢化温度在630℃左右,当玻璃达到此温度时,炉内空间温度要达到700℃以上,而玻璃钢化炉的电加热丝的温度要达到900℃以上。
玻璃表面温度是影响钢化玻璃质量的重要原因,因此对玻璃表面温度的控制至关重要。
并且,在玻璃钢化过程中,要在玻璃钢化炉内保存一定时间,以保证钢化玻璃质量,所以,对玻璃表面的温度以及炉内空间温度的时时监测和控制是非常重要的。
一般每台玻璃钢化炉需要100-200个甚至更多的温度采集点,这些温度采集点分别遍布在加热炉的上下层,而这些采集点距离控制柜有一定的距离,因此要快速、准确并低成本地进行温度的采集,是钢化炉设备的一个关注焦点。
因此,ADAM模块ADAM-4118在此中的应用相当适合,并有成功应用。
水平钢化炉工艺流程示意图:基于ADAM温度采集解决方案:ν硬件部分:采用ADAM-4118坚固型热电偶输入模块,每个模块具有8个通道,可以同时采集8路温度信号,100采样点/秒的采集速率可以满足温控速度。
16位分辨率,温度的分辨精度高,便于做到温度的精细采集和控制,生产更多不同类型的产品;8个通道可以使温度的控制回路数增多,便于更细致的进行温控;自带冷端补偿,无须另外配置。
ADAM-4118坚固型8通道热电偶输入模块主要特点•支持多种热电偶采集,8路可独立配置热电偶类型•采样速率可到100采样点/秒•支持16位分辨率采集•支持Modbus协议和研华ASCII协议•和工控机通过RS-485总线连接•PLC系统中温度采集的绝佳配合说明:工控机通过ADAM-4520将RS-232串口转为RS-485串口和ADAM-4118进行连接。
实习报告课题:八路温度采集仪日期:2015.8.3目录:一、实验目的 (3)二、实验内容 (3)三、实验步骤与结果 (3)四、实验存在的问题 (14)五、总结 (14)六、附录(上位机、下位机) (14)一、实验目的:1、DXP与Labview软件的运用;2、单片机编程的掌握;3硬件的焊接与调试;4、熟练运用和掌握原理图设计、PCB板的制作、元器件焊接与调试、虚拟仪器的使用。
二、实验内容:运用单片机搭建一个小系统。
此系统可以同时采集8路温度信息(由于硬件条件的限制,没人只有4个温度传感器,所以最后只能为四路温度采集),而此信息来自与8个DS18B20,同时循环显示于数码管。
然后后期运用虚拟仪器Labview采集单片机所发送的温度信息进行处理,并形成完整的虚拟仪器。
三、实验步骤与结果:1、原理图的设计采集系统主要元器件介绍:STC89C52RC:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选.其I/O口、中断的运用可以参照89C51的任何类型。
DS18B20:DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。
因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样,有LTM8877,LTM8874等等。
主要根据应用场合的不同而改变其外观。
封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。
耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。
特点:(1)、只要求一个端口即可实现通信。
(2)、在DS18B20中的每个器件上都有独一无二的序列号。
(3)、实际应用中不需要外部任何元器件即可实现测温。
(4)、测量温度范围在-55。
C到+125。
C之间。
(5)、数字温度计的分辨率用户可以从9位到12位选择。
(6)、内部有温度上、下限告警设置。
使用方法:由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先 DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
DS18B20的写时序对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
以下为原理图设计过程:1、总的电路图结构:2、USB串口模块3、单片机系统4、七段数码管显示5、DS18B202、PCB板子的制作与3D效果图:最后的实物图:3、51单片机编程:1、DS18B20的时序2、串口的打开、收发。
3、显示模块以下为各个模块代码:1、void reset(void) //reset{uint i;DS&=!DQSUM[count]; //0i=103;while(i>0) i--;DS|=DQSUM[count]; //1i=4;while(i>0) i--;}bit readbit(void) //read a bit {uint i;bit dat;DS&=!DQSUM[count];i++;DS|=DQSUM[count];i++;i++;switch(count){case 0:dat=DQ0;break;case 1:dat=DQ1;break;case 2:dat=DQ2;break;case 3:dat=DQ3;break;}i=8;while(i>0)i--;return (dat);}uchar read(void) //read a Byte{uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=readbit();dat=(j<<7)|(dat>>1);}return (dat);}void write(uchar dat){uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //write 1{DS&=!DQSUM[count];i++;i++;DS|=DQSUM[count];i=8;while(i>0) i--;}else //write 0{DS&=!DQSUM[count];i=8;while(i>0)i--;DS|=DQSUM[count];i++;i++;}}}void tempchange(void) //DS18B20的数据转换{reset();delay(1);write(0xcc);write(0x44);delay(80);}uint get_temp() //数据读取与处理{uchar a,b;reset();delay(1);write(0xcc);write(0xbe);a=read(); //Lb=read(); //Htemp=b;temp<<=8;temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;return temp;}void temp_turn(uint value){display[2]=value/100;display[1]=(value%100)/10;display[0]=value%10;}2、void init_com(void) //中断初始化{TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xf3;TL1=0xf3;TR1=1;}void comm(char *parr) //串口数据发送{do{SBUF=*parr++;while(!TI);TI=0;}while(*parr);}3、void delay(uint z) //10ms{uint x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}void scan(){char k;for(k=0;k<4;k++) //4位LED扫描控制{Disdata=dis_7[display[k]]; //数据显示if (k==1){DIN=0;} //小数点显示discan=scan_con[k]; //位选delay(3);}}4、Labview模块VISA串口配置数据处理、温度显示:四路可切换模块:生成表格、记录数据:效果图:四、实验存在的问题1、PCB板子虽然都已绘制完成,但是对PCB规则检测没有进行。
2、单片机对于DS18B20传感器的第一个有时完全接收不到数据(应该时序没有严格按照规则)。
3、LABVIEW的单独模块的内容还不够多。
五、总结:通过本次小学期的实习基本掌握DXP与LABVIEW的使用,同时对PCB板的绘制有了进一步的提高。
对单片机小系统的架构有了初步的认识。
但是对于单片机系统和LABVIEW 的学习还是太少,所以在小学期之后还有巩固强化本次课题的内容。
六、附录:上位机:下位机:#include<reg52.h>#include<stdio.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define DS P1#define Disdata P0#define discan P2sbit DQ0=P1^0;sbit DQ1=P1^1;sbit DQ2=P1^2;sbit DQ3=P1^3; //温度传感器的4个数据端口sbit DIN=P0^7;uint count;uint temp;float f_temp;unsigned char DQSUM[4]={0x01,0x02,0x04,0x08};//温度传感器选择,依次对应传感器的0-5uchar code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xff,0xbf};//"0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-"uchar code scan_con[4]={0x70,0xb0,0xd0,0xe0}; //列扫描控制字uchar data display[5]={0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用void delay(uint z) //10ms{uint x,y;for(x=z;x>0;x--)for(y=125;y>0;y--);}void scan(){char k;for(k=0;k<4;k++) //4位LED扫描控制{Disdata=dis_7[display[k]]; //数据显示if (k==1){DIN=0;} //小数点显示discan=scan_con[k]; //位选delay(3);}}void reset(void) //reset{uint i;DS&=!DQSUM[count]; //0i=103;while(i>0) i--;DS|=DQSUM[count]; //1i=4;while(i>0) i--;}bit readbit(void) //read a bit{uint i;bit dat;DS&=!DQSUM[count];i++;DS|=DQSUM[count];i++;i++;switch(count){case 0:dat=DQ0;break;case 1:dat=DQ1;break;case 2:dat=DQ2;break;case 3:dat=DQ3;break;}i=8;while(i>0)i--;return (dat);}uchar read(void) //read a Byte{uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=readbit();dat=(j<<7)|(dat>>1);}return (dat);}void write(uchar dat){uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb) //write 1{DS&=!DQSUM[count];i++;i++;DS|=DQSUM[count];i=8;while(i>0) i--;}else //write 0{DS&=!DQSUM[count];i=8;while(i>0)i--;DS|=DQSUM[count];i++;i++;}}}void tempchange(void) //DS18B20的数据转换{reset();delay(1);write(0xcc);write(0x44);delay(80); //很重要}uint get_temp() //数据读取与处理{uchar a,b;reset();delay(1);write(0xcc);write(0xbe);a=read(); //Lb=read(); //Htemp=b;temp<<=8;temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;return temp;}void temp_turn(uint value){display[2]=value/100;display[1]=(value%100)/10;display[0]=value%10;}void init_com(void) //中断初始化{TMOD=0x20;PCON=0x00;SCON=0x50;TH1=0xf3;TL1=0xf3;TR1=1;}void comm(char *parr) //串口数据发送{do{SBUF=*parr++;while(!TI);TI=0;}while(*parr);}void main(){int i,j;uchar buff[10];init_com();while(1){for(count=0;count<4;count++){for(j=250;j>0;j--){P2=0xe0;switch(count){case 0:P0=0xf9;break;case 1:P0=0xa4;break;case 2:P0=0xb0;break;case 3:P0=0x99;break;}delay(6);}tempchange();temp_turn(get_temp());for(i=250;i>0;i--){scan();}buff[0]='C';buff[1]='H';buff[2]=count+'0';buff[3]=':';buff[4]=temp/100+'0';buff[5]=(temp%100)/10+'0';buff[6]='.';buff[7]=temp%10+'0';buff[8]='\r';buff[9]='\n';comm(buff);}}}21。