Thông báo

Collapse
No announcement yet.

Cần giúp đỡ về giao tiếp computer

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

  • #16
    Cám ơn sự giúp đỡ của các bạn, mình đã truyền nhận thành công rồi
    mình lấy 1pin của 8051 nối chung với nhau làm bus, VDK nào muốn giao tiếp với PC thì sẽ kéo bus xuống mức [0], và thả ra khi nhận được ACK từ PC.
    Nay mình muốn lưu những số liệu từ PC send xuống 8051 vào ROM, và sau mỗi lần reset thì VDK sẽ dùng những số liệu này mà ko phải nạp lại ROM, ko biết có cách nào ko vậy?, nếu được thì có thể dùng những loại ROM nào?
    thz

    Comment


    • #17
      Nếu là để lưu trữ số liệu , bạn có thể dùng EEPROM họ 24Cxx . Giao tiếp của nó theo chuẩn I2C . Tùy thuộc vào lượng dữ liệu lưu trữ mà bạn có thể chọn EEPROM có bộ nhớ phù hợp (VD : 24C64 -> 64Kbits , 24C256 ->256Kbits,...) .

      Comment


      • #18
        Ok, mình sẽ thử. Cám ơn Trungkt

        Comment


        • #19
          hix, mình đang ngặp một số khó khăn mong các bác giúp đỡ
          1. khi giao tiếp PC, mình cấp nguồn cho 8051 trước rồi mới chạy chương trình giao diện lập trình bằng VB, thì nó ko hiển thị những dữ liệu từ 8051 gửi lên. Muốn hiển thị được thì phải reset lại 8051 hay là cho chương trình giao diện chạy trước khi cấp nguồn 8051. Vậy có cách nào để khi mình cap nguồn cho 8051 trước rồi chạy giao diện sau mà máy tính vẫn hiển thị đúng data 8051 send lên ngay tại thời điểm đó ko? (8051 đã tự động reset khi cấp nguồn). Đoạn code cấu hình COM, mong chỉ giáo:
          Private Sub Form_Load()
          '===cau hinh COMM port====
          With MSComm1
          .CommPort = 2 'dung COM2
          .Settings = "1200,N,8,1"
          ' .InBufferSize = 1
          .InputLen = 0
          .RThreshold = 1 '1 byte goi ngat
          .InputLen = 0
          End With
          If MSComm1.PortOpen = False Then
          MSComm1.PortOpen = True
          End If
          lblreceive.refresh 'nhãn hiển thị
          End sub

          2. có cách nào để send data có tầm trị lớn hơn 1byte xuống 8051?
          VD: mình muốn send số 1234 xuống 8051 thì sao đây? Mình nghĩ là sẽ cắt data ra từng phần nhỏ chẳng hạn 12 và 34 rồi send, mình đang gặp khó khăn ờ chõ cắt data ra trên VB và ghép lại ở 8051 sao cho dữ liệu nhận được đúng kiểu dữ liệu ban đầu. Đó là suy nghĩ của mình thôi, ko biết có bạn nào có cao kiến gì giúp đõ mình với.
          Thz for read and reply

          Comment


          • #20
            Mình nghĩ như thế này bạn ạ.

            Chương trình trên VB bạn viết đúng rồi.

            Câu hỏi 1 của bạn: lỗi này tôi nghĩ là do khi bạn chạy 8051 trước rồi mới chạy chương trình trên PC thì khi đó chưa có tín hiệu bắt tay, cổng giao tiếp chưa mở thì làm sao mà dữ liệu có thể vào bộ đệm nhận của RS232 được hả bạn. Do đó tốt nhất là phải chạy chương trình trước để thiết lập thông số( mở cổng giao tiếp,..) khi đó 2 bên mới sẵn sàng hoạt động. Với lại PC của bạn là master, còn 8051 chỉ là slave thôi. Slave chạy trước thì làm được gì master phải chạy trước chứ bạn. Khi đó mới hiển thị đúng dữ liệu.

            Về câu hỏi 2 của bạn: có thể gửi dữ liệu có tầm trị lớn hơn 1 byte xuống 8051, khi đó bạn phải dùng trễ gửi từng byte xuống dùng trễ. Tuy nhiên ở đây bạn chỉ cần cho dữ liệu vào thẳng luôn Output, thiết lập thông số để có thể gửi trễ sau khi gửi từng byte để vdk có thể kịp xử lí. Chi tiết code bạn có thể vào box:
            http://dientuvietnam.net/board/showthread.php?t=963 mình đã up chương trình lên rồi đó.

            Bạn down chương trình về và lọc lấy đoạn code mà mình thấy cần. Đây là chương trình viết cho chuẩn RS485.
            Technical sale at WT Microelectronics S'pore
            Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
            Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

            Comment


            • #21
              bạn HẢi BẮc gửi giúp mình code dó dược k?mình thử vào địa chỉ mà bạn đã up code lên nhưng k vào được.Bạn gửi giúp mình vào mail của mình là re_set24h@yahoo.com được k.Cảm ơn bạn nhiều lắm

              Comment


              • #22
                Bác Hải Bắc có thể gởi cho mình luôn được không?Mình cũng không vào được địa chỉ bác gửi.Xin cám ơn.

                Comment


                • #23
                  hic,quên nữa,bác gửi cho mình địa chỉ này nhé : blackkid_1412@yahoo.com

                  Comment


                  • #24
                    Bạn có thể nhận được dữ liệu khi cấp nguồn cho mạch ngoài trước theo cách sau: khi chương trình chính của PC hoạt động bạn dùng 1 chân out của COM để reset mạch ngoài (đoạn cod này bạn phải viết thêm để reset).
                    chúc bạn thành công

                    Comment


                    • #25
                      Các pác xem hộ em viết đoạn code gửi data lên PC như thế đúng chưa, cám ơn các pác
                      Button Connect:
                      Private Sub Command1_Click()
                      MSComm1.Settings = "9600,n,8,1"
                      MSComm1.RThreshold = 1
                      MSComm1.SThreshold = 0
                      MSComm1.InBufferSize = 1024
                      MSComm1.OutBufferSize = 1024
                      MSComm1.InputLen = 0
                      MSComm1.CommPort = 2
                      If MSComm1.PortOpen = False Then
                      MSComm1.PortOpen = True
                      End If
                      End Sub

                      Button Disconnect:
                      Private Sub Command2_Click()
                      If MSComm1.PortOpen = True Then
                      MSComm1.PortOpen = False
                      End If
                      End Sub

                      Private Sub MSComm1_OnComm()
                      If (MSComm1.CommEvent = comEvReceive) Then
                      Text1.Text = Asc(MSComm1.Input)
                      End If
                      End Sub

                      Comment


                      • #26
                        bạn ơi, đây mới chỉ là phần chương trình nhận dữ liệu trên PC chứ có phải là từ PC gửi đi đau hả bạn?

                        Bạn xem kĩ lại nhé.
                        http://picvietnam.com/ngohaibac/My%2...ects/RS232.rar

                        Mình cho bạn xem một đoạn code gửi dữ liệu dạng khung rùi nhận lại dữ liệu với dạng khung như thế. Từ đó, bạn có thê viết thêm các đoạn mã để điều chế má CRC, kiểm soát lỗi,.. ứng dụng để truyền nhận dữ liệu trong mạng ứng dụng các phương thức truyền như Modbus, Profibus, ..

                        chúc các bạn thành công.
                        Technical sale at WT Microelectronics S'pore
                        Hỗ trợ dự án sử dụng các hãng Texas Instrument, STMicro, Freescale, Fairchild, International Rectifier, Ublox, Lumiled, Maxim
                        Liên hệ: 0915.560.511 hoặc ngo.haibac@wtmec.com

                        Comment


                        • #27
                          Cam on bac Hai Bac nhe

                          Comment


                          • #28
                            Còn đây nữa, hãy vào đây bê luôn cả project này về để biết viết chương trình truyền thông từ VB với vxl là như thế nào. Nó có nguyên cả mã nguồn truyền thông MODBUS chuẩn đó.

                            http://www.dientuvietnam.net/forums/...ead.php?t=3966
                            Dùng hàng VN - Giữ lại USD cho đất nước.

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X