Thông báo

Collapse
No announcement yet.

quet led 7 doan

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

  • quet led 7 doan

    mình gặp vấn đề thế này.
    mình quét 6 led 7 đoạn nhưng trong lúc quét còn phải tính toán nhiều nên led bi nháy.vậy có cách nào khắc phục ko ai giúp mình với.
    mình nghĩ là dùng một timer ngắt để quét trong ngắt.chương trình chính thì để xử lí co được ko.giúp minh cho ý kiến với

  • #2
    mình dùng atmega16 thạch anh 8m

    Comment


    • #3
      Không code, không mạch ... biết bạn bị sai chỗ nào mà chỉ ????

      Bạn xem lại trong luồng AVR Led matrix của bạn nghaiha, rất rõ, rất kỹ ... sẽ học hỏi được khối chuyện ... quét ... quét...VXL

      Comment


      • #4
        sodem=DATA;//-autozero;
        a=(sodem/10000);
        b=(sodem-a*10000)/1000;
        c=(sodem-a*10000-b*1000)/100;
        d=(sodem-a*10000-b*1000-c*100)/10;
        e=(sodem-a*10000-b*1000-c*100-d*10);
        //------------------ ---------------------------------------
        cnt=a;
        giaima(cnt);
        led2=1;
        led3=1;
        led4=1;
        led5=1;
        if(a==0) led1=1;
        if(a>=1) led1=0;
        delay_ms(2);
        //-----------------------
        cnt=b;
        giaima(cnt);
        led1=1;
        led3=1;
        led4=1;
        led5=1;
        if((a==0)&&(b==0)) led2=1;
        if((a==0)&&(b>=1)) led2=0;
        if(a>=1) led2=0;
        delay_ms(2);
        PORTB.2=0;
        PORTB.1=0;
        PORTB.1=0;
        PORTB.1=0;
        delay_us(4);
        PORTB.1=1;
        while(PINB.0==0);
        HBYTE=PIND;
        PORTB.2=1;
        delay_us(1);
        LBYTE=PIND;
        DATA=LBYTE+HBYTE*256;
        //---------------------
        cnt=c;
        giaima(cnt);
        led1=1;
        led2=1;
        led4=1;
        led5=1;
        if((a==0)&&(b==0)&&(c==0)) led3=1;
        if((a==0)&&(b==0)&&(c>=1)) led3=0;
        if((a==0)&&(b>=1)) led3=0;
        if(a>=1) led3=0;;
        delay_ms(2);

        //-------------------
        cnt=d;
        giaima(cnt);
        led1=1;
        led2=1;
        led3=1;
        led5=1;
        if((a==0)&&(b==0)&&(c==0)&&(d==0)) led4=1;
        if((a==0)&&(b==0)&&(c==0)&&(d>=1)) led4=0;
        if((a==0)&&(b==0)&&(c>=1)) led4=0;
        if((a==0)&&(b>=1)) led4=0;
        if(a>=1) led4=0;
        delay_ms(2);

        //------------------
        cnt=e;
        giaima(cnt);
        led1=1;
        led2=1;
        led3=1;
        led4=1;
        led5=0;
        delay_ms(1.5);
        //------------------
        //
        for (i=0;i<(FILTER_SIZE-1);i++) sorted_samples[i]=samples[i]=samples[i+1];
        sorted_samples[FILTER_SIZE-1]=samples[FILTER_SIZE-1]=DATA;
        bubble_sort(sorted_samples,FILTER_SIZE);
        DATA=0;
        for (i=FILTER_SIZE/2 - CENTER_DEVIATION; i<=(FILTER_SIZE/2 + CENTER_DEVIATION); i++)
        DATA+=sorted_samples[i];
        DATA/=(2*CENTER_DEVIATION + 1);
        j++;
        if(j==10000) j=201;
        //------------------ ---------------------------------------
        if(j==200)
        {
        autozero=DATA-1;
        j=201;
        };
        };
        };

        Comment


        • #5
          ở doạn cuối la chương trình xu lí lam led nháy

          Comment


          • #6
            mình ko sai code mà là về thời gian quét ko đảm bảo nên led bị nháy
            nên đang tìm cách khắc phục

            Comment


            • #7
              định quét led ở ngắt timer còn việc tính toán kia ở chương trình chính có dảm bảo ko?

              Comment


              • #8
                Nguyên văn bởi thanhtung86 Xem bài viết
                định quét led ở ngắt timer còn việc tính toán kia ở chương trình chính có dảm bảo ko?
                Dùng ngắt timer quét LED rất tốt, với các điều kiện :
                1> Tần số quét đủ cao để không bị nhấp nháy.
                2> Các thanh ghi cần cho việc quét cần được lưu vào stack bằng các lệnh push ở đầu trình phục vụ ngắt (đương nhiên phải có các lệnh pop tương ứng trước khi reti)
                3> Dùng 1 thanh ghi (hoặc ô nhớ) riêng để lưu SREG ở đầu trình phục vụ ngắt, và trả lại giá trị đã lưu trước khi reti.

                Chúc thành công !
                Imagine all the people
                Living life in peace...

                Comment


                • #9
                  Nguyên văn bởi thanhtung86 Xem bài viết
                  định quét led ở ngắt timer còn việc tính toán kia ở chương trình chính có dảm bảo ko?
                  Việc quét led phải đảm bảo được tần số quét là 50Hz nhé bác. Ít hơn thì sẽ bị nháy.
                  Email: - Mobil: tạm thời ngừng liên lạc 1 thời gian
                  Giới thiệu website kiếm tiền trực tuyến & tăng thứ hạng website.

                  Comment


                  • #10
                    Nguyên văn bởi thanhtung86 Xem bài viết
                    sodem=DATA;//-autozero;
                    a=(sodem/10000);
                    b=(sodem-a*10000)/1000;
                    c=(sodem-a*10000-b*1000)/100;
                    d=(sodem-a*10000-b*1000-c*100)/10;
                    e=(sodem-a*10000-b*1000-c*100-d*10);
                    //------------------ ---------------------------------------
                    cnt=a;
                    giaima(cnt);
                    led2=1;
                    led3=1;
                    led4=1;
                    led5=1;
                    if(a==0) led1=1;
                    if(a>=1) led1=0;
                    delay_ms(2);
                    //-----------------------
                    cnt=b;
                    giaima(cnt);
                    led1=1;
                    led3=1;
                    led4=1;
                    led5=1;
                    if((a==0)&&(b==0)) led2=1;
                    if((a==0)&&(b>=1)) led2=0;
                    if(a>=1) led2=0;
                    delay_ms(2);
                    PORTB.2=0;
                    PORTB.1=0;
                    PORTB.1=0;
                    PORTB.1=0;
                    delay_us(4);
                    PORTB.1=1;
                    while(PINB.0==0);
                    HBYTE=PIND;
                    PORTB.2=1;
                    delay_us(1);
                    LBYTE=PIND;
                    DATA=LBYTE+HBYTE*256;
                    //---------------------
                    cnt=c;
                    giaima(cnt);
                    led1=1;
                    led2=1;
                    led4=1;
                    led5=1;
                    if((a==0)&&(b==0)&&(c==0)) led3=1;
                    if((a==0)&&(b==0)&&(c>=1)) led3=0;
                    if((a==0)&&(b>=1)) led3=0;
                    if(a>=1) led3=0;;
                    delay_ms(2);

                    //-------------------
                    cnt=d;
                    giaima(cnt);
                    led1=1;
                    led2=1;
                    led3=1;
                    led5=1;
                    if((a==0)&&(b==0)&&(c==0)&&(d==0)) led4=1;
                    if((a==0)&&(b==0)&&(c==0)&&(d>=1)) led4=0;
                    if((a==0)&&(b==0)&&(c>=1)) led4=0;
                    if((a==0)&&(b>=1)) led4=0;
                    if(a>=1) led4=0;
                    delay_ms(2);

                    //------------------
                    cnt=e;
                    giaima(cnt);
                    led1=1;
                    led2=1;
                    led3=1;
                    led4=1;
                    led5=0;
                    delay_ms(1.5);
                    //------------------
                    //
                    for (i=0;i<(FILTER_SIZE-1);i++) sorted_samples[i]=samples[i]=samples[i+1];
                    sorted_samples[FILTER_SIZE-1]=samples[FILTER_SIZE-1]=DATA;
                    bubble_sort(sorted_samples,FILTER_SIZE);
                    DATA=0;
                    for (i=FILTER_SIZE/2 - CENTER_DEVIATION; i<=(FILTER_SIZE/2 + CENTER_DEVIATION); i++)
                    DATA+=sorted_samples[i];
                    DATA/=(2*CENTER_DEVIATION + 1);
                    j++;
                    if(j==10000) j=201;
                    //------------------ ---------------------------------------
                    if(j==200)
                    {
                    autozero=DATA-1;
                    j=201;
                    };
                    };
                    };
                    Chào Bác Thanhtung86 Chương trình của bác rất hay, pác có thể cho em code đếm 4 led 7 được ko ah. Em rất cần tìm hiểu nhờ pác giúp đỡ dùm ah. Em rất cám ơn. YH của em là meoden21@yahoo.com.

                    Comment

                    Về tác giả

                    Collapse

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

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

                    Collapse

                    • Andrea14
                      Vấn đề về tốc độ quay
                      bởi Andrea14
                      Chào mọi người,

                      Tôi muốn mô phỏng sự thay đổi các mùa bằng cách từ từ nghiêng một quả địa cầu 16 inch bằng một động cơ bước nhỏ. Một động cơ bước khác sẽ quay quả địa cầu theo thời gian thực. Hệ thống truyền động...
                      12-12-2025, 12:42
                    • bqviet
                      Trả lời cho Đấu tắt điện cho máy tính bảng
                      bởi bqviet
                      Bqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
                      06-12-2025, 17:17
                    • nguyendinhvan
                      Trả lời cho Xin hỏi về mạch thu FM/AM trong catsette
                      bởi nguyendinhvan
                      Theo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
                      05-12-2025, 19:59
                    Đang tải...
                    X