⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 智能浇灌系统源代码
💻 C
字号:
#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int
extern void  LCD_DispIni(void);
extern void  LCD_DispFill(uchar filldata);
extern void  LCD_DispChar(uchar cy, uchar cx, char dispdata);
extern void  LCD_DispStr (uchar cy, uchar cx, char *disp_str);
extern void  LCD_DispHZ (uchar cy, uchar cx, char dispdata);
extern void  LCD_DispHZStr (uchar cy, uchar cx, char *disp_str);

extern int readt(void);
extern void convert(void);
//时间初始化为0
uchar sec0=0x30,min0=0x30,hour0=0x30;
uchar sec1=0x30,min1=0x30,hour1=0x30;
//定时器1
//uchar s0=0x30,m0=0x30,h0=0x30;
//uchar s1=0x30,m1=0x30,h1=0x30;
uint count=0;//用于计数
uint count1=0;

sbit led=P1;

void timer0(void) interrupt 1 //计数器0,用于浇灌时间
{
 
TH0=-25000/256;
TL0=-25000%256;
 count++;
 if(count==20)//满1秒
 {
   count=0;
   sec0++;//秒加一
   if(sec0==0x3a)
   {
     sec0=0x30;
	 sec1++;
	 if(sec1==0x36)
	 {
        min0++;
		sec0=0x30;
	    sec1=0x30;
		if(min0==0x3a)
		{
		   min1++;
		   if(min1==0x36)
		   {
		     hour0++;
			 min1=0x30;
			 min0=0x30;
			 if(hour0==0x3a)
			 {
			   hour1++;
			  
			 }
		   }
		}

	 }
	 }

   }
 
 LCD_DispChar(7, 13,sec0);
 LCD_DispChar(7,12,sec1);

LCD_DispChar(7,10,min0);
LCD_DispChar(7, 9,min1);
//LCD_DispChar(3,1,hour0);
//LCD_DispChar(3,0,hour1);
}


uchar dp[16]={0,0,1,1,2,3,3,4,5,5,6,6,7,8,8,9};//小数部分转换 
uchar str[6]={0,0,0,0,0,0};

void time0_Ini(void)
{
  TMOD=0x01;
  TH0=-25000/256;
  TL0=-25000%256;
  TR0=1;
  ET0=1;
  EA=1;

}



  void timer1(void) interrupt 3 //计数器0,用于浇灌时间
{
 
TH1=-25000/256;
TL1=-25000%256;
 count1++;
if(count1==1200)//满1秒
 {
   count1=0;
   TR1=0;
   ET1=0;
   time0_Ini();
   led=0x00;
  
}

}

void time1_Ini(void)
{
  TMOD=0x10;
  TH1=-25000/256;
  TL1=-25000%256;
  TR1=1;
  ET1=1;
  EA=1;

}

void main()
 {
   uchar buf[4]={1,0,13,0x55};//常温
   uchar buf1[4]={2,0,13,0x55};//低温
   uchar buf2[4]={3,0,13,0x55};//高温
   uchar buf3[]={4,5,6,7,8,13,0x55};//电磁阀开关
   uchar buf4[]={9,10,11,12,13,0x55};//浇灌时间
   uchar guan[]={8,0x55};
   uchar kai[]={7,0x55};
   uchar hm[]={16,14,16,15,0x55};
 int temp;
 bit  zf;		//正负标记,0:正数  1:负数
 LCD_DispIni(); 
 
	
while(1)
{
 LCD_DispHZStr(2, 0, buf3);				   
 LCD_DispHZStr(3, 0, buf4);

 convert();	    //启动温度转换
 temp=readt();	    //读取温度值

if(temp<=0x230)
{
if(temp<=0x180)
	
      {LCD_DispHZStr(0, 0, buf1);
       LCD_DispHZStr(2, 6, guan);	  
	   TR0=0;
	   ET0=0;
	   EA=0;
       LCD_DispChar(7, 13,'0');
       LCD_DispChar(7,12,'0');
       LCD_DispChar(7,10,'0');
       LCD_DispChar(7, 9,'0');
	   led=0xff;
	   }

else 

    {
	
	time0_Ini();
	LCD_DispHZStr(0, 0, buf);
	LCD_DispHZStr(2, 6, kai);
	led=0x00;
	if(min0==0x31)//到一分钟,停止浇灌
	{
	  TR0=0;
      ET0=0;
      LCD_DispHZStr(2, 6, guan);
	  led=0xff;
	  sec0=0x30;
	  sec1=0x30;
	  min0=0x30;
	  min1=0x30;
	  time1_Ini();//启动定时器T1
	  
	
	 
	}

	
	  }
}   		  	    

else 
   {
    time0_Ini();
	LCD_DispHZStr(0, 0, buf2);
	 LCD_DispHZStr(2, 6, kai);
	 led=0;
	if(min0==0x32)
	{
	  TR0=0;
      ET0=0;
      EA=0;
	  led=0xff;
	  sec0=0x30;//时间清零
	  sec1=0x30;
	  min0=0x30;
	  min1=0x30;
	}
	 }
       zf=0; 

       if(temp<0) 		//如果温度在0度以下
         { zf=1;	    //置负数标志
           temp=-temp;	    //求补
         }
       str[4]=dp[temp&0x0f]+0x30;	//求出温度的小数
       temp=temp>>4;	
       str[0]=temp/100+0x30;		//求出百位
       temp=temp%100;
       str[1]=temp/10+0x30;		    //求出十位
       str[2]=temp%10+0x30;		    //求出个位
	   str[3]='.';
       if(zf==1)				//如果是负数
         { if(str[1]=='0') 	//如果十位为0
             { str[0]=' ';		   //显示格式为' -x.x'
               str[1]='-';		  	
             }
           else 					   //如果十位不为0
             str[0]='-';		   //显示格式为'-xx.x'
         }
       else 					       //否则,如果是正数
         { if(str[0]=='0')		   //如果百位、十位都是0
            { if(str[1]=='0')        //显示格式为'  x.x' 
                   str[1]=' ';	   // 如果只有百位为0   
              str[0]=' ';          //显示格式为' xx.x'
             }
         } 
      LCD_DispStr(1.5, 5, str);
   
}
  
 }

  
  
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -