求基于80C52的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;
}
没有人吗?
那些都是一些注释 可以直接不要的。
求人气,帮顶,