Thông báo

Collapse
No announcement yet.

[Hiển thị] LED Matrix Display (tập 2)

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

  • mình chuẩn bị phải làm bài tập lớn muốn hỏi các bạn thêm về con led ma trậ đa sắc:xanh , do , vang
    mình định dùng con 89s52 để điều khiển nhưng vẫn chưa biết cấu tạo , sơ đồ chân của con led matran đa sắc loại8x8 hoặc loại khác cũng được.
    cách quét led để có thể hiên thi ra các bộ số và chữ lần lượt theo tưng màu.
    mong các bác chỉ giáo dùm.thanks các bác nhiều

    Comment


    • em muốn hỏi các bác về matran led đa sắc, em muốn dung con 89xx để điều khiển nó hiển thị các bộ số và chữ lần lượt theo các màu xanh , đỏ, vàng.các bác co thể hướng dẫn em cách lập trình và nhận biêt sơ đồ chân của con matran led đa sắc đó không(loại nào cũng đươc),cách quét matran led đa sắc.
      ma em có phải dùng con dêm nào không em so dòng không đủ.em mới học nên kiên thức còn hổng nhiều chỗ lắm.Mong các bác chỉ giáo dum.

      Comment


      • Matran help!

        Em có cái code asm cho matran 8x40 bác xem hộ nó bị sai chỗ nào ạ. Em quét cột dùng 74595
        Cho em hỏi xung ck đưa vào chân SH_CK và SP_CK cùng một xung hay khác nhau vậy ?
        Attached Files

        Comment


        • Sao không có ai giúp mình vậy ?????? các bạn giúp mình với help me !

          Comment


          • Nguyên văn bởi leemjnhwuong Xem bài viết
            anh nào biết làm ledmatrix kết nối với visualbacsic(máy tính) chỉ em với
            Ledmatrix kết nối với visualbacsic(máy tính) là vấn đề kinh điển, sẽ có rất nhiều bài được post lên,bạn chịu khó searh thì tớ nghĩ trong diễn đàn sẽ có nhiều đó.

            ----^..^----

            Comment


            • nodiesun:
              các bạn cho mình hỏi làm thế nào để có thể truy nhập và bảng mã của các ký tự nếu mã hóa các ký tự có độ dài khác nhau. Ví dụ chữ A có độ dài 8 byte, chữ I có độ dài 4 byte chẳng hạn. Em sử dụngPic viết bằng ngôn ngữ C
              - dùng 1 mảng mã hoá liên tục ...,A,B,C,...,X,Y,Z,... theo bảng mã ASCII, kô có 1 khe hở nào - độ dài do người lập trình thiết kế => có thể kéo dài thành 2, 3 mảng nếu ký tự kích thước lớn hoặc width lớn - giả sử tên là font1, font2, font3,...
              - dùng 1 mảng khác làm index định vị code của mảng trên - độ dài là 256 giá trị
              - dùng tiếp 1 mảng chứa width của mỗi char - 256 giá trị
              - khi lập trình để truy nhập đến từng byte code của 1 char ta sẽ dùng như sau:

              //char có STT là j, mã nằm trong mảng font1
              for (i=0; i<=width[j]-1; i++)
              {
              ... font1[index[j]+i] ... //là byte cần thao tác
              }

              Ký tự A dài 8 byte (width['A']=8) ta sẽ thao tác với 8 byte là font1[index['A']+0], font1[index['A']+1], ..., font1[index['A']+7]
              Ký tự I dài 4 byte (width['I']=4) ta sẽ thao tác với 4 byte là font1[index['I']+0], font1[index['I']+1], ..., font1[index['A']+3]
              Với giả sử là dữ liệu của 2 ký tự A, I đều nằm ở mảng font1.

              Cách ánh xạ này dùng rất hay và nhanh do không dùng đến phép nhân, width là thuộc tính của ký tự còn index dùng để "nhòm" vào mảng font!!! Sẽ không có 1 byte FFh (hoặc 00h) nào thừa, ta có đủ thông tin để truy nhập do đó sẽ ít tốn bộ nhớ so với cách lưu trữ các ký tự cần dùng số byte như nhau để mô tả.

              Có thể bỏ mảng width do width['A'] chính bằng index['B']-index['A'].

              Ý tưởng này tôi chưa thực hiện nhưng nghĩ là hoàn toàn khả thi - có thể là đụng hàng với các bác đã làm rồi.
              Last edited by bravesoldier; 07-09-2009, 06:07.
              Manchester United FC forever!

              Comment


              • Nguyên văn bởi bravesoldier Xem bài viết
                - dùng 1 mảng mã hoá liên tục ...,A,B,C,...,X,Y,Z,... theo bảng mã ASCII, kô có 1 khe hở nào - độ dài do người lập trình thiết kế => có thể kéo dài thành 2, 3 mảng nếu ký tự kích thước lớn hoặc width lớn - giả sử tên là font1, font2, font3,...
                - dùng 1 mảng khác làm index định vị code của mảng trên - độ dài là 256 giá trị
                - dùng tiếp 1 mảng chứa width của mỗi char - 256 giá trị
                - khi lập trình để truy nhập đến từng byte code của 1 char ta sẽ dùng như sau:

                //char có STT là j, mã nằm trong mảng font1
                for (i=0; i<=width[j]-1; i++)
                {
                ... font1[index[j]+i] ... //là byte cần thao tác
                }

                Ký tự A dài 8 byte (width['A']=8) ta sẽ thao tác với 8 byte là font1[index['A']+0], font1[index['A']+1], ..., font1[index['A']+7]
                Ký tự I dài 4 byte (width['I']=4) ta sẽ thao tác với 4 byte là font1[index['I']+0], font1[index['I']+1], ..., font1[index['A']+3]
                Với giả sử là dữ liệu của 2 ký tự A, I đều nằm ở mảng font1.

                Cách ánh xạ này dùng rất hay và nhanh do không dùng đến phép nhân, width là thuộc tính của ký tự còn index dùng để "nhòm" vào mảng font!!! Sẽ không có 1 byte FFh (hoặc 00h) nào thừa, ta có đủ thông tin để truy nhập do đó sẽ ít tốn bộ nhớ so với cách lưu trữ các ký tự cần dùng số byte như nhau để mô tả.

                Có thể bỏ mảng width do width['A'] chính bằng index['B']-index['A'].

                Ý tưởng này tôi chưa thực hiện nhưng nghĩ là hoàn toàn khả thi - có thể là đụng hàng với các bác đã làm rồi.
                bạn làm thế này thì một con VDK quét được bảng rộng bao nhiêu? bạn nên dùng con trỏ trực tiếp tới vị trí truy xuất! răc rối hơn tí nhưng nhanh gấp nhiều lần! với mã hóa kiểu này thì hạn chế tốc độ lắm! với lại phần nhập bộ font cũng hơi mệt! làm tự động chứ làm thủ công chắc đuối! để rộng ra một khe hở giữa các ký tự phí tí rom nhưng có thể lập trình truy bắn được! mà nên mã hóa text trên PC luôn rồi truyền xuống cho đỡ vất vã! tuy nhiên không có đẹp bằng chấm tay!
                Ôi! Từ lý thuyết đến thực tế.

                Comment


                • Làm font mới thì đúng là mệt thật. Hiện tớ đã thử thành công với bảng 8x16 =128 LED đơn, phần cứng theo Tut của NgHaiHa, phần mềm phỏng theo bác Nguyễn Chí Linh. Cái mảng này là kinh nghiệm từ lập trình Turbo Pascal, nó cũng là dạng con trỏ đấy chứ, nguyên lý chung là Lookup Table dùng để hạn chế tính toán (các phép nhân, chia,... tốn clock ticks). Đang tính làm phần cứng theo Thread giao diện quang báo của bác DangDung để xem khả năng đến đâu. Bạn cho hỏi con PIC16F88 nếu mở rộng khoảng 16 hàng 64 cột có đủ ROM, RAM để chạy không??? Cấp nguồn xung 5V - 5Ampe có đủ không nhỉ???
                  Last edited by bravesoldier; 11-09-2009, 15:00.
                  Manchester United FC forever!

                  Comment


                  • Nguyên văn bởi bravesoldier Xem bài viết
                    Làm font mới thì đúng là mệt thật. Hiện tớ đã thử thành công với bảng 8x16 =128 LED đơn, phần cứng theo Tut của NgHaiHa, phần mềm phỏng theo bác Nguyễn Chí Linh. Cái mảng này là kinh nghiệm từ lập trình Turbo Pascal, nó cũng là dạng con trỏ đấy chứ, nguyên lý chung là Lookup Table dùng để hạn chế tính toán (các phép nhân, chia,... tốn clock ticks). Đang tính làm phần cứng theo Thread giao diện quang báo của bác DangDung để xem khả năng đến đâu. Bạn cho hỏi con PIC16F88 nếu mở rộng khoảng 16 hàng 64 cột có đủ ROM, RAM để chạy không??? Cấp nguồn xung 5V - 5Ampe có đủ không nhỉ???
                    mấy bảng quang báo nó cả mấy ngàn con led bạn quét kiểu đó e đuối!
                    mình từng làm con 18f4550 40M quuet 64 x 4 x 24 con led don xử lý tốt các hiệu ứng dịch, chữ lượn sóng , lá rơi ...
                    mình nói chỉ mang tính chất góp ý thôi! Còn bạn làm thế nào thì tùy. bạn có biết nó dịch chỉ số mảng theo nguyên tắc gì không? view code hợp ngữ để xem đi!
                    Ôi! Từ lý thuyết đến thực tế.

                    Comment


                    • Nguyên văn bởi mocdailam Xem bài viết
                      mấy bảng quang báo nó cả mấy ngàn con led bạn quét kiểu đó e đuối!
                      mình từng làm con 18f4550 40M quuet 64 x 4 x 24 con led don xử lý tốt các hiệu ứng dịch, chữ lượn sóng , lá rơi ...
                      mình nói chỉ mang tính chất góp ý thôi! Còn bạn làm thế nào thì tùy. bạn có biết nó dịch chỉ số mảng theo nguyên tắc gì không? view code hợp ngữ để xem đi!
                      PIC16F88 7168byte Flash, 368byte ram, làm gì mà quét mấy con led không đủ!
                      nếu truyền ít ký tự thì làm giao tiếp cho PC no xử lý data cho tiết kiệm flash. bạn tính công suất led rồi cộng lại thôi!
                      Ôi! Từ lý thuyết đến thực tế.

                      Comment


                      • bạn làm thế này thì một con VDK quét được bảng rộng bao nhiêu? bạn nên dùng con trỏ trực tiếp tới vị trí truy xuất! răc rối hơn tí nhưng nhanh gấp nhiều lần! với mã hóa kiểu này thì hạn chế tốc độ lắm! với lại phần nhập bộ font cũng hơi mệt! làm tự động chứ làm thủ công chắc đuối! để rộng ra một khe hở giữa các ký tự phí tírom nhưng có thể lập trình truy bắn được! mà nên mã hóa text trên PC luôn rồi truyền xuống cho đỡ vất vã! tuy nhiên không có đẹp bằng chấm tay!
                        bạn có thể cho biết cách truy xuất bằng con trỏ được không giúp mình với!
                        Manchester United FC forever!

                        Comment


                        • Nguyên văn bởi bravesoldier Xem bài viết
                          - dùng 1 mảng mã hoá liên tục ...,A,B,C,...,X,Y,Z,... theo bảng mã ASCII, kô có 1 khe hở nào - độ dài do người lập trình thiết kế => có thể kéo dài thành 2, 3 mảng nếu ký tự kích thước lớn hoặc width lớn - giả sử tên là font1, font2, font3,...
                          - dùng 1 mảng khác làm index định vị code của mảng trên - độ dài là 256 giá trị
                          - dùng tiếp 1 mảng chứa width của mỗi char - 256 giá trị
                          - khi lập trình để truy nhập đến từng byte code của 1 char ta sẽ dùng như sau:

                          //char có STT là j, mã nằm trong mảng font1
                          for (i=0; i<=width[j]-1; i++)
                          {
                          ... font1[index[j]+i] ... //là byte cần thao tác
                          }

                          Ký tự A dài 8 byte (width['A']=8) ta sẽ thao tác với 8 byte là font1[index['A']+0], font1[index['A']+1], ..., font1[index['A']+7]
                          Ký tự I dài 4 byte (width['I']=4) ta sẽ thao tác với 4 byte là font1[index['I']+0], font1[index['I']+1], ..., font1[index['A']+3]
                          Với giả sử là dữ liệu của 2 ký tự A, I đều nằm ở mảng font1.

                          Cách ánh xạ này dùng rất hay và nhanh do không dùng đến phép nhân, width là thuộc tính của ký tự còn index dùng để "nhòm" vào mảng font!!! Sẽ không có 1 byte FFh (hoặc 00h) nào thừa, ta có đủ thông tin để truy nhập do đó sẽ ít tốn bộ nhớ so với cách lưu trữ các ký tự cần dùng số byte như nhau để mô tả.

                          Có thể bỏ mảng width do width['A'] chính bằng index['B']-index['A'].

                          Ý tưởng này tôi chưa thực hiện nhưng nghĩ là hoàn toàn khả thi - có thể là đụng hàng với các bác đã làm rồi.
                          Bạn có thể sử dụng RTB v3.8. Chương trình này hỗ trợ tạo ra font tiếng việt, tiếng anh,... có độ rộng kí tự khác nhau. Đầu vào chương trình là các kí tự do bạn gõ vào ô nhập text, đầu ra gồm có dữ liệu bitmap của từng kí tự tương ứng kèm theo độ rộng của mỗi kí tự đó tính theo pixel. Ngoài việc tạo font, chương trình còn hỗ trợ tạo bitmap của ảnh và của xâu kí tự, đồng thời hỗ trợ chỉnh sửa thủ công từng bitmap với bút vẽ, và truyền dữ liệu xuống vdk qua cổng COM với giao thức mở.

                          Chương trình này free nhưng hiện tại việc active phần mềm được thực hiện qua email.

                          Comment


                          • Mấy bạn vui lòng giúp mình một tý về xử lý mảng, mình xin cảm ơn!
                            Hiện tại mình đang làm đồ án môn học ledmatric 16x64 quét theo cột. 16 hàng được nối thẳng vào 2 port của 16F877A. Và sử dụng phần mền tạo font RTB của anh Bùi Việt Hoàng.
                            Sau khi tạo ra font chữ thì mạng dữ liệu được sắp xếp như sau:

                            unsigned char FontData[2][28]= {
                            { // Order 0, Character 'A', ASCII 65 (0x41)
                            0x00,0x00,
                            0x18,0x00,
                            0x07,0x00,
                            0x04,0xC0,
                            0x04,0x30,
                            0x04,0xC0,
                            0x07,0x00,
                            0x18,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00
                            },
                            { // Order 1, Character 'B', ASCII 66 (0x42)
                            0x00,0x00,
                            0x1F,0xF0,
                            0x11,0x10,
                            0x11,0x10,
                            0x11,0x10,
                            0x11,0xE0,
                            0x0E,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00,
                            0x00,0x00
                            }
                            };

                            Vậy khi mình truy cập đến vĩ trí chữ A thì port C và port D sẽ nhận vĩ trí nào và khai báo ra sao? Mong các bạn giúp đỡ, mình dùng CCS để lập trình.
                            Và mình khai báo mảng font như thế đã được chua?
                            Lần nữa xin cảm ơn các bạn!

                            Comment


                            • Không ai giúp mình hết ta? buồn gê!!!

                              Comment


                              • Nguyên văn bởi aladin_09 Xem bài viết
                                Không ai giúp mình hết ta? buồn gê!!!
                                Bạn hỏi thông minh quá đấy mà, người ta đọc mãi mà chẳng hiểu...

                                Bạn khai báo như thế không sai, nhưng vấn đề là bạn định làm gì với nó.
                                Bạn muốn hiển thị cái gì? Ý định triển khai chương trình của bạn như thế nào? Bạn quét theo hàng hay theo cột? Bạn định ghép chữ cái hay dùng bitmap của cả xâu? Bạn chọn kiểu mã hóa font bitmap như thế nào? Bạn có nguyên lý ở đây không thì post lên. Bạn trình bày rõ ràng thì chắc chắn mọi người sẽ giúp bạn.

                                Comment

                                Về tác giả

                                Collapse

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

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

                                Collapse

                                Đang tải...
                                X