Chào mừng các bạn đến với forum lớp DTVT_K7A CNTT Thái Nguyên
Bạn hãy "Đăng nhập" để tham gia cùng chúng tôi

Join the forum, it's quick and easy

Chào mừng các bạn đến với forum lớp DTVT_K7A CNTT Thái Nguyên
Bạn hãy "Đăng nhập" để tham gia cùng chúng tôi

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Top posters

banmun08 (721)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
Toanlt_GP (368)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
tiendientu343 (344)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
hany_mitu (281)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
TranTuyen_BG (275)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
Capkama (271)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
VDuy_NĐ (260)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
Minh (257)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
tieuthantien_3t (173)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 
Hangvt_gc (171)
ic dịch ghi 74hc595 Bar_leftic dịch ghi 74hc595 Baric dịch ghi 74hc595 Bar_right 

Latest topics

» Game dân gian thuần việt 2014 ra mắt phiên bả
by banmun08 Fri May 02, 2014 5:38 pm

» Ứng dụng Bóng đá trực tuyến - Chia sẻ mới dàn
by meocontt89 Fri May 02, 2014 3:44 pm

» Bài bào cáo mạch bấm chuông trò chơi
by tuyenbk2009 Sun Apr 27, 2014 10:48 pm

» Tư vấn học công nghệ thông tin - lập trình
by wyuru Thu Apr 24, 2014 5:17 pm

» Hero Chibi - Khai mở máy chủ S10 - SonGoKu
by Poligon121 Wed Apr 16, 2014 2:15 pm

» mạch đông hồ vạn niên sư dụng DS1307
by ttd2506 Mon Apr 14, 2014 9:45 pm

» Game8 phát 1000 GiftCode mừng máy chủ mới của
by Poligon121 Mon Apr 14, 2014 3:07 pm

» HIỆP KHÁCH 4U.COM OPEN GAME HỒI 10H00 SÁNG
by anata Fri Apr 11, 2014 1:34 pm

» Đua tốp Mu Thần Tài nhận iphone iphone 5s
by muthantai Sun Apr 06, 2014 12:26 pm

» Hiệp khách 4u.com OPEN game hồi 10h00 chủ nh
by anata Sat Apr 05, 2014 7:48 am


+4
chjpchjp_1991
Capkama
tiendientu343
thanga7a
8 posters

    ic dịch ghi 74hc595

    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty ic dịch ghi 74hc595

    Bài gửi by thanga7a Sun Aug 28, 2011 12:07 am

    các đại ka cho em hỏi chút về con 74hc595 một chút.

    đây là con ic dùng để mở rộng cổng cho một số loại chíp , tiêu biểu như 8501. em đọc thì thấy hơi mơ hồ .các đại ka co thể chỉ cho em cách dịch bít của ic này dc ko ạ.

    cho em 1 số ví dụng thật là đơn giản dễ hiểu nhá. có thể là dùng cho led đơn hoăc maxtrix, led 7 thanh,
    giai thích rõ hộ em từng câu lệnh nhá . em xin cảm ơn
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Sun Aug 28, 2011 8:06 pm

    Về IC 74hc595 mình xin tóm lược ngắn gọn thế này :
    Dựa vào datasheet mình có thể hiểu được chức năng của nó:
    Chức năng của nó là IC ghi dịch 8 bít kết hợp chốt dữ liệu. Đầu vào nối tiếp đầu ra song song.
    Các bạn có thể xem datasheet tại đây :
    Công dụng chủ yếu của nó thường dùng để lập trình cho led đơn, led 7 đoạn , nhưng nhiều nhất vẫn là led ma trận.
    Ngoài ra nó còn dùng để đệm dữ liệu, mở rộng cổng do đó giải pháp dùng IC74hc595 là hướng khá hay .
    dựa vào datasheet mình có thể tóm tắt chân của nó thế này( Mình chỉ dịch ra thôi nhé!)
    (input)
    Chân 14 : đầu vào dữ liệu nối tiếp . Tại 1 thời điểm xung clock chỉ đưa vào được 1 bit

    (output)
    QA=>QH : trên các chân (15,1,2,3,4,5,6,7)
    Xuất dữ liệu khi chân chân 13 tích cực ở mức thấp và có một xung tích cực ở sườn âm tại chân chốt 12

    (output-enable)
    Chân
    13 : Chân cho phép tích cực ở mức thấp (0) .Khi ở mức cao, tất cả các
    đầu ra của 74595 trở về trạng thái cao trở, không có đầu ra nào được cho
    phép.

    (SQH)
    Chân 9: Chân dữ liệu nối tiếp . Nếu dùng nhiều
    74595 mắc nối tiếp nhau thì chân này đưa vào đầu vào của con tiếp theo
    khi đã dịch đủ 8bit.

    (Shift clock)
    Chân 11: Chân vào xung clock . Khi có 1 xung clock tích cực ở sườn dương(từ 0 lên 1) thì 1bit được dịch vào ic.

    (Latch clock)
    Chân
    12 : xung clock chốt dữ liệu . Khi có 1 xung clock tích cực ở sườn
    dương thì cho phép xuất dữ liệu trên các chân output . lưu ý có thể xuất
    dữ liệu bất kỳ lúc nào bạn muốn ,ví dụ đầu vào chân 14 dc 2 bit khi có
    xung clock ở chân 12 thì dữ liệu sẽ ra ở chân Qa và Qb (chú ý chiều dịch
    dữ liệu từ Qa=>Qh)

    (Reset)
    Chân 10: khi chân này ở mức thấp(mức 0) thì dữ liệu sẽ bị xóa trên chip)
    ==============================================
    Như vậy là đã xong chức năng của các chân: Còn về bạn hỏi lập trình thì mình sẽ giúp bạn làm như sau:
    1. Lập trình với led đơn
    Attachments
    ic dịch ghi 74hc595 Attachment74HC_HCT595.pdf
    74Hc595
    You don't have permission to download attachments.
    (443 Kb) Downloaded 158 times
    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by thanga7a Sun Aug 28, 2011 10:05 pm

    ví dụ về lập trình led đơn của anh gì có đâu .hix anh cho xem dataship thì gì có ví dụ
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Sun Aug 28, 2011 10:25 pm

    A đang xem bóng đá. Lát a sẽ viết cho e. ok
    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by thanga7a Sun Aug 28, 2011 11:18 pm

    ok em cũng đang xem hiii
    mu đá hay thật asn vỡ trận rùi.
    Capkama
    Capkama
    Admin
    Admin


    Gender : Nam Số bài : 271
    Birthday : 14/05/1989
    Họ và tên : Dương Vũ Kiên Đến từ : DTVT K7A
    Ước mơ : We are one family
    Status : It only takes a second to say I love you, but it will take a lifetime to show you how much...

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by Capkama Mon Aug 29, 2011 1:23 pm

    thanga7a đã viết:ví dụ về lập trình led đơn của anh gì có đâu .hix anh cho xem dataship thì gì có ví dụ
    Ko phải dataship mà là Datasheet. Chú muốn làm kỹ sư điện tử mà từ đó chú còn viết sai ng ta cười cho đấy. Đây có cái code ma trận 8x8 sử dụng HC595 đây.
    Code:
    //---------- Khai báo thư viện ---------
    #include<reg51.h>
    #include<stdio.h>
    #include<intrins.h>
    sbit DATA = P1^0;
    sbit sck = P1^1;                   
    sbit strobe = P1^2;           
       
    //---------chương trình con tạo trễ ----------
    void delay(unsigned int t)
    {
       unsigned int i;
       for(i=0;i<t;i++);
    }
    int m,n,k;   

    //------------------ khai báo dữ liệu trên hang ------------            
    unsigned char hang[104]={
          0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
               0xc0,0x80,0x7F,0xBF,0xDF,0xBF,0x7F,0x80,    // w
               0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
               0xFF,0x80,0x00,0x7F,0x7F,0x7F,0xFF,0xFF,    // l
               0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0xBD,0xFF,  // c
               0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0x81,0xC3,    // o
               0xFF,0x00,0x01,0xFB,0xF7,0xFB,0x01,0x00,    // m
          0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  };

    unsigned char  cot[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    //--------- Chuyển đổi từ nối tiếp sang song song  --------
    void convert(unsigned char data_out)
    {
       unsigned char i,tg;
       for(i=0;i<=7;i++)
       {
          tg = data_out;
          tg = tg&0x80;
          if(tg == 0x80)
             DATA = 1;
          else
             DATA = 0;
          data_out *= 2;           
          sck = 1;
          sck = 0;
       }
    }

    //-------------- xóa ma trận -------------
    void clear()
    {
       convert(0xff);
       convert(0xff);
       convert(0xff);
    }    

    //--------------- Chương trình chính ----------------
    void main()
    {
       while(1)                         
       {
          for(m=0;m<80;m++)
          {     
          for(k=0;k<3;k++)         
             for(n=m;n<=7+m;n++)
             {
                convert(hang[n]);
                convert(hang[n+8]);
                convert(hang[n+16]);
                P2 = cot[n-m];
                strobe = 1;
                strobe = 0;
                delay(500);       
                clear();
             }
          }
       }
    }
    Cái chỗ chuyển từ nối tiếp sang song song chính là thuật toán điều khiển HC595 đấy.
    Mạch mô phỏng để quên ở đâu rồi chả nhớ nữa. Làm Vi xử lý từ kì 5. Để tối anh kiếm lại xem còn ko up cho chú xem.
    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by thanga7a Mon Aug 29, 2011 5:39 pm

    đại ka giải thích cho em đoạn code này mấy.

    {
    for(m=0;m<80;m++) // tại sao phải dùng m<80
    {
    for(k=0;k<3;k++) // ? k<3
    for(n=m;n<=7+m;n++) // n=m;n<=7+m
    {
    convert(hang[n]); // mã lệnh ở đây chạy như thế nào
    convert(hang[n+8]);
    convert(hang[n+16]);
    P2 = cot[n-m]; // chỗ này em cũng ko hiểu
    strobe = 1;
    strobe = 0;
    delay(500);
    clear();
    }
    }
    }
    }

    đại ka giải thích từng dòng một cho em nha.
    thank
    Capkama
    Capkama
    Admin
    Admin


    Gender : Nam Số bài : 271
    Birthday : 14/05/1989
    Họ và tên : Dương Vũ Kiên Đến từ : DTVT K7A
    Ước mơ : We are one family
    Status : It only takes a second to say I love you, but it will take a lifetime to show you how much...

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by Capkama Mon Aug 29, 2011 8:41 pm

    Cái này giải thích bằng chữ khó hiểu lắm. Giải thích trực tiếp bằng mồm còn phải mất cả buổi chiều Laughing . Chú hỏi phần đấy coi như hỏi cả bài rồi còn gì nữa Mad
    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by thanga7a Mon Aug 29, 2011 9:09 pm

    hix. thì anh cứ giải thích đơn giản thui.
    anh nói thế thì em hiểu thế nào. dc. thui anh giải thích dùm em cái
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Mon Aug 29, 2011 9:38 pm

    ok. Hôm nay bận quá! giờ mới trả lời em đc.
    code led đơn của e đây a đã giải thích chúc chú thành công. led 7 thanh thì tương tự thôi chỉ cần thay mã led và gắn 7 thanh là ok
    Code:

    // Lap trinh led don
    // hand in hand dtvtk7a
    #include
    #include
    #include
    // khao bao cac chan 74hc595 de lap trinh
    sbit dulieu = P2^1;      // chan du lieu
    sbit xung  = P2^0;      // chan xung dich tung bit
    sbit chot  = P2^2;      // chan chot du lieu
    // xong roi
    // Bây gio la lap trinh
    void delay(unsigned char ms    )
      {
      int i,j;
      for(i=0;i
        {
        for(j=0;j<125;j++);
        }
      }
      // chuong trinh lap trinh cho 74hc595
    void quetled(unsigned char x)
        {    // do chuc nang ghi dich 8 bit vao noi tiep ra song song
            // do do vong for duoi se cho dich 8 lan de du 8 chan dau ra cho vdk
          int i,tam;
          for(i=0;i<8;i++) // 8 lan dich de co 8 bit
            {
            tam=x;
            tam=tam&0x80;    // lay ra bit dau tien la bit D7
            if(tam==0x80) dulieu=1; //so sanh neu bang 1 nghia la dich het tu D0 den D7
            else dulieu=0;    // nguoc lai du lieu se bang 0 va tiep tuc dich phai
            x=x<<1;    // nhu the nay
            xung=0;    // moi lan dich se can mot xung cho phep moi dich dc (tich cuc muc duong)
            xung=1;
            }
            chot=0;  // khi dich du 8 biut thi chot du lieu va xuat ra output
            chot=1;
           
            }
     void main(void)
          {
          int j;
          unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
          for(j=0;j<8;j++)
            {
            quetled(mang[j]);
            delay(1000);
            }
          }
    Attachments
    ic dịch ghi 74hc595 Attachmentleddon 74hc595.zip
    led don 74hc595
    You don't have permission to download attachments.
    (33 Kb) Downloaded 89 times
    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by thanga7a Mon Aug 29, 2011 11:13 pm

    x=x<<1; cái này là dich bít trong mảng dúng ko anh dích cách số hex trong mảng
    unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    thế cho em hỏi vơi led maxtrix thì cách cách mà anh kiên viết trong chương trình chính
    với các vòng lặp và các biến n,m,k sử dụng như thế nào em không hiểu
    anh có thể giải thích cho em ko ạ.
    em cảm ơn
    thanga7a
    thanga7a
    Thượng Sĩ
    Thượng Sĩ


    Gender : Nam Số bài : 88
    Birthday : 04/08/1991
    Họ và tên : vũ đình thắng Đến từ : bình giang _hải dương
    Ước mơ : kĩ sư điện tử
    Status : tui là thắng đến từ hải dương

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by thanga7a Wed Aug 31, 2011 9:48 am

    Cool Cool

    sau một hôm ăn và chơi .rùi xem lại đoạn code của đại ka kiên em đã hiểu hè hè

    giờ đã có thể lập trình ngon với con này rùi hè hè . lúc nào làm cái led trái tim bằng cái này khéo hay hay. Cool

    thank hai đại ka kiên và tiến nhá
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Wed Aug 31, 2011 1:17 pm

    ok. Nếu hiểu rồi thì viết giải thích cho mọi người xem cùng e nha. Đây là diễn đan mang tính chia sẻ mà, ai chưa rõ có thể tham khảo.
    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Tue Jul 10, 2012 4:40 pm

    Bạn tiến giải thích kỹ phết..thanks nhé..bạn có thể giải thích dùm mình code này nữa không thanks so much
    Code:
    //---------- Khai báo thư viện ---------
    #include<reg51.h>
    #include<stdio.h>
    #include<intrins.h>
    sbit DATA = P1^0;
    sbit sck = P1^1;                   
    sbit strobe = P1^2;           
       
    //---------chương trình con tạo trễ ----------
    void delay(unsigned int t)
    {
      unsigned int i;
      for(i=0;i<t;i++);
    }
    int m,n,k; 

    //------------------ khai báo dữ liệu trên hang ------------           
    unsigned char hang[104]={
          0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xc0,0x80,0x7F,0xBF,0xDF,0xBF,0x7F,0x80,    // w
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0x80,0x00,0x7F,0x7F,0x7F,0xFF,0xFF,    // l
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0xBD,0xFF,  // c
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0x81,0xC3,    // o
              0xFF,0x00,0x01,0xFB,0xF7,0xFB,0x01,0x00,    // m
          0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  };

    unsigned char  cot[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    //--------- Chuyển đổi từ nối tiếp sang song song  --------
    void convert(unsigned char data_out)
    {
      unsigned char i,tg;
      for(i=0;i<=7;i++)
      {
          tg = data_out;
          tg = tg&0x80;
          if(tg == 0x80)
            DATA = 1;
          else
            DATA = 0;
          data_out *= 2;           
          sck = 1;
          sck = 0;
      }
    }

    //-------------- xóa ma trận -------------
    void clear()
    {
      convert(0xff);
      convert(0xff);
      convert(0xff);
    }   

    //--------------- Chương trình chính ----------------
    void main()
    {
      while(1)                         
      {
          for(m=0;m<80;m++)
          {   
          for(k=0;k<3;k++)         
            for(n=m;n<=7+m;n++)
            {
                convert(hang[n]);
                convert(hang[n+8]);
                convert(hang[n+16]);
                P2 = cot[n-m];
                strobe = 1;
                strobe = 0;
                delay(500);       
                clear();
            }
          }
      }
    }
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Sat Jul 14, 2012 8:26 pm

    convert(hang[n]);
    convert(hang[n+8]);
    convert(hang[n+16]);
    P2 = cot[n-m];
    strobe = 1;
    strobe = 0;
    delay(500);
    clear();
    Đoạn này chắc là bạn khó hiểu nhất.
    Theo như code thì sẽ phải dùng 3 con 595 để đưa dữ liệu ra.
    Do đó bạn phải đẩy đủ 3 byte dữ liệu vào 3 con 595 bằng 3 hàm convert.
    convert(hang[n]);
    convert(hang[n+8]);
    convert(hang[n+16]);
    Sau đó dùng 1 xung để đẩy dữ liệu hiển thị (xung đẩy là strobe).
    strobe = 1;
    strobe = 0;

    Vì vậy là : ứng với 1 tín hiệu quét P2 = cot[n-m] bạn phải có đủ 3 byte data.
    Có gì bạn cứ vẽ ra mà test.
    Chúc bạn thành công,
    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Sat Jul 14, 2012 8:42 pm

    Mình cảm ơn bạn tiến nhiều na..đợi tin bạn mãi ddos^^..bạn cho mình hỏi chút..chỗ code đó nếu mình muốn cho nó lấy từng mã chữ một ví dụ chạy chương trình con lấy hết mã chữ Wellcome sau đó chạy tiếp chương trình con lấy mã chữ Blog chẳng hạn thì viết như nào bạn..tớ thử như thế này mà không thấy chạy..hic
    Code:
    //---------- Khai báo thư viện ---------
    #include<reg51.h>
    #include<stdio.h>
    #include<intrins.h>
    sbit DATA = P1^0;
    sbit sck = P1^1;                   
    sbit strobe = P1^2;           
       
    //---------chương trình con tạo trễ ----------
    void delay(unsigned int t)
    {
      unsigned int i;
      for(i=0;i<t;i++);
    }
    int m,n,k; 

    //------------------ khai báo dữ liệu trên hang ------------           
    unsigned char wellcome[]={
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xc0,0x80,0x7F,0xBF,0xDF,0xBF,0x7F,0x80,    // w
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0x80,0x00,0x7F,0x7F,0x7F,0xFF,0xFF,    // l
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0xBD,0xFF,  // c
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0x81,0xC3,    // o
              0xFF,0x00,0x01,0xFB,0xF7,0xFB,0x01,0x00,    // m
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  };
    unsigned char blog[]={
               0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xc0,0x80,0x7F,0xBF,0xDF,0xBF,0x7F,0x80,    // b
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // l
              0xFF,0x80,0x00,0x7F,0x7F,0x7F,0xFF,0xFF,    // o
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,    //g
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  };//ma code cho nay to lay vidu^^

    unsigned char  cot[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    //--------- Chuyển đổi từ nối tiếp sang song song  --------
    void convert(unsigned char data_out)
    {
      unsigned char i,tg;
      for(i=0;i<=7;i++)
      {
          tg = data_out;
          tg = tg&0x80;
          if(tg == 0x80)
            DATA = 1;
          else
            DATA = 0;
          data_out *= 2;           
          sck = 1;
          sck = 0;
      }
    }

    //-------------- xóa ma trận -------------
    void clear()
    {
      convert(0xff);
      convert(0xff);
      convert(0xff);
    }   


    //chuong trinh con
    void wellcome()
    {
    for(m=0;m<80;m++)
          {   
          for(k=0;k<3;k++)         
            for(n=m;n<=7+m;n++)
            {
                convert(wellcome[n]);
                convert(wellcome[n+8]);
                convert(wellcome[n+16]);
                P2 = cot[n-m];
                strobe = 1;
                strobe = 0;
                delay(500);       
                clear();
            }
          }
    }
    ////////////////////////////////////////////////
    void blog()
    {
    for(m=0;m<80;m++)
          {   
          for(k=0;k<3;k++)         
            for(n=m;n<=7+m;n++)
            {
                convert(blog[n]);
                convert(blog[n+8]);
                convert(blog[n+16]);
                P2 = cot[n-m];
                strobe = 1;
                strobe = 0;
                delay(500);       
                clear();
            }
          }
    }
    //--------------- Chương trình chính ----------------
    void main()
    {
      while(1)                         
      {
      wellcome();
      blog(); 
      }
    }

    đây là file mô phỏng của code chạy khi tớ chưa sửa như trên..chạy ngon lắm..Tiến xem giúp tớ nhé.^^
    Link:
    Code:
    http://www.mediafire.com/?8437r3fhnvtn23v
    I love you
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Sun Jul 15, 2012 3:59 am

    banj suửa thế này nhé ! Thêm mảng blog vào thì khi biên dịch báo là vượt quá bộ nhớ chương trình. nên dùng trong cùng 1 mảng bạn nhé !
    Code:
    //---------- Khai báo thu vi?n ---------
    #include<reg51.h>

    #include<intrins.h>
    sbit Data = P1^0;
    sbit sck = P1^1;                   
    sbit strobe = P1^2;           
       
    //---------chuong trình con t?o tr? ----------
    void delay(unsigned int t)
    {
      unsigned int i;
      for(i=0;i<t;i++);
    }
    unsigned char m,n,k; 

    //------------------ khai báo d? li?u trên hang ------------           
    unsigned char hang[100]={

              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xc0,0x80,0x7F,0xBF,0xDF,0xBF,0x7F,0x80,    // w
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0x80,0x00,0x7F,0x7F,0x7F,0xFF,0xFF,    // l
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0xBD,0xFF,  // c
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0x81,0xC3,    // o
              0xFF,0x00,0x01,0xFB,0xF7,0xFB,0x01,0x00,    // m
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
            0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF


                  };
          

    unsigned char  cot[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    //--------- Chuy?n d?i t? n?i ti?p sang song song  --------
    void convert(unsigned char data_out)
    {
      unsigned char i,tg;
      for(i=0;i<=7;i++)
      {
          tg = data_out;
          tg = tg&0x80;
          if(tg == 0x80)
            Data = 1;
          else
            Data = 0;
          data_out *= 2;           
          sck = 1;
          sck = 0;
      }
    }

    //-------------- xóa ma tr?n -------------
    void clear()
    {
      convert(0xff);
      convert(0xff);
      convert(0xff);
    }   
    void wellcom()
      {
        for(m=0;m<80;m++)
          {   
          for(k=0;k<3;k++)         
            for(n=m;n<=7+m;n++)
            {
                convert(hang[n]);
                convert(hang[n+8]);
                convert(hang[n+16]);
                P2 = cot[n-m];
                strobe = 1;
                strobe = 0;
                delay(500);       
                clear();
            }
          }
      }
      //==============================
    void blog()
      {
       
      } 
    //--------------- Chuong trình chính ----------------
    void main()
    {
      while(1)                         
      {
        wellcom();

      }
    }

    Hàm convert viết thế này dễ hiểu hơn. tránh dùng nhiều biến tạm . Gây " loãng " biến.
    void convert(unsigned char x)
    {
    unsigned char i;
    for(i=0;i<=7;i++)
    {
    Data=x&0x80;
    x=x<<1;
    sck=1;
    sck=0;
    }
    }
    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Sun Jul 15, 2012 9:34 am

    Tớ cảm ơn Tiến tận tình giúp đỡ nhé..cậu giỏi lập trình c nhỉ.tớ giờ đang học lập trình dần c.tớ thấy code lập trình 74hc595 điều khiển 8 led đơn này chạy ngon nhiều hiệu ứng trên mạng nhưng khi truyền từ chân Q7' của con 74hc595 1 sang chân DS của con 74hc595 thứ 2kia thì nó truyền sáng dần các led cùng lúc.Tớ muốn sang con sau trước..tức là chân Q7'trứoc truyền dữ liệu sáng dần xong thứ 2 rồi sang nối tiếp sáng dần con thứ 1
    Cậu giúp đỡ tớ 1 tí nhé....và cậu lập trình luôn hiệu ứng sáng dồn nhé..tớ cũng thử nhưng nó báo lỗi tùm lum..
    Code:

    // LAP TRINH 74HC595 DIEU KHIEN 8 LED DON
    //****HTTP://CHIPKOOL.TK**********/
    #include<reg52.h>
    #include<stdio.h>
    #include<intrins.h>
    // khao bao cac chan 74hc595 de lap trinh
    sbit dulieu = P2^1;    // chan du lieu
    sbit xung = P2^0;    // chan xung dich tung bit
    sbit chot = P2^2;    // chan chot du lieu
    unsigned int n,m,k;
    //****Chuong trinh tao tre**********/
    void delay(unsigned char ms   )
    {
    int i,j;
    for(i=0;i<ms;i++)
    {
    for(j=0;j<125;j++);
    }
    }

    // chuong trinh lap trinh cho 74hc595 chuyen noi tiep sang song song
    void convert(unsigned char x)
    {    // do chuc nang ghi dich 8 bit vao noi tiep ra song song
    // do do vong for duoi se cho dich 8 lan de du 8 chan dau ra cho vdk
    int i,tam;
    for(i=0;i<8;i++) // 8 lan dich de co 8 bit
    {
    tam=x;
    tam=tam&0x80;    // lay ra bit dau tien la bit D7 10000000 D7 ------D0
    if(tam==0x80) dulieu=1; //so sanh neu bang 1 nghia la dich het tu D0 den D7
    else dulieu=0;    // nguoc lai du lieu se bang 0 va tiep tuc dich phai
    x=x<<1;   // dich bit nhu sau
    xung=0;    // moi lan dich se can mot xung cho phep moi dich dc (tich cuc muc duong)
    xung=1;
    }
    //chot=0; // khi dich du 8 biut thi chot du lieu va xuat ra output
    //chot=1;

    }

    //********************Hieu ung sang duoi******************************************/
    void sangduoi()
    {
    int j;//00000001;00000010;00000100;00001000;000100000;0010 0000;01000000;10000000
    unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
    for(j=0;j<8;j++)
    {
    convert(mang[j]);
    chot=0; // khi dich du 8 biut thi chot du lieu va xuat ra output
    chot=1;
    delay(1000);

    }
    }
    //*******************Hieu ung sang dan******************************/
    void sangdan()
    {
    int j;
    unsigned char mang[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
    for(j=0;j<8;j++)
    {
    convert(mang[j]);
    chot=0; // khi dich du 8 biut thi chot du lieu va xuat ra output
    chot=1;
    delay(1000);

    }

    }


    //*******************hieu ung chop tat led*************
    void choptat()
    {
    int j;
    unsigned char mang[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};
    for(j=0;j<8;j++)
    {
    convert(mang[j]);
    chot=0; // khi dich du 8 biut thi chot du lieu va xuat ra output
    chot=1;
    delay(1000);

    }
    }
    //*****************hieu ung sang chan le****************//
    void chanle()
    {
    int j;
    unsigned char mang[]={0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa};
    for(j=0;j<8;j++)
    {
    convert(mang[j]);
    chot=0; // khi dich du 8 biut thi chot du lieu va xuat ra output
    chot=1;
    delay(1000);
    }
    }


    //*************chuong trinh chinh***************
    void main(void)
    {
    sangdan();
    chanle();
    choptat();
    sangduoi();


    }
    file lập trình keilc 4 mô phỏng protues 7.8

    http://www.mediafire.com/?abymgdgudcaaroy pass:chipkool.tk
    Nguồn Lập trình 74HC595 điều khiển led đơn | Blog Điện Tử | Tin Học
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Sun Jul 15, 2012 1:12 pm

    .tớ thấy code lập trình 74hc595 điều khiển 8 led đơn này chạy ngon nhiều hiệu ứng trên mạng nhưng khi truyền từ chân Q7' của con 74hc595 1 sang chân DS của con 74hc595 thứ 2kia thì nó truyền sáng dần các led cùng lúc.Tớ muốn sang con sau trước..tức là chân Q7'trứoc truyền dữ liệu sáng dần xong thứ 2 rồi sang nối tiếp sáng dần con thứ 1
    Cái này bạn làm như sau nhé !
    Đẩy 2 byte vào một lúc byte đầu tiên là dữ liệu của con 2 có data. byte thứ 2 là data của con 1 ko cho gì cả. Thử xem nhé !
    Còn code sáng dồn bạn làm thế này nhé !
    Code:

    void sangdon()
      {
          int j,i,k;//00000001;00000010;00000100;00001000;000100000;00100000;01000000;10000000
         unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
         unsigned char M[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
         unsigned char z,x;
         for(k=7;k>=0;k--)
         {
           for(i=0;i<=k;i++)
            {
            x=mang[i]|z;
            convert(x);
            chot=0;  // khi dich du 8 biut thi chot du lieu va xuat ra output
            chot=1;
            delay(1000);
            }
           z = z|M[7-k];
          }
      }
    Chúc thành công 1

    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Sun Jul 15, 2012 5:16 pm

    Hic..hic..tớ cảm ơn cậu na..tớ nể cậu quá..lập trình c cứ như viết văn ý..không biết bao giờ tớ được như cậu..Ak tiến nè..tớ hỏi chỗ này chút tam=tam&0x80; tại sao chỉ dùng 1 dấu & mà không dùng 2 dấu && vì trong c tớ thấy và thì dùng && mà..còn 1 dấu & thì sao hả cậu..chỗ này nữa z = z|M[7-k]; cậu lại dùng 1 dấu mà Hoặc thì || mà cậu..hic....cậu chỉ bảo tớ với..lên mạng có cậu nhiệt tình nhất..hic I love you
    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Sun Jul 15, 2012 5:29 pm

    Code:
    void sangdon()
      {
          int j,k;//00000001;00000010;00000100;00001000;000100000;00100000;01000000;10000000
        unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
        unsigned char M[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
        unsigned char z,x;
        for(k=7;k>=0;k--)
        {
          for(j=0;j<=k;j++)
            {
            x=mang[j]|z;
            convert(x);
            chot=0;  // khi dich du 8 bit thi chot du lieu va xuat ra output
            chot=1;
            delay(1000);
            }
          z = z|M[7-k];
          }
      }
    Void sang dồn của cậu chạy ngon lắm...nhưng mà sao tớ không hiểu mấy cái lệnh kiểu
    x=mang[j]|z; z = z|M[7-k]; tớ nghĩ tìm hiểu àm không ra..Tiến chỉ giúp tớ nhé.

    Crying or Very sad
    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Sun Jul 15, 2012 5:39 pm

    Tiến ui..tớ đang muốn dùng code này lập trình led ma trận 2 màu trông nó như này..
    Tớ có ý tưởng với code bên dưới là:Quét hàng còn cột thì dùng 595 cho mỗi màu xanh và đỏ..mỗi màu 1 con..xuất dữ liệu mã hình là 0 sáng 1 tắt,mỗi chương trình con là 1 hiệu ứng..còn trong chương trình chính mình chỉ việc gọi các hiệu ứng đó thôi?Ví dụ 1 chương trình con mã hình giun bò,chứa mảng có mã đó..1 chương trình khác chứa mã hình chạy đuổi....cậu xem thế nào nhé.^^
    Code:
    //---------- Khai báo thư viện ---------
    #include<reg51.h>
    #include<stdio.h>
    #include<intrins.h>
    sbit DATA = P1^0;
    sbit sck = P1^1;                   
    sbit strobe = P1^2;           
       
    //---------chương trình con tạo trễ ----------
    void delay(unsigned int t)
    {
      unsigned int i;
      for(i=0;i<t;i++);
    }
    int m,n,k; 

    //------------------ khai báo dữ liệu trên hang ------------           
    unsigned char hang[104]={
          0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xc0,0x80,0x7F,0xBF,0xDF,0xBF,0x7F,0x80,    // w
              0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0x80,0x00,0x7F,0x7F,0x7F,0xFF,0xFF,    // l
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0xBD,0xFF,  // c
              0xFF,0xC3,0x81,0x7E,0x7E,0x7E,0x81,0xC3,    // o
              0xFF,0x00,0x01,0xFB,0xF7,0xFB,0x01,0x00,    // m
          0xFF,0x81,0x00,0x76,0x76,0x7E,0xFF,0xFF,    // e
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
              0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
                  };

    unsigned char  cot[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

    //--------- Chuyển đổi từ nối tiếp sang song song  --------
    void convert(unsigned char data_out)
    {
      unsigned char i,tg;
      for(i=0;i<=7;i++)
      {
          tg = data_out;
          tg = tg&0x80;
          if(tg == 0x80)
            DATA = 1;
          else
            DATA = 0;
          data_out *= 2;           
          sck = 1;
          sck = 0;
      }
    }

    //-------------- xóa ma trận -------------
    void clear()
    {
      convert(0xff);
      convert(0xff);
      convert(0xff);
    }   

    //--------------- Chương trình chính ----------------
    void main()
    {
      while(1)                         
      {
          for(m=0;m<80;m++)
          {   
          for(k=0;k<3;k++)         
            for(n=m;n<=7+m;n++)
            {
                convert(hang[n]);
                convert(hang[n+8]);
                convert(hang[n+16]);
                P2 = cot[n-m];
                strobe = 1;
                strobe = 0;
                delay(500);       
                clear();
            }
          }
      }
    }
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Sun Jul 15, 2012 7:36 pm

    void sangdon()
    {
    int j,k;//00000001;00000010;00000100;00001000;000100000;00100000;01000000;10000000
    unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};// Mảng này dữ liệu sẽ thực hiện chạy.
    unsigned char M[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF}; // mảng này để or từng bit với dũ liệu trong mảng mang[];
    unsigned char z,x;
    for(k=7;k>=0;k--) // cổng ra của 595 có 8 đầu ra chọn k=7;
    {
    for(j=0;j<=k;j++) // mỗi lần chạy đến k thực hiện
    {
    x=mang[j]|z; // ban đầu z=0x00|mang[j]; giả sữ mang[0]= 0x01; => z= 0x00|0x01 = 0x01;
    convert(x);// hiển thị x ra thôi;
    chot=0; // khi dich du 8 bit thi chot du lieu va xuat ra output
    chot=1;
    delay(1000);
    }
    hết cài này z phải thay đổi để chạy đến cuối còn lưu dữ liệu nữa.
    z = z|M[7-k]; // k=7 = > M[7-7]=M[0]=0x80 > z= 0x00|0x80 = 0x80;
    }

    Tương tự khi k=6; nó sẽ chạy đến vị trí số 6 của mảng mang[];
    z= z|M[1] = 0x80|0xC0 = 0xC0 = 11000000;
    }
    Đấy là giả thích của t bạn cứ cho chạy lần lượt các giá trị của k xdem sao nhé !
    hiểu ngay thôi.
    //=========================================================
    Còn mảng ma trân 2 màu như bạn nói thì cũng đơn giản thôi. tín hiệu quét ở hàng, dữ liệu đưa ra ở cột. 8 byte đầu là màu đỏ, 8 byte sau là màu xanh.
    Tham khảo cái này t viết nhé !
    Chúc thành công !
    http://www.mediafire.com/?7x55w18cqo5s4m9
    chjpchjp_1991
    chjpchjp_1991
    Binh nhất
    Binh nhất


    Gender : Nam Số bài : 12
    Birthday : 18/01/1991
    Họ và tên : Chipkool.tk Ước mơ : ky su
    Status : hicmhic

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by chjpchjp_1991 Mon Jul 16, 2012 1:54 pm

    tiendt343 đã viết:
    .tớ thấy code lập trình 74hc595 điều khiển 8 led đơn này chạy ngon nhiều hiệu ứng trên mạng nhưng khi truyền từ chân Q7' của con 74hc595 1 sang chân DS của con 74hc595 thứ 2kia thì nó truyền sáng dần các led cùng lúc.Tớ muốn sang con sau trước..tức là chân Q7'trứoc truyền dữ liệu sáng dần xong thứ 2 rồi sang nối tiếp sáng dần con thứ 1
    Cái này bạn làm như sau nhé !
    Đẩy 2 byte vào một lúc byte đầu tiên là dữ liệu của con 2 có data. byte thứ 2 là data của con 1 ko cho gì cả. Thử xem nhé !
    Còn code sáng dồn bạn làm thế này nhé !
    Code:

    void sangdon()
      {
          int j,i,k;//00000001;00000010;00000100;00001000;000100000;00100000;01000000;10000000
         unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
         unsigned char M[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
         unsigned char z,x;
         for(k=7;k>=0;k--)
         {
           for(i=0;i<=k;i++)
            {
            x=mang[i]|z;
            convert(x);
            chot=0;  // khi dich du 8 biut thi chot du lieu va xuat ra output
            chot=1;
            delay(1000);
            }
           z = z|M[7-k];
          }
      }
    Chúc thành công 1

    Tiến ak..chỗ tớ đánh dấu màu đỏ ý..cậu bảo là..Đẩy 2 byte vào một lúc byte đầu tiên là dữ liệu của con 2 có data. byte thứ 2 là data của con 1 ko cho gì cả.Tớ không hiểu đẩy 2 byte vào cùng 1 lúc là như thế nào..mong cậu chỉ bảo tớ..hic..cậu viết cho tớ mẫu code sáng dần 16led rồi sang 32 led nhé..Tớ cảm ơn cậu...Tớ đang xem chỗ cậu hướng dẫn và code led ma trận cậu viết,,giỏi thật..hic affraid
    tiendientu343
    tiendientu343
    Đại Tướng
    Đại Tướng


    Gender : Nam Số bài : 344
    Birthday : 03/01/1990
    Họ và tên : Bùi Duy Tiến Đến từ : Hải Dương
    Ước mơ : CEO
    Status : Biết lái máy bay ! Biết lái xe tăng.

    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by tiendientu343 Mon Jul 16, 2012 5:05 pm

    code sáng dồn 16 nhé ! tương tự với 32;
    Đẩy như này nè !
    Code:

    void sangdon()
      {
          int j,i,k;//00000001;00000010;00000100;00001000;000100000;00100000;01000000;10000000
         unsigned char mang[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
         unsigned char M[]={0x80,0xC0,0xE0,0xF0,0xF8,0xFC,0xFE,0xFF};
         unsigned char z,x;
         for(k=7;k>=0;k--)
         {
           for(i=0;i<=k;i++)
            {
              x=mang[i];
              convert(z);
              convert(x);
              chot=0;  // khi dich du 8 biut thi chot du lieu va xuat ra output
              chot=1;
              delay(1000);
            }
            for(i=0;i<=k;i++)
            {
              x=mang[i]|z;
              convert(x);
              convert(0x00);
              chot=0;  // khi dich du 8 biut thi chot du lieu va xuat ra output
              chot=1;
              delay(1000);
            }
           z = z|M[7-k];
          }
          
          //===============================================================
            z=0;
           for(k=7;k>=0;k--)
           {
            for(i=0;i<=k;i++)
            {
              x=mang[i]|z;
              convert(0xFF);
              convert(x);
              chot=0;  // khi dich du 8 biut thi chot du lieu va xuat ra output
              chot=1;
              delay(1000);
            }
           z = z|M[7-k];
           }
          //================================================
       
      }

    Sponsored content


    ic dịch ghi 74hc595 Empty Re: ic dịch ghi 74hc595

    Bài gửi by Sponsored content


      Hôm nay: Sun May 19, 2024 9:54 pm