毕业设计之基于单片机的温室大棚自动控制系统 - 图文(6)

2019-05-24 09:51

基于单片机的温室大棚自动控制系统

i_bai,i_shi,i_ge,ishi,ige;

sbit s1=P1^0; sbit s2=P1^1; sbit s3=P1^2; sbit s4=P1^3; sbit relay1=P1^5; sbit relay2=P1^6; sbit relay3=P1^7; sbit cs1=P3^0; sbit cs2=P3^1; sbit DS=P3^2; sbit lcdrw=P3^3; sbit lcden=P3^4; sbit lcdrs=P3^5; sbit wr=P3^6; sbit rd=P3^7;

/////////////////////////////////////////////////////////////////////// void delay(uint z) //延时函数 { }

void dsreset(void) //send reset and initialization command {

uint i; //DS18B20初始化 DS=0; i=103; while(i>0)i--; DS=1; i=4;

25

uint x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--);

基于单片机的温室大棚自动控制系统

while(i>0)i--; }

bit tmpreadbit(void) //read a bit 读一位 { uint i; bit dat;

DS=0;i++; //i++ for delay 小延时一下 DS=1;i++;i++; dat=DS; i=8; while(i>0)i--; return (dat); }

uchar tmpread(void) //read a byte date 读一个字节 {

uchar i,j,dat; dat=0; for(i=1;i<=8;i++) {

j=tmpreadbit();

dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好//一个字节在DAT里 }

return(dat); //将一个字节数据返回 }

void tmpwritebyte(uchar dat) //write a byte to ds18b20 { //写一个字节到DS18B20里 uint i; uchar j; bit testb; for(j=1;j<=8;j++) {

26

基于单片机的温室大棚自动控制系统

testb=dat&0x01; dat=dat>>1;

if(testb) //write 1 写1部分 { DS=0; i++;i++; DS=1;

i=8;while(i>0)i--; } else {

DS=0; //write 0 写0部分 i=8;while(i>0)i--; DS=1; i++;i++; } } }

void readtemperature() //读温度函数{

uint y;

uchar T_L=0; uchar T_H=0; uchar k; dsreset(); delay(1);

tmpwritebyte(0xcc); tmpwritebyte(0x44); dsreset();

delay(1);

27

基于单片机的温室大棚自动控制系统

T_H=T_H&0x07;

temp1=(T_H*256+T_L)*T_cont; temp1=temp1*100; t_bai=(uint)temp1/10000; y=(uint)temp1000; t_shi=y/1000; y=(uint)y00; t_ge=y/100; y=(uint)y0; t_feng=y/10; t_miao=(uint)y; }

tmpwritebyte(0xcc); tmpwritebyte(0xbe); T_L=tmpread(); T_H=tmpread(); k=T_H&0x08; if(k==0x08) else

T_sign=0; T_sign=1;

///////////////////////////////////////////////////////////// void inteadc0804() //光照度adc转换子程序与数据处理 {

rd = 1;

wr = 1; //读ADC ReadPort = 0xff; //P1置位 cs1=0; wr = 0;

wr = 1; //启动ADC

28

基于单片机的温室大棚自动控制系统

rd=0; //开始读转换后数据

_nop_(); _nop_(); //稍延时,等待读完数 inte1 = ReadPort; //读出的光照度数据赋与inte1 rd = 1;

cs1 = 1; //读数完毕

i_bai = inte1/100; //百位数 i_shi = (inte10)/10; //十位数 i_ge = (inte1); //个位数 }

void hunadc0804() {

rd = 1;

wr = 1; //读ADC ReadPort = 0xff; //P1置位 cs2=0; wr = 0;

wr = 1; //启动ADC rd=0; //开始读转换后数据

_nop_(); _nop_(); //稍延时,等待读完数 delay(20);

hun2= ReadPort; //读出的湿度数据赋与hun1 rd = 1;

cs2 = 1; //读数完毕 hun1=hun2/2.55;

h_bai = hun1/100; //百位数

//湿度adc转换子程序与数据处理

h_shi = (hun10)/10; //十位数 h_ge = (hun1); //个位数 }

/////////////////////////////////////////////////////////// void write_com(uchar com) //lcd写命令函数

29


毕业设计之基于单片机的温室大棚自动控制系统 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版高中历史必修1 1.4《明清君主专制的加强》参考学案1

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

马上注册会员

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