Thông báo

Collapse
No announcement yet.

Quet' LED tren Protueus

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

  • Quet' LED tren Protueus

    Mình mô phỏng quét LED 7 thanh hiển thị chữ HAPPY
    Khi quét LED mình đã để delay rất nhanh rùi nhưng mà nó vẫn nháy từng LED 1 chứ ko hiển thị được cả 5 LED
    Mong các bạn chỉ giúp mình nhé
    có file gửi kèm
    http://www.mediafire.com/?yelzzfmjdld
    http://www.mediafire.com/?yelzzfmjdld
    Các ban giúp mình nhé




    #include <sfr51.inc>
    mov p2,#0
    mov p0,#0
    main:
    mov p2,#19h ; Y
    mov p0,#00000001b
    lcall delay
    mov p2,#0ch ;p
    mov p0,#00000010b
    lcall delay
    mov p2,#0ch ;p
    mov p0,#000000100b
    lcall delay
    mov p2,#08h ;a
    mov p0,#000001000b
    lcall delay
    mov p2,#09h ;h
    mov p0,#000010000b
    lcall delay
    sjmp main



    delay:
    mov tmod,#01h
    mov th0,#(-100)
    mov tl0,#(-100)
    Setb tr0
    jnb tf0,$
    clr tf0
    clr tr0
    ret

    end
    Last edited by tuyetkjem; 11-03-2010, 18:50.

  • #2
    các bạn xem giúp mình đi ! mình ko biết làm sao nữa

    Comment


    • #3
      TRỜI!!! vấn đề quét led đơn giản thôi mà, bạn hiểu thế này nhé!
      - Quét led là hiển thị hình ảnh >24 hình/giây để mắt thường ta không nhận thấy sự chớp tắt của led
      - Nhưng điều này chỉ đúng khi chúng ta quét ít led
      - với trường hợp nhiều led sẽ gây ra hiện tượng "Lưu ảnh" một hiện tượng vật lý của mắt người
      khắc phục:
      dùng một chương trình delay con giữa hai trạng thái quét để tăng thời gian hiển thị " ở đây for(....) đóng vai trò là hàm delay với khoảng thời gian ước lượng"
      VD chương trình điều khiển đếm thời gian cột đèn giao thông
      void main (void)
      {
      while (1)
      { xanh=1; do=0; vang=0;
      for (j=25;j>=0;j--)
      {
      ch=j/10; dv=j%10;
      for (k=0;k<10;k++) // tang thoi gian hien thi so

      { A1=0; A2=1;
      P2=ma[dv];
      delay();
      A1=1; A2=0;
      P2=ma[ch];
      delay();
      }}
      {
      vang=1; xanh=0; do=0;
      for (j=5;j>=0;j--)
      { ch=j/10; dv=j%10;
      for (k=0;k<10;k++) // tang thoi gian hien thi so

      { A1=0; A2=1;
      P2=ma[dv];
      delay();
      A1=1; A2=0;
      P2=ma[ch];
      delay();
      } }}
      {
      do=1; xanh=0; vang=0;
      for (j=30;j>=0;j--)
      {
      ch=j/10; dv=j%10;
      for (k=0;k<10;k++) // tang thoi gian hien thi so

      {A1=0; A2=1;
      P2=ma[dv];
      delay();
      A1=1; A2=0;
      P2=ma[ch];
      delay();
      } } }
      }
      }

      Comment


      • #4
        Bạn ơi có thể nói rõ hơn cho mình được ko?
        Mình viết bằng Asemblly ! và hàm delay là 200us rùi mà nó vẫn bị nháy LED . Ko hiển thị được lên
        bạn chỉ cho mình bằng Assemblly nhé

        Comment


        • #5
          Upppppppppppp

          Comment


          • #6
            Nguyên văn bởi tuyetkjem Xem bài viết
            Bạn ơi có thể nói rõ hơn cho mình được ko?
            Mình viết bằng Asemblly ! và hàm delay là 200us rùi mà nó vẫn bị nháy LED . Ko hiển thị được lên
            bạn chỉ cho mình bằng Assemblly nhé
            Bạn làm mạch sẽ thấy kết quả thực tế thôi, led sẽ không bị giật như trong Proteus ( trường hợp như bạn rất nhiều người gặp phải khi mô phỏng Proteus rồi). Proteus nghĩa là Pro-teo( cùi bắp ). Chúc bạn thành công.

            Email:
            Tel: 0983.497.310

            Comment


            • #7
              Nguyên văn bởi tuyetkjem Xem bài viết
              Bạn ơi có thể nói rõ hơn cho mình được ko?
              Mình viết bằng Asemblly ! và hàm delay là 200us rùi mà nó vẫn bị nháy LED . Ko hiển thị được lên
              bạn chỉ cho mình bằng Assemblly nhé
              thế này nhé:
              tôi không phải là dân chuyên về asem nhưng đơn giản là thế này:
              giả gử chữ HAPPY tôi chia thành "Nghìn = HA, Trăm =P, Chục= P, Đơn vị = Y"
              vậy thông thường khi quét chúng ta phải quét lần lượt từ đơn vị... nghìn hoặc ngược lại!
              Ví dụ
              ......
              P2= ma[ĐV];
              P0^1=1; // giả sử ở đây led được nối với P2 và led thứ 5 (Y) chân chung nối với P0.1

              .......

              vậy trong khi thực hiện một lệnh khác thì ta phải cho thằng Y, tức P2=ma[ĐV] sáng một thời gian đủ lâu để không xảy ra chớp tắt
              Cụ thể là ta chèn một vòng for vào trước dòng lệnh đó (như phần trên tôi đã làm)
              Mục đích là : " Lợi dụng vòng for , vòng tuần hoàn để thực hiện một vòng lặp mới"
              trên ví dụ trên mỗi lần quét sẽ được hiển thị lại 10 lần

              Comment


              • #8
                Nguyên văn bởi lee_nguyen Xem bài viết
                thế này nhé:
                tôi không phải là dân chuyên về asem nhưng đơn giản là thế này:
                giả gử chữ HAPPY tôi chia thành "Nghìn = HA, Trăm =P, Chục= P, Đơn vị = Y"
                vậy thông thường khi quét chúng ta phải quét lần lượt từ đơn vị... nghìn hoặc ngược lại!
                Ví dụ
                ......
                P2= ma[ĐV];
                P0^1=1; // giả sử ở đây led được nối với P2 và led thứ 5 (Y) chân chung nối với P0.1

                .......

                vậy trong khi thực hiện một lệnh khác thì ta phải cho thằng Y, tức P2=ma[ĐV] sáng một thời gian đủ lâu để không xảy ra chớp tắt
                Cụ thể là ta chèn một vòng for vào trước dòng lệnh đó (như phần trên tôi đã làm)
                Mục đích là : " Lợi dụng vòng for , vòng tuần hoàn để thực hiện một vòng lặp mới"
                trên ví dụ trên mỗi lần quét sẽ được hiển thị lại 10 lần
                Cảm ơn bạn nhé
                Mình cũng ko hiểu lắm về C
                Mình dùng Asembly nhưng mình cũng đã quét LED với tg là 200us tren moi LED rui ay !
                vó thể là do Protues no nháy chậm => LED bị nháy từng cái một

                Comment


                • #9
                  quet led

                  lam mach that di ban. mo phong chi tao ra cai tuong trung thoi. khong chinh xac dau

                  Comment


                  • #10
                    Nguyên văn bởi tuyetkjem Xem bài viết
                    Cảm ơn bạn nhé
                    Mình cũng ko hiểu lắm về C
                    Mình dùng Asembly nhưng mình cũng đã quét LED với tg là 200us tren moi LED rui ay !
                    vó thể là do Protues no nháy chậm => LED bị nháy từng cái một
                    Protues chỉ là Mô phỏng và đôi khi mô phỏng cũng có sai sót so với thục tế nhưng việc mô phỏng là điều cần làm khi chúng ta chưa biết mình đang làm gì!!!!

                    Comment


                    • #11
                      nản quá, mình nói sẽ học thật tốt vi điều khiển để viết tên người yêu lên đèn led. cặm cụi mãi mất hơn 2 tiếng đồng hồ chiều qua viết code.asm . cuối cùng, khi đưa vào mô phỏng thì nó cũng chỉ nháy từng đèn 1 dù mình da để thời gian quét rất nhanh.
                      kiểu này phải mua mạch về làm thật mất.
                      hic

                      Comment


                      • #12
                        Mô phỏng proteus của mình về quét led chạy tốt mà.. Bạn nên tính toán "24 hình/s" cho kỹ.
                        Đây là code của mình: Chuơng trình này dùng cho 6 LED 7 đoạn

                        HIENTHI:

                        MOV P2,#0

                        MOV A,25h
                        MOV DPTR,#TABLE
                        MOVC A,@A+DPTR
                        MOV P1,A
                        SETB P2.0
                        LCALL DELAY1

                        CLR P2.0
                        MOV A,24h
                        MOV DPTR,#TABLE
                        MOVC A,@A+DPTR
                        MOV P1,A
                        SETB P2.1
                        LCALL DELAY1

                        CLR P2.1
                        MOV A,23h
                        MOV DPTR,#TABLE
                        MOVC A,@A+DPTR
                        MOV P1,A
                        SETB P2.2
                        LCALL DELAY1

                        CLR P2.2
                        MOV A,22h
                        MOV DPTR,#TABLE
                        MOVC A,@A+DPTR
                        MOV P1,A
                        SETB P2.3
                        LCALL DELAY1

                        CLR P2.3
                        MOV A,21h
                        MOV DPTR,#TABLE
                        MOVC A,@A+DPTR
                        MOV P1,A
                        SETB P2.4
                        LCALL DELAY1

                        CLR P2.4
                        MOV A,20h
                        MOV DPTR,#TABLE
                        MOVC A,@A+DPTR
                        MOV P1,A
                        SETB P2.5
                        LCALL DELAY1
                        clr p2.5
                        ret


                        delay1:
                        mov r7,#25
                        delay11:
                        mov r6,#100
                        djnz r6,$
                        djnz r7,delay11
                        ret

                        Comment


                        • #13
                          Thíu bảng TABLE ^^

                          TABLE: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
                          end

                          Comment


                          • #14
                            cả đêm nay viết chương trình để mô phỏng chạy chữ tên của người yêu. cuối cùng cũng đã thành công

                            Comment


                            • #15
                              video mình quay lại quet led 7 thanh bằng proteus

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X