Các câu hỏi cần trả lời, thảo luận chung về thuật toán,...
Có anh em nào viết key scan 16 phím nhấn chưa ? Giúp tớ với !
|
yêu cầu chương trình như thế nào ? bạn phải nói rõ thì mới có phương án viết code chứ .
|
Key debounce
Cơ bản nhưng dùng rất nhiều !
Lúc nhấn và buông phím sẽ bị rung, gây nhiễu. Trường hợp pull-down tương tự. http://i82.photobucket.com/albums/j2...y_debounce.jpg |
1 Attachment(s)
http://i82.photobucket.com/albums/j2...ao/16f877a.gif
http://i82.photobucket.com/albums/j2...ao/led7seg.gif Nhấn INC tăng 1 đơn vị trên led.DEC giảm 1 đơn vị Code:
#include <16F877A.h> |
Key scan
Để quét và xác định phím nào trong ma trận phím được nhấn. Việc đầu tiên là làm cách nào để xác định đúng phím được nhấn,
sau đó là chống rung phím để chương trình thực thi đúng yêu cầu. Chống rung chẳng qua là tạo một khoảng thời gian delay cần thiết để loại bỏ việc đọc nhầm trạng thái phím bị nảy mỗi khi nhấn và thả phím. Tùy theo độ cứng của từng loại phím nhấn mà khoảng thời gian này khác nhau, thường từ 10 - 20ms. Có nhiều cách, dưới đây là một cách: - Khởi tạo hàng mức 0, cột mức 1 - Kiểm tra xem cột nào xuống mức 0, nếu ko có thì lặp lại - Tạo trễ 10ms - Kiểm tra lại xem cột nào xuống mức 0 có còn ở mức 0 ko, nếu ko quay lại bước 2 - Set mọi hàng lên mức 1, lần lượt cho từng cột xuống mức 0, kiểm tra xem hàng nào xuống mức 0 - Đợi đến khi thả phím -Tạo trễ 10ms - Xác định được phim ấn, thực thi yêu cầu http://i82.photobucket.com/albums/j2...c_Key_scan.gif |
1 Attachment(s)
Code:
/********************************************************************************************** |
Mình chưa bao giờ giao tiếp với bàn phím cả nhưng còn việc chống nảy hay deal with chattering thì mình cũng làm vài lần rồi. Ở các đoạn code trên mình thấy các bạn đều sử dụng delay để chống chattering thực sự mà nói thì cách này không chính xác lắm trong mọi thời điểm. Mình đã có lần được nghe qua một người Nhật trong lúc training H8 micro đã nói về cách chống chattering dùng cho máy in đó là sử dụng biến đếm count chứ không dùng delay. Sau này khi sử dụng count thay vì dùng delay mình thấy cách của người Nhật đó thật mới là cách tốt. Các bạn hãy thử cách xây dựng một hàm đại loại như sau:
bit checkbutton () { unsigned int i=0; while (input==1) { i++; if (i>=precount) {return(1);goto exit;} else return(0); } i=0; return(0); exit:{} } //precount là giá trị đặt trước giới hạn cho biến đếm count //input là đầu vào. Nếu ấn nút thì là 1 //hàm checkbutton sẽ chỉ trả về giá trị 1 khi ấn nút thực sự. |
Cách này cũng có thể dùng để quy định nhấn nút trong một khoảng thời gian xác định trước
|
hoi
Anh nào giúp em viết bằng assem với
|
Anh nào giúp em viết bằng assem nếu ấn nút ấn sẽ thực hiện 1 chương trình nào đó,không ấn thì không làm gì cả
|
Câu hỏi của bạn nhunamcdt1 không rõ ràng. Bạn muốn hỏi chương trình scan keypad hay chỉ đơn giản là điều khiển 1 vài phím bấm thông thường? Tôi đang viết bằng asm đây. Tôi đã làm phần scan keypad và phần điều khiển 1 vài phím bấm bằng asm, chương trình đã chạy trên mạch thực tế và thành thương phẩm. Tôi sẵn sàng giúp bạn với điều kiện bạn phải biết mình đang muốn làm gì và nói rõ câu hỏi. Tôi thường xuyên online nên bạn có thể gửi msg cho tôi tại nick YM: hiendl2k42.
Vì tôi đã từng gặp rất nhiều khó khăn trong vấn đề lập trình bằng asm mà không hỏi được ai nên tôi cũng muốn hỗ trợ các bạn trong phạm vi hiểu biết của mình, để tránh cho các bạn phải mất nhiều thời gian. Tuy nhiên các bạn cũng nên tự mình tìm hiểu và giải quyết những vấn đề nhỏ, dần dần sẽ tự giải quyết được những vấn đề lớn hơn. Nên suy nghĩ và làm trước khi hỏi. |
Anh cho em xin file mà anh vẽ bằng proteus luôn đựoc không ?
|
1 Attachment(s)
mấy a cho e hỏi tí, khi e đem mô phỏng ct wet_fim hiển thị kết wa ra led7doan thì chẳng thấy kết wa gì hết vậy, mong các a chỉ giúp dùm e
cái khung để viết code đó mấy a làm sao vậy chỉ dùm e cái( cái khung viết code giống như cảu a nhh đó) |
ai giup toi voi?
toi dung pic 16f887 nhung toi muon ngo ra 12v thi phai lam sao cam on nhieu email:hoanglinh_111988@yahoo |
16f877 điều khiển khóa đóng mở cho rơle,triac.... Nói thế không biết bạn hiểu không
|
Múi giờ GMT. Hiện tại là 11:44 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam