Gast
#4984650
Hi
Versuche gerade von meinem MC die Erfassten Daten von dem DHT11 Sensor,
an das Hyperterminal zu senden. am LCD zeigt er mir die werte an aber
am Hyperterminal nur komische zeichen wie Pfeil Dollar zeichen die sich
auch ändern so bald temperatur steigt oder sinkt. trotz tage langer
versuchung klappt es nicht. die Baudrate ist richtig eingestellt
buchstaben und zahlen kann ich ausgeben das Zeigt das Terminal mir auch
richtig an.
mein C- Code ich hoffe mir kann einer helfen
sbit DHT11=P0^0;
void timer1 (void)
{
TMOD=1;
TH0=185;
TL0 = 12;
TR0 = 1;
while(!TF0);
TR0 = 0;
TF0 = 0;
}
void timer2 (void)
{
TMOD = 1;
TH0 = 255;
TL0 = 241;
TR0 = 1;
while(!TF0);
TR0 = 0;
TF0 = 0;
}
void senden (unsigned int Temp,LuftF,Taupunkt)
{
TMOD = 0x20;
TL1 = 243;
TH1 = 243;
TR1 = 1;
SCON = 0x40;
PCON = 0x80;
EA = 1;
SBUF = Temp;
while(TI==0);
TI = 0;
}
void frage (void)
{
DHT11 = 0;
timer1();
DHT11 = 1;
}
void antwort (void)
{
while(DHT11==1);
while(DHT11==0);
while(DHT11==1);
}
int datei()
{
int i,c=0;
for (i=0; i<8; i++)
{
while(DHT11==0);
timer2();
if(DHT11 == 1)
c = (c<<1)|(1);
else
c = (c<<1);
while(DHT11==1);
}
return c;
}
float a = 17.271;
float b = 237.7;
float taupunktTemp;
float Taupunkt;
void main (void)
{
float Temp,LuftF,Wand=16;
int t1,t2,h1,h2;
char txt[10] ;
char txt1[10];
char txt2[10];
char txt3[10];
init_lcd();
P1=0;
while(1)
{
frage();
antwort();
h1=datei();
h2=datei();
t1=datei();
t2=datei();
Temp=t1;
LuftF=h1;
senden(Temp,LuftF,Taupunkt);
//Berechnung des Taupunktes
taupunktTemp = (a * Temp) / (b + Temp) + log(LuftF/100);
Taupunkt = (b * taupunktTemp) / (a - taupunktTemp);
if(LuftF>65)
{
pos(0);
lcdsend("Achtung L");
zeichen(0xF5);
lcdsend("ften");
pos(40);
sprintf(txt1,"LuftFeuchte= %i",(int)LuftF);
lcdsend(txt1);
zeichen(0x25 );
P1_7=1;
P1_5=0;
}
else if (LuftF<=65)
{
P1_5=1;
P1_7=0;
pos(0);
sprintf(txt,"T=%0.0f",(float)Temp);
lcdsend(txt);
zeichen(0xDF);
lcdsend("C ");
pos(8);
sprintf(txt1,"L=%0.0f",(float)LuftF);
lcdsend(txt1);
zeichen(0x25);
lcdsend(" ");
pos(50);
sprintf(txt3,"W=%0.0f",(float)Wand);
lcdsend(txt3);
zeichen(0xDF);
lcdsend("C ");
pos(40);
sprintf(txt2,"TP=%2.1f",(float)Taupunkt);
lcdsend(txt2);
zeichen(0xDF);
lcdsend("C ");
}
msec(1000);
}
}