Diễn Đàn Điện Tử Ứng Dụng

Forum trao đổi chia sẽ giải quyết các vấn đề liên quan đến mạch điện tử


    PIC16f887 Đo nhiệt độ dùng LM35 hiển thị LCD16x2

    Share

    Admin
    Admin

    Tổng số bài gửi : 56
    Điểm tích lũy : 113
    Đã được thích : 19
    Join date : 12/03/2015
    Age : 26
    Đến từ : Thanh Hóa - TP.HCM

    PIC16f887 Đo nhiệt độ dùng LM35 hiển thị LCD16x2

    Bài gửi by Admin on 19/12/16, 02:43 pm

    Đo nhiệt độ dùng LM35 hiển thị LCD16x2 , cài đặt nhiệt độ bằng nút nhấn tăng giảm nhiệt độ báo quá nhiệt LCD, LED, đóng ReLay :

    Nguồn: http://www.stm32vn.com/

    #include <16f887.h>
    #device ADC=10
    #use delay (CLOCK = 8M)
    #fuses INTRC_IO     //dung thach Anh noi

    #include <stdlib.h>
    #include <lcd.c>


    #define UP     PIN_E1
    #define DW     PIN_E2
    //#define Buzz   PIN_A0

    signed int16 Temp, Max;
    int8 i;


    void Click_UP();
    void Click_DW();
    void delay_ms_T(int16 t);

    void main()
    {
      set_tris_e(0xff);
      //set_tris_a(0x00);
      setup_adc_ports(NO_ANALOGS);
      setup_adc_ports(sAN5);
      setup_adc(ADC_CLOCK_INTERNAL);
     
      lcd_init();
     
      Max=45;
      lcd_gotoxy(1,2);
      printf(lcd_putc,"CAI DAT=%03Ld",Max);
      lcd_gotoxy(12,2); lcd_putc(223);
      lcd_gotoxy(13,2); lcd_putc("C");

      while(TRUE)
      {
         Click_UP();
         Click_DW();
         set_adc_channel(5);  delay_us(50);
         Temp=0;
         for (i=0; i<200; i++)
            Temp= Temp + read_adc();
         Temp = Temp/2.046;   Temp = Temp/200; Temp = Temp-2;
         lcd_gotoxy(1,1);
         printf(lcd_putc,"NHIET DO=%03Ld",Temp);
         lcd_gotoxy(13,1); lcd_putc(223);
         lcd_gotoxy(14,1); lcd_putc("C");
         //delay_ms_T(80);
         if(Temp>Max)
         {
            lcd_gotoxy(1,1);
            lcd_putc("QUA NHIET       ");
            delay_ms_T(500);
            lcd_gotoxy(1,1);
            printf(lcd_putc,"NHIET DO=%03Ld",Temp);
            lcd_gotoxy(13,1); lcd_putc(223);
            lcd_gotoxy(14,1); lcd_putc("C");
            delay_ms_T(500);
         }
         else;
      }
    }

    void Click_UP()
    {
      if(input_state(UP)==0)
      {
         delay_ms(50);
         Max++;
         if(Max>=150)   Max=150; else;
         lcd_gotoxy(1,2);
         printf(lcd_putc,"CAI DAT=%03Ld",Max);
         while(input_state(UP)==0);
         delay_ms(50);
      }
    }

    void Click_DW()
    {
      if(input_state(DW)==0)
      {
         delay_ms(50);
         Max--;
         if(Max<=0)   Max=0; else;
         lcd_gotoxy(1,2);
         printf(lcd_putc,"CAI DAT=%03Ld",Max);
         while(input_state(DW)==0);
         delay_ms(50);
      }
    }

    void delay_ms_T(int16 t)
    {
      int16 i;
      for(i=0; i<t; i++)
      {
         set_adc_channel(5);  delay_us(50);
         Temp=read_adc()/2.046;
         if((input_state(UP)==0)|(input_state(DW)==0))  break;
         else delay_ms(1);
      }
    }

    Mạch dùng thạch Anh nội:


      Hôm nay: 23/11/17, 10:27 am