có ai biết chống dội cho ma trận phím bằng phần mềm ko ? chỉ em với
Thông báo
Collapse
No announcement yet.
Chống dội cho ma trận phím ( bằng phần mềm )
Collapse
X
-
Hãy hiểu nguyên tắc cơ bản như sau:
- Dội phím là rung phím
( Rung trong thời gian nhỏ)
Như vậy chống dội là chống rung.
Vậy để khử rung thì khi nó rung thì bỏ qua nó. Vậy bỏ qua kiểu gì??
* Phần cứng:
- Đơn giản nhất là dùng tụ điện cỡ nF// phím mục đích để khi có rung thì tụ điện vẫn đang nạp điện và mức logic vẫn hiểu là 0.
* Phần mềm:
- Viết 1 đoạn CT tạo trễ khi bấm nút nghĩa là sau t(s) mới kiểm tra lại nút xem có phải đc bấm thực sự ko?
- Viết 1 đoạn CT tạo trễ t(s) sau khi nút bấm và chỉ sau t(s) thì lần bấm kế tiếp mới có giá trị.
Nên kết hợp cả cứng và mềm cho chắc
Đôi điều chia sẻ
Add: 97 Quán Nam - Lê Chân - Hải Phòng.
Tel: 031 518648 Phone: 0904 283 505
-
mỉnh thường chống dội bằng ngắt timer và Sẽ có 1 biến đếm để quản lý khoảng thời gian chống nảy dài hơn 1 chút (vì timer tràn nhanh quá). Giả sử là bấm lần đầu, ta cho timer chạy, khi timer tràn thì ngắt rồi giảm biến đếm,biến đếm giảm hết thì cho phép nhận giá trị phím bấm tiếp.Phương pháp này thích hợp khi ta vừa nhận phím xong phải làm liền việc khác, chứ khi nhận phím mà chờ delay thì hơi hao phí thời gian và ảnh hưởng tới yêu cầu chính(vừa nhận phím vừa quét nhiều LED chẳng hạn) .VD
JNB PHIMBAM,OUT ;phím ko đc nhấn ? đúng: nhảy ra ngoài Sai: kiểm tra timer
JB TR0,OUT ;phím đc nhấn, nhưng timer đang chạy ? đúng: đã có phím bấm trước và đang chống nảy
SETB TR0 ;Sai: chấp nhận phím bấm và cho timer chạy để chống nảy
MOV BIENDEM,#10
CALL NHANPHIM
OUT:
.
.
.
.
T0ISR:
LOOP:MOV TH0,#HIGH.......
MOV TL0,#LOW.......
DJNZ BIENDEM,OUTT0
CLR TR0 ;đã chống nảy xong ngưng chạy timer
OUTT0:
RETILast edited by chung1608; 04-08-2011, 23:02.
Comment
-
Có 2 cách chống dội phím:
+ Bằng phần cứng: Dùng mạch tạo xung mono (có thể sử dụng IC 555).
+ Bằng phần mềm: Khi thấy có phím nhấn thì cho vi điều khiển thực hiện chương trình delay khoảng 20ms, chương trình delay viết bình thường không cần phải dùng timer. Sau đó thực hiện các chương trình tiếp theo.
Ví dụ:
JB Button,$ ;Chờ nhấn phím
JNB Button,$ ;Chờ buông phím
CALL DELAY20ms
...
Các lệnh tiếp theo
...
Chống dội bằng phần mềm là đơn giản nhất, tiết kiệm nhất và hiệu quả nhất.
Comment
-
Mọi người xem lại hộ em đoạn chuơng trình quét led có sử dụng nút bấm này, nhưng em chống rung phím mà không được, em viết bằng AVR Studio4 WINAVR
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
volatile unsigned char button;
//Mot so ham quet led
void LED1()
{
for(int i=0;i<8;i++)
{
PORTD &=~ (1<<i);
_delay_ms(100);
PORTD = 0xFF;
}
}
/******************************/
void LED2()
{
for(int i=7;i>=0;i--)
{
PORTD &=~ (1<<i);
_delay_ms(100);
PORTD = 0xFF;
}
}
/******************************************/
void LED3()
{
for(int i=0;i<4;i++)
{
PORTD = 0xFF;_delay_ms(100);
PORTD = 0x00;_delay_ms(100);
}
}
/*****************************************/
//Chuong trinh chong rung phim va tra ve gia tri cua phim bam
int press_button()
{
if(!(PINC&(1<<PC0))) //Kiem tra xem phim noi chan PC0 co bam ko
{
_delay_ms(20);
while(!(PINC&(1<<PC0))) return 0;
}
///////////
if(!(PINC&(1<<PC1)))
{
_delay_ms(20);
while(!(PINC&(1<<PC1))) return 1;
}
//////////////
if(!(PINC&(1<<PC2)))
{
_delay_ms(20);
while(!(PINC&(1<<PC2))) return 2;
}
}
int main()
{
DDRD =0xFF;
PORTD=0xFF;
DDRC=0x00;
while(1)
{
button=press_button();
switch(button)
{
case 0: LED1();_delay_ms(100);break; //an phim 1 quet led theo ham LED1
case 1: LED2();_delay_ms(100);break; //an phim 2 quet led theo ham LED2
case 2: LED3();_delay_ms(100);break; //an phim 3 quet led theo ham LED3
}
}
}
Không biết câu lệnh kiểm tra phím bấm if(!(PINC&(1<<PC0))) có bị sai không mà em chưa bấm mà LED đã quét rồi.
Bình thường em nghĩ câu lệnh if(!(PINC&(1<<PC0))) tức là nếu bấm tức chân PC0 nối đất thì câu lệnh là đúng và thực hiện lệnh sau if.
Em ko đính kèm được nên đành gửi code và mô phỏng proteus của em lên mediafire mọi người xem hộ em với:
http://www.mediafire.com/?7p3pfeht7s0qcq8
Ấn các phím lần đầu có sự thay đổi nhưng ấn nhiều lần phím em thấy nó ko còn thay đổi gì nữa.Last edited by tadbkhn; 10-08-2011, 04:55.
Comment
Bài viết mới nhất
Collapse
-
bởi theidiotcatViệc lựa chọn một chiếc laptop gaming phù hợp với nhu cầu, ngân sách chưa bao giờ là dễ dàng. Và điều đó càng khó hơn trong năm 2026 khi mà mức giá liên tục tăng.
Nếu bạn chưa biết nên chọn một chiếc laptop gaming như thế nào...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:29 -
-
bởi theidiotcatVới mức ngân sách 20 - 30 triệu đồng trong năm 2026, các bạn sinh viên và dân văn phòng có thể tìm thấy nhiều lựa chọn cao cấp, mạnh mẽ, pin “trâu”, đặc biệt là các mẫu laptop AI hỗ trợ cho học tập và làm việc.
Trong phân...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:25 -
-
bởi theidiotcatDưới đây là một số mẫu laptop nổi bật trong phân khúc dưới 20 triệu giúp các bạn văn phòng, sinh viên và đặc biệt là tân sinh viên có thể dễ dàng lựa chọn được mẫu laptop phù hợp với nhu cầu và ngân sách của mình.
Thị...-
Channel: Đánh giá sản phẩm DTVN
26-06-2026, 10:07 -
-
bởi theidiotcatViệc chọn mua một bộ máy tính phục vụ cho các nhu cầu làm việc văn phòng và sử dụng cơ bản hàng ngày đang trở nên dễ dàng và tiết kiệm hơn bao giờ hết. Thay vì phải đau đầu trích ngân sách để mua cả vi xử lý lẫn card đồ họa rời...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:23 -
-
bởi theidiotcatViệc nâng cấp từ một dàn máy tính cũ lên cấu hình mới luôn khiến nhiều người đắn đo về mức chi phí bỏ ra. Nếu bạn đang tìm kiếm một sự lột xác hoàn toàn về hiệu năng mà vẫn cân đối được dòng tiền, combo giữa vi xử lý Ryzen...
-
Channel: Đánh giá sản phẩm DTVN
25-06-2026, 11:06 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanVí dụ một trang như thế này
...-
Channel: Điện tử công suất
24-06-2026, 19:57 -
-
Trả lời cho Lực dọc trục làm hỏng ổ bi.bởi nguyendinhvanỔ bi có loại chịu lực dọc, loại chịu lực ngang.
Bạn kiếm một quyển Data cũng một hãng vòng bi nào đó. Họ sẽ cấp cho bạn đủ thông số kỹ thuật.
Khi lựa chọn được mã sản phẩm, bạn chỉ việc tìm mua mã đó, hoặc đặt hàng....-
Channel: Điện tử công suất
24-06-2026, 19:52 -
-
bởi GargiChào mọi người, tôi đang gặp một vấn đề kỹ thuật và muốn được nghe ý kiến của mọi người.
Tôi đã lắp một đĩa xích vào trục đầu ra của hộp số hành tinh bánh răng xoắn dùng cho truyền động xích. Sau vài tháng hoạt động, ổ bi đầu ra bị hỏng.
Bản thân...-
Channel: Điện tử công suất
24-06-2026, 13:22 -
-
bởi vi van phamSau hàng chục năm, không biết có ai còn nghĩ gì về tôi? Riêng tôi, nhớ nhiều về dientuviet nam. net. Ngày ấy tìm 1 người bạn đam mê về điện từ khó như trúng số độc đăc. Tôi đã trúng số độc đắc khi được mời về dientuvietnam.net...
-
Channel: Tâm tình dân kỹ thuật
23-06-2026, 22:43 -

...
Comment