Thông báo

Collapse
No announcement yet.

Mạch chạy chữ hiễn thị trên led matrix

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

  • Mạch chạy chữ hiễn thị trên led matrix

    Em mới kiếm được một đề tài VXL, có cả bài giải luôn, nhưng mà em không hiểu vài chỗ, em post các bác xem rùi giải đáp giúp em nhé.
    Đề tài: hiển thị tên các sinh viên thực hiện trên ma trận led 8 hàng x 32 cột. các chữ được dịh từ phải sang trái và lập lại.(chữ trong bài này là: DUY-HUY-KHOA-THINH-VAN). Mỗi cột dịch trong 0.5s.
    Sơ đỗ mắc như sau:

    (các bác phóng lớn hình nhín cho rõ)
    IC 74138 để quét và chôt cột quét, nối từ port 2 và đưa data ra 4 led.
    IC 74373 để đệm dòng, nối với chân P2 và đưa data ra 4 led.
    Mã chương trình:

    ORG 0000H
    MOV DPTR,#NHOM_4
    LOOP: MOV R2,#0 ;BỘ ĐẾM DỊCH
    LOOP2: MOV R5,#78 ;SỐ LẦN QUÉT TẠO DELAY
    LOOP1: MOV R0,#0 ;MẢ QUÉT HÀNG
    MOV R1,#0 ;MẢ QUÉT CỘT
    LOOP3: MOV A,R1
    MOV P2,A ;XUẤT MÃ QUÉT CỘT
    MOV A,R0
    ADD A,R2
    MOVC A,@A+DPTR ;TRA BẢNG
    MOV P1,A ;XUẤT MẢ QUÉT HÀNG
    CALL DELAY1
    INC R0
    INC R1
    CJNE R1,#32,LOOP3
    DJNZ R5,LOOP1
    INC R2
    CJNE R2,#155,LOOP2
    LJMP LOOP
    NHOM_4:
    DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0
    DB 0FFH,81H,81H,42H,3CH,0 ;chữ D
    DB 0FEH,1H,1H,1H,0FEH,0 ;chữ U
    DB 0E0H,10H,0FH,10H,0E0H,0 ;chữ Y
    DB 8H,8H,8H,0 ;dấu -
    DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
    DB 0FEH,1H,1H,1H,0FEH,0 ;chữ U
    DB 0E0H,10H,0FH,10H,0E0H,0 ;chữ Y
    DB 8H,8H,8H,0 ;dấu –
    DB 0FFH,28H,44H,82H,1H,0 ;chữ K
    DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
    DB 7EH,81H,81H,81H,7EH,0 ;chữ O
    DB 3FH,48H,88H,48H,3FH,0 ;chữ A
    DB 8H,8H,8H,0 ;dấu -
    DB 80H,80H,0FFH,80H,80H,0 ;chữ T
    DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
    DB 0,81H,0FFH,81H,0,0 ;chữ I
    DB 0FFH,20H,10H,8H,0FFH,0 ;chữ N
    DB 0FFH,10H,10H,10H,0FFH,0 ;chữ H
    DB 8H,8H,8H,0 ;dấu -
    DB 0FCH,2H,1H,2H,0FCH,0 ;chữ V
    DB 3FH,48H,88H,48H,3FH,0 ;chữ A
    DB 0FFH,20H,10H,8H,0FFH ;chữ N
    DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0
    DELAY1: MOV TMOD,#02H
    MOV TH0,#(-200)
    SETB TR0
    JNB TF0,$
    CLR TF0
    RET
    END

    Em không hiểu cách quét matran nó ntn?
    Mấy con số 78, 32, 155 có ý nghĩa thế nào?
    Trong mã có một dòng:
    MOVC A,@A+DPTR ;TRA BẢNG
    MOV P1,A ;XUẤT MẢ QUÉT HÀNG
    Không lẽ đưa cả bảng tra DPTR ra chân P1 hả các bác?
    Các bác giải thích bằng lời đoạn mã trên giúp em nhé.
    Mô phỏng bẳng protus, chạy chình xác, các bác tải về xem thử.
    http://www.mediafire.com/?d9ni19qwmng

  • #2
    cho mình hỏi bạn làm xong mạch này khỉ chạy chữ thì chữ chạy có bị giật không? độ mịn của chữ như thế nào? vì mình cũng đang đinh làm mạch này mà. có gì bạn chỉ giúp mình mới nhé. thank
    địa chỉ: hoathuytienlamhong@yahoo.com

    Comment


    • #3
      cho hỏi mình muốn kéo độ dài chữ thì cần số bao nhiu ?
      (đoạn chữ "happy new year 2009 -an khang thinh vuong-van su nhu y........")
      mình thử nhưng chỉ tới số 9 là quay lại từ đầu rồi
      8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
      liên lạc với em qua địa chi email: Mob: 01882.076.989

      Comment


      • #4
        Muốn tăng độ dài đoạn dữ liệu thì nên tăng số ở thanh ghi có chứa số lần dịch, 1 thanh ghi full là 256 ký tự xuất, dual 2 thanh ghi là được 65535 ký tự dịch nhòe
        Trần Đức Sơn

        tel:0934691385

        Comment


        • #5
          Nguyên văn bởi hongan Xem bài viết
          Em mới kiếm được một đề tài VXL, có cả bài giải luôn, nhưng mà em không hiểu vài chỗ, em post các bác xem rùi giải đáp giúp em nhé.
          Đề tài: hiển thị tên các sinh viên thực hiện trên ma trận led 8 hàng x 32 cột. các chữ được dịh từ phải sang trái và lập lại.(chữ trong bài này là: DUY-HUY-KHOA-THINH-VAN). Mỗi cột dịch trong 0.5s.
          Sơ đỗ mắc như sau:

          (các bác phóng lớn hình nhín cho rõ)
          IC 74138 để quét và chôt cột quét, nối từ port 2 và đưa data ra 4 led.
          IC 74373 để đệm dòng, nối với chân P2 và đưa data ra 4 led.
          Mã chương trình:

          ORG 0000H
          MOV DPTR,#NHOM_4
          LOOP: MOV R2,#0 ;BỘ ĐẾM DỊCH
          LOOP2: MOV R5,#78 ;SỐ LẦN QUÉT TẠO DELAY
          LOOP1: MOV R0,#0 ;MẢ QUÉT HÀNG
          MOV R1,#0 ;MẢ QUÉT CỘT
          LOOP3: MOV A,R1
          MOV P2,A ;XUẤT MÃ QUÉT CỘT
          MOV A,R0
          ADD A,R2
          MOVC A,@A+DPTR ;TRA BẢNG
          MOV P1,A ;XUẤT MẢ QUÉT HÀNG
          CALL DELAY1
          INC R0
          INC R1
          CJNE R1,#32,LOOP3
          DJNZ R5,LOOP1
          INC R2
          CJNE R2,#155,LOOP2
          LJMP LOOP
          NHOM_4:
          DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0
          DB 0FFH,81H,81H,42H,3CH,0 ;chữ D
          DB 0FEH,1H,1H,1H,0FEH,0 ;chữ U
          DB 0E0H,10H,0FH,10H,0E0H,0 ;chữ Y
          DB 8H,8H,8H,0 ;dấu -
          DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
          DB 0FEH,1H,1H,1H,0FEH,0 ;chữ U
          DB 0E0H,10H,0FH,10H,0E0H,0 ;chữ Y
          DB 8H,8H,8H,0 ;dấu –
          DB 0FFH,28H,44H,82H,1H,0 ;chữ K
          DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
          DB 7EH,81H,81H,81H,7EH,0 ;chữ O
          DB 3FH,48H,88H,48H,3FH,0 ;chữ A
          DB 8H,8H,8H,0 ;dấu -
          DB 80H,80H,0FFH,80H,80H,0 ;chữ T
          DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
          DB 0,81H,0FFH,81H,0,0 ;chữ I
          DB 0FFH,20H,10H,8H,0FFH,0 ;chữ N
          DB 0FFH,10H,10H,10H,0FFH,0 ;chữ H
          DB 8H,8H,8H,0 ;dấu -
          DB 0FCH,2H,1H,2H,0FCH,0 ;chữ V
          DB 3FH,48H,88H,48H,3FH,0 ;chữ A
          DB 0FFH,20H,10H,8H,0FFH ;chữ N
          DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0
          DELAY1: MOV TMOD,#02H
          MOV TH0,#(-200)
          SETB TR0
          JNB TF0,$
          CLR TF0
          RET
          END

          Em không hiểu cách quét matran nó ntn?
          Mấy con số 78, 32, 155 có ý nghĩa thế nào?
          Trong mã có một dòng:
          MOVC A,@A+DPTR ;TRA BẢNG
          MOV P1,A ;XUẤT MẢ QUÉT HÀNG
          Không lẽ đưa cả bảng tra DPTR ra chân P1 hả các bác?
          Các bác giải thích bằng lời đoạn mã trên giúp em nhé.
          Mô phỏng bẳng protus, chạy chình xác, các bác tải về xem thử.
          http://www.mediafire.com/?d9ni19qwmng
          32 là tổng số cột của bảng LED
          78 sau khi quét 78 lần thì sẽ dịch đi 1 cột
          155 tổng vùng data trên bảng

          MOVC A,@A+DPTR ;TRA BẢNG
          MOV P1,A ;XUẤT MẢ QUÉT HÀNG
          tại một thời điểm sẽ lấy 1 byte data xuất ra
          và lấy đủ 32 byte cho 32 cột

          bài này tuy chạy đề mô được nhưng trong thực tế thì không
          vì dòng cấp cho led yếu có thể nói nó sáng rất mờ
          khó mở rộng được kích thước bảng
          bạn nên tham khảo các bài đã dùng74HC595

          chúc bạn thành công
          Điện thoại:
          email:

          Comment


          • #6
            Vi điều khiển 89c51

            Bạn Hongan ơi! Bạn gởi cho mình file thiết kế trên proture luôn được ko? trên hinh có máy chổ đường giao nhau mình nhìn ko ra. thank ban nha.

            Comment


            • #7
              chay chu tren 2 led matrix

              chao các anh! E có làm một bảng quang báo hiển thị chữ G ( đứng yên ) và mũi tên chạy lên với 2 led matrix 5x7 , khi cho chương trình chạy thì mỗi lần mũi tên chạy hình ảnh chữ G lúc sáng , lúc mờ theo nhịp chạy của mũi tên , xin thầy cho e ý kiến để chương trình chạy tốt hơn , e cám ơn các anh

              E gửi đoạn chương trình viết theo mã asm , do không biết cách load sơ đồ nên thầy thông cảm.

              Trong chương trình 7 hàng ghép song song và kết nối vào ic uln2981 nối vào P3.0 -P3.6 ( quét hàng ), 5 cột kết nối vào ic 2803 nối vào P2.0-P2.4 (xuất mã hình G ) , 5 cột kết nối vào ic 2803 nối vào P0.0 - P0.4 ( xuất mã hình mũi tên )

              ORG 0000H

              ;+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ ++++

              MOV R0,#0

              LOOP : MOV DPTR,#HINH_GU1

              MOV R4,#200

              LOOP_A: CALL OUT_LED_SO_HINH

              DJNZ R4,LOOP_A

              MOV DPTR,#HINH_GU2

              MOV R4,#200

              LOOP_B: CALL OUT_LED_SO_HINH

              DJNZ R4,LOOP_B

              MOV DPTR,#HINH_GU3

              MOV R4,#200

              LOOP_C: CALL OUT_LED_SO_HINH

              DJNZ R4,LOOP_C

              MOV DPTR,#HINH_GU4

              MOV R4,#200

              LOOP_D: CALL OUT_LED_SO_HINH

              DJNZ R4,LOOP_D

              LJMP LOOP

              ;+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ +++++++++++++++++++++++++++++++++++++

              OUT_LED_SO_HINH:

              MOV A,R0

              MOVC A,@A+DPTR

              MOV P0,A

              INC R0

              MOV A,R0

              MOVC A,@A+DPTR

              MOV P2,A

              INC R0

              MOV A,R0

              MOVC A,@A+DPTR

              MOV P3,A

              INC R0

              CALL DELAY

              MOV P3,#0000H

              MOV P2,#0000H

              MOV P0,#0000H ;Chong lem

              CJNE R0,#24,OUT_LED_SO_HINH

              MOV R0,#0

              RET

              ;+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ +++++++++++++++++++++++++++++++++++++++

              DELAY: MOV R7,#10

              LOOP1: MOV R6,#2

              LOOP2: DJNZ R6,LOOP2

              DJNZ R7,LOOP1

              RET

              ;************************************************* ********** ******************************

              HINH_GU1: DB 00h,00H,80h,1Fh,0EH,40h,0Eh,11H,20h,04h,17H,10h,00 h,10H,08h, 00h,10H,04h,00h,11H,02h,00h,0EH,01h

              HINH_GU2: DB 00h,00H,80h,0Eh,0EH,40h,1Fh,11H,20h,0Eh,17H,10h,04 h,10H,08h, 00h,10H,04h,00h,11H,02h,00h,0EH,01h

              HINH_GU3: DB 00h,00H,80h,0Eh,0EH,40h,0Eh,11H,20h,1Fh,17H,10h,0E h,10H,08h, 04h,10H,04h,00h,11H,02h,00h,0EH,01h

              HINH_GU4: DB 00h,00H,80h,0Eh,0EH,40h,0Eh,11H,20h,0Eh,17H,10h,1F h,10H,08h, 0Eh,10H,04h,04h,11H,02h,00h,0EH,01h


              END



              Read more: http://www.ant7.com/forum/forum_post...#ixzz0SZy9M78A

              Comment


              • #8
                chào cac anh ! E có làm một bảng quang báo hiển thị chữ G ( đứng yên ) và mũi tên chạy lên với 2 led matrix 5x7 , khi cho chương trình chạy thì mỗi lần mũi tên chạy hình ảnh chữ G lúc sáng , lúc mờ theo nhịp chạy của mũi tên , xin thầy cho e ý kiến để chương trình chạy tốt hơn , e cám ơn các anh

                E gửi đoạn chương trình viết theo mã asm , do không biết cách load sơ đồ nêncác anh thông cảm.

                Trong chương trình 7 hàng ghép song song và kết nối vào ic uln2981 nối vào P3.0 -P3.6 ( quét hàng ), 5 cột kết nối vào ic 2803 nối vào P2.0-P2.4 (xuất mã hình G ) , 5 cột kết nối vào ic 2803 nối vào P0.0 - P0.4 ( xuất mã hình mũi tên )

                ORG 0000H

                ;+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ ++++

                MOV R0,#0

                LOOP : MOV DPTR,#HINH_GU1

                MOV R4,#200

                LOOP_A: CALL OUT_LED_SO_HINH

                DJNZ R4,LOOP_A

                MOV DPTR,#HINH_GU2

                MOV R4,#200

                LOOP_B: CALL OUT_LED_SO_HINH

                DJNZ R4,LOOP_B

                MOV DPTR,#HINH_GU3

                MOV R4,#200

                LOOP_C: CALL OUT_LED_SO_HINH

                DJNZ R4,LOOP_C

                MOV DPTR,#HINH_GU4

                MOV R4,#200

                LOOP_D: CALL OUT_LED_SO_HINH

                DJNZ R4,LOOP_D

                LJMP LOOP

                ;+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ +++++++++++++++++++++++++++++++++++++

                OUT_LED_SO_HINH:

                MOV A,R0

                MOVC A,@A+DPTR

                MOV P0,A

                INC R0

                MOV A,R0

                MOVC A,@A+DPTR

                MOV P2,A

                INC R0

                MOV A,R0

                MOVC A,@A+DPTR

                MOV P3,A

                INC R0

                CALL DELAY

                MOV P3,#0000H

                MOV P2,#0000H

                MOV P0,#0000H ;Chong lem

                CJNE R0,#24,OUT_LED_SO_HINH

                MOV R0,#0

                RET

                ;+++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ +++++++++++++++++++++++++++++++++++++++

                DELAY: MOV R7,#10

                LOOP1: MOV R6,#2

                LOOP2: DJNZ R6,LOOP2

                DJNZ R7,LOOP1

                RET

                ;************************************************* ********** ******************************

                HINH_GU1: DB 00h,00H,80h,1Fh,0EH,40h,0Eh,11H,20h,04h,17H,10h,00 h,10H,08h, 00h,10H,04h,00h,11H,02h,00h,0EH,01h

                HINH_GU2: DB 00h,00H,80h,0Eh,0EH,40h,1Fh,11H,20h,0Eh,17H,10h,04 h,10H,08h, 00h,10H,04h,00h,11H,02h,00h,0EH,01h

                HINH_GU3: DB 00h,00H,80h,0Eh,0EH,40h,0Eh,11H,20h,1Fh,17H,10h,0E h,10H,08h, 04h,10H,04h,00h,11H,02h,00h,0EH,01h

                HINH_GU4: DB 00h,00H,80h,0Eh,0EH,40h,0Eh,11H,20h,0Eh,17H,10h,1F h,10H,08h, 0Eh,10H,04h,04h,11H,02h,00h,0EH,01h


                END



                Read more: http://www.ant7.com/forum/forum_post...#ixzz0SZy9M78A

                Comment


                • #9
                  em đang làm mạch led ma trận dùng 74hc595 ma hiện giờ vẫn chưa chạy.bác nào có thì cho em xin với.em mới bưới vào lĩnh vực này hà!

                  Comment


                  • #10
                    Mô phỏng bẳng protus, chạy chình xác, các bác tải về xem thử.
                    http://www.mediafire.com/?d9ni19qwmng
                    Ban co the up lai link duoc khong?
                    mach nay không thể mở rộng bởi mach yếu
                    Email: htnhac@gmail.com
                    lyhunghau

                    Comment


                    • #11
                      chào mọi người
                      mình muốn làm một mạch đơn giản cho hiển thị lcd
                      nhưmg lập trình xong nó chẳng chạy gì cả
                      mình up lên đây mong mọi người chỉ giúp em nó bị nỗi chỗ nào nhé
                      mình dùng codevision AVR.
                      #include <mega16.h>
                      #include <delay.h>

                      // Alphanumeric LCD Module functions
                      #asm
                      .equ __lcd_port=0x12 ;PORTD
                      #endasm
                      #include <lcd.h>

                      // Declare your global variables here


                      void main(void)
                      {
                      // Declare your local variables here

                      // Input/Output Ports initialization
                      // Port A initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTA=0x00;
                      DDRA=0x00;

                      // Port B initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTB=0x00;
                      DDRB=0x00;

                      // Port C initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTC=0x00;
                      DDRC=0x00;

                      // Port D initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                      PORTD=0x00;
                      DDRD=0xff;

                      // Timer/Counter 0 initialization
                      // Clock source: System Clock
                      // Clock value: Timer 0 Stopped
                      // Mode: Normal top=FFh
                      // OC0 output: Disconnected
                      TCCR0=0x00;
                      TCNT0=0x00;
                      OCR0=0x00;

                      // Timer/Counter 1 initialization
                      // Clock source: System Clock
                      // Clock value: Timer 1 Stopped
                      // Mode: Normal top=FFFFh
                      // OC1A output: Discon.
                      // OC1B output: Discon.
                      // Noise Canceler: Off
                      // Input Capture on Falling Edge
                      // Timer 1 Overflow Interrupt: Off
                      // Input Capture Interrupt: Off
                      // Compare A Match Interrupt: Off
                      // Compare B Match Interrupt: Off
                      TCCR1A=0x00;
                      TCCR1B=0x00;
                      TCNT1H=0x00;
                      TCNT1L=0x00;
                      ICR1H=0x00;
                      ICR1L=0x00;
                      OCR1AH=0x00;
                      OCR1AL=0x00;
                      OCR1BH=0x00;
                      OCR1BL=0x00;

                      // Timer/Counter 2 initialization
                      // Clock source: System Clock
                      // Clock value: Timer 2 Stopped
                      // Mode: Normal top=FFh
                      // OC2 output: Disconnected
                      ASSR=0x00;
                      TCCR2=0x00;
                      TCNT2=0x00;
                      OCR2=0x00;

                      // External Interrupt(s) initialization
                      // INT0: Off
                      // INT1: Off
                      // INT2: Off
                      MCUCR=0x00;
                      MCUCSR=0x00;

                      // Timer(s)/Counter(s) Interrupt(s) initialization
                      TIMSK=0x00;

                      // Analog Comparator initialization
                      // Analog Comparator: Off
                      // Analog Comparator Input Capture by Timer/Counter 1: Off
                      ACSR=0x80;
                      SFIOR=0x00;

                      // LCD module initialization
                      lcd_init(16);
                      lcd_clear();
                      _lcd_ready();
                      _lcd_write_data(0x0e);
                      _lcd_ready();
                      _lcd_write_data(0x2c);
                      _lcd_ready();
                      lcd_gotoxy(5,0);
                      lcd_putchar('V');
                      lcd_putchar('I');
                      lcd_putchar('E');
                      lcd_putchar('T');
                      lcd_putchar(' ');
                      lcd_putchar('N');
                      lcd_putchar('A');
                      lcd_putchar('M');
                      lcd_gotoxy(3,1);
                      lcd_putchar('V');
                      lcd_putchar('I');
                      lcd_putchar(' ');
                      lcd_putchar('D');
                      lcd_putchar('I');
                      lcd_putchar('E');
                      lcd_putchar('U');
                      lcd_putchar(' ');
                      lcd_putchar('K');
                      lcd_putchar('H');
                      lcd_putchar('I');
                      lcd_putchar('E');
                      lcd_putchar('N');
                      delay_ms(100);
                      while (1)
                      {
                      // Place your code here

                      };
                      }
                      MỌI người xem giúp em nhé
                      mình không hiểu nỗi ở đâu
                      mình cảm ơn

                      Comment


                      • #12
                        sao mà mình không load về được vậy

                        Comment


                        • #13
                          sao mình ko load về được vậy
                          link đó vô báo lỗi hoài ah

                          Comment


                          • #14
                            Nguyên văn bởi cddt061 Xem bài viết
                            Muốn tăng độ dài đoạn dữ liệu thì nên tăng số ở thanh ghi có chứa số lần dịch, 1 thanh ghi full là 256 ký tự xuất, dual 2 thanh ghi là được 65535 ký tự dịch nhòe
                            bạn Sơn ở HP đúng ko mình thấy chữ ký của bạn ghi vậy!! 1thanh gi là 256 byte vậy dual 2 thanh ghi thì làm sao hả bạn?

                            Comment


                            • #15
                              Nguyên văn bởi hongan Xem bài viết
                              Em mới kiếm được một đề tài VXL, có cả bài giải luôn, nhưng mà em không hiểu vài chỗ, em post các bác xem rùi giải đáp giúp em nhé.
                              Đề tài: hiển thị tên các sinh viên thực hiện trên ma trận led 8 hàng x 32 cột. các chữ được dịh từ phải sang trái và lập lại.(chữ trong bài này là: DUY-HUY-KHOA-THINH-VAN). Mỗi cột dịch trong 0.5s.
                              Sơ đỗ mắc như sau:

                              (các bác phóng lớn hình nhín cho rõ)
                              IC 74138 để quét và chôt cột quét, nối từ port 2 và đưa data ra 4 led.
                              IC 74373 để đệm dòng, nối với chân P2 và đưa data ra 4 led.
                              Mã chương trình:

                              ORG 0000H
                              MOV DPTR,#NHOM_4
                              LOOP: MOV R2,#0 ;BỘ ĐẾM DỊCH
                              LOOP2: MOV R5,#78 ;SỐ LẦN QUÉT TẠO DELAY
                              LOOP1: MOV R0,#0 ;MẢ QUÉT HÀNG
                              MOV R1,#0 ;MẢ QUÉT CỘT
                              LOOP3: MOV A,R1
                              MOV P2,A ;XUẤT MÃ QUÉT CỘT
                              MOV A,R0
                              ADD A,R2
                              MOVC A,@A+DPTR ;TRA BẢNG
                              MOV P1,A ;XUẤT MẢ QUÉT HÀNG
                              CALL DELAY1
                              INC R0
                              INC R1
                              CJNE R1,#32,LOOP3
                              DJNZ R5,LOOP1
                              INC R2
                              CJNE R2,#155,LOOP2
                              LJMP LOOP
                              NHOM_4:
                              DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0
                              DB 0FFH,81H,81H,42H,3CH,0 ;chữ D
                              DB 0FEH,1H,1H,1H,0FEH,0 ;chữ U
                              DB 0E0H,10H,0FH,10H,0E0H,0 ;chữ Y
                              DB 8H,8H,8H,0 ;dấu -
                              DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
                              DB 0FEH,1H,1H,1H,0FEH,0 ;chữ U
                              DB 0E0H,10H,0FH,10H,0E0H,0 ;chữ Y
                              DB 8H,8H,8H,0 ;dấu –
                              DB 0FFH,28H,44H,82H,1H,0 ;chữ K
                              DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
                              DB 7EH,81H,81H,81H,7EH,0 ;chữ O
                              DB 3FH,48H,88H,48H,3FH,0 ;chữ A
                              DB 8H,8H,8H,0 ;dấu -
                              DB 80H,80H,0FFH,80H,80H,0 ;chữ T
                              DB 0FFH, 10H,10H,10H,0FFH,0 ;chữ H
                              DB 0,81H,0FFH,81H,0,0 ;chữ I
                              DB 0FFH,20H,10H,8H,0FFH,0 ;chữ N
                              DB 0FFH,10H,10H,10H,0FFH,0 ;chữ H
                              DB 8H,8H,8H,0 ;dấu -
                              DB 0FCH,2H,1H,2H,0FCH,0 ;chữ V
                              DB 3FH,48H,88H,48H,3FH,0 ;chữ A
                              DB 0FFH,20H,10H,8H,0FFH ;chữ N
                              DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0
                              DELAY1: MOV TMOD,#02H
                              MOV TH0,#(-200)
                              SETB TR0
                              JNB TF0,$
                              CLR TF0
                              RET
                              END

                              Em không hiểu cách quét matran nó ntn?
                              Mấy con số 78, 32, 155 có ý nghĩa thế nào?
                              Trong mã có một dòng:
                              MOVC A,@A+DPTR ;TRA BẢNG
                              MOV P1,A ;XUẤT MẢ QUÉT HÀNG
                              Không lẽ đưa cả bảng tra DPTR ra chân P1 hả các bác?
                              Các bác giải thích bằng lời đoạn mã trên giúp em nhé.
                              Mô phỏng bẳng protus, chạy chình xác, các bác tải về xem thử.
                              http://www.mediafire.com/?d9ni19qwmng
                              cái này mình đã từng làm nhiểu rồi mạc ma trận dùng 74138 để quét cột. chạy rất oke luôn!
                              nhưng vấn để mở rộng hơi khó theo lý thuyết 3 chân G,E1,E2 đó mình sẽ đk đươc tối đa la` 64 cột nhưng mình thử 40 côt thì ok còn trên 40 cột thì chạy loạn luôn mình kt đi kt lại nhiều rồi ko biết sao nữa?

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X