RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

Giúp đỡ về mạch đo nhiệt độ LM35 + PIC 16F877A + RS232

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • hienthom
    Thành viên mới
    • Jan 2010
    • 3

    #1

    Giúp đỡ về mạch đo nhiệt độ LM35 + PIC 16F877A + RS232

    chào các bạn!
    mình hiện đang làm đồ án về phần đo nhiệt độ giao tiếp máy tính qua cổng COM dùng PIC16F877A. mình bị vướng ở phần lập trình và thiết kế mạch, mình định dùng PIC đo và sau đó hiển thị lên máy tính luôn chứ không hiển thị lên LCD nhưng không biết viết thế nào, còn mạch thì mình thiết kế như trong file đính kèm nhưng 1 bạn trên diễn đàn nói là phải đổi lại chân 13 của MAX232 nối vào chân 2 của cổng COM và chân 7 của MAX232 nối vào chân 2 của COM thì khi làm mạch mới chạy, mình thắc mác là như vậy có đúng ko? và nếu đúng thì cổng NOT vẫn ở chân 3 hay phải dời lên chân 2...Mong mọi người giải đáp thắc mắc giùm mình. Cám ơn mọi ngườiClick image for larger version

Name:	giao tiep mt.jpg
Views:	1
Size:	66.6 KB
ID:	1409877 nhiều!!!
  • hienclubvn
    Thành viên tích cực
    • Nov 2010
    • 169

    #2
    Tôi có góp ý cho bạn : Hi vọng bạn sẽ làm tốt hơn.
    thứ 1 : bạn vứt cái mô phỏng củ chuối của Proteus đi. mình sẽ ko bao giờ mô phỏng với proteus mà dùng COMPPIM cả, bạn thấy đấy phải đảo chân + thêm NOT chạy mới mô phỏng nữa. Hoàn toàn sai với datasheet. Nếu bạn ko cần hiện thị lên LCD chỉ giao tiếp với máy tính thì có thể lôi cái Terminal Virtual ra (của Proteus luôn, nó nằm cùng mục với lôi Occillo ấy), lấy nó ra nối chéo 2 chân tx và rx thế là bạn có có mô phỏng rs232 hoàn hảo,
    thứ 2 : Nếu là đề tài : thì đề tài này rất dể nên làm mạch thật mà tét luôn. Ngon lành cành đào thì báo cáo kiếm tiền. Hì
    Thân !
    Nếu cần thiết tôi có thể pm cho bạn 1 project về vấn đề của bạn : Y!M : danghien_004
    My Face :

    Comment

    • OpenDoor
      Thành viên tích cực
      • Apr 2011
      • 251

      #3
      Đề tài này cần giải quyết 3 vấn đề: Biết khai thác module ADC, xuất được dữ liệu ra ngõ RS232, phải biết lập trình Winform.
      Ở đây mình có sẵn code giải quyết được 2 vấn đề:
      + Khai thác module ADC:
      #include "16f887.h"
      #include "def_16f887.h"
      #device *=16 ADC = 10
      #fuses HS,PUT,NOWDT,NOPROTECT,NOLVP
      #use delay(Clock = 4000000) //Thach anh 4MHz
      int16 temp;
      void main()
      {
      setup_spi(SPI_SS_DISABLED);
      setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
      setup_timer_2(T2_DISABLED,0,1);
      setup_comparator(NC_NC_NC_NC);
      setup_vref(FALSE);
      setup_timer_1(T1_INTERNAL);
      setup_adc_ports(sAN0|VREF_VREF); //kenh A0 nhan tin hieu, A2 = 0V; A3 = 5V;
      setup_adc(ADC_CLOCK_INTERNAL); //Thoi gian lay mau bang clock he thong.
      delay_ms(5); //Cho thiet lap xong ADC.
      // TODO: USER CODE!!

      trisa = 0xff; //PORTA nhan du lieu.
      trisc = 0x00; //PORTC xuat du lieu.
      set_adc_channel(0); //Chon kenh 0.
      delay_us(10); //cho chon kenh xong.

      while(1)
      {
      temp = read_adc(); //doc gia tri analog da chuyen doi sang so.
      temp = temp/10.24; //stepsize = 50mV. Neu giao tiep LM35 thi chia 2.048 (stepsize = 10mv)
      PORTC = temp; //Value = Vol/0,05
      delay_ms(500);
      }

      }
      Bạn tham khảo chi tiết tại đây.

      + Xuất dữ liệu ra ngõ RS232
      #include "16f887.h"
      #include "def_16f887.h"
      #device *=16 ADC = 10
      #fuses HS,PUT,NOWDT,NOPROTECT,NOLVP
      #use delay(Clock = 4000000) //Thach anh 4MHz
      #use rs232(baud = 9600, parity = N , Xmit = Pin_c6,rcv = pin_c7) //khoi tao usart

      void main()
      {
      setup_adc_ports(NO_ANALOGS);
      setup_adc(ADC_OFF);
      setup_spi(SPI_SS_DISABLED);
      setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
      setup_timer_1(T1_DISABLED);
      setup_timer_2(T2_DISABLED,0,1);
      setup_comparator(NC_NC_NC_NC);
      setup_vref(FALSE);
      // TODO: USER CODE!!
      trisc = 0x10; //PORTC xuat du lieu.
      while(1)
      {
      putc('A'); //Gui ky tu A
      delay_ms(500);
      }
      }

      Bạn tham khảo thêm tại đây http://www.sangthai.com.vn/ste/project-pic/762

      Comment

      • bank90
        Thành viên chính thức
        • Jun 2010
        • 30

        #4
        mình cũng đang học về PIC và dang làm cái mạch đo nhiệt độ LM35 + PIC 16F877A + RS232
        đây là code của mình bạn tham khảo nhé:
        #include <16F877A.h>
        #device adc=10 //adc 8 bit
        #include <math.h>
        #fuses HS,NOWDT,NOPROTECT,NOLVP // Dung thach anh ngoai, Tat WDT, Khong khoa ma nguon, Khong su dung bo nhan thach anh
        #use delay(clock=4000000) //Dinh nghia thach anh

        BYTE CONST MA_LED[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
        int16 adc;
        int16 nhietdo;
        int8 donvi, hangchuc;

        void main() {
        //-----------------------------------------------
        int i=0;
        //Cai dat kenh bien doi ADC
        Setup_ADC(ADC_CLOCK_INTERNAL); //Su dung Timer trong
        Setup_ADC_ports(AN0); //Chon loi vao ADC la chan AN0
        Set_ADC_channel(0); //Chon kenh bien doi ADC la kenh 0
        SET_TRIS_B( 0x00);
        SET_TRIS_D( 0x00);
        OUTPUT_B(0);
        output_high(pin_d6);
        delay_ms(5);
        output_low(pin_d6);
        delay_ms(5);
        output_high(pin_d5);
        delay_ms(5);
        output_low(pin_d5);
        delay_ms(5);
        output_high(pin_d4);
        delay_ms(5);
        output_low(pin_d4);
        delay_ms(5);
        output_high(pin_c7);
        delay_ms(5);
        output_low(pin_c7);
        delay_ms(5);
        output_high(pin_c6);
        delay_ms(5);
        output_low(pin_c6);
        delay_ms(5);
        output_high(pin_c5);
        delay_ms(5);
        output_low(pin_c5);
        delay_ms(5);
        Lap:
        i=0;
        delay_us(20);
        adc=read_adc(); //Doc du lieu tu ADC
        nhietdo=ceil((adc*5*100)/1023);
        hangchuc = nhietdo/10;
        donvi = nhietdo % 10;
        //Hien thi hang chuc
        output_B(MA_LED[hangchuc]);
        output_high(pin_D4);
        delay_ms(2);
        output_low(pin_d4);
        delay_ms(2);
        //Hien thi hang don vi
        output_B(MA_LED[donvi]);
        output_high(pin_c7);
        delay_ms(2);
        output_low(pin_c7);
        delay_ms(2);
        Lap1:
        i=i+1;
        delay_ms(1000);
        if (i<5) goto Lap1;
        goto Lap;
        }
        yahoo: boulevard.electronic
        Học tập & nghiên cứu

        phần mềm mình upload lên để chia sẻ:

        Comment

        • vudt2412
          Thành viên mới
          • Jul 2010
          • 6

          #5
          Nguyên văn bởi hienthom Xem bài viết
          chào các bạn!
          mình hiện đang làm đồ án về phần đo nhiệt độ giao tiếp máy tính qua cổng COM dùng PIC16F877A. mình bị vướng ở phần lập trình và thiết kế mạch, mình định dùng PIC đo và sau đó hiển thị lên máy tính luôn chứ không hiển thị lên LCD nhưng không biết viết thế nào, còn mạch thì mình thiết kế như trong file đính kèm nhưng 1 bạn trên diễn đàn nói là phải đổi lại chân 13 của MAX232 nối vào chân 2 của cổng COM và chân 7 của MAX232 nối vào chân 2 của COM thì khi làm mạch mới chạy, mình thắc mác là như vậy có đúng ko? và nếu đúng thì cổng NOT vẫn ở chân 3 hay phải dời lên chân 2...Mong mọi người giải đáp thắc mắc giùm mình. Cám ơn mọi người[ATTACH=CONFIG]30044[/ATTACH] nhiều!!!
          Bạn có thể tham khảo bài này:
          Code mẫu
          Hi vọng có ích cho bạn

          Comment

          • baoitc
            Banned
            • Jul 2012
            • 52

            #6
            cứu cứu..........Mình có mạch đo nhiệt độ mà nó nhảy số ghê quá, ai giúp mình vụ này đi,,sắp nộp đồ án rồi huhu

            Comment

            • tdtruong
              Thành viên mới
              • Dec 2011
              • 6

              #7
              mình đã đọc mấy bài viết của mấy bạn nhưng chưa hiểu lắm, ai có demo cái này trên proteus gửi cho mình với, cám ơn các bạn nhiều.

              Comment

              • je2708
                Thành viên mới
                • Oct 2011
                • 3

                #8
                mạch đo nhiệt độ đem đặt ngoài tiệm giá khoảng bao nhiêu vậy các bạn?

                Comment

                • congtuech_80
                  Thành viên mới
                  • Dec 2012
                  • 8

                  #9
                  em cũng đang phải làm cái đồ án tn thiết kế mạch đo nhiệt độ giao tiếp với mt qua cổng rs232.
                  phải bắt đầu tn đây mọi ng chỉ e mới!!!
                  e cảm ơn!

                  Comment

                  • congtuech_80
                    Thành viên mới
                    • Dec 2012
                    • 8

                    #10
                    em cũng đang phải làm cái đồ án tn thiết kế mạch đo nhiệt độ giao tiếp với mt qua cổng rs232.
                    phải bắt đầu tn đây mọi ng chỉ e mới!!!
                    e cảm ơn!

                    Comment

                    • suhao157
                      Thành viên mới
                      • May 2012
                      • 3

                      #11
                      Cảm ơn anh, mong anh giúp đỡ nhiều ạ

                      Comment

                      • suhao157
                        Thành viên mới
                        • May 2012
                        • 3

                        #12
                        Chao anh. anh co the cho em thao khao 1 bai tap tuong tu nhu anh da noi khong a. email cua em la duchaotb@gmail.com

                        Comment

                        • phudau92
                          Thành viên mới
                          • Jan 2013
                          • 1

                          #13
                          mong moi nguoi giup do dum.minh dang lam do an do nhiet do dung lm35 va pic16f877a.hien thi ra bang cach bao den sang.vd nhiet do tu 0-40do thi den1 bao sang.con tu 41-70 thi den 2 bao sang va tu 70-90 thi den 3 bao sang.minh da tham khao nhieu code nhung chi co viet ve hien thi bang lcd hoac led 7 doan.con cai nay thi khong co.mong cao thu chi giao.dang bi bi cho nay

                          Comment

                          • gió bắc
                            Thành viên mới
                            • May 2013
                            • 1

                            #14
                            giám sát tại 3 điểm

                            có ai biết giám sát tại 3 điểm gửi lên máy tính không.mình gửi 1 điểm thì đc nhưng 3 điểm thì không đc. khi mình gộp 3 điểm thành 1 chuỗi rồi gửi lên thì máy tính không nhận đc,mình viết bằng mikroC .bạn nào rành chỉ mình với nha!!!!

                            Comment

                            • tuan847
                              Thành viên mới
                              • May 2014
                              • 1

                              #15
                              mấy bác cho xin mạch mô phỏng trên protues với em cũng đang tìm hiểu mạch này. thaks cac bác..,

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...