Thông báo

Collapse
No announcement yet.

Làm sao tăng số chữ hiển thị trên led ma trận

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

  • Làm sao tăng số chữ hiển thị trên led ma trận

    Mấy anh cho em hỏi là khi em lập trình cho 89c51 để chạy chữ thì em dùng mảng để chứa rồi cho xuất lần lượt ra như code sau :
    Code:
    #include"REG51.H"
    unsigned int m,n,k,p,x,y;
    unsigned char hang[8]={0X80,0X40,0X20,0X10,0X08,0X04,0X02,0X01};
    unsigned char cot[69]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,
    0X00,0X00,0X66,0X7E,0X81,0XC3,0XFF,0X3F,0X3F,0X00,0X00,0X3F,0X3F,
    0XFF,0X99,0X3C,0X2C,0X24,0X91,0XFF,0XE7,0XE7,0XE7,0XFF,0X00,0X00,
    0XC7,0X93,0X39,0X7C,0XFF,0X99,0X3C,0X2C,0X24,0X91,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
    0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
    void delay(unsigned int t)
    {
    unsigned int i,j;
    for(i=0;i<=t;i++)
    for(j=0;j<=125;j++);
    }
    void scan(void)
    {
    P3=hang[n];
    if(p<=53) P2=cot[p];
    if(p>8) P1=cot[p-8];
    if(p>16) P0=cot[p-16];
    }
    void main(void)
    {
    m=0;
    while(1)
    {
    for(k=1;k<=5;k++)
    {
    for(n=0;n<=7;n++)
    {
    p=n+m;
    scan();
    delay(2);
    }
    }
    delay(10);
    m++;
    if(m==69) m=0;
    }
    }
    Mấy bác có cách nào xuất ra được nhiều chữ được không ạ chứ em thấy dùng mảng thì chỉ chứa được khoảng hơn 100 phần tử thôi.Mấy bác giúp em với.
    Thank các bác nhiều nha!!!!

  • #2
    Một mảng chứa được mấy trăm phần tử chứ nhỉ.
    Nếu có giới hạn phần tử thì sử dụng nhiều mảng.

    Comment


    • #3
      Nguyên văn bởi chjpchjp1991
      Chuẩn..như bạn mainhochoc nói...bạn tách ra làm nhiều mảng mỗi mảng mỗi dãy chữ được mà..search mấy bài trênn forum có đó bạn..
      Hjx. maingochoc chứ ko phải mainhochoc bạn nhá. Hjx.
      Ak pạn là admin củ chipkool.net hả.

      Comment


      • #4
        Nếu không yêu cầu thay đỏi chữ hiển thị thì bạn có thể làm mấy cái mảng dữ liệu như thế. Còn thực tế thì nên tách các bảng đó thành bảng mã font, công việc của bạn sẽ là xác định chác kí tự cần chạy, rất thuận lợi khi thay đổi chữ cần chạy, hay thay đổi kiểu chữ hiển thị (font)

        Comment


        • #5
          Làm gì nhiều vậy anh, em chứa 1 mảng mà chỉ dc khoảng gần 110 phần tử thôi còn chứa thêm thì không được nữa với lại chia ra thành nhiều mảng thì vẫn như thế không khác gì cả.

          Comment


          • #6
            Nguyên văn bởi youaremylife Xem bài viết
            Nếu không yêu cầu thay đỏi chữ hiển thị thì bạn có thể làm mấy cái mảng dữ liệu như thế. Còn thực tế thì nên tách các bảng đó thành bảng mã font, công việc của bạn sẽ là xác định chác kí tự cần chạy, rất thuận lợi khi thay đổi chữ cần chạy, hay thay đổi kiểu chữ hiển thị (font)
            mà mình tạo font như thế nào anh nhỉ rồi mình cho chạy chữ như thế nào nhỉ.Mong anh giúp với.

            Comment


            • #7
              bạn khai báo lại kiểu dữ liệu cho mảng là unsigned char code thay cho unsigned char thử nhé, nhưng khai báo thế này sẽ không sử được dữ liệu trong mảng. không thì bạn tạo mảng font thử xem

              Comment


              • #8
                Nguyên văn bởi vovandoanpti Xem bài viết
                bạn khai báo lại kiểu dữ liệu cho mảng là unsigned char code thay cho unsigned char thử nhé, nhưng khai báo thế này sẽ không sử được dữ liệu trong mảng. không thì bạn tạo mảng font thử xem
                unsigned char code là sao vậy anh,giải thích giúp với ...

                Comment


                • #9
                  khi sử dụng usigned char code bạn sẽ tăng đc số lượng phần tử lên nhiều hơn nhiều. nhưng nó phải khai báo sẵn và không sửa được trong thuật toán. bạn thay đoạn code "unsigned char cot[69]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,
                  0X00,0X00,0X66,0X7E,0X81,0XC3,0XFF,0X3F,0X3F,0X00, 0X00,0X3F,0X3F,
                  0XFF,0X99,0X3C,0X2C,0X24,0X91,0XFF,0XE7,0XE7,0XE7, 0XFF,0X00,0X00,
                  0XC7,0X93,0X39,0X7C,0XFF,0X99,0X3C,0X2C,0X24,0X91, 0XFF,0XFF,0XFF,
                  0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,
                  0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};" bằng "unsigned char code cot[69]={0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,
                  0X00,0X00,0X66,0X7E,0X81,0XC3,0XFF,0X3F,0X3F,0X00, 0X00,0X3F,0X3F,
                  0XFF,0X99,0X3C,0X2C,0X24,0X91,0XFF,0XE7,0XE7,0XE7, 0XFF,0X00,0X00,
                  0XC7,0X93,0X39,0X7C,0XFF,0X99,0X3C,0X2C,0X24,0X91, 0XFF,0XFF,0XFF,
                  0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF, 0XFF,0XFF,0XFF,0XFF,
                  0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};" và thêm phần tử cho mảng của bạn tùy thích. Không biết mình làm thế có đúng không vì mình chỉ tự học lập trình cđk chứ chưa được học trên giảng đường. mong các cao nhân đừng cười chê nha.

                  Comment


                  • #10
                    Nguyên văn bởi quang111 Xem bài viết
                    unsigned char code là sao vậy anh,giải thích giúp với ...
                    unsigned char là kiểu dữ liệu 8bit(char) và không dấu (unsigned) : số nguyên 8bit không dấu
                    code có thể hiểu đó là mã và do đó nó sẽ được chứa trong rom đồng nghĩa nó không thể sửa đổi trong khi chương trình thực thì: Hằng số
                    Các biến khi được khai báo sẽ được chứa trong ram
                    Các hằng số sẽ được lưu ở trong rom, nếu hằng được khai báo không có chỉ dẫn đặt trong rom thì các giá trị khởi tạo của nó sẽ được chứa trong rom, và khi khởi động chip thì sẽ có một đoạn mã thực hiện nhiệm vụ cop dữ liệu từ rom vào vùng ram hoạt động. có nghĩa là vừa tốn rom vừa tốn ram
                    unsigned char cot[69] Khai báo mảng có tên cot gồm 69 phần tử kiểu unsigned char có khởi tạo giá trị ban đầu {0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XE7,...} tuy nhiên mảng nà s định của nó là mảng hằng nhưng lại được đặt trong ram. Với các chip VĐK thì phần lớn bộ nhớ ram rất hạn chế do đó tù theo dung lượng của nó mà cho phép khai báo kích thước biến như thế nào.
                    unsigned char code mảng này sẽ được chứa trong rom và do rom có kích thước lớn hơn ram rất nhiều nên có thể khai bái được mảng lớn hơn.
                    Quan trọng là thằng Keilc khai báo là unsigned char const

                    Comment


                    • #11
                      Nguyên văn bởi quang111 Xem bài viết
                      mà mình tạo font như thế nào anh nhỉ rồi mình cho chạy chữ như thế nào nhỉ.Mong anh giúp với.
                      Google bạn ơi cái này người ta post đầy trên mạng rồi. mình chỉ gợi ý bạn để bạn tìm hiểu thôi, bạn tìm hiểu có gì thắc mắc mình sẽ giải đáp

                      Comment


                      • #12
                        Nếu hiển thị cố định thì sử dụng dữ liệu dạng const để compiler ghi vào bộ nhớ chương trình, nếu sử dụng dạng hiển thị thay đổi được thì nên sử dụng bộ font, việc tạo ra bộ font cũng khá đơn giản. Tạo bảng font rồi nhét vào bộ nhớ chương trình, muốn hiển thị gì thì bảng font rồi hiển thị. Bao nhiêu cũng được.

                        Comment

                        Về tác giả

                        Collapse

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

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

                        Collapse

                        Đang tải...
                        X