Mình đang muốn sử dụng con DHT11 nhưng code bên box Cảm biến không dùng được. Ai đã dùng con này thì cho mình xin cái code or chỉ mình cách lập trình với.
Thông báo
Collapse
No announcement yet.
Hỏi xin Code DHT11 hien thi LCD
Collapse
X
-
Vấn đề này mình đã giải quyết được rồi + chủ đề post rồi không xoá được với cả chẳng biết sao lại không sửa được nữa nên mình sửa lại để giúp bạn nào cần thì dùng. Sau đay là code và file hex.
PHP Code:Project : Do nhiet do va do am bang DHT11
Version : 1
Date : 11/07/2013
Author : Bui Trong Thien
Company : ThienTrang-TEC
Comments:
Chip type : ATmega8
Program type : Application
AVR Core Clock frequency: 16,000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <delay.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#include <alcd.h>
#define DHT_DATA_IN PINC.2
#define DHT_DATA_OUT PORTC.2
#define DHT_DDR_DATA DDRC.2
#define DDROUT 1
#define DDRIN 0
#define DHT_ER 0
#define DHT_OK 1
#define DHT_Temp 0
#define DHT_RH 1
#define ADC_VREF_TYPE 0xE0
//----------------------------------------------------------//
typedef signed char int8_t;
typedef signed int int16_t;
typedef signed long int int32_t;
/* Kieu So Nguyen Khong Dau */
typedef unsigned char uint8_t;
typedef unsigned int uint16_t;
typedef unsigned long int uint32_t;
/* Kieu So Thuc */
typedef float float32_t;
//------------------------------------------------------//
uint8_t DHT_GetTemHumi (uint8_t select);
uint8_t nhiet=0, am=0;
unsigned char vin;
//--------------------------------------------------------//
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
//_-----------------------------------------------------// Lay du lieu tu DHT11
uint8_t DHT_GetTemHumi (uint8_t select)
{
uint8_t buffer[5]={0,0,0,0,0};
uint8_t ii,i,checksum;
DHT_DDR_DATA=DDROUT; // set la cong ra
DHT_DATA_OUT=1;
delay_us(60);
DHT_DATA_OUT=0;
delay_ms(25); // it nhat 18ms
DHT_DATA_OUT=1;
DHT_DDR_DATA=DDRIN;
delay_us(60);
if(DHT_DATA_IN)return DHT_ER ;
else while(!(DHT_DATA_IN)); //Doi DaTa len 1
delay_us(60);
if(!DHT_DATA_IN)return DHT_ER;
else while((DHT_DATA_IN)); //Doi Data ve 0
//Bat dau doc du lieu
for(i=0;i<5;i++)
{
for(ii=0;ii<8;ii++)
{
while((!DHT_DATA_IN));//Doi Data len 1
delay_us(50);
if(DHT_DATA_IN)
{
buffer[i]|=(1<<(7-ii));
while((DHT_DATA_IN));//Doi Data xuong 0
}
}
}
//Tinh toan check sum
checksum=buffer[0]+buffer[1]+buffer[2]+buffer[3];
//Kiem tra check sum
if((checksum)!=buffer[4])return DHT_ER;
//Lay du lieu
if (select==DHT_Temp)
{ //Return the value has been choosen
return(buffer[2]);
}
else if(select==DHT_RH)
{
return(buffer[0]);
}
return DHT_OK;
}
//--------------------------------------------------------------//
static void nhietdovadoam()
{
vin=(read_adc(0)*256)/255; // Nhiet do do bang LM35
nhiet= DHT_GetTemHumi (DHT_Temp); // Nhiet do do bang DHT11
am= DHT_GetTemHumi (DHT_RH); // Do am do bang DHT11
//Nhiet do do bang DHT11
lcd_gotoxy(0,1);
lcd_putsf("T =");
lcd_putchar(48+nhiet/10);
lcd_putchar(48+nhiet%10);
lcd_putchar(0b11011111); // ki tu do
lcd_putsf("C");
// Do am do bang DHT11
//Do am do bang DHT11
lcd_gotoxy(9,1);
lcd_putsf("H =");
lcd_putchar(48+am/10);
lcd_putchar(48+am%10);
lcd_putsf("%");
// Nhiet do do bang LM35
lcd_gotoxy(0,0);
lcd_putsf("Nhiet do: ");
lcd_putchar(48+vin/10);
lcd_putchar(48+vin%10);
lcd_putchar(0b11011111); // ki tu do
lcd_putsf("C");
}
// Read the 8 most significant bits
// of the AD conversion result
// Declare your global variables here
void main(void)
{
// Declare your local variables here
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Alphanumeric LCD initialization
// Connections specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTD Bit 0
// RD - PORTD Bit 1
// EN - PORTD Bit 3
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
while (1)
{
// Place your code here
nhietdovadoam();
}
}
CUNG CẤP LINH KIỆN ĐIỆN TỬ. DỤNG CỤ LÀM MẠCH.
CUNG CẤP LED, MẠCH CÔNG SUẤT.
CUNG CẤP MODULE LED (TRÁI TIM, CUBE)
------------TẠI HẠ LONG------------------
LIÊN HỆ: 0936524718
Comment
-
Mình đa hoàn thành 2 dự án DHT11 giao tiếp với 89s52 và DHT11 với atmega8, mình ko biết upfile lên ntn cả nên mn ai cần gửi mail cho mình::
vankienemk@yahoo.com
đây là atmega8 với dht11 code https://drive.google.com/file/d/0B2u...ew?usp=sharing
Comment
-
Nguyên văn bởi buitrongthie Xem bài viết.................................................. ...............
//_-----------------------------------------------------// Lay du lieu tu DHT11
uint8_t DHT_GetTemHumi (uint8_t select)
{
uint8_t buffer[5]={0,0,0,0,0};
uint8_t ii,i,checksum;
DHT_DDR_DATA=DDROUT; // set la cong ra
DHT_DATA_OUT=1;
delay_us(60);
DHT_DATA_OUT=0;
delay_ms(25); // it nhat 18ms
DHT_DATA_OUT=1;
DHT_DDR_DATA=DDRIN;
delay_us(60);
if(DHT_DATA_IN)return DHT_ER ;
else while(!(DHT_DATA_IN)); //Doi DaTa len 1
delay_us(60);
if(!DHT_DATA_IN)return DHT_ER;
else while((DHT_DATA_IN)); //Doi Data ve 0
//Bat dau doc du lieu
for(i=0;i<5;i++)
{
for(ii=0;ii<8;ii++)
{
while((!DHT_DATA_IN));//Doi Data len 1
delay_us(50);
if(DHT_DATA_IN)
{
buffer[i]|=(1<<(7-ii));
while((DHT_DATA_IN));//Doi Data xuong 0
}
}
}
//Tinh toan check sum
checksum=buffer[0]+buffer[1]+buffer[2]+buffer[3];
//Kiem tra check sum
if((checksum)!=buffer[4])return DHT_ER;
//Lay du lieu
if (select==DHT_Temp)
{ //Return the value has been choosen
return(buffer[2]);
}
else if(select==DHT_RH)
{
return(buffer[0]);
}
return DHT_OK;
}
//--------------------------------------------------------------//
static void nhietdovadoam()
{
vin=(read_adc(0)*256)/255; // Nhiet do do bang LM35
nhiet= DHT_GetTemHumi (DHT_Temp); // Nhiet do do bang DHT11
am= DHT_GetTemHumi (DHT_RH); // Do am do bang DHT11
//Nhiet do do bang DHT11
lcd_gotoxy(0,1);
lcd_putsf("T =");
lcd_putchar(48+nhiet/10);
lcd_putchar(48+nhiet%10);
lcd_putchar(0b11011111); // ki tu do
lcd_putsf("C");
// Do am do bang DHT11
//Do am do bang DHT11
lcd_gotoxy(9,1);
lcd_putsf("H =");
lcd_putchar(48+am/10);
lcd_putchar(48+am%10);
lcd_putsf("%");
// Nhiet do do bang LM35
lcd_gotoxy(0,0);
lcd_putsf("Nhiet do: ");
lcd_putchar(48+vin/10);
lcd_putchar(48+vin%10);
lcd_putchar(0b11011111); // ki tu do
lcd_putsf("C");
}
}[/PHP]
[ATTACH]70004[/ATTACH]
Code:
DHT_DDR_DATA=DDROUT; // set la cong ra
DHT_DATA_OUT=1;
delay_ms(100);
Comment
Bài viết mới nhất
Collapse
-
bởi lionafoxTốt hơn hết là bạn nên mua ngay những hàng hóa mới này và đội ngũ nhân viên của công ty globy b2b https://globy.com/blog sẽ giúp bạn. Đây là một lựa chọn đã được chứng minh. Và tốt nhất là bạn nên truy cập trực tiếp vào trang web của họ, mọi thông tin luôn...
-
Channel: Điện tử gia dụng
Hôm qua, 22:00 -
-
bởi nhathung1101Sợ thì ở nhà với vợ đi ku...
Đã leo lên đây toàn người không biết sợ...
Đến mức lão Đinh Vặn còn dám leo lên mà....-
Channel: Điện tử gia dụng
Hôm qua, 18:37 -
-
bởi mèomướpDạ chú nhat... hông nên nói chơi về thần tiên đâu ạ...
-
Channel: Điện tử gia dụng
Hôm qua, 06:22 -
-
bởi nhathung1101Em ăn chay, thì đã lên chùa.
Em lên chùa thì Bụt chạy mất dép.
Bụt chạy rồi thì mấy kỹ sư biết kêu ai?
Vì rất rất nhiều kỹ sư, vẫn khóc lóc, và Bụt hiện lên hỏi:
- Ếch con, tại sao con khóc???-
Channel: Điện tử gia dụng
28-04-2025, 15:37 -
-
Trả lời cho Về MAIN Máy In EPSON L310bởi minhngoc203Dòng máy này có phần mềm reset epson L310 : https://www.datvietcomputer.com/down...l360-l365.html, nhưng mình nghĩ , máy in có thể lỗi ic rom , bạn nạp lại rom L310 xem.
-
Channel: Điện tử dành cho người mới bắt đầu
27-04-2025, 08:30 -
-
bởi vi van phamCháu đừng khuyên lão nhà thùng như thế. Chỉ uống vai chai lão đã cầm dao tìm mèo thịt. Bây giờ tập dưỡng sinh, ăn vài chai thì........
-
Channel: Điện tử gia dụng
27-04-2025, 07:21 -
-
bởi mèomướpDạ từ bé cháu chỉ dám loanh quanh ở bản thôi ạ hông dám ra ngoài đâu. Chú nhat...với bác vi... nên hạn chế uống rượu, giành thời gian trồng rau, tập dưỡng sinh và thi thoảng ăn chay ạ...
-
Channel: Điện tử gia dụng
27-04-2025, 07:02 -
-
bởi vi van phamNhắn tin khẩn:
Mèo mướp trốn về bản ngay. Lão nhà thùng xỉn, tay cầm dao tìm mèo thịt. Về bản làng nhờ chị hàng xóm giúp đỡ....-
Channel: Điện tử gia dụng
27-04-2025, 05:57 -
-
Trả lời cho Tổng hợp quạt điện : điện tử , Cơ , phun sươngbởi Nikon57Cảm ơn meomuop đã chỉ dẫn. Mình làm theo lời khuyên đầu tiên của bạn " tìm dây và nối lại". Mắt tuy kém nhưng ngồi bình tĩnh vẫn tìm được và đã nối xong như hình. Cảm ơn bạn rất nhiều nhé....
-
Channel: Điện tử gia dụng
26-04-2025, 23:16 -
-
bởi nhathung1101Đệ đang ôm chai đây... Kính lão 1 chén nhé!
Đệ có trên tay dao cạo lông....
Ngắm nghía xung quanh tìm con mèo...
Dưng mà quên mất mèo lên đĩa...
Thôi cứ uống say mặc kệ mèo......-
Channel: Điện tử gia dụng
26-04-2025, 21:33 -
Comment