Thông báo

Collapse
No announcement yet.

Led matran bằng ASM có nhiều bạn quang tâm..................

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

  • #46
    Nguyên văn bởi chjpchjp1991
    Vấn đề của bạn..mình cũng đã viết thử chữ dài hơn 20 chữ..chạy có chạy..nhưng nó không chạy hết mã...bạn Congminhfs giúp đỡ thêm nhé.
    muốn chạy hết mã(cỡ trên 65000 cột )được không các bạn,chúng ta có 2 cách
    1.sử dụng biến địa chỉ bằng con trỏ DPTR 16 BIT=65536 địa chỉ=chừng đó cột
    2.sử dụng hai thanh ghi 8 bit chẳng hạng r1,r2 =256x256=65536................
    có lẽ 89 không đủ Flash để lưu code đâu các bạn....

    Comment


    • #47
      cảm ơn bài viết của anh. !! anh cho em hỏi em muốn mác thêm led để nó nháy đuổi dùng p0_0 => p0_7 có đc kọ ạ. vậy code phải thay đổi j ạ. thanks u!!

      Comment


      • #48
        Nguyên văn bởi chjpchjp1991
        Mình có tăng thêm độ dài ký tự...khoảng 20 chữ..mình cho chạy được 1 nửa..nhưng nữa sau có vấn đề không lấy hết mã code DB mình viết .mình có thay đổi giá trị 80 rồi..nhưng không ổn...Congminhfs khắc phục giúp mình nhé..để mình hiểu thêm.^^ Mình không hiểu lệnh này MOV DIA_CHI,#-80 sao lại -80 và lệnh này mình chưa dùng bao giờ MOV @CON_TRO,A ;
        ;QUETLED hien thi gom 80 cot va 8 hang
        SI BIT P3.0 ;pin 14 74HC595
        SCK BIT P3.1 ;pin 11 74HC595
        RCK BIT P3.2 ;pin 12 74HC595
        ;*******************************************
        CHONHANG EQU P2 ;CHONHANG PORT P2
        ;*******************************************
        CON_TRO EQU R0
        DIA_CHI EQU R1
        SO_COT EQU R2
        TOC_DO EQU R3
        DICHBIT EQU 08H
        ;hang 0>7 p2=00H>>07H

        ;****************************************
        ;************BAT DAU CHUONG TRINH ********
        ;******************************************
        ORG 0000H
        LJMP MAIN
        ; ORG 0003H
        ;LJMP EX0ISR
        ; ORG 000BH ;Dia chi vector bo dinh thoi 0
        ; LJMP T0ISR
        ; ORG 001BH ;Dia chi vector bo dinh thoi 1
        ; LJMP T1ISR ;tao am thanh bipbip
        ; ORG 002BH ;Dia chi vector bo dinh thoi 2

        ;***************************************
        ORG 0030H
        ;**************************
        MAIN : MOV SP,#5AH
        MOV TMOD,#11H ;11H ;Ca 2 bo dinh thoi che do 1
        MOV IE,#8AH ;8A;cho phep ngat do cac bo dinh thoi
        MOV DPTR,#CONGMINH
        ;************************************************* ******
        ;*************CH/TR Chinh *****************************
        PLAY:

        ;***************************
        MOV DIA_CHI,#80
        DICH_TRAI: MOV TOC_DO,#3
        LRAM: LCALL LOADLENRAM
        LCALL QUET8HANG
        DJNZ TOC_DO,EX_01
        MOV TOC_DO,#3
        INC DIA_CHI
        CJNE DIA_CHI,#80,EX_01
        LJMP DICH_PHAI
        EX_01: LJMP LRAM
        ;***************************
        DICH_PHAI: MOV DIA_CHI,#80
        dich_phai1: MOV TOC_DO,#3
        LRAM_P: LCALL LOADLENRAM
        LCALL QUET8HANG
        DJNZ TOC_DO,EX_02
        MOV TOC_DO,#3
        DEC DIA_CHI
        CJNE DIA_CHI,#80,EX_02
        LJMP DICH_LEN
        EX_02: LJMP LRAM_P
        ;**************************
        DICH_LEN: mov r6,#100
        MOV DICHBIT,#7
        MOV TOC_DO,#3
        LRAM_L: LCALL DICH_RAM_LEN
        LCALL QUET8HANG
        MOV A,DICHBIT
        CJNE A,#0,EX_04 ;khi DICHBIT=0 thì dung lai
        djnz r6,EX_05
        mov DIA_CHI,#-18 ;addr giua bang=(80-62)/2
        ljmp dich_trai
        ; ljmp dich_phai1
        ; LJMP LRAM_L
        EX_04: DJNZ TOC_DO,EX_05
        MOV TOC_DO,#3
        DEC DICHBIT
        EX_05: LJMP LRAM_L
        LJMP PLAY
        ;************************************************
        ;**********CH/TR con **********************
        DICH_RAM_LEN:
        PUSH 00H
        PUSH 01H
        PUSH 02H
        MOV CON_TRO,#5fH
        MOV DIA_CHI,#-18 ;addr giua bang=(80-62)/2
        MOV SO_COT,#160 ;80cot
        LAPL_02: MOV A,DIA_CHI
        MOVC A,@A+DPTR
        MOV R5,DICHBIT
        CJNE R5,#0,Q_T1
        LJMP KHDICH
        Q_T1: RR A ;Chay chu duoi len
        Q_T: CLR C ;muon chay xuong thay bang RL A
        RRC A ;Chay chu duoi len ,
        DJNZ R5,Q_T ;muon chay xuong thay bang RLC A
        KHDICH: MOV @CON_TRO,A
        INC CON_TRO
        INC DIA_CHI
        MOV A,DIA_CHI
        DJNZ SO_COT,LAPL_02
        POP 00H
        POP 01H
        POP 02H
        RET
        ;**********************************************
        LOADLENRAM:
        PUSH 00H
        PUSH 01H
        PUSH 02H
        MOV CON_TRO,#5fH ;Dia chi dau
        MOV A,DIA_CHI
        MOV SO_COT,#160 ;80cot
        LAPL_01: MOV A,DIA_CHI
        MOVC A, @A+DPTR ;lay du lieu
        MOV @CON_TRO,A ;ghi vao ram bat dau tu dia chi 80
        INC CON_TRO ;tang con to dia chi
        INC DIA_CHI ;tang dia chi trung gian
        DJNZ SO_COT,LAPL_01 ;du so cot chua
        POP 00H
        POP 01H
        POP 02H
        RET

        ;***********************************************
        QUET8HANG:
        PUSH 07H
        PUSH 00H
        MOV R7,#7 ;chon hang
        LAPHANG: MOV CON_TRO,#5fH
        CLR RCK
        LAPCOT: CLR SCK
        MOV A,@CON_TRO
        CLR C
        RRC A
        MOV @CON_TRO,A
        SETB SCK
        MOV SI,C
        INC CON_TRO
        CJNE CON_TRO,#0ffH,LAPCOT
        SETB RCK
        MOV CHONHANG,R7 ;Sang hang
        LCALL DELAYLED
        MOV CHONHANG,#8
        DEC R7
        CJNE R7,#-1,LAPHANG
        POP 00H
        POP 07H
        RET
        ;*******************************************
        ;*******************************
        DELAYLED:
        MOV 09H,#8
        D1: MOV 10H,#250
        DJNZ 10H,$
        DJNZ 09H,D1
        RET
        ;***************************;***********
        ;*************
        CONGMINH:
        DB 07CH,0FEH,82H,82H,0CEH,04CH,0H,5CH,0BEH,0A2H,0BEH, 5CH,0H,3EH,3EH,20H,3EH,1EH,0H,19H,3DH,25H,3FH,3EH, 0H,0H
        DB 0FEH,0FEH,60H,30H,60H,0FEH,0FEH,0H,0BCH,0BEH,4H,0H ,3EH,3EH,20H,3EH,1EH,0H,0FEH,0FEH,20H,3EH,1EH,0H,0 H
        DB 0FEH,0FEH,90H,90H,80H,64H,0F6H,92H,0DEH,04CH,000H, 04eH
        DB 07CH,0FEH,82H,82H,0CEH,04CH,0H,5CH,0BEH,0A2H,0BEH, 5CH,0H,3EH,3EH,20H,3EH,1EH,0H,19H,3DH,25H,3FH,3EH, 0H,0H
        DB 0FEH,0FEH,60H,30H,60H,0FEH,0FEH,0H,0BCH,0BEH,4H,0H ,3EH,3EH,20H,3EH,1EH,0H,0FEH,0FEH,20H,3EH,1EH,0H,0 H
        DB 0FEH,0FEH,90H,90H,80H,64H,0F6H,92H,0DEH,04CH,000H, 04eH
        END [/QUOTE]
        Code mình đã sửa lại chạy được 20 chử rồi đó, bạn ngâm cứu nha
        còn lệnh MOV DIA_CHI,#-80 thì bạn CONGMINH đã có giải thích ở muc #27 rồi đó
        và còn lệnh MOV @CON_TRO,A : tức là lệnh định đỉa chỉ gián tiếp
        ví dụ : MOV CON_TRO,#1F ; CON_TRO bắt buộc phải là thanh ghi R0 hoặc R1
        MOV A,#0FFH
        MOV @CON_TRO,A; lúc này thanh ghi địa chỉ 1F mang giá trị 0FFH
        Theo mình hiểu là như vậy không biết có đúng ko, nếu có gì sai nhờ bạn CONGMINH sửa hộ. Thanks
        Last edited by PDEL; 14-10-2012, 01:34.

        Comment


        • #49
          Nguyên văn bởi PDEL Xem bài viết
          ;QUETLED hien thi gom 80 cot va 8 hang
          SI BIT P3.0 ;pin 14 74HC595
          SCK BIT P3.1 ;pin 11 74HC595
          RCK BIT P3.2 ;pin 12 74HC595
          ;*******************************************
          CHONHANG EQU P2 ;CHONHANG PORT P2
          ;*******************************************
          CON_TRO EQU R0
          DIA_CHI EQU R1
          SO_COT EQU R2
          TOC_DO EQU R3
          DICHBIT EQU 08H
          ;hang 0>7 p2=00H>>07H

          ;****************************************
          ;************BAT DAU CHUONG TRINH ********
          ;******************************************
          ORG 0000H
          LJMP MAIN
          ; ORG 0003H
          ;LJMP EX0ISR
          ; ORG 000BH ;Dia chi vector bo dinh thoi 0
          ; LJMP T0ISR
          ; ORG 001BH ;Dia chi vector bo dinh thoi 1
          ; LJMP T1ISR ;tao am thanh bipbip
          ; ORG 002BH ;Dia chi vector bo dinh thoi 2

          ;***************************************
          ORG 0030H
          ;**************************
          MAIN : MOV SP,#5AH
          MOV TMOD,#11H ;11H ;Ca 2 bo dinh thoi che do 1
          MOV IE,#8AH ;8A;cho phep ngat do cac bo dinh thoi
          MOV DPTR,#CONGMINH
          ;************************************************* ******
          ;*************CH/TR Chinh *****************************
          PLAY:

          ;***************************
          MOV DIA_CHI,#80
          DICH_TRAI: MOV TOC_DO,#3
          LRAM: LCALL LOADLENRAM
          LCALL QUET8HANG
          DJNZ TOC_DO,EX_01
          MOV TOC_DO,#3
          INC DIA_CHI
          CJNE DIA_CHI,#80,EX_01
          LJMP DICH_PHAI
          EX_01: LJMP LRAM
          ;***************************
          DICH_PHAI: MOV DIA_CHI,#80
          dich_phai1: MOV TOC_DO,#3
          LRAM_P: LCALL LOADLENRAM
          LCALL QUET8HANG
          DJNZ TOC_DO,EX_02
          MOV TOC_DO,#3
          DEC DIA_CHI
          CJNE DIA_CHI,#80,EX_02
          LJMP DICH_LEN
          EX_02: LJMP LRAM_P
          ;**************************
          DICH_LEN: mov r6,#100
          MOV DICHBIT,#7
          MOV TOC_DO,#3
          LRAM_L: LCALL DICH_RAM_LEN
          LCALL QUET8HANG
          MOV A,DICHBIT
          CJNE A,#0,EX_04 ;khi DICHBIT=0 thì dung lai
          djnz r6,EX_05
          mov DIA_CHI,#-18 ;addr giua bang=(80-62)/2
          ljmp dich_trai
          ; ljmp dich_phai1
          ; LJMP LRAM_L
          EX_04: DJNZ TOC_DO,EX_05
          MOV TOC_DO,#3
          DEC DICHBIT
          EX_05: LJMP LRAM_L
          LJMP PLAY
          ;************************************************
          ;**********CH/TR con **********************
          DICH_RAM_LEN:
          PUSH 00H
          PUSH 01H
          PUSH 02H
          MOV CON_TRO,#5fH
          MOV DIA_CHI,#-18 ;addr giua bang=(80-62)/2
          MOV SO_COT,#160 ;80cot
          LAPL_02: MOV A,DIA_CHI
          MOVC A,@A+DPTR
          MOV R5,DICHBIT
          CJNE R5,#0,Q_T1
          LJMP KHDICH
          Q_T1: RR A ;Chay chu duoi len
          Q_T: CLR C ;muon chay xuong thay bang RL A
          RRC A ;Chay chu duoi len ,
          DJNZ R5,Q_T ;muon chay xuong thay bang RLC A
          KHDICH: MOV @CON_TRO,A
          INC CON_TRO
          INC DIA_CHI
          MOV A,DIA_CHI
          DJNZ SO_COT,LAPL_02
          POP 00H
          POP 01H
          POP 02H
          RET
          ;**********************************************
          LOADLENRAM:
          PUSH 00H
          PUSH 01H
          PUSH 02H
          MOV CON_TRO,#5fH ;Dia chi dau
          MOV A,DIA_CHI
          MOV SO_COT,#160 ;80cot
          LAPL_01: MOV A,DIA_CHI
          MOVC A, @A+DPTR ;lay du lieu
          MOV @CON_TRO,A ;ghi vao ram bat dau tu dia chi 80
          INC CON_TRO ;tang con to dia chi
          INC DIA_CHI ;tang dia chi trung gian
          DJNZ SO_COT,LAPL_01 ;du so cot chua
          POP 00H
          POP 01H
          POP 02H
          RET

          ;***********************************************
          QUET8HANG:
          PUSH 07H
          PUSH 00H
          MOV R7,#7 ;chon hang
          LAPHANG: MOV CON_TRO,#5fH
          CLR RCK
          LAPCOT: CLR SCK
          MOV A,@CON_TRO
          CLR C
          RRC A
          MOV @CON_TRO,A
          SETB SCK
          MOV SI,C
          INC CON_TRO
          CJNE CON_TRO,#0ffH,LAPCOT
          SETB RCK
          MOV CHONHANG,R7 ;Sang hang
          LCALL DELAYLED
          MOV CHONHANG,#8
          DEC R7
          CJNE R7,#-1,LAPHANG
          POP 00H
          POP 07H
          RET
          ;*******************************************
          ;*******************************
          DELAYLED:
          MOV 09H,#8
          D1: MOV 10H,#250
          DJNZ 10H,$
          DJNZ 09H,D1
          RET
          ;***************************;***********
          ;*************
          CONGMINH:
          DB 07CH,0FEH,82H,82H,0CEH,04CH,0H,5CH,0BEH,0A2H,0BEH, 5CH,0H,3EH,3EH,20H,3EH,1EH,0H,19H,3DH,25H,3FH,3EH, 0H,0H
          DB 0FEH,0FEH,60H,30H,60H,0FEH,0FEH,0H,0BCH,0BEH,4H,0H ,3EH,3EH,20H,3EH,1EH,0H,0FEH,0FEH,20H,3EH,1EH,0H,0 H
          DB 0FEH,0FEH,90H,90H,80H,64H,0F6H,92H,0DEH,04CH,000H, 04eH
          DB 07CH,0FEH,82H,82H,0CEH,04CH,0H,5CH,0BEH,0A2H,0BEH, 5CH,0H,3EH,3EH,20H,3EH,1EH,0H,19H,3DH,25H,3FH,3EH, 0H,0H
          DB 0FEH,0FEH,60H,30H,60H,0FEH,0FEH,0H,0BCH,0BEH,4H,0H ,3EH,3EH,20H,3EH,1EH,0H,0FEH,0FEH,20H,3EH,1EH,0H,0 H
          DB 0FEH,0FEH,90H,90H,80H,64H,0F6H,92H,0DEH,04CH,000H, 04eH
          END
          Code mình đã sửa lại chạy được 20 chử rồi đó, bạn ngâm cứu nha
          còn lệnh MOV DIA_CHI,#-80 thì bạn CONGMINH đã có giải thích ở muc #27 rồi đó
          và còn lệnh MOV @CON_TRO,A : tức là lệnh định đỉa chỉ gián tiếp
          ví dụ : MOV CON_TRO,#1F ; CON_TRO bắt buộc phải là thanh ghi R0 hoặc R1
          MOV A,#0FFH
          MOV @CON_TRO,A; lúc này thanh ghi địa chỉ 1F mang giá trị 0FFH
          Theo mình hiểu là như vậy không biết có đúng ko, nếu có gì sai nhờ bạn CONGMINH sửa hộ. Thanks[/QUOTE]

          Cực kỳ chính xác
          chúc vui.!.......

          Comment


          • #50
            Nguyên văn bởi CONGMINHfs Xem bài viết
            muốn chạy hết mã(cỡ trên 65000 cột )được không các bạn,chúng ta có 2 cách
            1.sử dụng biến địa chỉ bằng con trỏ DPTR 16 BIT=65536 địa chỉ=chừng đó cột
            2.sử dụng hai thanh ghi 8 bit chẳng hạng r1,r2 =256x256=65536................
            có lẽ 89 không đủ Flash để lưu code đâu các bạn....
            Mình k cần nhiều đến vậy. chỉ cần viết full con ic thui, thì làm như thế nào vậy bạn?

            Comment


            • #51
              Nguyên văn bởi H2QA Xem bài viết
              Mình k cần nhiều đến vậy. chỉ cần viết full con ic thui, thì làm như thế nào vậy bạn?
              BẠN làm như bạn PDEL đi thì một lần chạy được khoản 20 chữ gọi là 1 dòng đi, bạn cho chạy nhiều dòng là được .Thật sự không hiểu ý bạn là như thế nào ,muốn nhiều chữ trong 1 dòng hay nhiều vòng .....

              Comment


              • #52
                Nguyên văn bởi CONGMINHfs Xem bài viết
                BẠN làm như bạn PDEL đi thì một lần chạy được khoản 20 chữ gọi là 1 dòng đi, bạn cho chạy nhiều dòng là được .Thật sự không hiểu ý bạn là như thế nào ,muốn nhiều chữ trong 1 dòng hay nhiều vòng .....
                Nhiều chữ 1 dòng, nó cứ chạy liền tù tì đó.

                Comment


                • #53
                  bạn công minh ơi cho mình xin cái mạch nguyên lý (4 khối led matrix thôi) rồi chỉ mình sửa lại đoạn code trên tương ứng 4 khối luôn nha

                  Comment


                  • #54
                    Nguyên văn bởi mrkutun1111 Xem bài viết
                    bạn công minh ơi cho mình xin cái mạch nguyên lý (4 khối led matrix thôi) rồi chỉ mình sửa lại đoạn code trên tương ứng 4 khối luôn nha
                    Mạch nguyên lý bạn chỉ cần xóa bỏ bớt 6 led matrix là được rồi, còn về code thì thay vì 80 cột thì theo code của bạn CONGMINH là chúng ta phải load lên 80 byte vào RAM thì bây giờ chỉ còn có 32 cột ( do có 4 led matrix) thì ta sửa lai load lên RAM thành 32 byte và cho xuất ra bình thường.

                    Comment


                    • #55
                      Nguyên văn bởi H2QA Xem bài viết
                      Nhiều chữ 1 dòng, nó cứ chạy liền tù tì đó.
                      có 3 phương án về phần cứng cho yêu cầu của bạn.
                      1.nuế s dụng 89c52 thì đổi sang cách quét cột (nếu nhiều cột thì giảm độ sáng led đáng kể)
                      2.nếu giữ cách quét hàng mà s dụng 89 thì thêm RAM NGOÀI
                      3.như cách 2 nhưng dùng 89C51RD2 có trên 1k ram nội...

                      Comment


                      • #56
                        Nguyên văn bởi PDEL Xem bài viết
                        Mạch nguyên lý bạn chỉ cần xóa bỏ bớt 6 led matrix là được rồi, còn về code thì thay vì 80 cột thì theo code của bạn CONGMINH là chúng ta phải load lên 80 byte vào RAM thì bây giờ chỉ còn có 32 cột ( do có 4 led matrix) thì ta sửa lai load lên RAM thành 32 byte và cho xuất ra bình thường.
                        làm như bạn PDEL đi bạn trong code 80 sửa lại 32 là ok,cứ thử đi có gì hỏi tiếp.....

                        Comment


                        • #57
                          Nguyên văn bởi CONGMINHfs Xem bài viết
                          MÌNH bận quá chưa xem fire của bạn nhưng mình gợi ý thế này nhé .
                          đầu tiên bạn sữa chữ CONGMINHFS thành mã 16(có ngĩa là 2byte)
                          rồi dùng thêm 80byte ram nữa ,sữa lại quét 8 hàng thành 16 h
                          giảm delay cho phù hợp là ok.
                          bạn cứ làm đi bí chổ nào mình giúp cho.

                          à mạch của mình sau này cũng sẻ nâng lên 16 đó,các bạn chờ nhé...
                          Bác CONGMINH ơi tới bây giờ thật sự mình chưa nghỉ ra được cách thêm 80 byte ram để quét 16 hàng, bạn có thể hướng dẩn giúp mình ko? Thanks

                          Comment


                          • #58
                            Nguyên văn bởi CONGMINHfs Xem bài viết
                            À mình hiểu ý bạn rồi ,thì bạn thêm 1con 595 nữa và xuất nối tiếp với con kia,thay vì bạn cần 1 byte
                            cho hàng thì bây giờ xuất 2 byte

                            chúc thành công !...
                            bác có thể giúp em viết chương trình cho phần cứng này đc ko, vì bài tập lớn này em chỉ đc dùng 595, ko đc dùng con 138 nên khó wa' viết mãi ko đc. thanks bác trước
                            PROTEUS 16X32.rar

                            Comment


                            • #59
                              anh công minh ơi. cho em hỏi là trong cái file mô phỏng của anh đó. anh gán dây không à. em không biết cách bung dây ra. nên có 2 chỗ e ko biết a nối vô chỗ nào hết.em làm thử 4 khối rồi.mà không chạy.hix xin anh giải thĩ cho e hiểu cách gán dây của anh với.cái chỗ mà Q1 2SA872 mạch thật nối vào hàng led,chân 18 của con ULN2803 mạch thật nối vào cột led,chân 1 nối vào 595 là nối vào đâu vậy anh.

                              Comment


                              • #60
                                Nguyên văn bởi mrkutun1111 Xem bài viết
                                anh công minh ơi. cho em hỏi là trong cái file mô phỏng của anh đó. anh gán dây không à. em không biết cách bung dây ra. nên có 2 chỗ e ko biết a nối vô chỗ nào hết.em làm thử 4 khối rồi.mà không chạy.hix xin anh giải thĩ cho e hiểu cách gán dây của anh với.cái chỗ mà Q1 2SA872 mạch thật nối vào hàng led,chân 18 của con ULN2803 mạch thật nối vào cột led,chân 1 nối vào 595 là nối vào đâu vậy anh.
                                mình vẻ tượng trưng 1 chân cho cột và 1 chân cho hàng cứ thê theo thứ tự đấu vào chứ có gán dây gì đâu,còn chân 1,2... (là c in 2803) thì nối vào 15,1,2....(là chân out 595)...

                                Q1 2SA872 mạch thật nối vào hàng led nối vào hàng 1.2.3 ....

                                chú ý: đấu như vậy là khi bạn làm mạch thật nhé để đảm bảo công suất cho led sáng.(cái này mình làm rất nhiều rồi bạn có thể yên tâm,chứ còn đấu như thế mà mô phỏng thì nó không chạy đâu...

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X