Welcome & Happy Holidays!
Kết quả 1 đến 10 của 10
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Điều Khiển Nhiệt Độ với PIC16F887

    Xin chào các bác.xin các bác giúp em bài này với ạ! Em điều khiển nhiệt độ và có sử dụng nút bấm để thay đổi giá trị đặt của Nhiệt Độ mong muốn nhưng trong trường hợp này thì lại không tùy chỉnh được bằng nút bấm. Mà cứ thêm hàm nút bấm vào đọc giá trị ADC của cảm biến đầu vào không đọc được nữa. Rất mong mn giúp đỡ.thank rất nhiều ạ.

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hungk47tnut
    Xin chào các bác.xin các bác giúp em bài này với ạ! Em điều khiển nhiệt độ và có sử dụng nút bấm để thay đổi giá trị đặt của Nhiệt Độ mong muốn nhưng trong trường hợp này thì lại không tùy chỉnh được bằng nút bấm. Mà cứ thêm hàm nút bấm vào đọc giá trị ADC của cảm biến đầu vào không đọc được nữa. Rất mong mn giúp đỡ.thank rất nhiều ạ.
    code của bạn đâu nhỉ bạn phải viết ra thì mới giúp được

  3. #3
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    Trích dẫn Gửi bởi phunghe
    code của bạn đâu nhỉ bạn phải viết ra thì mới giúp được

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    b xem hộ mình với

  5. #5
    Ngày tham gia
    Sep 2015
    Đang ở
    hà nội
    Bài viết
    0
    xem được đâu.

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Mystogan
    xem được đâu.
    #include <2.h>
    #define LCD_ENABLE_PIN PIN_D2 ////
    #define LCD_RS_PIN PIN_D0 ////
    #define LCD_RW_PIN PIN_D1 ////
    #define LCD_DATA4 PIN_D4 ////
    #define LCD_DATA5 PIN_D5 ////
    #define LCD_DATA6 PIN_D6 ////
    #define LCD_DATA7 PIN_D7 ////
    #include <LCD.C>
    float32 value;
    int8 t=0;
    int8 set=37;
    int i;
    float32 truoc;
    float32 sau;
    float32 sau1;
    float32 sau2;

    void setup()
    {
    if(input(pin_b3)==0)
    {
    set++;delay_ms(50);
    while(input(pin_b3)==0){};
    }
    if(input(pin_b4)==0)
    {
    set--;delay_ms(50);
    while(input(pin_b4)==0){};
    }
    }
    void main()
    {
    lcd_init();
    set_tris_a(0xff);
    set_tris_c(0x00);
    set_tris_b(0xff);

    output_bit(pin_c4,0);
    setup_adc(ADC_CLOCK_INTERNAL);
    setup_adc_ports(ALL_ANALOG);
    lcd_gotoxy(3,1);
    printf(lcd_putc,"Welcome to...");delay_ms(500);
    lcd_putc("\f");
    lcd_gotoxy(3,1);
    printf(lcd_putc,"LO AP TRUNG");
    lcd_gotoxy(1,2);
    printf(lcd_putc,"----------------");delay_ms(700);
    lcd_putc("\f");

    // Khoi tao cho ngat ngoai
    enable_interrupts (INT_EXT);
    ext_int_edge(H_TO_L);
    enable_interrupts (GLOBAL);

    while(TRUE)
    {
    setup();
    truoc=0;
    for(i=0;i<50;i++)
    {
    truoc=truoc+read_adc();delay_us(10);
    }
    sau=truoc*0.02;
    sau2=0.2*sau1+0.8*sau;
    sau1=sau2;
    value=sau1*0.097752;
    set_adc_channel(0);delay_us(10);
    value=(float)read_adc();delay_us(10);
    value=(value*5.0*1000.0/1024.0)/10;

    lcd_gotoxy(1,2);
    printf(lcd_putc,"Nhiet do:%0.2f%cC",value,0xdf);
    lcd_gotoxy(1,1);
    printf(lcd_putc,"SET=%2u%cC",set,0xdf);
    lcd_gotoxy(7,1);
    //--------thuat toan dieu khien---------

    if(input(pin_a1)==0)
    {
    delay_ms(300);output_bit(pin_c4,1);
    }
    else{output_bit(pin_c4,0);}
    if(value<set)
    {
    t--;read_adc();delay_us(10);
    }

    if(value>set)
    {output_bit(pin_c4,0);read_adc();delay_us(10);}
    if(value==set)
    {output_bit(pin_c4,0);read_adc();delay_us(10);}

    if(value>set+2)if((pin_c4)==0){output_bit(pin_c0,1 );read_adc();delay_us(10);}
    //------tuy chinh--------


    }
    }

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi Mystogan
    xem được đâu.
    đây b ạ

  8. #8
    Ngày tham gia
    Jan 2016
    Bài viết
    0
    #include <2.h>
    #define LCD_ENABLE_PIN PIN_D2 ////
    #define LCD_RS_PIN PIN_D0 ////
    #define LCD_RW_PIN PIN_D1 ////
    #define LCD_DATA4 PIN_D4 ////
    #define LCD_DATA5 PIN_D5 ////
    #define LCD_DATA6 PIN_D6 ////
    #define LCD_DATA7 PIN_D7 ////
    #include <LCD.C>
    float32 value;
    int8 t=0;
    int8 set=37;
    int i;
    float32 truoc;
    float32 sau;
    float32 sau1;
    float32 sau2;

    void setup()
    {
    if(input(pin_b3)==0)
    {
    set++;delay_ms(50);
    while(input(pin_b3)==0){};
    }
    if(input(pin_b4)==0)
    {
    set--;delay_ms(50);
    while(input(pin_b4)==0){};
    }
    }
    void main()
    {
    lcd_init();
    set_tris_a(0xff);
    set_tris_c(0x00);
    set_tris_b(0xff);

    output_bit(pin_c4,0);
    setup_adc(ADC_CLOCK_INTERNAL);
    setup_adc_ports(ALL_ANALOG);
    lcd_gotoxy(3,1);
    printf(lcd_putc,"Welcome to...");delay_ms(500);
    lcd_putc("\f");
    lcd_gotoxy(3,1);
    printf(lcd_putc,"LO AP TRUNG");
    lcd_gotoxy(1,2);
    printf(lcd_putc,"----------------");delay_ms(700);
    lcd_putc("\f");

    // Khoi tao cho ngat ngoai
    enable_interrupts (INT_EXT);
    ext_int_edge(H_TO_L);
    enable_interrupts (GLOBAL);

    while(TRUE)
    {
    setup();
    truoc=0;
    for(i=0;i<50;i++)
    {
    truoc=truoc+read_adc();delay_us(10);
    }
    sau=truoc*0.02;
    sau2=0.2*sau1+0.8*sau;
    sau1=sau2;
    value=sau1*0.097752;
    set_adc_channel(0);delay_us(10);
    value=(float)read_adc();delay_us(10);
    value=(value*5.0*1000.0/1024.0)/10;

    lcd_gotoxy(1,2);
    printf(lcd_putc,"Nhiet do:%0.2f%cC",value,0xdf);
    lcd_gotoxy(1,1);
    printf(lcd_putc,"SET=%2u%cC",set,0xdf);
    lcd_gotoxy(7,1);
    //--------thuat toan dieu khien---------

    if(input(pin_a1)==0)
    {
    delay_ms(300);output_bit(pin_c4,1);
    }
    else{output_bit(pin_c4,0);}
    if(value<set)
    {
    t--;read_adc();delay_us(10);
    }

    if(value>set)
    {output_bit(pin_c4,0);read_adc();delay_us(10);}
    if(value==set)
    {output_bit(pin_c4,0);read_adc();delay_us(10);}

    if(value>set+2)if((pin_c4)==0){output_bit(pin_c0,1 );read_adc();delay_us(10);}
    //------tuy chinh--------


    }
    }



    Trích dẫn Gửi bởi phunghe
    code của bạn đâu nhỉ bạn phải viết ra thì mới giúp được

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi hungk47tnut
    #include <2.h>
    #define LCD_ENABLE_PIN PIN_D2 ////
    #define LCD_RS_PIN PIN_D0 ////
    #define LCD_RW_PIN PIN_D1 ////
    #define LCD_DATA4 PIN_D4 ////
    #define LCD_DATA5 PIN_D5 ////
    #define LCD_DATA6 PIN_D6 ////
    #define LCD_DATA7 PIN_D7 ////
    #include <LCD.C>
    float32 value;
    int8 t=0;
    int8 set=37;
    int i;
    float32 truoc;
    float32 sau;
    float32 sau1;
    float32 sau2;

    void setup()
    {
    if(input(pin_b3)==0)
    {
    set++;delay_ms(50);
    while(input(pin_b3)==0){};
    }
    if(input(pin_b4)==0)
    {
    set--;delay_ms(50);
    while(input(pin_b4)==0){};
    }
    }
    void main()
    {
    lcd_init();
    set_tris_a(0xff);
    set_tris_c(0x00);
    set_tris_b(0xff);

    output_bit(pin_c4,0);
    setup_adc(ADC_CLOCK_INTERNAL);
    setup_adc_ports(ALL_ANALOG);
    lcd_gotoxy(3,1);
    printf(lcd_putc,"Welcome to...");delay_ms(500);
    lcd_putc("\f");
    lcd_gotoxy(3,1);
    printf(lcd_putc,"LO AP TRUNG");
    lcd_gotoxy(1,2);
    printf(lcd_putc,"----------------");delay_ms(700);
    lcd_putc("\f");

    // Khoi tao cho ngat ngoai
    enable_interrupts (INT_EXT);
    ext_int_edge(H_TO_L);
    enable_interrupts (GLOBAL);

    while(TRUE)
    {
    setup();
    truoc=0;
    for(i=0;i<50;i++)
    {
    truoc=truoc+read_adc();delay_us(10);
    }
    sau=truoc*0.02;
    sau2=0.2*sau1+0.8*sau;
    sau1=sau2;
    value=sau1*0.097752;
    set_adc_channel(0);delay_us(10);
    value=(float)read_adc();delay_us(10);
    value=(value*5.0*1000.0/1024.0)/10;

    lcd_gotoxy(1,2);
    printf(lcd_putc,"Nhiet do:%0.2f%cC",value,0xdf);
    lcd_gotoxy(1,1);
    printf(lcd_putc,"SET=%2u%cC",set,0xdf);
    lcd_gotoxy(7,1);
    //--------thuat toan dieu khien---------

    if(input(pin_a1)==0)
    {
    delay_ms(300);output_bit(pin_c4,1);
    }
    else{output_bit(pin_c4,0);}
    if(value<set)
    {
    t--;read_adc();delay_us(10);
    }

    if(value>set)
    {output_bit(pin_c4,0);read_adc();delay_us(10);}
    if(value==set)
    {output_bit(pin_c4,0);read_adc();delay_us(10);}

    if(value>set+2)if((pin_c4)==0){output_bit(pin_c0,1 );read_adc();delay_us(10);}
    //------tuy chinh--------


    }
    }
    cú pháp đúng kiếm tra chân PIN như sau: if(input(pin_x));nếu =1 làm gì đó.... if(!input(pin_x));nếu = 0 làm gì đó.... if(input(pin_x)==0);viết như này là sai.

  10. #10
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tdm
    cú pháp đúng kiếm tra chân PIN như sau: if(input(pin_x));nếu =1 làm gì đó.... if(!input(pin_x));nếu = 0 làm gì đó.... if(input(pin_x)==0);viết như này là sai.
    thank a.nhưng em cứ thêm hàm nút bấm vào là lcd không hiển thị đk nữa a ạ

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 05:45 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2024 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.