Welcome & Happy Holidays!
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    nhờ các sư huynh giúp về chống dội nút nhấn

    em đang làm bài tập lớn về VĐK đã được trên mô phỏng protus nhưng đến khi nap và chay trên ic thi nút nhấn bị dội rất mạnh khí nhấn nút đèn sáng không đúng mà bị nhảy dưới đây là code và mạch mô phỏng


    ""

    #include<AT89x51.h>
    #include <delay.h>

    sbit out=P1^6;//Khai bao chan OUT


    void PWM(void);
    unsigned char dem=0,ptram_xung,a=0;
    unsigned int j;

    void ngatngoai_0(void) interrupt 0
    {
    TR0=0; //dung timer0

    if(a<9) a=a+1;

    else a=9;
    TR0=1;
    }



    void int_timer() interrupt 1
    {

    TF0=0;
    dem++;
    if(dem<ptram_xung)
    {
    out=1;//out muc 1 theo % xung

    }else
    {
    out=0;

    }
    if(dem==100) dem=0;
    }

    void ngatngoai_1(void) interrupt 2
    {
    TR0=0;
    if(a>0) a=a-1;
    else {a=0;out=0;}
    TR0=1;
    }


    void PWM(void)
    {

    if(a==0) {
    out=0;
    ptram_xung=0;
    P2=0x00;
    P0=0x3f;
    P1_0=0;

    }

    else {
    if(a==1) { ptram_xung=10;P2=0x00;P1_0=1; } //break;
    if(a==2) { ptram_xung=20;P2=0x01; } //break;
    if(a==3) { ptram_xung=30;P2=0x03; }// break;
    if(a==4) {ptram_xung=40;P2=0x07; } //break;
    if(a==5) {ptram_xung=50;P2=0x0F; } //break;
    if(a==6) {ptram_xung=60;P2=0x1F; } //break;
    if(a==7) {ptram_xung=70;P2=0x3F;} // break;
    if(a==8) {ptram_xung=80;P2=0x7F;} //break;
    if(a==9) {ptram_xung=90;P2=0xFF; } //break;



    /////////////////////////////////////

    if(a==1) { ptram_xung=10;P0=0x06; } //break;

    if(a==2) { ptram_xung=20;P0=0x5b; } //break;
    if(a==3) { ptram_xung=30;P0=0x4f; }// break;
    if(a==4) {ptram_xung=40;P0=0x66; } //break;
    if(a==5) {ptram_xung=50;P0=0x6d; } //break;
    if(a==6) {ptram_xung=60;P0=0x7d; } //break;
    if(a==7) {ptram_xung=70;P0=0x07;} // break;
    if(a==8) {ptram_xung=80;P0=0x7f;} //break;
    if(a==9) {ptram_xung=90;P0=0x6f; }



    }
    }
    void main(){
    //SCON=0X52;

    TMOD=0x22;//Chon timer0, che do 8bit tu nap lai, timer 1 che do 2
    TH0=TL0=0x9b;//Nap gia tri de chon tan so ra
    //TH1=0xFD;
    ET0=1;//Ngat timer0
    //ES=1;
    TR0=1;//Khoi dong timer0
    //TR1=1;
    EX0=1;// cho phe?p ng??t ngoa?i 0
    IT0=1; // ng??t theo s???n xung
    EX1=1;// cho phe?p ng??t ngoa?i 0
    IT1=1; // ng??t theo s???n xung

    EA=1;//Cho phep ngat
    //out_nguoc=0;
    P2=0x00;


    //thuan=1; nguoc=0;
    while(1){

    PWM();


    }
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bỏ code vào tag code nhé bạn. Debounce dùng code thì chỉ việc delay một khoảng thời gian sau khi detect nút nhấn thôi. Điều chỉnh khoảng này dài ngắn tuỳ theo yêu cầu.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi phucnguyen0
    em đang làm bài tập lớn về VĐK đã được trên mô phỏng protus nhưng đến khi nap và chay trên ic thi nút nhấn bị dội rất mạnh khí nhấn nút đèn sáng không đúng mà bị nhảy dưới đây là code và mạch mô phỏng
    Để chống dội phím trên mạng có rất nhiều chương trình mà, sao bạn không tìm trong gúc gồ, bạn có thể nhấp vào đây Concept of Debouncing in 8051 microcontroller ~ Blogging & Tech tipps.

    Bạn cũng nên kết hợp chống dội phím bằng phần cứng, có rất nhiều cách, tham khảo ở đây nhé Input Interfacing Circuits Connect to the Real World












  4. #4
    Ngày tham gia
    Jun 2016
    Bài viết
    0
    cám ơn các sư huynh nhiều em sẽ áp dụng ngay

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 10:37 PM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2025 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.