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

標(biāo)題: 單片機(jī)DHT11溫濕度1602程序顯示問題 [打印本頁]

作者: nojiya88    時(shí)間: 2015-10-25 22:45
標(biāo)題: 單片機(jī)DHT11溫濕度1602程序顯示問題
找了個(gè)程序下到單片機(jī),開機(jī)結(jié)果沒有溫濕度顯示出來。顯示出來的是這樣子。。不知什么原因??
程序如下:
#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液晶初始化函數(shù);
void LCD_Display();          //聲明LCD_Display液晶顯示函數(shù);
void Rec_DHT();                //聲明Rec_DHT,DHT11接收數(shù)據(jù)函數(shù);

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

/********主機(jī)發(fā)出開始信號*******/
void DHT11_Start()           //請結(jié)合時(shí)序圖分析
{
         DHTIO=1;
         delay1();
         DHTIO=0;
         delay(20);   //保持電平時(shí)間大于18ms
         DHTIO=1;
         delay1();     //延遲等待20-40us
         delay1();
         delay1();
         delay1();
         delay1();
}
/********DHT11接收一個(gè)字節(jié)數(shù)據(jù)*******/
uchar receive_data()
{
         uchar i,temp,count;
         data_byte=0;
         for(i=0;i<8;i++)
         {
                count=2;
                while((!DHTIO)&&count++);//等待50us低電平結(jié)束
                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接收數(shù)據(jù)*******/
void Rec_DHT()
{
               uchar flag;
         DHT11_Start();//主機(jī)發(fā)出開始信號
         DHTIO=1;      //拉高等待DHT11響應(yīng)
    if(!DHTIO)    //從機(jī)發(fā)出響應(yīng)信號
    {
        flag = 2;
        while((!DHTIO) && flag++);  
//判斷從機(jī)是否發(fā)出 80us 的低電平響應(yīng)信號是否結(jié)束
        flag = 2;
        while(DHTIO && flag++);  
//判斷從機(jī)是否發(fā)出 80us 的高電平,若發(fā)出則開始采集數(shù)據(jù)
        Tem_Z = receive_data();   //采集濕度整數(shù)部分
        Tem_X = receive_data();   //采集濕度小數(shù)部分
        Hum_Z = receive_data();   //采集溫度整數(shù)部分
        Hum_X = receive_data();   //采集溫度小數(shù)部分
        Check = receive_data();   //采集校驗(yàn)位
                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);   //注:此部分因采用的最小系統(tǒng)板電路設(shè)計(jì)原因,需要將字節(jié)信息逆置;
         LCDRS=0;
         LCDEN=0;
         delay(2);
         LCDEN=1;
         P0=com;
         delay(2);
         LCDEN=0;   
}
/*******數(shù)據(jù)碼*******/
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);   //注:此部分因采用的最小系統(tǒng)板電路設(shè)計(jì)原因,需要將字節(jié)信息逆置;
         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);   //顯示模式設(shè)置,設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
  delay(2);
  write_com(0x0c);   //顯示開關(guān)及光標(biāo)設(shè)置
  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);  //輸出溫度的個(gè)位
         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);     //輸出濕度的個(gè)位
         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 (693.79 KB, 下載次數(shù): 140)

IMG_20151025_222510.jpg

作者: admin    時(shí)間: 2015-10-25 23:10
應(yīng)該是程序和你的實(shí)際電路不對
作者: nojiya88    時(shí)間: 2015-10-26 10:41
在開發(fā)板上面試機(jī)的,接口都調(diào)整過了
作者: HWL0541    時(shí)間: 2015-10-26 14:45
看看實(shí)際接線有沒有不通的,我就遇到1根線不通
作者: paomo113355    時(shí)間: 2015-10-26 17:56
如果是在開發(fā)板上,多半是程序的問題,有的地方延時(shí)需要長一點(diǎn),測忙程序也容容易出錯(cuò)
作者: nojiya88    時(shí)間: 2015-10-26 20:48
換了另外1個(gè)程序就正常了。。。
作者: 十點(diǎn)是十分    時(shí)間: 2016-5-31 18:21
nojiya88 發(fā)表于 2015-10-26 20:48
換了另外1個(gè)程序就正常了。。。

樓主找到什么原因了嗎!我也試了這個(gè)程序,一樣的結(jié)果,沒有找到原因。樓主解決了能不能跟小弟分享一下什么原因?
作者: a計(jì)劃    時(shí)間: 2017-5-3 15:52
端口不對吧
作者: a計(jì)劃    時(shí)間: 2017-5-3 15:53
端口不對吧




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品看片 | 日韩淫片免费看 | 蜜臀久久99精品久久久久野外 | 欧美一区二区三区的 | 中文字幕一区二区三区在线乱码 | 国产视频中文字幕 | 91免费电影 | 久久av.com | 91色在线| 国产一区二区毛片 | 国产精品久久久久无码av | 日本h片在线观看 | 欧美成人一区二区三区 | 国产精品成av人在线视午夜片 | 最新超碰| 久久精品aaa | 成人精品免费 | 激情欧美日韩一区二区 | 美女久久久久久久久 | 中文字幕在线观 | 国产精品成人在线播放 | 亚洲精品中文字幕在线观看 | 久久精品一二三影院 | 丁香综合 | 中文字幕精品一区 | 久久免费精品 | 91精品国产综合久久久动漫日韩 | 人人叉 | 免费网站国产 | 国产欧美日韩综合精品一 | 久久久www成人免费精品张筱雨 | 中文字幕日本一区二区 | 羞羞网站在线观看 | 久久久久九九九女人毛片 | 亚洲欧美日韩久久 | 国产精品久久久久久久久 | 蜜桃传媒av | 97伦理影院| 麻豆a级片 | 日韩精品 电影一区 亚洲 | 午夜精品一区 |