Thông báo

Collapse
No announcement yet.

Đếm sản phẩm với RS232 và VB!!!!!!!!!!!!!!!!

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

  • Đếm sản phẩm với RS232 và VB!!!!!!!!!!!!!!!!

    Hiện nay mình đang học về ghép nối máy tính với vi điều khiển qua RS232 và VB, tuy nhiên khi làm thì chương trình lại không chạy. Haizzzzzzz!

    *****Đây là code C (keil C)


    #include <stdio.h>
    #include <REGX51.H>
    unsigned int i;
    unsigned char M[10];
    unsigned int sp;
    ///////
    void ngat_int0 (void) interrupt 0
    {
    unsigned int j;
    for(j=0;j<500;++j)
    ++sp;
    }
    ////////////
    void main(void)
    {
    unsigned char x;
    SCON=0x52; //Port noi tiep che do 1, REN=TI=1
    TMOD=0x20; //Timer 1 che do 2
    TH1=TL1=-3; //Toc do Baud=9600
    TR1=1; //Cho phep timer 1 hoat dong
    x=_getkey(); //Doi tin hieu tu cong may tinh
    while(x!='@');
    for(i=1;i<=3;i++) //Nhan 3 byte tu may tinh
    M[i]=_getkey();
    if((M[1]=='I')&&(M[2]=='R')&&(M[3]=='0')) //3 byte la IR0
    {
    IE=0x81; //Khoi tao thanh ghi cho phep ngat IE thiet lap ngat ngoai 0
    IT0=1; //Cho phep ngat ngoai INT0
    while(1)
    {
    putchar('a');
    putchar(sp%256);
    putchar(sp/256);
    }
    }
    }

    *****Còn đây là code VB

    Private Sub Form_Load()
    Dim kt As String
    Text1.Text = " "
    MSComm1.CommPort = 5 'cong com 5
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.RThreshold = 1
    MSComm1.SThreshold = 1
    MSComm1.InputLen = 3 'moi lan doc 3 byte
    MSComm1.InputMode = 0 'mode text
    MSComm1.PortOpen = True
    End Sub

    Private Sub MSComm1_OnComm()
    Dim x, y, z As String
    Dim a, b, c As Integer
    x = y = z = " "
    If MSComm1.CommEvent = comEvReceive Then
    x = MSComm1.Input
    If Left(x, 1) = "a" Then
    If Len(x) = 3 Then
    y = Left(Right(x, 2), 1) 'byte thap
    z = Right(Right(x, 2), 1) 'byte cao
    c = Asc(y) + Asc(z) * 256
    Text1.Text = c
    End If
    End If
    x = y = z = " "
    End If
    End Sub
    Sub send(buffer As String)
    If MSComm1.PortOpen = True Then
    MSComm1.Output = buffer
    End If
    End Sub
    Private Sub Cmd_start_Click()
    kt = "@IR0"
    send (kt)
    End Sub

    Private Sub Cmd_exit_Click()
    If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
    End If
    End
    End Sub

    *****Đây là mạch mô phỏng
    Click image for larger version

Name:	Chưa có tên.jpg
Views:	1
Size:	117.4 KB
ID:	1410320

    Khi mình chạy chương trình thì cổng Com ảo báo là VB đã gửi dữ liệu và Proteus cũng nhận. Thế nhưng lại không có dữ liệu gửi ngược lại => chả đếm được cái gì cả. Nản!!!!
    Đây là cổng com ảo:

    Click image for larger version

Name:	1.png
Views:	1
Size:	69.1 KB
ID:	1410321

    Còn đây là giao diện chương trình VB

    Click image for larger version

Name:	2.png
Views:	1
Size:	11.8 KB
ID:	1410322

    ******Đó là tất cả tim gan phèo phổi của chương trình mình đang làm, các bạn cố gắp giúp mình tìm ra bệnh của nó nhá! Thank trước.
    Mình chỉ mới tìm hiểu cái này thôi. Những thứ trên kia cũng là đi cóp nhặt chứ đã hiểu hết được đâu. Vậy rất mong được sự giúp đỡ của mọi người!

  • #2
    Em làm gì mà tùm lum quá vậy, đọc vô rối hết cả lên, em đưa ra giai thuật rồi cứ thé mà viết lên, không nên copy như vậy.
    Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
    Tel: 0903 702 417. Email: web:

    Comment


    • #3
      Giải thuật là có 1 xung kích vào ngắt ngoài INT0 (P3.2), sau đó ngắt ngoài chỉ đến trình phục vụ ngắt interrupt 0 làm biến đếm sản phẩm tăng lên 1.
      Đầu tiên máy tính gửi chuỗi @IR0 xuống vi điều khiển, vi điều khiển sẽ nhận được chuỗi này và bắt đầu quá trình gửi số sản phẩm đếm được ngược lại cho máy tính.
      Khi máy tính nhận được tín hiệu từ VDK sẽ hiển thị số sản phẩm lên màn hình.

      ======> Theo mình nghĩ là thế! (Mà 2 đoạn code kia cũng ngắn chứ làm gì rối lắm đâu.)

      Nhắc lại, vấn đề của mình là máy tính đã gửi được dữ liệu nhưng VDK thì chả gửi gì cả. Hay tại mạch mô phỏng sai (thấy 2 cổng NOT ảo quá nhưng bỏ đi và nối theo mạch thật thì không chạy)???????
      Haizzzzzzzzzzzzz! Mong sớm nhận được giúp đỡ.

      Comment


      • #4
        he he. bạn lại phần giao tiếp với máy tính trên proteus nhé.
        Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
        Tel: 0903 702 417. Email: web:

        Comment


        • #5
          Nguyên văn bởi vanmanh1988 Xem bài viết
          he he. bạn lại phần giao tiếp với máy tính trên proteus nhé.
          Sax! Đã mất công giúp lại còn lấp lửng như thế nữa. Em thấy mạch proteus ổn mà, cũng cái mạch này em đã thử dùng VB để điều khiển LED thì chạy rồi. Nhưng dùng 8051 để gửi lên thì chả có gì (chân 3 của cổng COM có nháy 1 phát khi bắt đầu mô phỏng nhưng xem trong COM ảo thì send=0). Thực sự là rất nản! Help me!!!!!!!!!!!

          Comment


          • #6
            Oke roi, da xong. Keke!!!!!!!

            Comment


            • #7
              pro cho em hỏi thế code vdk va vb co sai ko,vì em thử gõ doạn khai báo:
              Private Sub Form_Load()
              Dim kt As String
              Text1.Text = " "
              MSComm1.CommPort = 5 'cong com 5
              MSComm1.Settings = "9600,N,8,1"
              MSComm1.RThreshold = 1
              MSComm1.SThreshold = 1
              MSComm1.InputLen = 3 'moi lan doc 3 byte
              MSComm1.InputMode = 0 'mode text
              MSComm1.PortOpen = True
              End Sub
              nhưng báo lối dòng
              MSComm1.CommPort = 5 'cong com 5

              vì em chưa học vb nên chưa hiểu lắm

              Comment


              • #8
                loi nay chac do ban chua ket noi cong com 5 voi cong com mo phong trong proteus .ban download phan men cong com ao ve cai ket noi nhu vay la chay

                Comment


                • #9
                  Nguyên văn bởi manhdt3k3 Xem bài viết
                  Oke roi, da xong. Keke!!!!!!!
                  bạn làm như thế làm mà chạy dc vậy?bạn có thể cho mình xin code bài này không?

                  Comment


                  • #10
                    Nguyên văn bởi manhdt3k3 Xem bài viết
                    Sax! Đã mất công giúp lại còn lấp lửng như thế nữa. Em thấy mạch proteus ổn mà, cũng cái mạch này em đã thử dùng VB để điều khiển LED thì chạy rồi. Nhưng dùng 8051 để gửi lên thì chả có gì (chân 3 của cổng COM có nháy 1 phát khi bắt đầu mô phỏng nhưng xem trong COM ảo thì send=0). Thực sự là rất nản! Help me!!!!!!!!!!!
                    Nếu tôi giải cho bạn thì tôi là người đi học chứ không phải là bạn.Nhưng tiếc là tôi không phải là người đi học
                    Tư vấn thiết kế hệ thống điện-điện tử theo yêu cầu.
                    Tel: 0903 702 417. Email: web:

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    Đang tải...
                    X