Giúp giao tiếp RS232 giữa PC & PIC16f877a

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • TheHouse
    Thành viên tích cực
    • Oct 2008
    • 633

    #1

    Giúp giao tiếp RS232 giữa PC & PIC16f877a

    Mình làm hoài mà từ mô phỏng đến mạch thực tế vẫn không chạy được, ai biết sai chỗ nào chỉ giúp mình với.

    Mạch sử dụng PIC 16F877A, giao tiếp với cổng COM qua MAX232.

    CODE C cho PIC
    Code:
    #include <16f877a.h>
    #use delay (clock=20000000)
    #use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
    #byte portb=0x06
    #byte trisb=0x86
    #byte portc=0x07
    #byte trisc=0x87
    
    
    void main()
    {
    trisb=0;
    while(true)
    {
       portb = 0x00;
       putc(0x00);
       delay_ms(100);
       portb = 0xff;
       putc(0xff);
       delay_ms(100); 
    }
    }

    CODE VB
    Code:
    Private Sub cmdClear_Click()
        Text1.Text = ""
        
    End Sub
    
    Private Sub cmdExit_Click()
    Unload Me
    End Sub
    
    Private Sub cmdSend_Click()
        MSComm1.Output = Text2.Text
    End Sub
    
    Private Sub Form_Load()
        cmdSend.Caption = "&Send"
        Text1.Text = ""
        Text2.Text = ""
        Text1.Enabled = False
        cmdExit.Caption = "&Exit"
        With MSComm1
            .Settings = "9600,N,8,1"
            .CommPort = 4
            .RThreshold = 1
            .SThreshold = 0
            .InputMode = comInputModeText
            .InputLen = 0
            .Handshaking = comNone
            .InBufferSize = 1024
            .OutBufferSize = 1024
            If .PortOpen = False Then
              .PortOpen = True
            End If
             
        End With
    End Sub
    
    Private Sub MSComm1_OnComm()
        Dim Buffer As Variant
        If MSComm1.CommEvent = comEvReceive Then
            Text1.Text = Text1.Text + MSComm1.Input
        End If
    End Sub
    [CODE]

    Nguyên lý mạch điều khiển:

  • dinhchithanh
    Thành viên tích cực
    • Sep 2007
    • 478

    #2
    Bạn nên thêm dòng: #fuses NOWDT,NOLVP nữa.
    Kiểm tra RS232 thì bạn nên dùng lệnh putc('a'); thay cho put(0x00); vì 0x00 là ký tự null, bạn sẽ không thấy j trên terminal.
    Đăng ký Dropbox có ngay 2GB lưu trữ online miễn phí:

    Comment

    • vinh_2009
      Thành viên mới
      • Dec 2009
      • 4

      #3
      Em ĐAng làm đề tài đếm sản phẩm hiển thị trên LCD với yêu cầu phải hiển thị dc 12 chữ số.Nhưng em chỉ hiển thị dc tới 32 ngàn rùi lại đếm -31 ngàn về âm
      Bác nào biết giupe em với.
      Còn ĐÂy là chương trình và mô phỏng của em các bác giúp em với nhé.thank các bác nge


      http://www.mediafire.com/?ztmbp7i7xsrbapq

      Comment

      • TheHouse
        Thành viên tích cực
        • Oct 2008
        • 633

        #4
        Đã thử nhưng vẫn không được, mong mọi người giúp cho..

        Comment

        • tdm
          Thành viên tích cực
          • Sep 2005
          • 349

          #5
          Nguyên văn bởi TheHouse Xem bài viết
          Đã thử nhưng vẫn không được, mong mọi người giúp cho..
          mô phỏng trên proteus chạy bình thường.
          Code:
          #include <16f877a.h>
          # fuses NOWDT, HS, NOPROTECT, NOLVP, PUT//chạy trên mạch thật thêm đoạn code này
          # use delay (clock = 20000000)
          #use rs232(baud=9600,parity=n,xmit=PIN_C6,rcv=PIN_C7)
          #byte portb=0x06
          #byte trisb=0x86
          #byte portc=0x07
          #byte trisc=0x87
          
          
          void main()
          {
          trisb=0;
          while(true)
          {
             portb = 0x00;
             putc('b');
             delay_ms(100);
             portb = 0xff;
             putc('a');
             delay_ms(100); 
          }
          }
          Attached Files
          |

          Comment

          • TheHouse
            Thành viên tích cực
            • Oct 2008
            • 633

            #6
            Cho mình hỏi tại sao chạy trên mạch thật phải thêm đoạn code đó.?

            Comment

            • TheHouse
              Thành viên tích cực
              • Oct 2008
              • 633

              #7
              Mình mô phỏng giống của bạn thì chạy bình thường, nhưng mô phỏng như file của mình, tức là dùng cổng COM RS232 thì lại không được. Nếu mô phỏng như bạn thì làm sao kiểm tra việc truyền dữ liệu từ VB sang VDK..

              Comment

              • thuy3306
                Thành viên mới
                • Oct 2009
                • 3

                #8
                Kiểm tra lại cái ".CommPort = 4". Thường com trên máy tính là 1. Bạn vào manage xem lại số hiệu com đúng chưa.

                Comment

                • tdm
                  Thành viên tích cực
                  • Sep 2005
                  • 349

                  #9
                  Nguyên văn bởi TheHouse Xem bài viết
                  Mình mô phỏng giống của bạn thì chạy bình thường, nhưng mô phỏng như file của mình, tức là dùng cổng COM RS232 thì lại không được. Nếu mô phỏng như bạn thì làm sao kiểm tra việc truyền dữ liệu từ VB sang VDK..
                  bạn dùng phần mềm com ảo mô phỏng.
                  |

                  Comment

                  • TheHouse
                    Thành viên tích cực
                    • Oct 2008
                    • 633

                    #10
                    Mình đã dùng phần mềm Virtual Serial Port Driver để mô phỏng com ảo, đã kiểm tra trong Manager, nó đúng là cổng COM4, cổng COM 1 là cổng thật, ở đây mình mô phỏng trên COM ảo, nó là COM 3.

                    Comment

                    • vinhvan_2007
                      Thành viên mới
                      • May 2011
                      • 1

                      #11

                      Comment

                      • dientu_chuoi
                        Thành viên mới
                        • Dec 2012
                        • 6

                        #12
                        bạn nao gúp minh với . minh mô phổng thì ok rồi nhưng khi làm mach thực tế thì giao diện VB cứ báo 0 độ. còn trên LCD thì vẩn chạy bình thường.. khi thử thi con MAx 232 nong gê gơm. mạch thi kiểm tra máy lần rồi không sai chổ nào. nhờ các bạn giúp .

                        Comment

                        • ntk1007
                          Thành viên mới
                          • Apr 2013
                          • 3

                          #13
                          có pro nào giúp e cai mạch giao tiếp với máy tính mà sử dụng PIC 18F4550 hk?

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...