欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 溫濕度檢測儀設計報告 [打印本頁]

作者: zzzzz苗    時間: 2018-1-5 17:56
標題: 溫濕度檢測儀設計報告
目  錄

1 目的與意義--------------------------------------------------------------------------------------- 1
2 設計要求------------------------------------------------------------------------------------------ 1
3 方案設計------------------------------------------------------------------------------------------ 1
3.1 方案一------------------------------------------------------------------------------------- 1
        3.2 方案二------------------------------------------------------------------------------------------2
4 系統硬件設計------------------------------------------------------------------------------------- 2
4.1 STC89C52主控電路---------------------------------------------------------------------- 3
4.2 DTH11溫濕度檢測電路----------------------------------------------------------------- 4
4.3 LCD1602液晶屏顯示電路--------------------------------------------------------------- 5
5 系統軟件設計------------------------------------------------------------------------------------- 6
5.1 主程序程序流程圖----------------------------------------------------------------------- 6
5.2 溫濕度檢測程序-------------------------------------------------------------------------- 2
5.3 LCD1206顯示程序----------------------------------------------------------------------- 9
6 系統測試結果與分析--------------------------------------------------------------------------- 11
6.1 系統測試結果--------------------------------------------------------------------------- 11
6.2 系統結果分析--------------------------------------------------------------------------- 11
7 總結----------------------------------------------------------------------------------------------- 11
參考文獻-------------------------------------------------------------------------------------------- 11
附錄------------------------------------------------------------------------------------------------- 12
附錄A  系統實物圖------------------------------------------------------------------------ 12
附錄B 系統主程序------------------------------------------------------------------------- 12




1 目的與意義溫濕檢測在倉庫管理、生產制造、氣象觀測、科學研究、國防軍事以及日常生活中有廣泛的應用,傳統的模擬式溫濕度傳感器一般都要設計信號調理電路并需要經過復雜的校準和標定過程,因此測量精度難以保證,且在線性度、重復度、互換性、一致性等方面往往不盡人意。
由于溫濕度傳感器及其控制系統是20世紀90年代才興起的行業(yè),因此利用溫濕度傳感器設計一款將度高、穩(wěn)定性好、成本低的溫濕度檢測器有一定的市場前景。此單片機課程設計采用具有高精度,防干擾等優(yōu)點的傳感器,結合單片機技術,設計完成的溫濕度檢測器具有易攜帶、低功率等特點。克服了傳統溫濕度檢測器需要校準的過程和精度較低的缺點。

2 設計要求  (1)模擬單總線協議與DTH11進行通信;
  (2)LCD1602第一行顯示檢測的溫度值:Temperature 22℃
  (3)LCD1602第二行顯示檢測的濕度值:Humidity 75%RH

3 方案設計溫濕度檢測器的組成部分:
附錄B 系統主程序



  1. #include<reg52.h>#include<intrins.h>//****************************************************
  2. //***********************定義區(qū)***********************
  3. //****************************************************#define uchar unsigned char#define uint unsigned int
  4. #define LCD1602_DB P2     sbit DQ=P3^7;   sbit LCD1602_RS = P0^7;sbit LCD1602_RW = P0^6;sbit LCD1602_EN = P0^5;  

  5. void Lcd1602_Delay1ms(uint c);
  6. void Read_Busy();        void Write_Cmd(unsigned char cmd);   void Write_Data(unsigned char dat);   void LcdSetCursor(unsigned char x,unsigned chary);  void DisplayOneChar (uchar X,uchar Y,uchar DData);void LcdShowStr(unsigned char x,unsigned chary,unsigned char *str);   void InitLcd1602();            //****************************************************
  7. //******************1602顯示初始化****************
  8. //****************************************************uchar code ASCII[]="0123456789%c";uchar code table0[]="Temperature:00";uchar code table1[]="Humidity:00";uchar tem;uchar hum;
  9. void InitLcd1602()         {Write_Cmd(0x38);      Write_Cmd(0x0c);   Write_Cmd(0x06);   Write_Cmd(0x01);      }  
  10. void Read_Busy()             unsignedchar sta;          LCD1602_DB =0xff;    LCD1602_RS =0;    LCD1602_RW =1;    do    {       LCD1602_EN = 1;        sta =LCD1602_DB;       LCD1602_EN = 0;      }              while(sta& 0x80);}
  11. void Write_Cmd(uchar cmd)     //寫命令{    Read_Busy();    LCD1602_RS =0;    LCD1602_RW =0;    LCD1602_DB =cmd;    LCD1602_EN =1;    LCD1602_EN =0;   }
  12. void Write_Data(uchar dat)   //讀數據     Read_Busy();      LCD1602_RS= 1;      LCD1602_RW= 0;      LCD1602_DB = dat;      LCD1602_EN= 1;      LCD1602_EN= 0;}

  13. //*****************************************************//*********************定義顯示函數********************//*****************************************************
  14. void LcdSetCursor(unsigned char x,unsigned char y){    unsignedchar addr;    if(y == 0)        addr =0x00 + x;    else        addr =0x40 + x;      Write_Cmd(addr|0x80);}
  15. void DisplayOneChar (uchar X,uchar Y,uchar DData)//顯示字符{  if(Y)   X|=0X40;  //Y=1顯示第一行,Y=0顯示第二行             X|=0X80;             Write_Cmd(X);//X用來選擇哪一位Write_Data(DData); //Ddata用來寫數據}
  16. void LcdShowStr(unsigned char x,unsigned chary,unsigned char *str) //顯示字符串{   LcdSetCursor(x,y);      //當前字符坐標    while(*str!= '\0')    {     Write_Data(*str++);    }}

  17. //************************************************
  18. //**********************延時函數******************
  19. //*************************************************void delay_ms(uint z){uint x,y;for(x=z;x>0;x--)for(y=114;y>0;y--);}
  20. //*******************************************************
  21. //*************************DTH11模塊*********************
  22. //*******************************************************//**************************初始化DTH11bit Init_DTH11(){bit flag;uchar num;DQ=0;delay_ms(19);   // >18msDQ=1;for(num=0;num<11;num++);   // 20-40us 34.7usflag=DQ;for(num=0;num<27;num++);   for(num=0;num<27;num++);   return flag;}//****************************讀DTH11數據uchar DTH11_RD_CHAR(){uchar byte=0;uchar num;uchar num1;while(DQ==1);for(num1=0;num1<8;num1++){  while(DQ==0);byte<<=1;     //¸ßλÔúǰfor(num=0;DQ==1;num++);  if(num<10)   byte|=0;  else   byte|=1;}return byte;}//******************************讀取DTH11溫度和濕度void DTH11_DUSHU(){uchar num;if(Init_DTH11()==0){hum=DTH11_RD_CHAR();DTH11_RD_CHAR();tem=DTH11_RD_CHAR();DTH11_RD_CHAR();DTH11_RD_CHAR();for(num=0;num<17;num++);  DQ=1;}}


  23. //****************************************************
  24. //***************將檢測到的數據顯示模塊***************
  25. //****************************************************
  26. display0[2]={0,0};display1[2]={0,0};void Display_DTH11(){display0[1]=tem/10%10;display0[0]=tem%10;LcdShowStr(0, 0, table0);DisplayOneChar(12,  0, ASCII[ display0[1] ] );DisplayOneChar(13,  0, ASCII[ display0[0] ] );DisplayOneChar(14, 0, 0xdf );DisplayOneChar(15, 0, 0x43 );      display1[1]=hum/10%10;display1[0]=hum%10;LcdShowStr(0, 1, table1);DisplayOneChar( 9, 1, ASCII[ display1[1] ] );DisplayOneChar(10, 1, ASCII[ display1[0] ] );DisplayOneChar(11, 1, ASCII[10] );   DisplayOneChar(12, 1, 0x52);DisplayOneChar(13, 1, 0x48);}  //*****************************************************
  27. //********************主函數***************************
  28. //*****************************************************
  29. void main(){tem=0;hum=0;delay_ms(1000);   InitLcd1602();while(1){  DTH11_DUSHU();Display_DTH11();delay_ms(1000);}
  30. }
復制代碼





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1