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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

根据单片机labview的温度测量系统设计.docx

1、根据单片机labview的温度测量系统设计 串口收发电路的温度测量单片机系统设计设计目录第一部分 电路设计3 1.1 温度采集电路.3 1.2 串口收发电路.7 1.3 温度显示电路.9第二部分 上位机软件.10 2.1 基于Labview的温度检测设计第三部分 程序代码.电路设计1.1 温度采集电路本设计采用热敏电阻,通过飞利浦公司生产的AD转换芯片PCF9591采集热敏电阻的温度信息,总体电路图如下PCF8591简介描述PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个

2、地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。特性【1】单独供电 【2】PCF8591的操作电压范围2.5V-6V 【3】低待机电流 【4】通过I2C总线串行输入/输出 【5】PCF8591通过3个硬件地址引脚寻址 【6】PCF8591的采样率由I2C总线速率决定 【7】4个模拟输入可编程为单端型或差分输入 【8】自动增量频道选择 【9】PCF8591的模拟电压范围从VSS到VDD 【10】PCF8591内置跟踪保持电路 【11

3、】8-bit逐次逼近A/D转换器 【12】通过1路模拟输出实现DAC增益引脚信息AIN0AIN3:模拟信号输入端。 A0A3:引脚地址端。 VDD、VSS:电源端。 (2.56V) SDA、SCL:I2C 总线的数据线、 时钟线。 OSC:外部时钟输入端,内部时钟 输出端。 EXT:内部、外部时钟选择线,使 用内部时钟时 EXT 接地。 AGND:模拟信号地。 AOUT:D/A 转换输出端。 VREF:基准电源端。PCF8591操作内部地址寄存器内部控制寄存器AD转换总时序先送入要读取的器件的地址,即所要读取的通道,然后等待应答信号,开始读取下位机芯片送来的AD数据。底层驱动时序如下单字读写起

4、始以及停止信号准备完毕的应答信号,上位机接收本电路通过PCF8591的AIN2通道采集热敏电阻的温度信息,通过I2C总线方式读取下位机提取的信息,实现温度采集。温度传感器 PT100 简介设计原理pt100是铂热电阻,它的阻值会随着温度的变化而改变。PT后的100即表示它在0时阻值为100欧姆,在100时它的阻值约为138.5欧姆。它的工业原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成匀速增长的。温度特性曲线由上图,可以拟合其温度与电阻的关系为R=77/200*Temperature+100;串联的限流电阻的值为100欧姆,则AD输入电压的计算公式为ADVa

5、lue/255*5000=100/(R+100)*5000;由以上两公式换算可以得到Temperature=200/77*(100*255/ADValue-100)1.2 串口收发电路通过串口收发电路,将采集到的温度信息提取后传送到电脑上,通过上位机显示所采集的温度信息,实现人机交互界面,更加人性化电路如下:串口通信芯片采用美信公司的MAX232 引脚介绍第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1

6、IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚GND、16脚VCC(+5v)。 主要特点1、符合所有的RS-232C技术标准 2、只需要单一 +5V电源供电 3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-

7、10V电压V+、V- 4、功耗低,典型供电电流5mA 5、内部集成2个RS-232C驱动器 6、内部集成两个RS-232C接收器 7、高集成度,片外最低只需4个电容即可工作。1.3 温度显示电路温度显示电路采用1602液晶,与单片机的P0口相连,实现温度显示,其电路图如下液晶电路的读写时序以及其内部寄存器的操作可以在网上查找,此处不作详述,用液晶屏幕实现静态显示温度的功能。整体电路如下上位机软件2.1前面板设计温度超过限定值或者低于限定值时,指示灯亮起,温度读取开关,用于串口的打开和关闭。后面板程序框图设计程序代码温度采集部分/*此部分为I2C总线驱动程序*/-I2C.c-#include #

8、include #define nop _nop_() sbit SCL=P21;sbit SDA=P20;bit ack;/*-start I2c-*/void Start_I2c(void)SDA=1;nop;SCL=1; nop;nop;nopnop;nop;SDA=0; /SDA to low ,send start flagnop;nop;nopnop;nop;SCL=0;nop;nop; /*-stop I2c-*/ void Stop_I2c(void) SDA=0; nop; SCL=1;nop;nop;nopnop;nop;SDA=1;/send stop flagnop;n

9、op;nop;nop;/*-send byte-*/void Send_Byte(unsigned char c) unsigned char BitCnt; for(BitCnt=0;BitCnt8;BitCnt+) if(cBitCnt)&0x80) SDA=1; else SDA=0; nop; SCL=1; nop; nop; nop nop; nop; SCL=0; nop; nop; SDA=1; nop; nop; SCL=1; nop; nop; nop; if(SDA=1) ack=0; else ack=1; SCL=0; nop; nop; /*-rescive byte

10、-*/unsigned char Receive_Byte(void) unsigned char receive; unsigned char BitCnt; receive=0; SDA=1; for(BitCnt=0;BitCnt8;BitCnt+) nop; SCL=0; nop; nop; nop nop; nop; SCL=1; nop; nop; receive=1; if(SDA=1) receive+=1; nop; nop; SCL=0; nop; nop; return receive; /*-Acknowledgement-*/void Ack_I2c(bit a)if

11、(a=0) SDA=0;else SDA=1;nop;nop;nop;SCL=1;nop;nop;nop;nop;nop;SCL=0;nop;nop;/*此部分为温度的读取部分*/-AD.c-#include#include unsigned char ADValue;unsigned int Temperature;#define PCF8591 0x90 /器件地址bit ADC_Send_Byte(unsigned char sla,unsigned char c) Start_I2c(); Send_Byte(sla); if(asc=0) return 0; Send_Byte(c)

12、; if(asc=0) return 0; Stop_I2c(); return 1; /ADC Receive Byteunsigned char AD_Receive_Byte(unsigned char sla)unsigned char c;Start_I2c();Send_Byte(sla+1);if(ack=0) return 0;c=Receive_Byte;Ack_I2c(1);Stop_I2c();return c;Void Get_ADValue(void)ADC_Send_Byte(PCF8591,0x43);ADValue=AD_ Receive_Byte(PCF859

13、1);/以下为温度换算部分/Void Get_TPValue()Temperature=200/77*(100*255/ADValue-100);/*此部分为LCD液晶显示模块*/-LCD.c-#include #include #include “AD.h”sbit rs = P26; /sbit rw = P25;sbit ep = P27;unsigned char code Tital = The temperature is;unsigned char Temperatureshow3;delay(unsigned char ms) / unsigned char i; while(

14、ms-) for(i = 0; i 250; i+) _nop_(); _nop_(); _nop_(); _nop_(); bit Lcd_Busy() / bit result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (bit)(P0 & 0x80); ep = 0; return result; Lcd_Write_CMD(unsigned char cmd) / while(Lcd_Busy(); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0

15、= cmd; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; Lcd_Place (unsigned char pos) Lcd_Write_CMD(pos | 0x80);Lcd_Send_Byte(unsigned char dat) while(Lcd_Busy(); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _n

16、op_(); _nop_(); ep = 0; lcd_init() Lcd_Write_CMD (0x38); delay(1); Lcd_Write_CMD (0x0c); delay(1); Lcd_Write_CMD (0x06); delay(1); Lcd_Write_CMD (0x01); delay(1);Void Lcd_Show()Unsigned char i;Lcd_Place(0);i = 0;while(Titali != 0) Lcd_Send_Byte(Titali); i+; Temperatureshow0=Temperature/100+0;Tempera

17、tureshow1=Temperature%100/10+0;Temperatureshow0=Temperature%10+0;Lcd_Place0x45; i = 0; while(Temperaturei != 0) Lcd_Send_Byte(Temperatureshowi); i+; /*此处为串行口的通信部分*/-SCI.c-#include #include “AD.h”Void SCI_Init()SCON = 0x50;TMOD|= 0x20;PCON|= 0x80; /波特率倍增TH1 = 0xF3; /串口波特率9600TL1 = 0xF3;TR1 = 1;ES = 0

18、; /禁止串口中断EA = 0;Void Send_Temperature()SBUF=Temperature;while(!TI);TI = 0;SBUF=Temperature8;while(!TI);TI = 0;/*以下为主函数*/-main.c-#include #include “AD.h”#include “LCD.h”#include “SCI.h”Void System_Start()SCI_Init();lcd_init();Void main()While(1)Get_ADValue();Get_TPValue();Lcd_Show();Send_Temperature();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1