Chống dội phím nhấn trong vi điều khiển

4
5131

1.Giới thiệu

Nút nhấn là đối tượng thường gặp nhất với dân lập trình vi điều khiển, nó dùng cho các mạch có điều khiển hoặc lựa chọn. Có một nhược điểm khi xử dụng nút nhấn đó nó hay bị nhiễu, bị dội, rung do phần cứng. Người lập trình muốn nhấn 1 lần để vdk thực hiện 1 tác vụ nào đó nhưng có khi nhấn tới 2-3 lần nó mới thực hiện, cũng có khi nhấn 1 lần mà vdk lại hiểu là mấy lần. Để loại bỏ (giảm) tác hại này, có 2 cách xử lý: bằng phần cứng và phần mềm, nhưng trong bài biết này mình sẽ trình bày cách chống dội bằng phần mềm.

2. Cách 1: Dùng delay để bỏ qua khoảng xung nhiễu. 

Cách này có ưu điểm là không làm trì hoãn CPU, sau khi so sánh xong điều kiện thì nó có thể làm chuyện khác.Nhược điểm: Canh thời gian delay chính xác khó khăn phải code thử trước.

2.1. Lấy xung mức 0 làm điều kiện nút có nhấn

Lưu đồ như sau:

Thuật toán chống dội phím cơ bản

Code:#define ON P3.1;//định nghĩa chân

if(ON==0){delay(1000);//delay khoảng 20ms, tùy vào hàm delay bạn viết

if(ON==0){//Xử lý chức năng nút nhấn}}

2.2. Lấy trạng thái lúc nhả nút nhấn làm điều kiện nút có nhấn

Code:

#define ON P3.1;//định nghĩa chân

if(ON==0) {delay(100);//delay khoảng nhỏ, tùy chỉnh

if(ON!=0) {//Xử lý chức năng nút nhấn}}

2.3 Cách 3: Bỏ qua khoảng nhiều bằng cách làm CPU chờ.

Ưu và nhược điểm của nó trái ngược cách 2. Code:

#define ON P3.1;//định nghĩa chân

if(ON==0)while(ON==0);//Xử lý chức năng nút nhấn

Nguồn http://chiaseprojects.blogspot.com/

4 COMMENTS

  1. Hi, I do believe this is a great web site. I stumbledupon it 😉 I am going to come back
    once again since i have book-marked it. Money and freedom is the best way to change,
    may you be rich and continue to guide others.

  2. Hello there! This post couldn’t be written any better!
    Looking through this post reminds me of my previous roommate!
    He always kept preaching about this. I am going to send this article to him.
    Pretty sure he’s going to have a great read. Thanks for sharing!

LEAVE A REPLY

Please enter your comment!
Please enter your name here