微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求基于80C52的DHT11温湿度在1602上显示的程序的注释,看问号?

求基于80C52的DHT11温湿度在1602上显示的程序的注释,看问号?

时间:10-02 整理:3721RD 点击:
本人找了一段dht11在1602上显示的程序,但因为莫名的原因注释变成了乱码,求大神帮忙复原一下下付程序:

#include"reg52.h"

#include<intrins.H>

sbit RS = P1^0;   //?

sbit EN = P1^1;

sbit dp = P2^5;

#define RS_CLR RS=0

#define RS_SET RS=1

#define EN_CLR EN=0

#define EN_SET EN=1

//msgnum[]存储短信编号的字符编码,第0字节存储编号位数

unsigned char temp,setmode=0,open=0,start=0,mode=1,rxnum=1,rxbuf[20]={"        "},msgnum[4],delmsgstart=0,phonebuf[15],startsend=0,num_yinhao=0;

unsigned char code atreadmsg[8]={"AT+CMGR="};

unsigned char code atdelmsg[8]={"AT+CMGD="};

unsigned char code atset[9]={"AT+CMGF=1"};

unsigned char code atset2[11]={"AT+CNMI=2,1"};

unsigned char code atsend[9]={"AT+CMGS=\x22"};

unsigned char code atset3[4]={"ATE0"};

unsigned char qqq[5]={0,0,0,0,0},h1=0,h2=0,t1=0,t2=0,baojing=0;

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

/*                    ?                                */

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

void delay_us(unsigned int n) //? ? ?

{

if (n == 0)

  {  

  return ;  

  }

  while (--n);

}

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

/*                    ?                                */

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

void delay_ms(unsigned char i)

{

unsigned char a, b;

for (a = 1; a < i; a++)

{

   for (b = 1; b; b++)

   {   ;   }

    }

}

void delay(unsigned char i) /*?i/10 ms*/

{

unsigned char y;

for(;i >0;i--)

for(y=0;y<28;y++);

}

void delay_10us() /*?10 us*/

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

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

/*                   ?                                 */

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

void LCD_write_com(unsigned char com)

{  

RS_CLR;

EN_SET;

P0 = com;

delay_us(5);

EN_CLR;

}

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

/*                   ?                                 */

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

void LCD_write_Data(unsigned char Data)

{

RS_SET;

EN_SET;

P0 = Data;

delay_us(5);

EN_CLR;

}

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

/*                   ?                                 */

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

void LCD_write_char(unsigned char x,unsigned char y,unsigned char Data)

{     

if (y == 0)

{     

LCD_write_com(0x80 + x);     

}   

else

{     

LCD_write_com(0xC0 + x);     

}        

LCD_write_Data( Data);  

}

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

/*                   ?                                   */

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

void LCD_init(void)

{

   LCD_write_com(0x38); //数据线8位,两行显示,5*7点阵

   LCD_write_com(0x01);    /*?*/ //清屏

   LCD_write_com(0x06);    /*?*///写入数据后光标右移,显示屏不移动

        delay_ms(3);//必须的延时,最少3ms

   LCD_write_com(0x0c);    /*?*///显示开,无光标,光标闪烁

}

void Read(unsigned char * Data) /*?DHT11?*/

{

unsigned char x,m,n,Time_out;

                for(n=0;n<5;n++)

                {

                                for(m=0;m<8;m++)

                                {

                                                while (!dp); /*?bit?50us?,?DHT11?*/

                                                delay_10us(); //?0?1,?0 ?26us-28us,?30us

                                                delay_10us();

                                                _nop_();

                                                _nop_();

//                                                _nop_();

//                                                _nop_();

//                                                _nop_();

//                                                _nop_();

//                                                _nop_();

//                                                _nop_();

//                                                _nop_();

                                                x = 0; /*?x?0*/

                                                if(dp) /*?30us,?x?1*/

                                                                x = 1;

                                                Time_out = 2;

                                                while (dp&&Time_out++); /*?,?DHT11?,?*/

                                                if(Time_out==1) /*?,?Time_out?(?8bit?),?1,?*/

                                                                break; /*?,?*/

                                                *Data <<= 1; /*DHT11?,?,?*/

                                                if(x)

                                                                *Data |= 0x01; /*?x?,?*/

                                }

                                Data++;

                }

}

unsigned char Get_data() /*DHT11?*/

{

                unsigned char o,sum;

                dp = 0; /*?18ms,?DHT11?*/

                delay(180); /*?18ms*/

                dp = 1; /*?20-40us,?DHT11?*/

                delay_10us();

                delay_10us();

                delay_10us();

                if(dp==0) /*DHT11?,?80us*/

                {

                                while (!dp); /*?DHT11?80us,?*/

                                while (dp); /*?DHT11?,?*/

                                Read(qqq); /*?*/

                                for(o=0;o<4;o++) /*?,?32bit?,?8bit*/

                                                sum+=qqq[o];

                                if(sum!=qqq[4]) /*CRC?*/

                                                return 0;

                                else

                                                return 1; /*?,?1; ?,?0*/

                } return 0;

}


没有人吗?

那些都是一些注释 可以直接不要的。

求人气,帮顶,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top