phamb587
11-03-2014, 03:45 PM
các anh coi dùm em phan code.. Sao nó không hiển thị giá trị lm35 len lcd
lambaotrung
21-03-2014, 11:22 PM
cái này không khó. tang bạn nè đây là chương trình minh viết rộng hơn về ý tường của bạn.
//=============== PIC16F877A-ENCODER-LCD =======================
//* Tac gia: Lam Bao Trung
//* Ngay Viet: 25/05/2013
//* Ngay ket thuc:
//* Phan Cung: PIC16F877A, LCD2X16, ENCODER 100
//* Chuong trinh: Hien thi nhiet do tu moi truong
//================================================== ============
#include <ENCODER-1XUNG.h>
#INCLUDE <D:\MACH DIEN\PIC\ENCODER\lcd_lib_4bit.C>
#INCLUDE <D:\MACH DIEN\PIC\ENCODER\DEF_877A.H>
float rpm,V;
INT32 COUNTER,COUNTER1;
INT8 I,ADC;
#INT_ext
VOID EXT()
{
COUNTER++;
COUNTER1++;
IF(I>=10)
{
disable_interrupts(INT_TIMER1);
//RPM=(float)(counter*((3600*0.00169)/12));
//RPM=(counter*0.507);
RPM=(counter*0.2535);
counter=I=0;
enable_interrupts(INT_TIMER1);
SET_TIMER1(3001);
}
IF(counter1>=12)
{
V=V+0.00169;
COUNTER1=0;
}
}
#int_timer0
void timer0()
{
ADC=(FLOAT)READ_ADC()/131.07;
}
#int_timer1
void timer()
{
set_timer1(3001);
I=I+1;
}
void main()
{
SETUP_TIMER_1(T1_inTERNAL|T1_DIV_BY_8);
setup_TIMER_0(T1_inTERNAL);
EXT_INT_EDGE(1,L_TO_H);
ENABLE_INTERRUPTS(INT_EXT);
enable_interrupts(INT_TIMER1);
enable_interrupts(int_timer0);
ENABLE_INTERRUPTS(GLOBAL);
SET_TIMER1(3001);
SET_TIMER0(0);
setup_adc(adc_clock_internal);
setUP_adc_ports(RA0_analog);
set_adc_channel(0);
LCD_INIT();
v=rpm=counter=0;
WHILE(TRUE)
{
LCD_PUTCMD(0X80);
PRINTf(LCD_PUTCHAR,"%f Kmh %u",RPM,COUNTER1);
LCD_PUTCHAR("\n\r");
LCD_PUTCMD(0XC0);
PRINTF(LCD_PUTCHAR,"%f %u C",V,ADC);
LCD_PUTCHAR("\n\r");
}
}
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.