Đây là code và mạch của nhóm chúng em, anh xem qua và giúp chúng em nhé! cảm ơn anh nhiều:
Code:
#include<16f877a.h>
#include<def_877a.h>
#device * =16 adc=10;
#use delay(clock=20000000)
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NOWRT,NODEBUG, BROWNOUT, LVP, NOCPD
#include <lcd_lib_4bit.c>
#use rs232(baud=115200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=9)
int tram,chuc,donvi,temp,nguong,i;
void convert_bcd(int8 temp)
{
tram = temp / 100 + 0x30;
temp = temp % 100;
chuc = temp / 10 + 0x30;
donvi = temp % 10 + 0x30;
}
void bao_dong()
{
int8 i;
for(i=0;i<200;i++)
{
RE0=0;
delay_us(100);
RE0=1;
delay_us(100);
}
}
void LCD(int8 temp)
{
convert_bcd(temp);
lcd_putchar(tram);
lcd_putchar(chuc);
lcd_putchar(donvi);
}
//-------------------------------------------------------------------
void main()
{
int32 value;
int8 temp;
trisB = 0x00;
trisC = 0x00;
trisD = 0x00;
trisE = 0x00;
trisA = 0xff;
portC = 0xff;
portD = 0x00;
nguong=20;
lcd_init();
printf(lcd_putchar,"DO AN THIET BI DO");
delay_ms(3000);
lcd_putcmd(0xC0);
printf(lcd_putchar,"KHOI TAO NGUONG(20)");
delay_ms(3000);
enable_interrupts (INT_EXT);
ext_int_edge(L_TO_H);
enable_interrupts (GLOBAL);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
delay_us(10);
value=read_adc();
value=(value)/10.24;
temp=value;
convert_bcd(temp);
delay_ms(1000);
lcd_putcmd(0xC0);
printf(lcd_putchar,"moi thu da san sang");
delay_ms(3000);
i=0;
while(1)
{
i++;
value =read_adc();
value=(value)/10.240;
temp=value;
if (i==200)
{
convert_bcd(temp);
i=0;
}
if( value > nguong)
bao_dong();
lcd_putcmd(0xC0);
printf(lcd_putchar,"nongdo=");
lcd_putchar(tram);
lcd_putchar(chuc);
lcd_putchar(donvi);
printf(lcd_putchar,"ptram LEL");
}
}