Thông báo

Collapse
No announcement yet.

Hướng dẫn làm LMD 8x64 (code ASM)

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

  • Hướng dẫn làm LMD 8x64 (code ASM)

    Chào tất cả các anh em!
    Sau một thời gian tìm tòi và học hỏi những gì mà người đi trước trong mảng quang báo để lại. Mình đã tĩch lũy được một số kinh nghiệm làm LMD với mục đích là học hỏi, thí nghiệm là chính và đã làm thành công LMD 8x64 với VDK 89x5x ( 89S hay 89C đều giống nhau cả, anh em nào quen cái nào thì xài cái đó) và IC 74HC595 (74LS595 đều thế)!

    Phương án mình xử dụng là xuất trực tiếp dữ liệu hàng ra 1 port của 89 ( trong hình là port3) và dùng 3 chân của 1 port khác để giải mã quét cột, tốn rất ít chân của VDK, mỗi IC 74595 tương ứng với 8 cột của LMD.


    Sau đây là sơ đồ phần cứng ( đã lược bỏ một số phần liên quan đến công suất, mạch reset 89 và một số thứ linh tinh khác cho mạch mô phỏng được dẽ dàng, anh em nào làm theo nên tính toán thêm phần công suất cho hợp lý nhé), hình ảnh mô phỏng trên proteus, và code viết bằng ASM rất đơn giản và dễ hiểu cho anh em nào mới bước chân vào làm LMD và học ASM!

    Mọi ý kiến thắc mắc xin vui long post vào đây, mình sẽ giải đáp trong khả năng của mình!
    Chúc thành công!

    Code:
     DULIEU	BIT	P2.2
     CLK	BIT	P2.0
     STOBE	BIT	P2.1
     CHAR	EQU	P3
     org 0000h
       
    start: mov a,#00h
    mov p2,#00h
    mov p3,#00h
    mov dptr,#DL
    mov r6,1
    BD: mov r3,#64  ; Số cột dữ liệu cần truyền, tương ứng độ dài của bảng mã
    loop:mov r1,#0
    loop1:
          setb DULIEU ;Cho một cột ở trạng thái Active
          mov r2,#0    ; Biến dữ liệu
          
    lap: setb CLK     ; Cho xung clock để dịch cột
          cpl DULIEU
          cpl CLK
          setb STOBE ; Đưa cột ở trạng thái Active ra ( bỏ qua lệnh này nếu dùng IC 741HC64 hoặc 74HC4094, 4094)
          cpl STOBE
          mov a,r2
          movc a,@a+dptr
          mov CHAR,a
          mov 7fh,#100  ; Chờ thời gian ngắn để mắt nhìn thấy
          djnz 7fh,$
          mov CHAR,#0   ; Tắt toàn bộ Led
          inc r2
          cjne r2,#64,lap ; Số cột led, dùng bao nhiêu cột thì số tương ứng
          inc r1
          cjne r1,#6,loop1   ;tốc độ chạy chữ, giá trị càng cao thì càng chậm
          inc dptr
          djnz r3,loop
          djnz r6,BD
              jmp start
     ;=====================================================    
    DL:
    DB     0H,0H,0H,0H,0H,0H
    DB     0H,0H,0H,0H,0H,0H
    DB     0H,0H,0H,0H,0H,0H
    DB     0H,0H,0H,0H,0H,0H
    DB     4EH,0DFH,0DBH,0DBH,0FBH,72H,0H  	;S
    DB     7EH,0FFH,0C3H,0C3H,0FFH,7EH,0H  	;O
    DB     0FFH,0FFH,1CH,38H,0FFH,0FFH,0H  	;N
    DB     0FFH,0FFH,18H,18H,0FFH,0FFH,0H  	;H
    DB     0FFH,0FFH,1BH,1BH,1FH,0EH,0H  	;P
    DB     0H,0H,0H
    DB     0H,0H,0H
    
    
    END
    Attached Files
    Trần Đức Sơn

    tel:0934691385

  • #2
    Quên up file Proteus lên! thứ lỗi thứ lỗi
    Attached Files
    Trần Đức Sơn

    tel:0934691385

    Comment


    • #3
      Tại sao tôi down proteus và Code của bạn về mô phỏng thấy sáng toàn bộ.

      Comment


      • #4
        sang het

        mình chạy thử cũng thấy sáng hết bạn xem lại cái nhé.

        Comment


        • #5
          mình dựa trên file mô phỏng và viết lại, các bạn mới làm quen xem và tham khảo
          Attached Files

          Comment


          • #6
            Nguyên văn bởi cuccucu Xem bài viết
            Tại sao tôi down proteus và Code của bạn về mô phỏng thấy sáng toàn bộ.
            Có thể là do hàm chờ hơi ít ( Proteus mô phong hơi tệ cái này)
            Các bạn có thể tăng hàm chờ lên bằng cách sau!
            Code:
            mov 7fh,#250 <<< thay 100 bằng 250  ; Chờ thời gian ngắn để mắt nhìn thấy
            djnz 7fh,$
            Chúc thành công!
            Trần Đức Sơn

            tel:0934691385

            Comment


            • #7
              Mình xem cái sơ đồ trong matran.bmp nhưng ko hiểu lắm

              Mình thấy 8 chân của P3 nối với các H1~H8 ,các H1~H8 của các led matrix (LM) nối với nhau.
              Còn các C1~C8 của mỗi LM được điều khiển thế nào thì mình chưa hiểu.Cụ thể là bạn dùng 3 chân của MCU nối với 3 chân SHcp, STcp và Ds của 74595.Mình xem DataSheet thì thế này:

              -SHcp (chân 11) : shift register clock input --> xung để điều khiển nhận dữ liệu nối tiếp.
              -STcp (chân 12) : storage register clock input--> xung điều khiển việc xuất 8 bit ra 8 chân Q0~Q7.
              -Ds (chân 14) : Serial data input--Dữ liệu nối tiếp đưa vào từ MCU

              Tất cả các chân SHcp và STcp của 8 con 74595 đều được nối với nhau. Nhưng còn các chân Ds mình thấy để trống, không hiểu dữ liệu tuần tự được truyền từ MCU tới các chân này như thế nào??
              Say thanks with any post you think it's helpful...

              Comment


              • #8
                8 chân của P3 nối với các H1~H8 của Led matrix đó là xuất dữ liệu ra theo hàng!<Quét theo cột thì các hàng nối với nhau, quét theo hàng thì các cột nối với nhau mà.>
                C1~C8 của LMD được nối với các đầu ra Q0~Q7 của 74595.
                Các chân 11,12,14 gọi nôm na là thế này; 14 dữ liệu; 11 clock; 12 chốt dữ liệu đưa ra!
                Vì các xung nhịp clock và chốt của các 74595 là như nhau nên được nối với nhau và nối vào 1 chân điều khiển chung ( rất tiết kiệm chân VDK, ko tăng số lượng chân của VDK khi tăng số lượng 74595) < Nếu dùng tiết kiệm nữa có thể nối xung clock và chốt vào cùng chung tín hiệu điều khiển, điều này có thể thay = 74164>
                Chân 14 (ds, hay dữ liệu thì 74595 đầu tiên được nối với 1 chân của VDK), còn các ic sau nếu bạn để ý kỹ thì sẽ thấy chúng được nối vào các đầu ra Q7' (chân số 9) của 74595 phía trước, Q7' là chân đưa tín hiệu ra giống Q7 ( ở IC 4094 còn có thêm Q7' đảo) và được dùng làm dữ liệu truyền vào chân 14 của IC sau, việc làm như thế có thể nói điều khiển n cột LMD chỉ dùng hết 2 chân của VDK, quá tiết kiệm khi mở rộng!
                Trần Đức Sơn

                tel:0934691385

                Comment


                • #9
                  Mình cũng đang muốn làm 1 bảng led 16*64, phần hiển thị led thì làm xong rồi ( 74595 + 2803 ). Bạn nào có kinh nghiệm thì hướng dẫn cho mình phần mạch điều khiển + công suất với. Nói chung thi hồi trước mình có làm rồi dùng con 74hc154 để quét 16 hàng ==> hiển thị được chữ IN HOA KHÔNG DẤU, lần này mình muốn hiển thị TIẾNG VIỆT + Giao tiếp máy tính luôn. Mong các bạn chỉ giáo giúp mình

                  Comment


                  • #10
                    Bảng 16x64 đang trong giai đoạn làm thử và khử nhiễu cũng như bóng ma, khi nào thành công sẽ post lên.
                    To Mr_7: Công suất cần những thứ sau, một bộ nguồn ổn định, dòng lớn, tốt nhất là mua 1 bộ nguồn xung của China 5V/5~7A. Dùng 2803 hút dòng rồi nên phần cấp nguồn cho led tốt nhất nên mắc tran theo kiểu dalington, vừa ổn định vừa đủ dòng cho led sáng đều đẹp! <bóng tran tùy chọn, tôi đang thử với C1815 và C2383>
                    Một số kiến thức mọn xin góp sức!
                    Trần Đức Sơn

                    tel:0934691385

                    Comment


                    • #11
                      Nguyên văn bởi cddt061 Xem bài viết
                      Chân 14 (ds, hay dữ liệu thì 74595 đầu tiên được nối với 1 chân của VDK), còn các ic sau nếu bạn để ý kỹ thì sẽ thấy chúng được nối vào các đầu ra Q7' (chân số 9) của 74595 phía trước, Q7' là chân đưa tín hiệu ra giống Q7 ( ở IC 4094 còn có thêm Q7' đảo) và được dùng làm dữ liệu truyền vào chân 14 của IC sau, việc làm như thế có thể nói điều khiển n cột LMD chỉ dùng hết 2 chân của VDK, quá tiết kiệm khi mở rộng!
                      À, hiểu rồi

                      Nhưng như vậy khi đưa chữ vào là bạn phải đưa từ phải sang đúng không,ví dụ nhưn chữ SONHP thì thứ tự bit đẩy ra là PHNOS ?
                      Có phải xung chốt dữ liệu đưa ra ở chân 12 sẽ được phát sau khi có 8 (bit) x 8 (LMD) = 64 bit được MCU đẩy ra không?

                      Và như thế thì tất cả các IC 74595 đều phải luôn luôn hoạt động
                      Last edited by nickname2606; 05-05-2009, 23:37.
                      Say thanks with any post you think it's helpful...

                      Comment


                      • #12
                        Bình thường mình làm mạch thì có 2 kiểu nguồn vào: 1 kiểu là qua dùng biến thế qua diode+ 7805, 1 kiểu là mình cắm trực tiếp 5V vào luôn. Mình sử dụng riêng 1 cái nguồn ATX của máy tính xài cũng cực kỳ tốt và ổn định. Mình nói phần công suât ở đây là ở ngõ vào led matrix đó, hồi tước mình dùng A1015 và D468 mắc darlington nhưng công suất ra cũng yếu lắm khi mình ghép nhiều led.Cũng đủ sáng rõ nhưng ra ngoài trời thì nhìn hơi mờ. Mình thấy trong diễn đàn cũng có 1 số người dùng con TIP 42 hay 41 gì đó không biết bạn có nghiên cứu chưa? Chừng nào bạn làm thành công rồi thì post lên cho mình tham khảo với.......Cảm Ơn nhiều

                        Comment


                        • #13
                          Khi bạn đưa chu SONP vào thì khi dịch byte đầu tiên sẽ đẩy xuống cuối cùng còn byte cuối cùng sẽ là đầu tiên. nên khi đưa dữ liệu vào bạn đẩy byte cuối cùng ra trước lần lượt tới byte đầu tiên. Sau khi đưa xong thì dữ liệu vẫn còn nằm trong IC 74595 chưa đưa ra ngoài vì vậy bạn cần tạo ra 1 xung chốt ở chân 12 để đầy dữ liệu ra cùng 1 lúc.

                          Comment


                          • #14
                            khi dịch byte đầu tiên sẽ đẩy xuống cuối cùng còn byte cuối cùng sẽ là đầu tiên
                            - Chỗ này có vẻ không ổn, nếu phần cứng cấp nguồn vào 1 chân Anot, dữ liệu vào Katot làm các LED sáng theo cột (gọi nôm na là cấp nguồn vào cột hay quét cột), thì trong chế độ chữ dịch trái, dịch phải ta có thể xử lý bộ đệm dữ liệu theo byte. Khi đó cứ mỗi lần cập nhật lại bộ đệm, thì byte đầu tiên của bộ đệm được đẩy xuống cuối cùng, byte thứ 2 được đẩy lên đầu, byte thứ 3 đẩy lên thứ 2 và ...toàn bộ vùng bộ đệm được đẩy dịch lên 1 byte, byte đầu được đưa vào vị trí cuối cùng.
                            - Nếu phần cứng của bạn khi cấp nguồn vào Anot, dữ liệu vào Katot mà làm các led sáng theo hàng (gọi nôm na là cấp nguồn theo hàng hay quét hàng), ,muốn chữ dịch trái, dịch phải thì bạn không thể sử dụng phương pháp cập nhật bộ đệm như trên được. Lúc này bạn phải xử lý theo từng bít.

                            Thân mến,
                            For a better world

                            Comment


                            • #15
                              Nguyên văn bởi nickname2606 Xem bài viết
                              À, hiểu rồi

                              Nhưng như vậy khi đưa chữ vào là bạn phải đưa từ phải sang đúng không,ví dụ nhưn chữ SONHP thì thứ tự bit đẩy ra là PHNOS ?
                              Có phải xung chốt dữ liệu đưa ra ở chân 12 sẽ được phát sau khi có 8 (bit) x 8 (LMD) = 64 bit được MCU đẩy ra không?

                              Và như thế thì tất cả các IC 74595 đều phải luôn luôn hoạt động
                              Ồ! Không phải vậy rồi, bạn để ý chương trình thì đầu tiên mình cho tắt toàn bộ bảng LMD bằng cách xuất tất cả các byte có giá tri = 0 ra, đến byte đầu tiên của chữ S thì cột cuối cùng (64) của quang báo được active thế là nó sáng thứ tự các byte của chữ S và dịch từ phải qua trái thứ tự vẫn là SONHP chứ không phải là PHNOS, bất kể là dịch từ phải qua hay là từ trái qua byte chữ S vẫn ra đầu tiên!
                              Đúng là tất cả các IC 74595 đều hoạt động nhưng mà là hoạt động ngầm, khi tất cả các chân 12 được active thì 74595 mợi thực sự hoạt động!

                              To Mr_7: Dùng tran mắc darlington ở đây mình mới thử cho phương pháp quét cột, còn nếu quét theo hàng thì dùng Tip41 ( cái quét theo hàng vẫn còn nghiên cứu vì mình lập trình = ASM nên khó ở khoản này), hoặc nếu không dùng Tip41 bạn cỏ thể cấp nguồn cho từng module riêng biệt(8x8,16x16,16x32) thì độ ổn định cao hơn và Led sáng hơn!
                              Trần Đức Sơn

                              tel:0934691385

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X