Thông báo

Collapse
No announcement yet.

Tìm lỗi mô phỏng cổng COM giao tiếp với 8051

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

  • Tìm lỗi mô phỏng cổng COM giao tiếp với 8051

    Mình có cái mạch sơ đồ như hình vẽ sau



    Trong đó mình sử dụng thạch anh có tần số 11.0592MHz. Các thông số của các linh kiện khác ở luôn trong hình vẽ. Cổng COM mô phỏng trong Proteus là COM4. Mình dùng chương trình Virtual Serial Port Driver 6.9 để mình tạo cổng COM ảo. Mình sử dụng chương trình HyperTerminal ( cái này không có sẵn trong windows 7 nên mình download trên mạng).
    Mình dùng Virtual Serial Port tạo hai cổng COM4 và COM5 kết nối với nhau. COM4 sử dụng trong proteus, COM5 mình dùng cho HyperTerminal

    Dưới đây là chương trình mình viết cho AT80C51. Chương trình này có mục đich gửu chuỗi kí tự " Vi dieu khien 8051" tới cổng COM ảo để hiện trên HyperTerminal
    Code:
    #include <REGX52.H>
    #include <stdio.h>
    char x;
    // Khai bao mang co chuoi ki tu " Vi dieu khien 8051"
    unsigned char Ch[20] = {0x56, 0x69, 0x20, 0x64, 0x69, 0x65, 0x75, 0x20, 0x6b, 0x68, 0x69, 0x65, 0x6e, 0x20, 0x38, 0x30, 0x35, 0x31, 0x0a, 0x0d};
    void main(void)
    {
    	SCON = 0x52;  //port nôi tiep che do 1, REN = TI =1
    	TMOD = 0x20;  //timer 1 mode 2
    	TH1 = TL1 = -3; //Toc do boud 9600
    	TR1 =1;		   // cho timer chay
    	for ( x = 0;x<=19; x++)
    	{
    		while (!TI);   // Cho co bao truyen ki tu
    		TI =0; 			// Xoa co bao truyen ki tu
    		SBUF =Ch[x];   // Truyen ki tu
    		
    		}
    	}
    Nhưng khi mình chạy thì lại không đc như ý muốn. TERMINAL1 nối trực tiếp với 8051 thì lại hiện đúng các kí tự mình muốn. TERMINAL2 nối thông qua mạch MAX232 thì không hiện những gì mình muốn. Còn trên HyperTerminal thì mình không thấy nhận đc kí tự nào cả. Các bạn hãy giúp mình sửa từ sơ đồ mạch, sửa chương trình hay bất kì cái gì để làm cho chương trình hoạt động đc



    À còn chương trình mình dùng là Proteus 7.4, Keil C 8.05

    Các chương trình khác
    Virtual Port Serial 6.9.1. 134
    Code:
    http://www.mediafire.com/?dn8xgjd4xbehrx8
    HyperTermial
    Code:
    http://www.mediafire.com/?skl4wyy8y9l12n6
    Các file khác
    Các tập tin dính kèm lần lượt dưới đây là ảnh sơ đồ mạch , ảnh khi mạch hoạt đọng bị lỗi và file sơ đồ mạch ở trên mình vẽ bằng proteus
    [ATTACH]30703[/ATTACH]

    [ATTACH=CONFIG]30704[/ATTACH]

    [ATTACH=CONFIG]30705[/ATTACH]
    Attached Files
    Last edited by congbinh1989; 15-07-2011, 00:30.

  • #2
    Cái terminal 2 nối thế kia là sai rối! Nhìn có 2 chân màu vàng khè kia kìa!! Nối lại terminal 2 đi bạn!!!!

    Comment


    • #3
      Nguyên văn bởi enter88 Xem bài viết
      Cái terminal 2 nối thế kia là sai rối! Nhìn có 2 chân màu vàng khè kia kìa!! Nối lại terminal 2 đi bạn!!!!
      Mình đã sửa kết nối với Terminal 2 rồi nhưng vẫn không đc

      Comment


      • #4
        bạn có thể nối trực tiếp hyper trong proteous bằng cách nối trực tiếp 2 chân của vỉtual teminal vào 89S52.chân rxt của vỉtual teminal nối vào txt của chip và ngc lại.ko can max 232 đâu.hoặc bạn lên google tải phần mềm cổng com ảo về bạn ah.nó hoạt động chính xác hơn.ah!b nên dùng lệnh putchar() để gửi ký tự hoặc printf("vi dieu khien 8051") để gửi chuỗi ký tự b ah.

        Comment


        • #5
          Nguyên văn bởi Thái Tuế_vy Xem bài viết
          bạn có thể nối trực tiếp hyper trong proteous bằng cách nối trực tiếp 2 chân của vỉtual teminal vào 89S52.chân rxt của vỉtual teminal nối vào txt của chip và ngc lại.ko can max 232 đâu.hoặc bạn lên google tải phần mềm cổng com ảo về bạn ah.nó hoạt động chính xác hơn.ah!b nên dùng lệnh putchar() để gửi ký tự hoặc printf("vi dieu khien 8051") để gửi chuỗi ký tự b ah.
          Vậy khi mình làm mạch in thì có phải vẽ max232 không.

          Comment


          • #6
            mình thấy cái terminal_2 của bạn nối trực tiếp với cổng com. terminal thật chất bao gồm một lcd và 1 vdk - nói vậy cho dễ hiểu. Nên mức giao tiếp giữa terminal cũng là TTL (0-5v), còn cổng com DB9 của mình có điện áp rs232 :mức 0 là 15->3v, mức 1 là -15 -> -3.
            Nên terminal 2 không thể hiểu những gì com gửi tới do khác mức điện áp.
            Cho nên bạn muốn giao tiếp giữa vdk và hyperterminal của máy tính thì bạn phải dùng thêm max232.
            Còn một cách là dùng con IC giả max 232 có tên PL2303. con này chuyển đổi rs232 thành usb rất tiện lợi.
            nếu bạn làm được mạch của bạn nhìn "pro" lắm.
            Thân
            su_conan

            Comment


            • #7
              mạch của bạn sai rồi mạch như thế này sẽ đúng bạn à. mình cũng bị như vậy và thay đổi mạch thì okClick image for larger version

Name:	Untitled.png
Views:	1
Size:	35.2 KB
ID:	1359159

              Comment

              Về tác giả

              Collapse

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

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

              Collapse

              Đang tải...
              X