智能灌溉系统的设计论文 - 图文(5)

2020-04-14 22:06

附 录

uchar temp_value,temp1_value; //temp_value温度值正数部分 temp1_value温度值小数部分

uchar done,count,temp,up_flag,down_flag;

uchar hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数

uchar TempBuffer[8],week_value[3],dht_11[2]; uchar code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //四相八拍正转编码

void show_time(); //液晶显示程序 void wr_d_lcd(uchar content); void wr_i_lcd(uchar content); void clrram_lcd (void); void init_lcd(void); void busy_lcd(void);

void rev_row_lcd(uchar row);

void rev_co_lcd(uchar row,uchar col,uchar mode); void clr_lcd(void);

void wr_co_lcd(uchar row,uchar col,uchar lcddata1,uchar lcddtta2); void wr_row_lcd(uchar row,char *p); void Delay(U16 z) {

U8 x,y;

for(x=z;x>0;x--)

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

void delay_10us() {

U8 i; i--; i--; i--; i--; i--; i--; }

void delay1(uint t)

{ uint k; while(t--) {

for(k=0; k<125; k++); } }

void COM(void) //数据0 1确认 {

U8 i;

for(i=0;i<8;i++) {

U8FLAG=2;

40

附 录

while((!P3_0)&&U8FLAG++); //1bit是否结束 delay_10us(); delay_10us(); delay_10us();

U8temp=0;// 26us~28us 表示为0

if(P3_0)U8temp=1; // 超过28us依然为高电平 表示为1 U8FLAG=2;

while((P3_0)&&U8FLAG++);

if(U8FLAG==1)break;//U8FLAG溢出超时则跳出for循环 U8comdata<<=1;

U8comdata|=U8temp; } }

void RH(void) //-----湿温度读取子程序 ------------ {

P3_0=0;

Delay(34); //主机拉低高于18ms P3_0=1;

//总线由上拉电阻拉高 主机延时20us delay_10us(); delay_10us(); delay_10us(); delay_10us();

P3_0=1;//主机设为输入 判断从机响应信号

if(!P3_0)//判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行 {

U8FLAG=2;

while((!P3_0)&&U8FLAG++);//判断从机是否发出 80us 的低电平响应信号是否结束

U8FLAG=2;

while((P3_0)&&U8FLAG++);//判断从机是否发出 80us 的高电平, 如发出则进入数据接收状态

COM();//数据接收状态

U8RH_data_H_temp=U8comdata; //湿度整数8位 COM(); U8RH_data_L_temp=U8comdata; //湿度小数8位 COM();

U8T_data_H_temp=U8comdata; //温度整数8位 COM();

U8T_data_L_temp=U8comdata; //温度小数8位 COM();

U8checkdata_temp=U8comdata; //校验位 P3_0=1;

41

附 录

U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);

if(U8temp==U8checkdata_temp)//数据校验 正确执行 { U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8checkdata=U8checkdata_temp; }

} //jj=date/10; }

void write_dht11(U8 date) { dht_11[0]=date/10+'0'; dht_11[1]=date+'0'; ff=date; }

void init_lcd(void) { wr_i_lcd(0x06); wr_i_lcd(0x0c); }

void clrram_lcd (void) { wr_i_lcd(0x30); wr_i_lcd(0x01); }

void wr_d_lcd(uchar content) { busy_lcd(); rs=1; rw=0; lcddata=content; e=1; e=0; }

void wr_i_lcd(uchar content) { busy_lcd(); rs=0; rw=0; lcddata=content; e=1;

42

附 录

; e=0; }

void busy_lcd(void) {

lcddata=0xff; rs=0; rw=1; e =1;

while(busy==1); e =0; }

void gotoxy(unsigned char y, unsigned char x) { if(y==1) wr_i_lcd(0x80|x); if(y==2)

wr_i_lcd(0x90|x); if(y==3) wr_i_lcd((0x80|x)+8); if(y==4)

wr_i_lcd((0x90|x)+8); }

//********************************** //液晶显示字符串程序

//********************************** void print(uchar *str) { while(*str!='\\0') { wr_d_lcd(*str); str++; } }

typedef struct __SYSTEMTIME__ { uchar Second; uchar Minute; uchar Hour; uchar Week; uchar Day; uchar Month; uchar Year; uchar DateString[11]; uchar TimeString[9]; }SYSTEMTIME; //定义的时间类型 SYSTEMTIME CurrentTime;

//********************************** //实时时钟写入一字节(内部函数)

43

附 录

//********************************** void DS1302InputByte(uchar d) {

uchar i; ACC = d;

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

DS1302_IO = ACC0; //相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; } }

//************************************* //实时时钟读取一字节(内部函数)

//************************************* uchar DS1302OutputByte(void) {

uchar i;

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

ACC = ACC >>1; //相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; }

return(ACC); }

//************************************** //ucAddr: DS1302地址, ucData: 要写的数据 //************************************** void Write1302(uchar ucAddr, uchar ucDa) {

DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1;

DS1302InputByte(ucAddr); // 地址,命令 DS1302InputByte(ucDa); // 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; }

//************************************** //读取DS1302某地址的数据

//************************************** uchar Read1302(uchar ucAddr) {

uchar ucData; DS1302_RST = 0; DS1302_CLK = 0;

44


智能灌溉系统的设计论文 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018届高考高三文科数学三角函数专题典型题型总结

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

马上注册会员

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