传感器proteus虚拟实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《传感器原理与应用》实验指导书

版本

实验1:基于DS18B20传感器温度测量实验

步骤:(1)在Proteus软件画出电路图

(2)用keil C 软件写出C程序,并生成.hex文件,导入到单片机当中,进行仿真,观察结果。

包括:2个头文件和; 1个源文件;代码如下

#include <>据端口

ex文件,导入到单片机当中,进行仿真,观察结果。

压力测试仪

系统描述;输入 15--115kPA压力信号

输出 00h--ffh数字信号(adc0832)

在LCD上显示实际的压力值,如果超限则报警

线性区间标度变换公式: y=(115-15)/(243-13)*X+15kpa

作者:

单位:

日期: <>

#include ""

#define uint unsigned int

#define uchar unsigned char

ex文件,导入到单片机当中,进行仿真,观察结果。

#include <> 5 us

SCK=0;

DATA=1; 5 us

SCK=0;

DATA=1; //释放数据总线

temp_LL=val;

}

char write(unsigned char value) //写一个字节返回应答信号{

unsigned char i ;

ack=0;

for (i=0x80;i>0;i/=2) //释放数据总线

{ if (i & value) DATA=1; //写入值

else DATA=0;

SCK=1; //上升沿写入

_nop_(); _nop_(); _nop_(); //延时

SCK=0;

}

DATA=1; //释放数据总线

SCK=1; //第9个脉冲

if (DATA==1) ack=1;

//读应答信号

SCK=0;

return ack; //error=1 表示没有应答

}

void start_sht11(void) //启动

{

DATA=1; SCK=0; //数据为1,SCK=0 _nop_();

SCK=1; //第一个脉冲

_nop_();

DATA=0; //数据跌落

_nop_ ();

SCK=0; //完成一个脉冲

_nop_(); _nop_(); _nop_();

SCK=1; //再一个脉冲

_nop_();

DATA=1; //数据变为1

_nop_();

SCK=0; //完成该脉冲

}

void sht_rest(void) //复位

{

unsigned char i;

DATA=1; SCK=0; //数据为1 时钟为0 for(i=0;i<9;i++) //9 个脉冲为复位 { SCK=1;

SCK=0;

}

start_sht11(); //启动

}

//测量温度或者是温度,返回校验值

text_a(unsigned char ml)

{

unsigned int i;

start_sht11(); //启动

write(ml);//写入测温度

if (ack==1)

{

sht_rest() ;//复位

write(ml);//写入测温度

}

//判断是否处于忙

// DATA=1;//释放数据总线

//for (i=0;i<65535;i++) if(DATA==0) break;

for (i=0;i<55535;i++){ if(DATA==0) break;else {xianshi();} } read();//读温度

}

/////////温湿度处理//////

text_jishuan_temp11()

{

error=0;

ack=0;

sht_rest() ;//复位

text_a(TEMP_ML);

text_jishuan_temp();

key();

text_a(HUMI_ML);

text_jishuan_humi();

}

//////////计算温度////

text_jishuan_temp()

{

float aa=0,bb=0,temp_zi;

int abcd=0;

aa=(float)temp_h*256+(float)temp_LL;

temp_zi=*aa-40;

if (temp_zi<0)

{

temp_zi=0;

}

temp_zi=temp_zi*10;

xianzhi_t=(int)temp_zi;//给显示值

}

///////计算湿度//////

text_jishuan_humi()

{

float aa=0,bb=0,humi_zi;

int abcd=0;

aa=(float)temp_h*256+(float)temp_LL;

bb=aa*aa*1000000;

aa=*aa;

aa=aa-4-bb;

humi_zi=aa;

humi_zi=humi_zi*10;

xianzhi_h=(int)humi_zi;

}

相关文档
最新文档