Thông báo

Collapse
No announcement yet.

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

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

  • 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:


  • #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


    • #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


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

        Comment


        • #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


          • #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


            • #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


              • #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


                • #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


                  • #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


                    • #11

                      Comment


                      • #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


                        • #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...
                          X