Thông báo

Collapse
No announcement yet.

Kiểm tra hộ cho em cái quét LED này

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

  • Kiểm tra hộ cho em cái quét LED này

    Đề bài như sau: Cho mạch giao tiếp giữa 8051 và 4 led 7 đoạn theo phương pháp quét như hình dưới. Viết chương trình con hiển thị 4 số BCD không nén (unpacked BCD) có mã lưu trong 4 ô nhớ 33H, 32H, 31H và 30H lên 4 led tương ứng (led1, led2, led3 và led4).

    Hướng dẫn: Để đóng chuyển mạch cho led, cấp mức logic 0 ở phía cực B của transistor tương ứng (đóng vai trò như một chuyển mạch điện tử). Sau đó phải tạo trễ một khoảng thời gian để led đáp ứng sáng.
    Tìm mãi ko thấy lỗi sai nè

    Code:
    INCLUDE 89C51.MC
    ORG 0
    ; HIEN THI RA LED TU DU LIEU THANH GHI 30H, 31H, 32H, 33H
    	MOV 30H,#1
    	MOV 31H,#2
    	MOV 32H,#3
    	MOV 33H,#4
    ; XUAT LED, NHAY VO HAN
    LOOP:
    	ACALL OUTLED
    	SJMP LOOP
    OUTLED:
    
    	MOV A,30H
    	SWAP A
    	ORL A,#0FH
    	MOV P1,A
    	CLR P1.0
    	ACALL DELAY
    	
    	MOV A,31H
    	SWAP A
    	ORL A,#0FH
    	MOV P1,A
    	CLR P1.1
    	ACALL DELAY
    	
    	MOV A,32H
    	SWAP A
    	ORL A,#0FH
    	MOV P1,A
    	CLR P1.2
    	ACALL DELAY
    	
    	MOV A,33H
    	SWAP A
    	ORL A,#0FH
    	MOV P1,A
    	CLR P1.3
    	ACALL DELAY
    	RET
    
    DELAY:
    	MOV R7,#200
    	DJNZ R7,$
    	RET
    
    END
    Còn đây là file mô phỏng và hex: http://ifile.it/2qu6ijs
    Last edited by rainbowsmile; 24-04-2009, 07:59.

  • #2
    Vấn đề mô phỏng quét Led trong proteus tôi đã nói rất nhiều lần rồi. Lỗi không mô phỏng đúng là do Proteus nó không thể mô phỏng đúng hoạt động đóng cắt Transistor mà người lập trình muốn. Để làm được mô phỏng nên tham khảo một số mạch mô phỏng trong các ví dụ của Proteus (thư mục tên Sample) xem nó dùng linh kiện gì để mô phỏng việc đóng cắt Led7 thanh thì mình dùng đúng thứ như vậy. Với mạc trên, em cũng thử dùng 4 IC cổng NOT xem sao, có thể mô phỏng được.
    Ethernet-RS232, PIC Webserver, RFID Reader
    CallerID, Cảnh báo BTS, ...
    0988006696
    linhnc308@gmail.com
    http://linhnc308.blogspot.com

    Comment


    • #3
      Em đổi sang dùng IC74LS245 rồi, có tác dụng tăng dòng như Trans lun.
      Đề bài vẫn như cũ. Nhưng mà sao test thử thì nó ko chạy theo ý mình nhỉ. Nó ko có hiện từng số lần lượt lên. Và mọi người xem giùm: sao em quy định
      MOV P2,#08H
      mà nó ko lên 1 ở chân thứ 4 của P2 nhỉ.

      CODE ASM
      INCLUDE 89C51.MC
      ORG 0000H
      MOV 30H,#01H
      MOV 31H,#02H
      MOV 32H,#03H
      MOV 33H,#04H
      ;*********************
      LOOP: MOV P2,#01H
      MOV P0,30H
      ACALL DELAY

      MOV P2,#02H
      MOV P0,31H
      ACALL DELAY

      MOV P2,#04H
      MOV P0,32H
      ACALL DELAY

      MOV P2,#08H
      MOV P0,33H
      SJMP LOOP
      ;**************************
      DELAY: MOV R7,#10
      LOP1: MOV R6,#200
      LOP: MOV R5,#250
      DJNZ R5,$
      DJNZ R6,LOP
      DJNZ R7,LOP1
      RET
      END
      File mô phỏng + hex: http://ifile.it/75smuhe

      Comment


      • #4
        [QUOTE=rainbowsmile;181588]Em đổi sang dùng IC74LS245 rồi, có tác dụng tăng dòng như Trans lun.
        Đề bài vẫn như cũ. Nhưng mà sao test thử thì nó ko chạy theo ý mình nhỉ. Nó ko có hiện từng số lần lượt lên. Và mọi người xem giùm: sao em quy định mà nó ko lên 1 ở chân thứ 4 của P2 nhỉ.


        Đây để mình gửi cho bạn 1 file mô phỏng bằng proteus (8951+ds1307 hiển thị ra 6 led 7 đoạn). Nói chung là proteus mô phỏng led 7 đoạn khá tốt, với ví dụ mình đưa mong rằng sẽ giúp bạn giải quyết được vấn đề! Mình viết .bằng asm (dùng ct prog-studio 5.28).
        Attached Files

        Comment


        • #5
          này, bác dùng led7 đoạn loại anode chung hay cothode chung thế?? hehe
          lúc mô phỏng thì hạn chế dùng linh kiện analog để đỡ tốn CPU, thay mấy cái khóa đó bằng cổng NOT đi bạn.

          Comment


          • #6
            này, bác dùng led7 đoạn loại anode chung hay cothode chung thế?? hehe
            Anh bạn này có vẻ rành về transistor mà sao lại hỏi câu này ?
            BJT loại PNP thì biết là dùng loại A chung rồi
            Last edited by Multi System; 14-05-2009, 23:18.

            Comment


            • #7
              Nguyên văn bởi rainbowsmile Xem bài viết
              LOOP: MOV P2,#01H
              MOV P0,30H
              ACALL DELAY

              MOV P2,#02H
              MOV P0,31H
              ACALL DELAY

              MOV P2,#04H
              MOV P0,32H
              ACALL DELAY

              MOV P2,#08H
              MOV P0,33H
              SJMP LOOP

              Đây, vấn đề là ở đây, Khi bạn cho led 1 sáng, xuất data ra P0 >> Đúng rồi.
              Nhưng có điều ở đây là khi cho led 1 sáng sau đó ko thấy lệnh tắt tất cả các Led đi, mà đã có lệnh cho Led 2 sáng ( Mov p2,#02h) Do đó Led 2 lúc này sáng theo data Led 1 >>> Các Led sau cũng thế, xuất hiện hiện tượng lem, bóng ma trên các led, xấu hơn nữa là sáng toàn số 8

              Để giải quyết việc này bạn cần làm như sau:
              1: Xuất data led 1
              2: Cho led 1 sáng
              3: Cho trễ 1 thời gian
              4: Tắt led 1 đi
              5: Bắt đầu với Led 2

              Tham khảo đoạn code sau
              Code:
              LOOP:
              MOV P0,30H
              MOV P2,#01H
              ACALL DELAY
              MOV P2,#00H
              
              MOV P0,31H
              MOV P2,#02H
              ACALL DELAY
              MOV P2,#00H
              
              MOV P0,32H
              MOV P2,#04H
              ACALL DELAY
              MOV P2,#00H
              
              MOV P0,33H
              MOV P2,#01H
              ACALL DELAY
              MOV P2,#00H
              
              SJMP LOOP
              Trần Đức Sơn

              tel:0934691385

              Comment


              • #8
                ấy, ai chả biết PNP phải đi với A chung, nhưng hỏi xem bác í có để ý dùng đúng loại A chung không thôi mùhh. 2 cái model đó giống nhau, nhiều lúc lại quên ấy chứ.

                Comment


                • #9
                  các bác cho e hỏi có fải là nếu dùng trans PNP như sơ đồ thì mức tích cực ở cổng để chọn LED sẽ là mức 0
                  còn nếu dùng trans NPN thì lại ngược lại có nghĩa là nếu bit chọn led ở mức logic 1 thì led được chọn??? có đúng ko ạ
                  Attached Files
                  |

                  Comment


                  • #10
                    Cho hỏi vì sao không nối chân 40 lên Vcc mà lại là chân 31 vậy

                    Comment


                    • #11
                      Nguyên văn bởi legosse Xem bài viết
                      Cho hỏi vì sao không nối chân 40 lên Vcc mà lại là chân 31 vậy
                      Như bạn đã biết thì chân 31 là chan EA nên để thực thi chương trình trong Ram nội của nó thì phải nối nó lên VCC
                      Last edited by chinh_cover; 21-05-2009, 11:38.

                      Comment


                      • #12
                        thực thi chương trình trong ROM nội chứ k phải RAM nội. mô phòng trong PROTEUS nó nối nguồn cho các IC sẵn rồi (ẩn).

                        Comment


                        • #13
                          các bác ơi giúp em tài liệu về thiêt kế mạch điều khiển tốc độ động cơ DC và hiển thị tốc độ lenLed 7 doan voi.em không biêt cách viet bai hỏi nên viet ở đây vì em mói tham gia dien đàn!các bác giúp giùm!

                          Comment


                          • #14
                            Noi nhu vay de quy dinh dung bo nho trong. khong dung bọ nho ngoai

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X