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
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi nhathung1101Ra cửa hàng điện tử bất kỳ.
Dõng dạc hét lên:
- Cho 1 con 4558.
Có luôn. Nó chỉ là con Opamp cùi bắp thông thường thôi mà. Giá 2k hay 3k gì đó.
Nếu muốn âm thanh hay hơn, thì mua NE5535, mất 2 cốc beer thôi.-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 22:38 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi nhathung1101Mạch dùng được, nhưng phải kết hợp với Transistor NPN công suất bên ngoài. Loại chịu điện áp cao, dòng lớn.
Loại mạch này nhái theo cái loại IC họ STR trong mấy cái ti vi cổ lỗ ngày xưa thôi mà. Còn được gọi là "ổn áp...-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 22:28 -
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi Nikon57
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:36 -
-
bởi Nikon57Bộ loa vi tính Microlap cũ của tôi tầng tiền khuyêchs đại bị lỗi. Sau kiểm tra , nguyên nhân là do con chíp 4558D JRC 0077C chết nóng rực. Không thêt tìm được con IC đúng nguyên mã như vậy, để thay thế tôi có thể thay bawngfcon IC 4558 JRC 0058T được không? Mong các bác thành thạo cho ý kiến.
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:36 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi dinhthuong80Mạch trên nếu dùng vào việc khác ( theo người thiết kế ra nó) thì cũng được: làm mạch tiền khuếch đại (pre-Amply) cho "con sò công suất" hay mạch công suất, để chạy cái loa cũng tạm ok.
Các chữ E,B,C trên mạch trên gắn...-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 16:47 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi iTronvây là mình đã hiểu lí do vì sao ông ấy lại đưa mình nguyên hộp có hơn chục cái mạch này trong đó...
-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 12:21 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi mèomướpDạ mạch này hông dùng được ạ. Chú sang chị hàng xóm mượn cái cuốc kiếm góc nào trong bản có nhìu người qua lại để trồng 1 cây cải ngồng, ngày ngày chú chịu khó qua đấy tưới chăm cho nó lớn ạ, vài tháng sau nó to chú mang ra chợ bán...
-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 12:13 -
-
bởi iTronEm được ông anh cho mạch như hình, nhờ ace trong diễn đàn xem giúp mạch này dùng ổn ko và dùng linh kiện công suất nào thì phù hợp.
Xin cảm ơn...-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 11:27 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Vì sản phẩm của họ dân mình có dùng, và có lẽ cũng không phải là không phổ biến, nên ĐT quyết định gởi thư điện tử tiếng Anh cho họ như sau, ( đã sửa vài từ như được góp ý, vì nếu lịch sự thì dù vòng vo cũng nên phản hồi, vì...
-
Channel: Tâm tình dân kỹ thuật
25-02-2025, 16:36 -
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
23-02-2025, 07:44 -
Comment