Thông báo

Collapse
No announcement yet.

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

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

  • #16
    Nguyên văn bởi beiudientu Xem bài viết
    Anh post bai thì trong câu lệnh anh chú thích trong từng câu lệnh với để mọi người cùng hiểu, không thì anh mô tả phần cứng thì còn hiểu chứ chương trình không thì khó xem was... ! dù sao cũng bít ơn anh.. ráng giúp anh nhé !!
    Đây là sơ đồ phần cứn. Mạch ĐK thì rõ ràng rồi còn mạch hiển thị thì sử dụng module 2 led ghép lại. Tùy y bạn muốn ghép bao nhiêu thì ghép. O mạch này thì mình ghép 16hàng*32cột đó. Phần mềm thì quét theo hàng.
    Attached Files

    Comment


    • #17
      đây là mạch ĐK
      Attached Files

      Comment


      • #18
        mình chỉ làm 4 led ma tran ,mình muốn quét cột dung 74138,dich du liệu song song sang nối tiếp dùng 74595 thì phải làm sao?

        Comment


        • #19
          wa cái này em định hỏi các pác có bít thì giúp em ha
          giải thích cho em cách làm dòng chữ chạy từ dưới lên dc ko
          có đoạn code ví dụ thì càng tốt (viết bàng asm)
          8051 là con em viết thành thạo. em sẵn sàng giúp đỡ các pác nếu em có thể
          liên lạc với em qua địa chi email: Mob: 01882.076.989

          Comment


          • #20
            Nguyên văn bởi hoangphat Xem bài viết
            wa cái này em định hỏi các pác có bít thì giúp em ha
            giải thích cho em cách làm dòng chữ chạy từ dưới lên dc ko
            có đoạn code ví dụ thì càng tốt (viết bàng asm)

            Chương trình mình up lên cũng có hiệu ứng chạy từ dưới lên đó. Có cả trên xuống, phải qua trái đó. có gì bạn tham khảo nha.

            Comment


            • #21
              Nguyên văn bởi Mr_se7en Xem bài viết
              Mình kiếm được tài liệu rồi đây. Đã làm chạy thành công rồi. Chương trình này đưa 24 chữ cái ( Chữ IN HOA đó nha) vào rối muốn chữ nào xuât ra thì chỉ việc đổi chữ "DEMO" thành chữ mình muốn nha. Chúc bạn thành công


              #include <AT89X52.h>
              //--------------------------------
              //khai bao bien
              //16hang, 4led
              //P0 SELECT HANG
              sbit clk = P2^5;
              sbit s_clk = P2^4;
              sbit data_d = P2^6;
              sbit data_x = P2^7;
              //--------------------------------
              unsigned char n,m,l,step,color =0;
              unsigned int count =0,temp_1=0,temp_2=0;
              //----------------------------------------------
              /*font du lieu chi lap trinh cho chu IN HOA,
              neu muon cho chu thuong thi tao them font chu IN THUONG
              cho bang ma font */
              //FONT TIENG VIET 24 CHU CAI
              unsigned char code lib_font[]={
              0x00,0x00,0x00,0x10,0x38,0x7C,0xFE,0xC6,0xC6,0xFE, 0xFE,0xC6,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xF8,0xFE,0xC6,0xC6,0xFC,0xFC,0xC6 ,0xC6,0xFE,0xFC,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xC0,0xC0,0xC0 ,0xC0,0xFE,0x7C,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xF8,0xFC,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFC,0xF8,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xFE,0xFE,0xC0,0xC0,0xF8,0xF8,0xC0 ,0xC0,0xFE,0xFE,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xFE,0xFE,0xC0,0xC0,0xFC,0xFC,0xC0 ,0xC0,0xC0,0xC0,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xC0,0xCE,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xFE,0xFE,0xC6 ,0xC6,0xC6,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7E,0x3C,0x18,0x18,0x18,0x18,0x18 ,0x18,0x3C,0x7E,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7E,0x7E,0x18,0x18,0x18,0x18,0x98 ,0xD8,0xF8,0x70,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xCC,0xD8,0xF0,0xE0,0xE0,0xF0 ,0xD8,0xCC,0xCE,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2 ,0xC6,0xFE,0xFE,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0xEE,0xFE,0xD6,0xC6,0xC6 ,0xC6,0xC6,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0xE6,0xE6,0xF6,0xDE,0xCE ,0xCE,0xC6,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xFC,0xFE,0xC6,0xC6,0xFE,0xFC,0xC0 ,0xC0,0xC0,0xC0,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7C,0xFE,0xC6,0xC6,0xC6,0xD6,0xDA ,0xCC,0xF6,0x7B,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xFC,0xFE,0xC6,0xC6,0xFE,0xFC,0xD8 ,0xDC,0xCE,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7C,0xFE,0xC0,0xC0,0xFC,0x7E,0x06 ,0x06,0xFE,0x7C,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x7E,0x7E,0x5A,0x18,0x18,0x18,0x18 ,0x18,0x18,0x18,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6 ,0xC6,0xFE,0x7C,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xEE ,0x7C,0x38,0x10,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,0xFE ,0xEE,0xC6,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xC6,0xC6,0x6C,0x38,0x10,0x10,0x38 ,0x6C,0xC6,0xC6,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x66,0x66,0x66,0x7E,0x3C,0x18,0x18 ,0x18,0x3C,0x7E,0x00,0x00,0x00
              ,0x00,0x00,0x00,0xFE,0xFE,0x06,0x0C,0x18,0x30,0x60 ,0xC0,0xFE,0xFE,0x00,0x00,0x00
              ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00};
              unsigned char code lib_dis []={"ABCDEFGHIJKLMNOPQRSTUVWXYZ "};
              unsigned char code lib_out []={" DEMO @"};
              unsigned char data_out [5];
              unsigned char data_temp[5];
              void delay_ms(unsigned int data_in)
              {
              unsigned int i,j;
              for(i=0;i<=data_in;i++)
              for(j=0;j<=33;j++);
              }
              //------------------------------------------------------
              void out_serial(unsigned char data_in,unsigned char loop)
              {
              unsigned char i,j;
              for(i=0;i<=loop;i++)
              {
              j = data_in;
              j = j>>i;
              j &= 0x01;
              if(j ==0)
              {
              data_x =0;
              data_d =0;
              clk =0;
              clk =1;
              }
              else
              {
              if(color==0) //RED
              {
              data_d =1;
              data_x =0;
              clk =0;
              clk =1;
              }
              else
              if(color==1) //GREEN
              {
              data_d =0;
              data_x =1;
              clk =0;
              clk =1;
              }
              else
              {
              data_d =1; //YELLOW
              data_x =1;
              clk =0;
              clk =1;
              }
              }

              }
              }
              //----------------------------------------------------------
              void tra_ma (unsigned char data_in)
              {
              unsigned char i,j,k=0;
              for(i=data_in;i<=(data_in + 4);i++)
              {
              data_temp[k] = lib_out[i];
              k ++;
              }
              for(i=0;i<=4;i++)
              {
              for(j=0;j<=26;j++)
              {
              if(data_temp[i] == lib_dis[j])
              data_out[i] = j;
              }
              }
              }
              //------------------------------------------------------------
              void next_led(unsigned char data_in,unsigned char dich_bit)
              {
              out_serial(data_in,7-dich_bit);
              }
              //------------------------------------------------------------
              void hien_thi(unsigned char hang,unsigned char dich_bit)
              {
              unsigned char i;
              for(i=0;i<=3;i++)
              {
              out_serial(lib_font[(data_out[4-i])*16+hang],7);
              }
              next_led (lib_font [(data_out[0])*16+hang],dich_bit);
              }
              //-----------------------------------------------------
              void change_color () interrupt 1 //ngat timer0
              {
              TR0 =0;
              TH0=0x3C;
              TL0=0xB0;
              TR0=1;
              count ++;
              if(count == 40) //delay 50.000uS * 80 = 2s (Crystal = 22.1184MHz)
              {
              count =0;
              color ++;
              if(color==3)
              color=0;
              }
              }
              //---------------------------------------------------

              void stop_data()
              {
              unsigned char i,k,u;
              for(k=0;k<=150;k++)
              {
              for(u=0;u<=15;u++)
              {
              for(i=0;i<=3;i++)
              {
              out_serial(lib_font[(data_out[3-i])*16+u],7);
              }
              delay_ms(2);
              P0 =255;
              s_clk =0;
              s_clk =1;
              P0 =u;
              }
              }

              }
              //------------------------------------------------------
              void down_up()
              {
              unsigned int u,i,j,k,v;
              tra_ma(4);
              for(k=0;k<=15;k++)
              {
              for(j=0;j<=20;j++)
              {
              v = 0;
              for(u=0;u<=15;u++)
              {
              if(u>=15-k)
              {
              for(i=0;i<=3;i++)
              {
              out_serial(lib_font[(data_out[3-i])*16 + v],7);
              }
              delay_ms(2);
              P0 =255;
              s_clk =0;
              s_clk =1;
              P0 =u;
              v++;
              }
              }
              }
              }
              for(k=0;k<=15;k++)
              {

              for(j=0;j<=20;j++)
              {
              v = k;
              for(u=0;u<=15;u++)
              {
              if(u <= 15-k)
              {
              for(i=0;i<=3;i++)
              {
              out_serial(lib_font[(data_out[3-i])*16 + v],7);
              }
              delay_ms(2);
              P0 =255;
              s_clk =0;
              s_clk =1;
              P0 =u;
              v++;

              }
              }
              }
              }
              }
              void up_down()
              {
              unsigned int u,i,j,k,v;
              tra_ma(4);
              for(k=0;k<=15;k++)
              {
              for(j=0;j<=20;j++)
              {
              v = 15-k;
              for(u=0;u<=15;u++)
              {
              if(u<=k)
              {
              for(i=0;i<=3;i++)
              {
              out_serial(lib_font[(data_out[3-i])*16 + v],7);
              }
              delay_ms(2);
              P0 =255;
              s_clk =0;
              s_clk =1;
              P0 =u;
              v++;
              }
              }
              }
              }
              tra_ma(4);
              for(k=0;k<=15;k++)
              {
              for(j=0;j<=20;j++)
              {
              v = 0;
              for(u=0;u<=15;u++)
              {
              if(u>=k)
              {
              for(i=0;i<=3;i++)
              {
              out_serial(lib_font[(data_out[3-i])*16 + v],7);
              }
              delay_ms(2);
              P0 =255;
              s_clk =0;
              s_clk =1;
              P0 =u;
              v++;
              }
              }
              }
              }
              }
              @ Anh Mr_se7en sao trong chương trình này em không thấy hàm chính void main () đâu cả vậy... và vòng lặp liên tục vd while(1) chẳng hạn.. em đưa vào mô phỏng và điều khiển thực tế thì không thấy port điều khiển cho ic quét hàng 74hc154 được tác động... anh cho em hỏi thêm câu code này nữa out_serial(lib_font[(data_out[3-i])*16 + v],7); anh giải thích cho em cái lệnh data_out[3-i])*16 + v] nó sẽ trỏ tới mảng data_out nhưng sao cần *16 ..

              Comment

              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...
              X