久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7287|回復: 8
收起左側

單片機DHT11溫濕度1602程序顯示問題

[復制鏈接]
ID:66729 發表于 2015-10-25 22:45 | 顯示全部樓層 |閱讀模式
找了個程序下到單片機,開機結果沒有溫濕度顯示出來。顯示出來的是這樣子。。不知什么原因??
程序如下:
#include "reg52.h"
#define uchar unsigned char  //宏定義
#define uint unsigned int
sbit   DHTIO = P1^1;   //管腳定義,DHT11總線輸入輸出;
sbit  LCDRS = P2^3;   //管腳定義,1602液晶RS控制端;
sbit  LCDWR = P2^4;  //管腳定義,1602液晶W/R控制端;
sbit   LCDEN = P2^5;   //管腳定義,1602液晶EN使能端;
uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};
uchar data_byte;
uchar Tem_Z,Tem_X,Hum_Z,Hum_X,Check;
void LCD_Init();                 //聲明LCD_Init液晶初始化函數;
void LCD_Display();          //聲明LCD_Display液晶顯示函數;
void Rec_DHT();                //聲明Rec_DHT,DHT11接收數據函數;

//主函數
void main()
{
         LCD_Init();
         while(1)               
         {
                Rec_DHT();
                LCD_Display();   
         }
}
/*********延時函數********/
void delay(uchar ms)
{      
         uchar i ;
         while(ms--)
         {
           for(i=0;i<250;i++);
         }
}
/***延時10us***/
void delay1()
{
         uchar i;
         i--;i--;i--;
         i--;i--;i--;
}

/********主機發出開始信號*******/
void DHT11_Start()           //請結合時序圖分析
{
         DHTIO=1;
         delay1();
         DHTIO=0;
         delay(20);   //保持電平時間大于18ms
         DHTIO=1;
         delay1();     //延遲等待20-40us
         delay1();
         delay1();
         delay1();
         delay1();
}
/********DHT11接收一個字節數據*******/
uchar receive_data()
{
         uchar i,temp,count;
         data_byte=0;
         for(i=0;i<8;i++)
         {
                count=2;
                while((!DHTIO)&&count++);//等待50us低電平結束
                temp=0;
                delay1();delay1();delay1();delay1();
                if(DHTIO==1)   
                {
                       temp=1;
                       count=2;
                   while((DHTIO)&&count++);
                }      
                if(count==1)      break;
                data_byte<<=1;  
                data_byte|=temp;
         }
         return data_byte;
}
/********DHT11接收數據*******/
void Rec_DHT()
{
               uchar flag;
         DHT11_Start();//主機發出開始信號
         DHTIO=1;      //拉高等待DHT11響應
    if(!DHTIO)    //從機發出響應信號
    {
        flag = 2;
        while((!DHTIO) && flag++);  
//判斷從機是否發出 80us 的低電平響應信號是否結束
        flag = 2;
        while(DHTIO && flag++);  
//判斷從機是否發出 80us 的高電平,若發出則開始采集數據
        Tem_Z = receive_data();   //采集濕度整數部分
        Tem_X = receive_data();   //采集濕度小數部分
        Hum_Z = receive_data();   //采集溫度整數部分
        Hum_X = receive_data();   //采集溫度小數部分
        Check = receive_data();   //采集校驗位
                DHTIO = 1;
    }
}
/*******指令碼*******/
void write_com(uchar com)
{
  com=((com&0x01)<<7)|((com&0x02)<<5)|((com&0x04)<<3)|((com&0x08)<<1)|((com&0x10)>>1)|((com&0x20)>>3)|((com&0x40)>>5)|((com&0x80)>>7);   //注:此部分因采用的最小系統板電路設計原因,需要將字節信息逆置;
         LCDRS=0;
         LCDEN=0;
         delay(2);
         LCDEN=1;
         P0=com;
         delay(2);
         LCDEN=0;   
}
/*******數據碼*******/
void write_data(uchar date)
{
  date=((date&0x01)<<7)|((date&0x02)<<5)|((date&0x04)<<3)|((date&0x08)<<1)|((date&0x10)>>1)|((date&0x20)>>3)|((date&0x40)>>5)|((date&0x80)>>7);   //注:此部分因采用的最小系統板電路設計原因,需要將字節信息逆置;
         LCDRS=1;
         LCDEN=0;
         delay(2);
         LCDEN=1;
         P0=date;
         delay(2);
         LCDEN=0;
}
/*********************/
/********1602液晶顯示初始化*******/
void LCD_Init()   
{
  LCDEN=0;             //使能低電平
  LCDWR=0;   
  write_com(0x38);   //顯示模式設置,設置16*2顯示,5*7點陣,8位數據接口
  delay(2);
  write_com(0x0c);   //顯示開關及光標設置
  delay(2);
  write_com(0x06);
  delay(2);
  write_com(0x01);   //清屏
  delay(2);
}
/**********1602液晶顯示*********/
void LCD_Display()
{
//液晶顯示第一行:溫度顯示;
         write_com(0x0c);
         write_com(0x81);delay(2);
         write_data('T');delay(2);
         write_data('e');delay(2);
         write_data('m');delay(2);            
         write_data(':');delay(2);
         write_com(0x86);delay(2);
         write_data(table[(Tem_Z/10)]);delay(2);   //輸出溫度的十位
         write_data(table[(Tem_Z%10)]);delay(2);  //輸出溫度的個位
         write_data('.');delay(2);
         write_data('0');delay(2);
         write_data('0');delay(2);
         write_com(0x8c);delay(2);
         write_data(0xdf);delay(2);    //輸出℃
         write_data(0x43);delay(2);
//液晶第二行:濕度顯示;
         write_com(0xc1);delay(2);
         write_data('H');delay(2);
         write_data('u');delay(2);
         write_data('m');delay(2);
         write_data(':');delay(2);
         write_com(0xc6);delay(2);
         write_data(table[(Hum_Z/10)]);delay(2);       //輸出濕度的十位
         write_data(table[(Hum_Z%10)]);delay(2);     //輸出濕度的個位
         write_data('.');delay(2);
         write_data('0');delay(2);
         write_data('0');delay(2);
         write_com(0xcc);delay(2);
         write_data('%');delay(2);
}
  程序編譯沒問題,否則無法生成HEX文件的。。。
IMG_20151025_222510.jpg
回復

使用道具 舉報

ID:1 發表于 2015-10-25 23:10 來自手機 | 顯示全部樓層
應該是程序和你的實際電路不對
回復

使用道具 舉報

ID:66729 發表于 2015-10-26 10:41 來自手機 | 顯示全部樓層
在開發板上面試機的,接口都調整過了
回復

使用道具 舉報

ID:91165 發表于 2015-10-26 14:45 | 顯示全部樓層
看看實際接線有沒有不通的,我就遇到1根線不通
回復

使用道具 舉報

ID:91424 發表于 2015-10-26 17:56 | 顯示全部樓層
如果是在開發板上,多半是程序的問題,有的地方延時需要長一點,測忙程序也容容易出錯
回復

使用道具 舉報

ID:66729 發表于 2015-10-26 20:48 來自手機 | 顯示全部樓層
換了另外1個程序就正常了。。。
回復

使用道具 舉報

ID:107177 發表于 2016-5-31 18:21 | 顯示全部樓層
nojiya88 發表于 2015-10-26 20:48
換了另外1個程序就正常了。。。

樓主找到什么原因了嗎!我也試了這個程序,一樣的結果,沒有找到原因。樓主解決了能不能跟小弟分享一下什么原因?
回復

使用道具 舉報

ID:193152 發表于 2017-5-3 15:52 | 顯示全部樓層
端口不對吧
回復

使用道具 舉報

ID:193152 發表于 2017-5-3 15:53 | 顯示全部樓層
端口不對吧
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩亚洲国产综合 | 免费色网址 | 日韩一二三区 | 日韩精品一区二区三区中文在线 | 一级片在线视频 | 国产精品a久久久久 | 国产精品美女久久久久aⅴ国产馆 | 国产精品综合一区二区 | 欧美一区二区成人 | 久久久av | 久久99精品久久久97夜夜嗨 | 99久久亚洲 | 日本免费一区二区三区 | 天堂色 | 欧美一级片久久 | 欧洲精品码一区二区三区免费看 | 国产99免费 | 国产成人综合亚洲欧美94在线 | 中国av在线免费观看 | 99国产精品99久久久久久粉嫩 | 视频在线一区 | 欧美日韩国产在线观看 | 久久久www成人免费无遮挡大片 | 久久网站黄 | 天天干com| 人人干人人草 | 日日操视频 | 成人免费福利视频 | 日韩亚洲一区二区 | 亚洲成色777777在线观看影院 | 欧美在线a | 亚洲综合一区二区三区 | 一区在线视频 | 一区二区三区精品视频 | 在线成人www免费观看视频 | 精品久久亚洲 | www.欧美视频 | 成人一区二区视频 | 亚洲精品一区二区网址 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 亚洲专区在线 |