基于51单片机的水质检测系统设计(7)

2018-11-21 15:11

附录(2).电路PCB图

30

附录(3).主要程序

温度检测:

#include #include #include\

sbit DE_RE=P3^4;

sbit DQ=P2^3; //ds18b20与单片机连接口

uchar gao,di;

uchar bai,shi,ge; uchar tflag;

uchar recdata;

uint tvalue,tvalue1,tvalue2,TEMP; //温度值

/******************************************* 函数名称: delay_18B20 功 能: 为18b20温度转换器提供延时 参 数: 延时i微秒 返回值 : 无

********************************************/ void delay_18B20(unsigned int i) {

while(i--); }

/******************************************* 函数名称: ds1820rst() 功 能: 18b20温度转换器复位功能 参 数: 复位函数 返回值 : 无

********************************************/ void ds1820rst() {

unsigned char x=0;

DQ = 1; //DQ复位 delay_18B20(4); //延时 DQ = 0; //DQ拉低

delay_18B20(100); //精确延时大于480us DQ = 1; //拉高 delay_18B20(40); }

/*******************************************

31

函数名称: ds1820rd

功 能: 读出18b20温度转换器中数据 参 数: 无

返回值 : dat读出的数据

********************************************/ uchar ds1820rd() {

unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) {

DQ = 0; //给脉冲信号 dat>>=1;

DQ = 1; //给脉冲信号 if(DQ) dat|=0x80;

delay_18B20(10); }

return(dat); }

/******************************************* 函数名称: ds1820wr

功 能: 写入18b20温度转换器指令 参 数: wdata为写入的数据 返回值 : 无

********************************************/ void ds1820wr(uchar wdata)/**/ {

uchar i=0;

for (i=8; i>0; i--) {

DQ = 0;

DQ = wdata&0x01; delay_18B20(10); DQ = 1; wdata>>=1; } }

/******************************************* 函数名称: read_temp() 功 能: ds1820读取温度值并转换 参 数: 无

返回值 : tvalue为读出并经过转换的温度值

********************************************/ read_temp()

32

{

uchar a,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8;

tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else {

tvalue=~tvalue+1; tflag=1; }

tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数 一点代表0.625度 return(tvalue); }

uchar rxdata() //接受数据 {

uchar dataa;

while(!RI);

//等待数据接收完毕 dataa=SBUF; RI=0;

return(dataa); }

void txdata(unsigned char dataa) //发送数据子函数 {

DE_RE=1; SBUF=dataa; while(!TI);

//等待数据发送完毕 TI=0; DE_RE=0; }

main() {

SCON=0X50; //串口工作方式初始化

33

PCON=0X00;

TMOD=0X20; EA=1; TL1=0XFD;

TH1=0XFD; //波特率9600 TR1=1;

DE_RE=0; //接收数据模式 while(1) {

read_temp(); TEMP=tvalue; gao=TEMP/256; di=TEMP%6; if(RI) {

RI=0;

recdata=SBUF; if(recdata==0x66) {

delay(2); txdata(gao); //delay(1); }

if(recdata==0x77) {

delay(2); txdata(di); //delay(1); } }

} }

电阻检测:

#include #include #include\display(); jishu();

uchar table2[]={'0','1','2','3','4','5','6','7','8','9'}; uchar num,l,f,i,h,flag=1; long r; /*上为测电阻声明*/

34


基于51单片机的水质检测系统设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018-作家协会半年工作总结-实用word文档 (9页)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: