自己用msp430單片機做的溫度濕度測量,使用的是DHT11傳感器,用lcd1602顯示,可正常的顯示濕度溫度
下載:
dht11濕度溫度測量.rar
(2.13 KB, 下載次數: 134)
2016-11-13 11:56 上傳
點擊文件名下載附件
msp430源碼:
- /*
- * humidity.h
- *
- * Created on: 2016年11月5日
- * Author: Administrator
- */
- #ifndef HUMIDITY_H_
- #define HUMIDITY_H_
- #include "lcd1602.h"
- #define CPU_F ((double)1000000)
- #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) //微秒延時程序
- #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
- uchar Read_dht11_byte();
- void Get_dat();
- uint R_H,R_L,T_H,T_L,RH,RL,TH,TL,check1,check;
- uchar H1[1],T1[1],H[1],T[1];
- uchar Read_dht11_byte()
- {
- uchar i = 0,dat = 0,k;
- P2DIR &= ~BIT1;
- for(i=0;i<8;i++)
- {
- while(!(P2IN & BIT1));
- delay_us(20);
- if((P2IN&BIT1))
- {
- k = 1;
- while((BIT1 & P2IN));
- }
- else
- k = 0;
- dat <<= 1;
- dat |= k;
- }
- return dat;
- }
- void Get_dat()
- {
- P2DIR |= BIT1;
- P2OUT &= ~BIT1;
- P2OUT |= BIT1;
- P2OUT &= ~BIT1;
- delay_ms(18);
- P2OUT |= BIT1;
- delay_us(20);
- P2DIR &= ~BIT1;
- if(!(P2IN & BIT1))//等待DHT低電平響應
- {
- while (!(P2IN & BIT1));//等待80us響應電平過去
- while((P2IN & BIT1));//等待80us的準備信號過去
- R_H = Read_dht11_byte();
- R_L = Read_dht11_byte();
- T_H = Read_dht11_byte();
- T_L = Read_dht11_byte();
- check1 = Read_dht11_byte();
- check = (R_H+R_L+T_H+T_L);
- if(check == check1)
- {
- RH = R_H;
- RL = R_L;
- TH = T_H;
- TL = T_L;
- }
- H1[0] =(char) (0x30 + RH /10);
- H[0] = (char)(0x30 + RH %10);
- T1[0] =(char) (0x30 + TH /10);
- T[0] = (char)(0x30 + TH %10);
- LCDShowStr(0,0,"H:");
- LCDShowStr(2,0,H1);
- LCDShowStr(3,0,H);
- LCDShowStr(4,0,"%RH");
- LCDShowStr(0,1,"T:");
- LCDShowStr(2,1,T1);
- LCDShowStr(3,1,T);
- LCDShowStr(4,1,"C");
- }
- }
- #endif /* HUMIDITY_H_ */
復制代碼
|