Thông báo

Collapse
No announcement yet.

Viết thư tình trên matrix 8x8

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

  • Viết thư tình trên matrix 8x8

    Vừa làm xong quả này, các cao nhân xem cho ý kiến ạh.

    Code cho các bác tham khảo nhé, mún chỉnh nhanh chậm thì sửa 2 dòng delay hoặc delay vòng lập, muốn thêm port để đk 8x16 hay 8x24 thì gọi thêm thôi, chúc các bác thành công
    #include <REGX51.H>
    /* Cot tu P1.0 den 1.7
    Hang tu P2.0 den P3.7
    De quet dua muc logic 0 lan luot ra cong 0
    */
    /* Ham tre */
    void delay(long time)
    {
    long n;
    for(n=0; n<time; n++)
    {
    ;
    }
    }
    unsigned char kytu1[9];
    unsigned char k=0;
    /* Ham nap gia tri hien thi cac ky tu vao mang kytu1
    co 8 gia tri dua ra va 1 gia tri khong bat den nao de cac ky tu cach nhau 1 cot */
    void mahoa(unsigned char x)
    {
    switch(x)
    {
    case 0: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
    kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
    break; }
    case 1: { kytu1[0]=0x00; kytu1[1]=0x3E; kytu1[2]=0x0A; kytu1[3]=0x0E;
    kytu1[4]=0x00; kytu1[5]=0x38; kytu1[6]=0x08; kytu1[7]=0x08; kytu1[8]=0x00;
    break; }
    case 2: { kytu1[0]=0x00; kytu1[1]=0x38; kytu1[2]=0x28; kytu1[3]=0x38;
    kytu1[4]=0x00; kytu1[5]=0x38; kytu1[6]=0xA8; kytu1[7]=0xF8; kytu1[8]=0x00;
    break; }
    case 3: { kytu1[0]=0x00; kytu1[1]=0x38; kytu1[2]=0x08; kytu1[3]=0x08;
    kytu1[4]=0x00; kytu1[5]=0x38; kytu1[6]=0x28; kytu1[7]=0x38; kytu1[8]=0x20;
    break; }
    case 4: { kytu1[0]=0x20; kytu1[1]=0x00; kytu1[2]=0x38; kytu1[3]=0x08;
    kytu1[4]=0x38; kytu1[5]=0x08; kytu1[6]=0x38; kytu1[7]=0x00; kytu1[8]=0x38;
    break; }
    case 5: { kytu1[0]=0x38; kytu1[1]=0x08; kytu1[2]=0x38; kytu1[3]=0x08;
    kytu1[4]=0x38; kytu1[5]=0x00; kytu1[6]=0x38; kytu1[7]=0x00; kytu1[8]=0x38;
    break; }
    case 6: { kytu1[0]=0x38; kytu1[1]=0x08; kytu1[2]=0x38; kytu1[3]=0x00;
    kytu1[4]=0x38; kytu1[5]=0xA8; kytu1[6]=0xF8; kytu1[7]=0x00; kytu1[8]=0x00;
    break; }
    case 7: { kytu1[0]=0x00; kytu1[1]=0x3C; kytu1[2]=0x0A; kytu1[3]=0x3C;
    kytu1[4]=0x02; kytu1[5]=0x3E; kytu1[6]=0x02; kytu1[7]=0x00; kytu1[8]=0x3E;
    break; }
    case 8: { kytu1[0]=0x3E; kytu1[1]=0x2A; kytu1[2]=0x3E; kytu1[3]=0x00;
    kytu1[4]=0x2E; kytu1[5]=0x2A; kytu1[6]=0x3E; kytu1[7]=0x00; kytu1[8]=0x3E;
    break; }
    case 9: { kytu1[0]=0x3E; kytu1[1]=0x22; kytu1[2]=0x22; kytu1[3]=0x00;
    kytu1[4]=0x28; kytu1[5]=0x10; kytu1[6]=0x28; kytu1[7]=0x00; kytu1[8]=0x28;
    break; }
    case 10: { kytu1[0]=0x28; kytu1[1]=0x10; kytu1[2]=0x28; kytu1[3]=0x00;
    kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
    break; }
    case 11: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
    kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
    break; }
    case 12: { kytu1[0]=0x00; kytu1[1]=0x00; kytu1[2]=0x00; kytu1[3]=0x00;
    kytu1[4]=0x00; kytu1[5]=0x00; kytu1[6]=0x00; kytu1[7]=0x00; kytu1[8]=0x00;
    break; }
    }
    }
    /* Ham quet led ma tran_ vua hien thi vua dich ky tu dan sang trai*/
    void hienthi(void)
    {
    unsigned char n,m,lap;
    unsigned char cot[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
    for(m=0; m<8 ; m++)
    {
    for(lap=0; lap<10; lap ++)
    {
    for(n=0; n<8 ; n++)
    {
    if((n+m)<9 )
    {
    mahoa(k);
    P0=cot[n];
    P2=kytu1[n+m];
    delay(45);
    }
    if((n+m) > 7)
    {
    mahoa(k+1);
    P0=cot[n];
    P2=kytu1[n+m-8];
    delay(45);
    }
    P0=0xFF;
    P2=0x00;
    }
    }
    }
    }
    void main(void)
    {
    while(1)
    {
    hienthi();
    k=k+1;
    if(k==12) k=0;
    }
    }
    Last edited by supermohan; 21-04-2012, 14:13.
    Đừng tự hào nhà nghèo mà học giỏi.
    Hãy tự hỏi tại sao giỏi mà vẫn nghèo.
    Riêng mình: "vừa nghèo vừa ngu" :))

  • #2
    bạn giúp mình về phần code dc ko, mình viết cho chữ A chay qua nhưng nó cứ nhấp nháy, nhìn khó chịu lắm, tính delay mãi vẫn ko cải thiện dc tí nào
    mail mình: anhhao12320@yahoo.com or anhhao12320@gmail.com
    thank

    Comment


    • #3
      bạn có thể cho mình cái code dc không.mình viết code điều khiển chạy chữ H nhưng không chạy đc,bạn xem hộ mình cái code nha.thank you!
      #include<reg51.h>
      #include<stdio.h>
      #include<intrins.h>
      //hamtre
      void tre(long time)
      {
      while(time--);
      }
      int m,n,lap;
      unsigned char manghang[8]={0x00,0x7c,0x10,0x10,0x7c,0x00,0x00,0x00};
      unsigned char mangcot[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
      //hamchinh
      void maid(void)
      {
      while(1)
      {
      for(m=0;m<8;m++)
      {
      for(lap=0;lap<=10;lap++)
      {
      for(n=0;n<8;n++)
      {
      if((m+n)<8)
      {
      P0=mangcot[n];
      P3=manghang[n+m];
      tre(45);
      }
      if((m+n)>=8)
      {
      P0=mangcot[n];
      P3=manghang[(n+m)-8];
      tre(45);
      }
      P3=0x00;
      }
      }
      }
      }
      }

      Comment


      • #4
        Nguyên văn bởi supermohan Xem bài viết
        Vừa làm xong quả này, các cao nhân xem cho ý kiến ạh.
        Đẹp quá bác à! Cho em xen vào chút ạ! Học VĐK có kho không các bác và cần biết về cái gì là cần khi học VĐK ạ (ví dụ như tiếng anh chẳn hạn)? Vì em nhìn vào code mà đau cả đầu. Hjhj, các bác tư vấn giúp em với!

        Comment


        • #5
          Nếu viết thư tình bằng VĐK thì nên viết bằng LCD. Code đơn giản, mạch ít phức tạp hơn, nhìn pro hơn, đóng hộp bỏ pin vào nữa thì khỏi chê. Điều khiển thêm led nền LCD nữa thì nhìn chớp chớp, tới đoạn quan trọng nhất thì sáng luôn. Chạy hết chữ thì tắt đèn.

          Thân!
          "Cái quý nhất của con người ta là sự sống. Đời người chỉ sống có một lần.Phải sống sao cho khỏi xót xa ân hận..."
          Lê lết, lay lất sống qua ngày! >:)

          Comment


          • #6
            Nguyên văn bởi vietanhk4 Xem bài viết
            bạn giúp mình về phần code dc ko, mình viết cho chữ A chay qua nhưng nó cứ nhấp nháy, nhìn khó chịu lắm, tính delay mãi vẫn ko cải thiện dc tí nào
            mail mình: anhhao12320@yahoo.com or anhhao12320@gmail.com
            thank
            Bạn viết theo kiủ delay nháy nhanh thì tính khoảng 24lần/s thì mắt thường sẽ ko thấy nháy
            Đừng tự hào nhà nghèo mà học giỏi.
            Hãy tự hỏi tại sao giỏi mà vẫn nghèo.
            Riêng mình: "vừa nghèo vừa ngu" :))

            Comment


            • #7
              Nguyên văn bởi elec1004 Xem bài viết
              Đẹp quá bác à! Cho em xen vào chút ạ! Học VĐK có kho không các bác và cần biết về cái gì là cần khi học VĐK ạ (ví dụ như tiếng anh chẳn hạn)? Vì em nhìn vào code mà đau cả đầu. Hjhj, các bác tư vấn giúp em với!
              mún biết về VDK thì ít nhất phải biết datasheep của con mình mún xài và biết về ngôn ngữ mà nó sử dụng.
              Đừng tự hào nhà nghèo mà học giỏi.
              Hãy tự hỏi tại sao giỏi mà vẫn nghèo.
              Riêng mình: "vừa nghèo vừa ngu" :))

              Comment


              • #8
                có bác nào biết cách quét led matrix từ trái sang phai,len xuống ko?viết bằng asembly đo.em đang làm mạch quảng báo mà chỉ biết đc quét phai trái thôi,muốn làm thêm máy cái quét trái phải ,lên xuống nữa.chỉ dùm với

                Comment


                • #9
                  Nguyên văn bởi trantuepro Xem bài viết
                  có bác nào biết cách quét led matrix từ trái sang phai,len xuống ko?viết bằng asembly đo.em đang làm mạch quảng báo mà chỉ biết đc quét phai trái thôi,muốn làm thêm máy cái quét trái phải ,lên xuống nữa.chỉ dùm với
                  dòng code này của mình quét đây, bạn dịch ra rùi thay thế là có thể quét theo các chiều khác thôi. Thân
                  unsigned char cot[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
                  Đừng tự hào nhà nghèo mà học giỏi.
                  Hãy tự hỏi tại sao giỏi mà vẫn nghèo.
                  Riêng mình: "vừa nghèo vừa ngu" :))

                  Comment


                  • #10
                    Ng0n ........................
                    Học Hỏi Không Ngừng Nghỉ

                    Comment


                    • #11
                      Nguyên văn bởi vietanhk4 Xem bài viết
                      bạn giúp mình về phần code dc ko, mình viết cho chữ A chay qua nhưng nó cứ nhấp nháy, nhìn khó chịu lắm, tính delay mãi vẫn ko cải thiện dc tí nào
                      mail mình: anhhao12320@yahoo.com or anhhao12320@gmail.com
                      thank
                      Code ở trên đầu đó bạn.

                      Comment


                      • #12
                        Nguyên văn bởi transisto Xem bài viết
                        Code ở trên đầu đó bạn.
                        thank bạn, nhưng mình viết bằng ASm nên nhìn đoạn code C của bạn cung chả hiêuu j, bạn chỉ mình cách tính delay 1 đoạn cơ bản dc ko,thank trước

                        Comment


                        • #13
                          Nguyên văn bởi supermohan Xem bài viết
                          Vừa làm xong quả này, các cao nhân xem cho ý kiến ạh.

                          Code cho các bác tham khảo nhé, mún chỉnh nhanh chậm thì sửa 2 dòng delay hoặc delay vòng lập, muốn thêm port để đk 8x16 hay 8x24 thì gọi thêm thôi, chúc các bác thành công
                          thank bạn, nhưng mình viết bằng ASm nên nhìn đoạn code C của bạn cung chả hiêuu j, bạn chỉ mình cách tính delay 1 đoạn cơ bản dc ko,thank trước

                          Comment


                          • #14
                            Nguyên văn bởi vietanhk4 Xem bài viết
                            thank bạn, nhưng mình viết bằng ASm nên nhìn đoạn code C của bạn cung chả hiêuu j, bạn chỉ mình cách tính delay 1 đoạn cơ bản dc ko,thank trước
                            Bạn thay các số rồi nghiên cứu nhé, 2 dòng delay nên = nhau, bạn cũng có thể thay delay vòng quét "lap<10"
                            Xem kĩ những chỗ màu đỏ nhé.
                            Còn về việc tính toán thì bạn có thể làm theo cách này: nếu LED chớp khoảng 24lần/giây (mình ko nhớ chắc lắm) thì mắt thường sẽ ko thấy chớp, từ đó bạn tính ra nhé. Thân
                            for(lap=0; lap<10; lap ++)
                            {
                            for(n=0; n<8 ; n++)
                            {
                            if((n+m)<9 )
                            {
                            mahoa(k);
                            P0=cot[n];
                            P2=kytu1[n+m];
                            delay(45);
                            }
                            if((n+m) > 7)
                            {
                            mahoa(k+1);
                            P0=cot[n];
                            P2=kytu1[n+m-8];
                            delay(45);
                            Đừng tự hào nhà nghèo mà học giỏi.
                            Hãy tự hỏi tại sao giỏi mà vẫn nghèo.
                            Riêng mình: "vừa nghèo vừa ngu" :))

                            Comment

                            Về tác giả

                            Collapse

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

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

                            Collapse

                            Đang tải...
                            X