找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 846|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機程序仿真非常完美,實物焊接顯示00,有沒有大神指點 求幫助

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:455442 發(fā)表于 2020-3-17 13:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
仿真很好,但是焊接實物測試連接DHT11模塊顯示00  有沒有大神指點程序如下  自己編寫

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar wendu=30,shidu=50;//初始溫濕度上限設定
uchar data_byte;
uchar HH,HL,TH,TL;
sbit lcden=P2^7;//定義1602使能端
sbit lcdrs=P2^6;
sbit lcdrw=P2^5;
sbit io=P2^0;//定義數(shù)據(jù)口
sbit s0=P3^0;//定義獨立按鍵口
sbit s1=P3^1;
sbit s2=P3^2;
sbit s3=P3^3;
sbit bee= P1^0;//蜂鳴器口
sbit led1=P1^1;//報警燈口
sbit led2=P1^2;
uchar num;
void delay10(void)   //延時10us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=1;a>0;a--);
}

void delay(uint z )//延時
{
  uint x,y;
  for(x=z;x>0;x--)
      for(y=110;y>0;y--);
}
void delay1()//8us延時
{
  uchar i;
  for(i=0;i<1;i++);
}
//***************LCD1602顯示程序*****************//
void write_com(uchar com)//寫命令
{
        lcdrw=0;
  lcdrs=0;
  P0=com;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}
void write_data(uchar date)//寫數(shù)據(jù)
{
        lcdrw=0;
  lcdrs=1;
  P0=date;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}
void init()//LCD初始化
{
  lcden=0;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80+ 0x1);
}
void write_addr(uchar addr)//寫地址
{     
write_com(addr|0x80) ;
}
void display(uchar addr, uchar q)//在某一地址顯示某一數(shù)據(jù)
{   
delay(5) ;
write_addr(addr) ;
write_data(q) ;
delay(5);
}
//************DHT11程序************//
void start()//開始信號
{
io=1;//主機拉高
delay1();//延時
io=0;//發(fā)送開始信號
delay(25);//延時>18ms
io=1;//開始信號結(jié)束后拉高電平
delay10();//20-40us
delay10();
delay10();
}
uchar receive_byte()//接收一個字節(jié)
{
uchar i,temp;
for(i=0;i<8;i++)//接收8bit數(shù)據(jù)
{
while(!io)//等待50us低電平結(jié)束
  delay1();
  delay1();
  delay1();
  delay1();//延時24us
temp=0;
if(io==1)temp=1;

while(io);

data_byte<<=1;   
data_byte|=temp;
}
return data_byte;
}
void receive()//接收數(shù)據(jù)
{
uchar T_H,T_L,H_H,H_L,check,num_check;

start();//開始
io=1;
if(!io)//讀取DHT11開始信號
{
while(!io);//DHT11高電平80us是否結(jié)束
while(io);
H_H=receive_byte();
H_L=receive_byte();
T_H=receive_byte();
T_L=receive_byte();
check=receive_byte();
io=0;              //拉低延遲50us
delay10();
delay10();
delay10();
delay10();
delay10();
io=1;
num_check=H_H+H_L+T_H+T_L;//校驗
if(num_check=check)
{
HH=H_H;
HL=H_L;
TH=T_H;
TL=T_L;
check=num_check;
}
}
}
//*************報警*************//
void warn()
{
if(TH>=wendu)
  {
                bee=1;
                led2=1;

  }
if(HH>=shidu)
  {
        bee=1;
                led1=1;

  }
if(TH<wendu  &&   HH<shidu)
{bee=0;
led1=0;
led2=0;
}
}
//************溫濕度設置***********//
void shezhi()
{
        if(s0==0)
    {
      delay(5);
      if(s0==0)
                        {
                          while(s0==0);
                                wendu++;
                                           display(0x4c,wendu/10+0x30);
            display(0x4d,wendu%10+0x30);
                                if(wendu>50)
                                        wendu=0;
                        }                        
                }        
        if(s1==0)
    {
      delay(5);
      if(s1==0)
                        {
                          while(s1==0);
                                wendu--;
                                           display(0x4c,wendu/10+0x30);
            display(0x4d,wendu%10+0x30);
                                if(wendu==0)
                                        wendu=50;
                        }                                
                }        
        if(s2==0)
    {
      delay(5);
      if(s2==0)
                        {
                          while(s2==0);
                                shidu++;
                display(0x0c,shidu/10+0x30);
         display(0x0d,shidu%10+0x30);        
                                if(shidu==100)
                                        shidu=0;
                        }                                
                }        
        if(s3==0)
    {
      delay(5);
      if(s3==0)
                        {
                          while(s3==0);
                                shidu--;
                display(0x0c,shidu/10+0x30);
         display(0x0d,shidu%10+0x30);        
                                if(shidu==0)
                                        shidu=100;
                        }                                
                }        
}
//**************主函數(shù)***************//
void main()
{
  init();//初始化
        while(1)
        {
                receive();//接收DHT11數(shù)據(jù)
                delay(30);
display(0x00,'H');//顯示濕度
                delay(30);
display(0x01,'U');
                delay(30);
display(0x02,'M');
                delay(30);
display(0x03,':');
                delay(30);
        display(0x04,HH/10+0x30);//顯示DHT11數(shù)據(jù)
                delay(30);
        display(0x05,HH%10+0x30);
                delay(30);
display(0x06,'%');
                delay(30);
display(0x08,'M');//顯示設定濕度上限
                delay(30);
display(0x09,'A');
                delay(30);
display(0x0a,'X');
                delay(30);
display(0x0b,':');
    delay(30);
        display(0x0c,shidu/10+0x30);
        delay(30);
  display(0x0d,shidu%10+0x30);        
        delay(30);
display(0x0e,'%');
    delay(30);
display(0x40,'T');//顯示溫度
delay(30);
display(0x41,'E');
delay(30);
display(0x42,'M');
delay(30);
display(0x43,':');
  delay(30);
        display(0x44,TH/10+0x30);//顯示DHT11數(shù)據(jù)
        delay(30);
        display(0x45,TH%10+0x30);
        delay(30);
display(0x46,'C');
delay(30);
display(0x48,'M');//顯示設定溫度上限
delay(30);
display(0x49,'A');
delay(30);
display(0x4a,'X');
delay(30);
display(0x4b,':');
  delay(30);
        display(0x4c,wendu/10+0x30);
        delay(30);
  display(0x4d,wendu%10+0x30);
        delay(30);
display(0x4e,'C');
delay(30);
shezhi();//溫室度上限設置
delay(30);
warn();//報警  
delay(100);
}
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表