RP Store Tìm linh kiện theo mã, gửi BOM nhận báo giá Gửi BOM

giúp em hiệu ứng quét theo hàng

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts

  • beiudientu
    replied
    Nguyên văn bởi hai_abc Xem bài viết
    Bạn xem mình hiểu như hình vẽ có đúng không?

    Đây là code viết cho Keil

    sfr Reg1 = 0xE0;
    sfr Reg2 = 0xE8;
    sfr Reg = 0xF0;

    sbit Bit7 = Reg1^0; // Bit 7 cua byte 1
    sbit Bit0 = Reg2^7; // Bit 0 cua byte 2
    sbit Bit = Reg^0; // Bit 0

    // pointer: con tro vung du lieu can dich
    // N: tong so byte vung du lieu can dich
    void Shift_Right_Bit_(unsigned char *pointer, unsigned char N)
    {
    unsigned char i;

    Reg = pointer[0]; // Luu byte 1 cua vung du lieu dich
    for(i = 0; i < N; i++)
    {
    Reg1 = pointer[i]; // Luu byte du lieu 1
    Reg1>>1; // Dich phai byte du lieu 1
    Reg2 = pointer[i+1]; // Luu byte du lieu 2
    Bit7 = Bit0; // Bit 7 byte du lieu 1 = Bit 0 byte du lieu 2
    } // Lap lai cho 2 va byte 3 va tiep theo...

    Reg1 = pointer[N-1]; // Luu byte cuoi cua vung du lieu
    Bit7 = Bit; // Dua bit 0 cua byte dau vao bit 7 cua byte cuoi
    }
    - Cái hình mà anh đính kèm cho em thì đúng là ý tưởng dịch bít của em để tạo hiệu ứng là như vậy...
    - bữa trước em có theo dõi một cái tutorial cúa anh nghiaha về quang báo viết với avr... tuy nhiên cách xếp mảng kí tự cần hiển thị khôn được linh hoạt lắm theo cách nghĩ của cá nhân em vì em xem người ta sắp kí tự hầu hết không theo kiểu như của anh nghiaha dưới đây:
    vd : display [] ={ byte1 of kí tự a;byte1 of kí tự b;byte1 of kí tự c......byte1 of kí tự thứ n;
    byte2 of kí tự a; byte2 of kí tự b; byte2 of kí tự c;..;byte2 of kí tự thứ n .................................................. .....................
    .................................................. ....................
    byte8 of kí tự a; byte8 of kí tự b; byte8 of kí tự c...;byte8 of kí tự thư n
    }

    - trong khi đó mảng em muốn hiển thị thì em sắp xếp theo kiểu :
    beiudientu [] ={ byte1 của a ;................;byte16 của kí tự a;
    byte1 của kí tự b;..........;byte16 của kí tự b;
    .................................................. ...........
    byte1 của kí tự thứ n; ...........; byte16 của kí tự thứ n
    }
    em không biết còn có những cách nào tốt hơn nứa không. Bởi trước giời mấy món em làm chỉ quét led 7 đoạn thôi chưa quét ma trận mà dùng ic dịch nên cũng hơi rối lúc hiệu ứng dịch...
    em sẽ coi kĩ đoạn code anh đưa nếu có gì không hiểu mong anh chỉ giáo thêm
    thanks again !

    Leave a comment:


  • hai_abc
    replied
    Bạn xem mình hiểu như hình vẽ có đúng không?

    Đây là code viết cho Keil

    sfr Reg1 = 0xE0;
    sfr Reg2 = 0xE8;
    sfr Reg = 0xF0;

    sbit Bit7 = Reg1^0; // Bit 7 cua byte 1
    sbit Bit0 = Reg2^7; // Bit 0 cua byte 2
    sbit Bit = Reg^0; // Bit 0

    // pointer: con tro vung du lieu can dich
    // N: tong so byte vung du lieu can dich
    void Shift_Right_Bit_(unsigned char *pointer, unsigned char N)
    {
    unsigned char i;

    Reg = pointer[0]; // Luu byte 1 cua vung du lieu dich
    for(i = 0; i < N; i++)
    {
    Reg1 = pointer[i]; // Luu byte du lieu 1
    Reg1>>1; // Dich phai byte du lieu 1
    Reg2 = pointer[i+1]; // Luu byte du lieu 2
    Bit7 = Bit0; // Bit 7 byte du lieu 1 = Bit 0 byte du lieu 2
    } // Lap lai cho 2 va byte 3 va tiep theo...

    Reg1 = pointer[N-1]; // Luu byte cuoi cua vung du lieu
    Bit7 = Bit; // Dua bit 0 cua byte dau vao bit 7 cua byte cuoi
    }
    Attached Files

    Leave a comment:


  • beiudientu
    replied
    Nguyên văn bởi hai_abc Xem bài viết
    cảm ơn anh đã quan tâm.!

    link anh đưa em cũng chỉ là đoạn code chuyển từng byte dữ liệu vào con Ic 74hc595.. đoạn code này thì trong chương trình em vẫn có... vấn đề em muốn hỏi là cách để mình tạo hiệu ứng dịch chũ .. em mô tả lại thế này nhé..
    - Mỗi kí tự mà em mã hóa sẽ là một mảng nhỏ trong mảng lớn số kí tự mà em muốn hiển thị vì em nối matrix theo kiểu 16x8 : giải sử mảng của em thế này có mã là:
    -
    {0xff,0xff........(16 lần 0xff )// kí tự rỗng -kí tự thứ nhất
    0x77,0x77.....(16 lần 0x77) // kí tự thứ 2
    -
    - đầu tiên em sẽ dùng byte : 0xff -(kí tự thứ nhất) để bơm vào ic 74hc595
    - bước thứ hai em sẽ dùng byte :0x77 -(kí tự thứ 2)để bơm vào ic 74hc595
    -bước cuối em sẽ kích một transistor để cấp cho hàng 1 sáng và gọi delay.


    tuy nhiên ở bước tiếp theo em muốn tạo ra hiệu ứng dịch em phải bỏ đi bit đầu của byte : 0xff (11111111)-8 bít ---->(1111111)- còn lại 7 bít...rồi em dùng 1 bít đầu của byte :0x77 (01110111)-8 bít --> em trích ra bít 0 của nó rồi bỏ vào đằng sau cái byte đầu mà em đã trích ra để tạo thành 1 byte mới hoàn chỉnh là (11111110).
    - bước kế là em sẽ dùng cái byte mới này (11111110)--> chuyển vào ic 74hc595. rồi kích transistor...
    -- cứ làm tương tự thế thì em tạo thành hiệu ứng dịch chữ.. em nghĩ thế..

    -- vấn đề chính là em chưa nghĩ ra cái đoạn code để tách từng bít của byte này rồi lại bỏ vào byte kia .như em mô tả.... anh có cách nào chỉ cho em với !

    Leave a comment:


  • hai_abc
    replied
    Bạn tham khảo nha

    http://dientuvietnam.net/forums/arch...p/t-11228.html

    Leave a comment:


  • beiudientu
    replied
    anh nào rành về món quang báo thì chỉ em đoạn mã dịch từng bit với !

    Leave a comment:


  • beiudientu
    started a topic giúp em hiệu ứng quét theo hàng

    giúp em hiệu ứng quét theo hàng

    em đang làm cái quang bao 16x 64 dùng loại 2 màu anot chung và dùng giải thuật quét led theo hàng.......với sơ đồ như trong hình và cách tạo font nhưng em đang hơi bí lúc dịch chữ với kiểu quét theo hàng dùng 89... bởi mỗi lần dịch nó đi nguyên byte nên trong rất kì nếu dịch theo bít thì em sẽ chỉnh lại sao ? em viết bằng keilc

    em mô tả lại cái chương trình //

    sbit sda = p1^0 ; chân p1.0 của vdk làm nhiệm vụ cấp data cho ic 74hc595
    sbit sck = p1^1 ; chân p1.1 làm nhiệm vụ cung cấp xung clock để dịch bit
    sbit lat = p1^2; chân p1.2 làm nhiệm vụ bắt ic 74hc595 xuất data ra chân

    mảng dử liệu để hiển thị "

    unisigned char code display [] = { 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff// kí tự rống
    0,68,56,0,56,66,198,198,254,254,198,198,198,0,0,0 //kí tự Ă
    ..............................................}

    Hàm chuyển dứ liệu nối tiếp ra song song :

    void nt2ss (unsigned char data_out)
    { int luutam;
    luutam = data_out ; // cất tạm dữ liệu vào biến luutam
    for(int i =0 ;i<=7 ;i++) // dịch đủ 1 byte dử liệu ra ic 74hc595
    {
    luutam =luutam&0x80 ; trích ra bit đầu tiên của byte
    if(luutam =0x80)

    sda =1 ; //xuất bít 1 vào 74hc..
    else
    sda =0 ; //xuất bít 0 vào 74hc..

    sck =0;
    sck =1 ; // tạo một xung clock để dịch bit vào ic

    data_out * = 2; // dịch bít kế tiếp trong data_out để chuyển ra 74hc595
    }

    void main () // hàm chính
    int j,m


    while (1)
    { for (m=0;m <=15;m++) // quét đủ 16 hàng
    {

    for (int k =0 ;k <=15++) // vong lặp nạp đủ data cho 16 led matrix
    { nt2ss(display[n+8]); // n+ 8 để lần lượt lấy từng byte của mối kí tự theo kiểu có một hàng giả sử 5 người ban đầu em chém một phát đứt hết đầu tưng người rồi xếp ra led .. sau đó em lại chém phần thân của 5 người này rồi xuất ra led , rồi đến chân của họ và xuất led.. cuối cùng thì em nhìn thấy 5 người này xuất hiện trên bảng led matrix

    lat =1 ; // xuất dữ liệu ra các chân của 74hc595
    kichtransistor(m) // kích transistor tương ứng để cấp áp cho hàng led
    delay(300); tạo trễ để quan sát ;
    }
    }
    }

    ở đây có 1 số hàm như delay và hàm kích transistor em không viết ra
    Vấn đề lớn ở đây là cái matrix của em
    xuất hiện hiệu ứng dịch hình nhưng cả byte tức kí tự em xuất led nó nhảy từng con led 16x8 .. mà không phải dịch từ từ từng điểm sáng.. chỗ này em đang bí...
    ở trên em có mô tả cái khung có độ rộng là 8 bít sẽ di chuyển từ trái qua phải đủ 8 led matrix rồi lại từ trên xuống cho đủ 16 mối lần nó chỉ dịch 1 bít thôi để xuất ra 74hc595 tạo hiệu ứng dịch chữ từ từ mà không phải nhảy tưng con led 8x8.
    Em đang bí chỗ này nên nhờ mấy anh chỉ cho em .. cám ơn nhé !
    Attached Files

Về tác giả

Collapse

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

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

Collapse

Đang tải...