Thông báo

Collapse
No announcement yet.

mạch đọc nhiệt độ hiển thỉ LCD dùng pic16f877a

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • mạch đọc nhiệt độ hiển thỉ LCD dùng pic16f877a

    đồ án nhóm em là hiển thị nhiệt độ ra LCD dùng LM35 và pic16f877a.em thiết kế mạch mô phỏng = protue thì chạy bình thường.nhung khi lắp ráp vào mạch thật thì nó chỉ hiển thỉ có 18 độ rùi đứng im luôn ko chạy nữa,phần nút bấm thì bình thường LCd hiển thị bình thường chỉ có nhiệt độ đọc ra là sai.cho em hỏi cách mắc con LM35 của em là dúng hay sai có cần thê trở ji vào hay ko?[/PHP][/PHP] Click image for larger version

Name:	doan1.jpg
Views:	1
Size:	114.8 KB
ID:	1411210
    còn đây là code:

    #include <16F877A.h>
    #device *=16 adc=10
    #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
    #use delay(clock=12000000)
    #include <lcd.c>
    #use fast_io(a)
    #use fast_io(c)
    #byte porta=0x5
    #byte portc=0x7
    #bit r2=portc.2
    #bit r3=portc.3
    #bit r4=portc.4
    #bit c1=portc.1
    #bit c0=portc.0
    int8 low,high,min,max,i,x,nutbam=0xaa;
    int8 value;
    #INT_EXT
    void banphim()
    {
    if (r2 ==0 )
    {
    nutbam=~nutbam; //dao lai
    if(nutbam!=0xaa)// nutbam#0xaa
    {
    lcd_init();
    printf(LCD_putc,"\rnhap nhiet do:");
    LCD_gotoxy(1,2);
    printf(LCD_putc,"\rGia tri MAX:%d",max);
    }
    else
    {
    lcd_init();
    printf(LCD_putc"\rdo_nhiet_do:");
    x = read_ADC()/2;
    if (x < 26)
    value = x;
    else
    {
    if (x < 66)
    {
    x =x-1;
    value = x;
    }
    else
    {
    if( x>=65 && x <104)
    {
    x = x-2 ;
    value = x;
    }
    else
    {
    x=x-3;
    value = x;
    }
    }

    }
    lcd_init();
    LCD_gotoxy(1,2);
    printf(LCD_putc,"Nhiet do la: C");
    }
    while(r2 == 0)
    {
    }
    }
    else if (r4 == 0)
    {
    if(nutbam!=0xaa)
    {
    max = max - 1;
    lcd_init();
    printf(LCD_putc,"\rnhap nhiet do:");
    lcd_gotoxy(1,2);
    printf(LCD_putc,"\rGia tri MAX:%d",max);
    }
    else
    {
    }
    while(r4 == 0)//cho nha phim
    {
    }
    delay_ms(10);//chong nay phim
    }
    else if (r3 == 0)
    {
    if(nutbam!=0xaa)
    {
    max = max +1;
    lcd_init();
    printf(LCD_putc,"\rnhap nhiet do:");
    LCD_gotoxy(1,2);;
    printf(LCD_putc,"\rGia tri MAX:%d",max);
    }
    else
    {
    }
    while(r3 == 0)//cho nha phim
    {
    }
    delay_ms(10);//chong nay phim
    }
    else
    {
    }
    }
    //================================================== ====================
    void main()
    {
    max =40; //nhiet do max
    i = 10 ;
    set_tris_a(0xFF);
    set_tris_c(0b00011100);
    c0=1;
    c1=1;
    //==== Khoi tao cho ngat ngoai============================================= ==
    enable_interrupts (INT_EXT);
    ext_int_edge(H_TO_L);
    enable_interrupts (GLOBAL);
    //=========== Khoi tao che do cho bo ADC=====================================
    setup_adc_ports(AN0);
    setup_adc(ADC_CLOCK_INTERNAL);
    set_adc_channel(0);
    LCD_init();
    printf(LCD_putc"do_nhiet_do:");
    LCD_gotoxy(1,2);
    printf(LCD_putc"Lop CDDT09A");
    delay_ms(1000);// Lay mau nhiet do lan dau tien
    x = read_ADC()/2;
    if (x < 26)
    value = x;
    else
    {
    if (x < 66)
    {
    x =x-1;
    value = x;
    }
    else
    {
    if( x>=65 && x <104)
    {
    x = x-2 ;
    value = x;
    }
    else
    {
    x=x-3;
    value = x;
    }
    }
    }

    delay_ms(10);
    while(1)
    {
    banphim();
    if (i==10)
    {
    if(nutbam==0xaa)
    {
    x = read_ADC()/2;
    if (x < 26)
    value = x;
    else
    {
    if (x < 66)
    {
    x =x-1;
    value = x;
    }
    else
    {
    if( x>=65 && x <104)
    {
    x = x-2 ;
    value = x;
    }
    else
    {
    x=x-3;
    value = x;
    }
    }
    }
    LCD_init();
    printf(LCD_putc,"Nhiet do la:%uC",x);
    delay_ms(10);
    i=0;
    }
    else
    {
    }
    }//

    if (value < max )
    {
    c1=0;
    c0=1;

    }
    if(value >= max )
    {
    c0=0;
    c1=1;

    }
    i++;
    }
    }
    //The End=============================================== ========================

  • #2
    Xin nói một chút thui nhé:
    thứ nhất: nếu quẳng lên nhiều quá không nhiều người giúp mình được đâu bạn. ai code người đó hiểu sâu ý tưởng, ai đọc qua code của bạn sẽ hiểu nguyên tắc thui
    thứ hai: không nên viết một lượt tất cả, chia làm các phần nhỏ và test từng phần. ví dụ như test phần adc trước ( hiển thị led đơn xem chạy có đúng không đã), test hiển thị lcd nữa... vv
    thứ 3: mình cũng từng làm về cái này nhiều: thực tế là muỗn chính xác phải hiểu sau về quá trình chuyển đổi adc ( thời gian lấy mẫu, giữ, nạp cho tụ...vv), làm tốt phần lọc nhiễu trước khi đưa vào chân adc của pic, thực tế là lm 35 không quá chính xác đâu
    cuối cùng là một vài thủ thuật để bù ( tự làm thử)
    Be quan. Plz contact through email:

    Comment


    • #3
      vấn đề là con LM535 em ,khi gắn trở 10k vào chân nguồn của nó thì nó hiện ra 18 độ,còn gắn trở 1k vào thì nó hiện 64 độ ko,nhưng nó chỉ ra rùi đứng im ko tăng hay giảm ji cả, em ko bit sửa làm sao cả ai bít chỉ em với.hic hic hic

      Comment


      • #4
        ai bít cách dùng con LM35 chỉ em với anh lenh_ho nói :"thực tế là muỗn chính xác phải hiểu sau về quá trình chuyển đổi adc ( thời gian lấy mẫu, giữ, nạp cho tụ...vv), làm tốt phần lọc nhiễu trước khi đưa vào chân adc của pic, thực tế là lm 35 không quá chính xác đâu
        cuối cùng là một vài thủ thuật để bù ( tự làm thử)" là làm sao lọc nhiễu trước khi đưa vào chân adc của con pic là làm sao xin anh nói rõ hơn giùm em

        Comment


        • #5
          ko ai giúp ah hic hic hic

          Comment


          • #6
            em gửi luôn phần mô phỏng lên nhé
            Be quan. Plz contact through email:

            Comment


            • #7
              tks các anh em đã giải quyết xong con LM rùi, chân nó ko giống như trong dấtheet cho lắm nên nó ko chạy

              Comment

              Về tác giả

              Collapse

              whisky951 Tìm hiểu thêm về whisky951

              Bài viết mới nhất

              Collapse

              Đang tải...
              X