Giao tiếp với nút nhấn đơn

Một phần của tài liệu Thực tập vi điều khiển (Trang 25 - 27)

3.3.1. Mục đích, yêu cầu

Giúp sinh viên làm quen với thao tác kiểm tra nút nhấn đơn trong các ứng dụng nhập dữ liệu, hiệu chỉnh thông số,cài đặt …

3.3.2. Chương trình tham khảo

Chương trình kiểm tra lần lượt ba nút UP, MODE, DOWN, nếu một trong ba nút được nhấn thì điều khiển phát âm “beep” để thông báo phím đã được nhấn,đồng điều khiển tắt hoặc mở LED tương ứng.

#include <p89v51rx2.h>

//khai bao cac chan dieu khien

#define BTN_UP P2_2

#define BTN_DOWN P2_0

#define BTN_MODE P2_1

#define LED0 P1_0

// khai bao prototype

void delay (unsigned char time); void beep (void);

//chuong trinh chinh

void main (void)

{

while (1)

{

if (BTN_UP == 0)

{

delay (200); //delay chong doi if (BTN_UP == 0)

{

beep();

while (BTN_UP == 0); //cho nha nut

UP LED0 = ~LED0; } } if (!BTN_DOWN) {

delay (200); //delay chong doi

if (!BTN_DOWN)

{

beep();

while (!BTN_DOWN); //cho nha nut

DOWN LED1 = ~LED1; } } if (!BTN_MODE) {

delay (200); //delay chong doi

if (!BTN_MODE)

{

beep();

while (!BTN_MODE); //cho nha nut

MODE

LED2 = ~LED2; }

} }

//cac chuong trinh con

void beep (void)

{ unsigned char i; for (i = 0; i < 20; i ++) { BUZZER = 0; delay (1); BUZZER = 1; delay (1); } }

void delay(unsigned char time)

{

while (time--)

{

TMOD = 0x01; //timer0 che do 16 bit TH0 = 0xFF; //nap gia tri cho timer TL0 = 0xBA;

TR0 = 1; //khoi dong bo dinh thoi

while(!TF0); //cho co TF = 1

TF0 = 0 ; //xoa co TF

TR0 = 0; //dung bo dinh thoi }

}

3.3.3. Bài tập mở rộng

Viết chương trình điều khiển sao cho nếu nút Up nhấn 8 LED đơn sẽ dịch từ trái sang phải, nút Down nhấn dịch từ phải sang trái, nút Mode nhấn thì nhấp nháy cả 8 LED, mỗi kiểu sáng lập lại 5 lần. Sau đó chương trình trở lại kiểm tra 3 nút như ban đầu.

Một phần của tài liệu Thực tập vi điều khiển (Trang 25 - 27)

Tải bản đầy đủ (PDF)

(36 trang)