Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.62 MB, 163 trang )
ĐỒ ÁN TỐT NGHIỆP
Trang 40/42
PHỤ LỤC
#include <16F877A.h>
#device *=16 adc = 10
#FUSES NOWDT
#FUSES NOBROWNOUT
#FUSES NOLVP
#use delay(crystal=20M)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include
#define ChanDHT PIN_C0
void KhoiDongDHT();
unsigned int8 DocGiaTri();
int1 KiemTra();
unsigned
int8
T_Nguyen,
T_ThapPhan,
RH_Nguyen,
MaKiemDHT;
float adc;
int16 ppm;
float buiadc, apbui, bui;
void KhoiDongDHT()
{
output_drive(ChanDHT);
output_low(ChanDHT);
delay_ms(25);
output_high(ChanDHT);
delay_us(30);
output_float(ChanDHT);
}
Hệ thống giám sát và cảnh báo mơi trường khơng khí
RH_ThapPhan,
ĐỒ ÁN TỐT NGHIỆP
Trang 41/42
int1 KiemTra()
{
delay_us(40);
if(input(ChanDHT) == 0)
{
delay_us(80);
if(input(ChanDHT) == 1)
{
delay_us(50);
return 1;
}
}
}
unsigned int8 DocGiaTri()
{
unsigned int8 i, k, dulieu = 0;
for(i = 0; i < 8; i++)
{
k = 0;
while(input(ChanDHT) == 0)
{
k++;
if(k > 100)
{
break;
}
delay_us(1);
Hệ thống giám sát và cảnh báo mơi trường khơng khí
ĐỒ ÁN TỐT NGHIỆP
Trang 42/42
}
delay_us(28);
if(input(ChanDHT) == 0)
bit_clear(dulieu,(7 - i));
else
{
bit_set(dulieu,(7 - i));
while(input(ChanDHT) == 1)
{
k++;
if(k > 100)
{
break;
}
delay_us(1);
}
}
}
return dulieu;
}
void main()
{
set_tris_b(0x00);
delay_ms(10);
lcd_init();
delay_ms(10);
setup_adc(adc_clock_internal);
setup_adc_ports(AN0_AN1_AN2_AN3_AN4);
Hệ thống giám sát và cảnh báo mơi trường khơng khí
ĐỒ ÁN TỐT NGHIỆP
Trang 43/42
delay_us(100);
lcd_gotoxy(1,1);
printf(lcd_putc,"Khoi dong!!!");
delay_ms(30000);
delay_ms(30000);
lcd_init();
while(TRUE)
{
int1 hoanthanh = adc_done();
while(!hoanthanh)
{
hoanthanh = adc_done();
}
output_low(PIN_D1);
set_adc_channel(0);
delay_us(280);
buiadc = read_adc();
delay_us(40);
output_high(PIN_D1);
delay_ms(100);
apbui = buiadc * 0.0048828;
if(apbui < 0.583)
{
bui = 0;
}
else
{
bui = 0.17142 * apbui - 0.1;
}
Hệ thống giám sát và cảnh báo mơi trường khơng khí
ĐỒ ÁN TỐT NGHIỆP
Trang 44/42
set_adc_channel(1);
delay_us(100);
adc = read_adc();
ppm = 6.4995 * adc - 590.53;
lcd_gotoxy(1,1);
printf(lcd_putc,"Co2:%lu ",ppm);
lcd_gotoxy(10,1);
printf(lcd_putc,"Ds:%f ",bui);
KhoiDongDHT();
if(KiemTra() == 1)
{
RH_Nguyen = DocGiaTri();
RH_ThapPhan = DocGiaTri();
T_Nguyen = DocGiaTri();
T_ThapPhan = DocGiaTri();
MaKiemDHT = DocGiaTri();
if(MaKiemDHT == (RH_Nguyen + RH_ThapPhan + T_Nguyen +
T_ThapPhan))
{
lcd_gotoxy(1,2);
printf(lcd_putc,"Temp:%d",T_Nguyen);
lcd_gotoxy(10,2);
printf(lcd_putc,"RH:%d%%",RH_Nguyen);
}
}
delay_ms(4000);
for(unsigned int8 i=7;i<10;i++)
{
printf("Nhiet do la: ,""%d,",T_Nguyen);
Hệ thống giám sát và cảnh báo mơi trường khơng khí
ĐỒ ÁN TỐT NGHIỆP
Trang 45/42
printf("Do am la: ,""%d,",RH_Nguyen);
printf("CO2 la: ,""%lu,",ppm);
printf("Bui la: ,""%f\n",bui);
printf("\n");
}
}
}
Hệ thống giám sát và cảnh báo mơi trường khơng khí