MẠCH ĐO NHIỆT ĐỘ HIỂN THỊ LCD
#include "C:\Program Files\PICC\Devices\16F877A.h"
#include "C:\Program Files\PICC\Devices\def_877a.h"
#device *=16 ADC=10
#FUSES NOWDT, HS, NOPUT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG
#use delay(clock=12000000)
long value,nhietdo;
int8 a,b,c,d,i;
void tachhang(int&a,int&b,int&c,int&d);
char so[11] ="0123456789";
#define RS RA3
#define RW RA2
#define E RA1
#define BF RB7
#define LCD PORTB
char chu[9] ="nhietdo=";
#use fast_io(b)
#define tocdo0 0 //toc do bang 0
#define td_macdinh 80 //toc do mac dinh
#define tocdo1 207 //1/3 toc do cuc dai
#define tocdo2 514 //2/3 toc do cuc dai
#define tocdo3 620 //toc do cuc dai
int16 duty1=0;
int16 duty2=0;
int8 bientocdo=0;
int1 bienthuan=0;
int1 biennghich=0;
/*Ham yeu cau goi lenh dieu khien LCD*/
void comnwrt(void)
{
RS = 0;
RW = 0;
E = 1;
E = 0;
delay_ms(2);
}
/*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
RS = 1;
RW = 0;
E = 1;
E = 0;
delay_ms(2);
}
void main()
{ set_tris_A(0);
Trang 2set_tris_B(0);
delay_ms(100);
LCD = 0x30;
comnwrt();
while(true)
{
bit_set(portA,5);
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_ms(100);
value=read_adc();
nhietdo=(value-559)/2.024;
tachhang(a,b,c,d);
delay_ms(1);
LCD = 0x0C;
comnwrt();
LCD = 0x06;
comnwrt();
LCD = 0x83;
comnwrt();
delay_ms(10);
for (i=0;i<9;i++)
{ lcd=chu[i];
datawrt();
}
lcd=so[c];
datawrt();
lcd=so[d];
datawrt();
lcd ='o';
datawrt();
lcd ='C';
datawrt();
}
}
void tachhang(int&a,int&b,int&c,int&d) {
a=nhietdo/1000;
b=(nhietdo%1000)/100;
c=(nhietdo%100)/10;
d=nhietdo%10;
}