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

📄 main.c

📁 SHT10温湿度测试
💻 C
字号:
#include "reg52.h"
#include "44KEY.h"
#include "LED.h"
#include "SHT10.h"
#include "Psener.h"

#define uchar unsigned char
#define uint unsigned int
unsigned char a; 
bit read_flag=0;

void mDelay(unsigned int j)
{
    uint i;
	for(;j>0;j--)
	{
	    for(i=124;i>0;i--)
		{;}
	}
}

void init_serialcomm(void) 
{ 
    SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr  
    TMOD |= 0x20;       //TMOD: timer 1, mode 2, 8-bit reload  
    PCON |= 0x80;       //SMOD=1;  
    TH1   = 0xF3;       //Baud:4800  fosc=12MHz  
    IE   |= 0x90;       //Enable Serial Interrupt  
    TR1   = 1;          // timer 1 run  
   //TI=0;  
} 
 
void send_char_com(unsigned char ch) //向串口发送一个字符   
{ 
    SBUF=ch; 
    while(!TI); 
    TI=0; 
} 
 
//向串口发送一个字符串,strlen为该字符串长度  
/*void send_string_com(unsigned char *str,unsigned int strlen) 
{ 
    unsigned int k=0; 
    do  
    { 
        send_char_com(*(str + k)); 
        k++; 
    } while(k < strlen); 
}*/ 
  
void serial () interrupt 4 using 3 //串口接收中断函数  
{ 
    if(RI) 
    { 
        unsigned char ch; 
        RI = 0; 
        ch=SBUF; 
        a=ch;
			  
        //checksum ^= ch; 
       //if((count3==(INBUF_LEN-1))&&(!checksum))//如果串口接收的数据达到INBUF_LEN个,且校验没错,就置位取数标志 
        //{ 
        read_flag=1;                  
        //} 
        }  
} 


void main(void)
{   
    P1=0xff;
    init_serialcomm();  //初始化串口
    while(1)
    {   KeyScan();
        KeyFree();

	if(key==3)        //如果要测温度    
        {
	    mDelay(100);
            if(key==3)
	    {   
                
                key=0;
		        P0=0xff;
                tempvalue = 0; 
				flag = 1;
				SHT10();
				//led_show4dian();
				
            }
       }      
        
	if(key==4)        //如果要测湿度    
        {
	        mDelay(100);
            if(key==4)
	        {
                key=0;
		        P0=0xff;
                //tempvalue2 = 0;	
				flag = 2;
				SHT10();
				//led_show4dian();
            }
        }

		if(key==5)        //如果要测压力    
        {
	    mDelay(100);
            if(key==5)
	    {   
                
                key=0;
		        P0=0xff;
				fg=0; 
				flag1 = 4;
				Psener();
				//led_show4dian();
				
            }
       }     
        
        if(read_flag)  //如果取数标志已置位,就将读到的数从串口发出  
          { 
               read_flag=0; //取数标志清 0 
			   if(a==0x13)      //如果要测温度
	           { 
			     flag = 3;
			     SHT10(); 
				 InttoChar(wendu); 	
                 send_char_com(AsciiArray[0]); 
				  send_char_com(AsciiArray[1]);
				  send_char_com(46);
				  send_char_com(AsciiArray[2]); 
				  send_char_com(AsciiArray[3]);
				  send_char_com(35);
               } 	
               if(a==0x14)     //如果要测湿度
               {  
			      flag = 3;
			      SHT10();
				  InttoChar(shidu);  
				    
                  send_char_com(AsciiArray[0]);
				  send_char_com(AsciiArray[1]);
				  send_char_com(46);
				  send_char_com(AsciiArray[2]);
				  send_char_com(AsciiArray[3]);
				  send_char_com(37);
				  send_char_com(35);
               } 
			   if(a==0x15)     //如果要测湿度
               {  
			      flag1 = 3;
			      Psener(); 
           
				  send_char_com(AsciiArray[0]);
				  send_char_com(AsciiArray[1]);
				  send_char_com(AsciiArray[2]);
				  send_char_com(AsciiArray[3]);
				  send_char_com(35);
               } 
           }

      
   }
}

⌨️ 快捷键说明

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