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.