Thông báo

Collapse
No announcement yet.

giao tiếp giữa 89s52 và PC ứng dụng do nhiệt đa kênh

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

  • giao tiếp giữa 89s52 và PC ứng dụng do nhiệt đa kênh

    tôi đang thực hiện 1 đề tài đo nhiệt độ 6 kênh bằng ADC0809 để lấy dữ liệu truyền lên máy tính hiển thị bằng đồ thị teechart chô 6 kênh đó. từ máy tính có thể nhận được thông tin về nhiệt độ của 6 kênh đo và có thể cài đặt được nhiệt độ cho 6 kênh đo đó để truyền xuống VDk tác động relay hay PWM.Ngoài ra thông tin đo được của mỗi kênh và giá trị nhiệt độ cài đặt có thể hiển thị lên LCD 16*2 như kênh 1: giá trị đo , giá trị đặt ...
    về vấn đề đo cho 1 kênh và vẽ bằng teechart thì tôi đã làm được rồi.Nhưng khi đo nhiều kênh tức phải truyền và nhận nhiều byte giữa PC và MCU thì tôi đang gặp khó khăn!!!
    đây là code VB của tôi :

    MSComm1.InputLen = 0
    If MSComm1.CommEvent = comEvReceive Then
    Data = MSComm1.Input
    If Asc(Data) = Y Then MSComm1.Output = Chr(Z)
    MSComm1.InBufferCount = 0
    '---------------------------------------
    'If comEvReceive Event then get data and display
    For i = 1 To 6
    If MSComm1.InBufferCount <> 0 Then
    manggiatri(i) = MSComm1.Input
    dem = dem + 1
    If dem = 6 Then MSComm1.InBufferCount = 0
    End If
    Next
    tôi định đồng bộ giữa PC và MCU : nếu PC nhận được 1 tín hiệu đồng bộ truyền từ MCU là ký tự Y thì PC sẽ trả lời bằng ký tự Z và công việc nhận dữ liệu bắt đầu.Nếu không nhận được ký tự Y của MCU thì thoát khỏi sự kiện nhận.Tôi định dùng 1 mảng 6 phần tử để lưu lại giá trị của 6 kênh đo...
    ai đã thực hiện truyền nhận nhiều byte giữa VDK và PC thì giúp tôi phần này với code trên của tôi có vấn đề .
    cám ơn

  • #2
    Cái này tôi đã làm rồi.
    Vấn đề đồng bộ thì đơn giản là làm YZ như bạn.
    Nhưng vấn đề mấu chốt nhất có lẽ bạn quan tâm là làm thế nào PC hoặc VĐK phân biệt được dữ liệu nào là của kênh nào trong 6 kênh.
    Bạn phải mã hóa đường truyền giống như chuyển mạch gói trong hệ thống thông tin.
    Các byte được truyền và nhận sẽ tập hợp thành một nhóm các byte và định ra trường mào đầu, trường lệnh, trường dữ liệu,... => tự tạo ra một giao thức để PC và VĐK truyền cho nhau.
    Chúc bạn thành công
    GTH sản xuất mạch in PCB 1 mặt:
    -phủ xanh: 40.000 đ/dm2
    -không phủ xanh: 30.000 đ/dm2
    -Cung cấp mực cảm quang để làm mạch in
    email:

    Comment


    • #3
      Bạn có thể sử dụng labview để làm, cái này đơn giản hơn VB và có nhiều cái hay hơn nhiều đấy.

      0988467839

      Comment


      • #4
        Cách mã hóa như sau:
        0x1+ data+ 0x0A +
        0x2+ data+ 0x0A +
        0x3+ data+ 0x0A +
        0x4+ data+ 0x0A +
        0x5+ data+ 0x0A +
        0x6+ data+ 0x0A +
        0x0B

        Trong đó: 0x01--0x06 là 6 kênh ADC
        0x0A là mã kết thúc của 1 kênh
        0x0B là kết thúc 1 gói dữ liệu.
        Không rõ alo, anh giúp cho

        Comment


        • #5
          Nguyên văn bởi MicroDuyphi Xem bài viết
          Cách mã hóa như sau:
          0x1+ data+ 0x0A +
          0x2+ data+ 0x0A +
          0x3+ data+ 0x0A +
          0x4+ data+ 0x0A +
          0x5+ data+ 0x0A +
          0x6+ data+ 0x0A +
          0x0B

          Trong đó: 0x01--0x06 là 6 kênh ADC
          0x0A là mã kết thúc của 1 kênh
          0x0B là kết thúc 1 gói dữ liệu.
          Không rõ alo, anh giúp cho
          em đang viết chương trình ASM cho VDK thực hiện bắt tay truyền nhận, giao tiếp với máy tính em dùng VB, anh có thể chỉ giúp em chương trình VB như thế nào để lưu mảng đa byte này không? em chưa hiểu ý trên của anh.
          cám ơn anh

          Comment


          • #6
            mình viết chương trình truyền nhận bắt tay giữa PC và MCU như sau :
            NHANSERIAL:
            MOV R0,#16H
            MOV R3,#6
            JNB RI,$
            CLR RI
            S1: MOV A,SBUF
            CJNE A,#01,S1

            JNB TI,$
            CLR TI
            MOV A,#02
            MOV SBUF,A

            LPREC: JNB RI,$ ; SAU KHI THUC HIEN DOAN CT BYTE NHAN DUOC LUU TU DIA CHI 16H->1BH
            CLR RI
            MOV A,SBUF
            MOV @R0,A
            INC R0
            DJNZ R3,LPREC

            RET
            ;xxxxxxxxxxxxxxxxxxxxxxxxxxTRUYENDULIEUxxxxxxxxxxx xxxxxxxxxxxxx
            TRUYENSERIAL: ;TRUYEN DATA LEN MAY TINH LIEN TUC
            MOV R0,#10H
            MOV R3,#6

            LPTRT: JNB TI,$
            CLR TI
            MOV A,@R0
            MOV SBUF,A
            INC R0
            DJNZ R3,LPTRT
            RET
            vì dữ liệu luôn được cập nhật liên tục nên việc truyền dữ liệu 6 kênh đo lên máy tính là liên tục, vấn đề của mình đặt ra là giả sử đang trong quá trình truyền dữ liệu 6 kênh nhưng lại gặp tín hiệu bắt tay của MCU & PC (tức máy tính se gui lên 1 byte bắt tay) thi tren máy tính sẽ đọc 1 chuỗi sai khi có byte bắt tay đó.
            Bác microduyphi có thể giúp em 1 phương án nào giải quyết việc truyền nhận này không?

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X