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

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.
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

    avatar
    Admin
    Admin


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

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

    Bài gửi by Admin 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:

    PIC16f887 Đo nhiệt độ dùng LM35 hiển thị LCD16x2 ZGhJEL-WJHCagU9NxFCZEcaXmrJjhgK3lKbdbWCD0QTUDcwFXhXVp5rus-CdzusdDWGOCgyhyUNp8hLGFES9x1iLsYjIKI73AdE8yr3-PebZKdP1lAFnNkILedpkNxLRRSPvnLewK2yqtUAbtml0qD77AHPctjatxci5cEHgOzPvfFm7FQQ8prPeRG_jCESil6z81AmGQHqBy4OfK-PWHLVX28oyFSzoiaetJ5CLh6oCoDce9T7QqkJ1INrFIJRvbIUNV_CqKP9XcOK8dyJBEUBxT-XOPgjp5IPL596rKPHcS7MVhtL4qn0_742IiGpIFtctf6hNlTnGfGfPPOmUFn_x4sjPIXAJvTJZ05xDbOMhhm8Vq8idOhdOyqy71g3iCGsqwe8iNJ4sfi0UGuwwspVe4EujBxoYVvEL0VFs_nJbv6Dsg9YBCsH6O7DkxnhNubAlJeDI0gMjO3u6aIs7torPRohzj9GzpDXXPIbJQsDH6kSPICJUR0OkE0t4-S-5-81tF6umMNZX9oJ9mM9eU34AAdUHyAmVZWgAzw3x9iHbGHpzT8fQmV-DaZPxYt9yOqqWn8VxHDpvacqLxlh0m_6778fz2PkJmXcvRXfcAKhyZP5x-k1W=w1242-h410-no

      Hôm nay: 27/04/24, 01:04 am