Đọc bàn phím

Một phần của tài liệu 27656 (Trang 107 - 110)

Khởi tạo LCD, khởi tạo I2C, khởi tạo EPROM

5.1.4.Đọc bàn phím

Các phím điều khiển đƣợc nối vào PORT A (Từ A0 đến A4) của PIC MASTER, do vậy việc đọc các phím chính là đọc trạng thái của PORT A.

Để tạo ra đƣợc các MENU trên màn hình LCD, điều trƣớc tiên là chúng ta phải đọc đƣợc bàn phím và quản lý đƣợc con trỏ đang nhấp nháy tại vị trí nào trên màn hình LCD.

Các phím đều đƣợc thiết kế " Treo cao, quét thấp", do đó khi NSD ấn phím thì PIN tƣơng ứng của PIC MASTER sẽ có giá trị bằng 0 ( Mức thấp); Ngƣợc lại khi NSD không ấn phím đó, thì PIN tƣơng ứng của PIC MASTER có giá trị bằng 1 (Mức cao).

Đoạn mã nguồn CCS trong chƣơng trình MONITOR của PIC MASTER dƣới đây, sẽ thực hiện đọc bàn phím điều khiển bao gồm các phím:

- Phím chọn MENU. - Phím di chuyển con trỏ. - Phím tăng 1 đơn vị (+1). - Phím giảm 1 đơn vị (-1). - Phím tăng 20 đơn vi (+20). - Phím giảm 20 đơn vị (-20).

- Phím xác nhận sự thay đổi ( ENTER).

//======================DOC BAN PHIM HL HUBAO============== void docphim_thubao()

{

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

doc_phim=input_A(); //doc ban phim ts=0;

if (doc_phim !=31) {xuat=1; delay_ms(150);} //phai xuat lai LCD if (doc_phim==29) {++contro1;} //di chuyển con trỏ.

if (doc_phim==27) {ts=1;} //tăng 1 đơn vị [+-->] if (doc_phim==25 && contro1==3) {ts=20;} //tăng 20 đơn vị if (doc_phim==25 && contro1==4) {ts=20;} // tăng 20 đơn vị if (doc_phim==25 && contro1==9) {ts=20;} / tăng 20 đơn vị if (doc_phim==25 && contro1==6) {ts=20;} // tăng 20 đơn vị if (doc_phim==25 && contro1==7) {ts=20;} // tăng 20 đơn vị if (doc_phim==25 && contro1==8) {ts=20;} / tăng 20 đơn vị

if (doc_phim==23) {ts=-1;} //giảm 1 đơn vị

if (doc_phim==21 && contro1==3 && bd>20) {ts=-20;} //giảm 20đơn vị if (doc_phim==21 && contro1==4 && bd1>20) {ts=-20;} // giảm 20đơn vị if (doc_phim==21 && contro1==9 && td>20) {ts=-20;} // giảm 20đơn vị if (doc_phim==21 && contro1==6 && nd>20) {ts=-20;} // giảm 20đơn vị if (doc_phim==21 && contro1==7 && nd1>20) {ts=-20;} // giảm 20đơn vị if (doc_phim==21 && contro1==8 && sai>20) {ts=-20;} // giảm 20đơn vị if (doc_phim==15) // ấn ENTER

{ if (chu>4) {doc_epROM(kenh_thu);} //doc bd trong epROM -> slave ghi_hlthu(); i2c_thubao(kenh_thu);

}

if (ts!=0) {

switch (contro1)

{ case 1: kenh_thu=kenh_thu+ts; break; //kenh ra case 2: chu=chu+ts; break; //loai dien

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

case 4: bd1=bd1+ts; break; //ban dien ket thuc case 5: msg=msg+ts; break; //phat dau dien ? case 6: nd=nd+ts; break; //nhom dien bat dau case 7: nd1=nd1+ts; break; //nhom ket thuc case 8: sai=sai+ts; break; //nhom dinh chinh case 9: td=td+ts; break; //toc do ban dau case 10: td1=td1+ts; break; //tu tang toc do case 11: dta=dta+ts; break; //do dai ta= ? tich } ts=0; } if (contro1>11) { contro1=1; } if (kenh_thu<1) {kenh_thu=1;} if (kenh_thu>15) {kenh_thu=15;} if (chu<1) {chu=1;} if (chu>6) {chu=6;}

if (chu<5) {bien16=999;} else {bien16=100; bd1=bd;} //ban dien trong ROM luon 100 nhom va phat 1 ban.

if (bd<1) { bd=1;} if (bd>bien16) {bd=bien16;} if (bd1<bd) {bd1=bd;} if (bd1>bien16) {bd1=bien16;} if (msg<1) {msg=1;} if (msg>2) {msg=2;} if (nd<1) {nd=1;} if (nd>100) {nd=100;} if (nd1<nd) {nd1=nd;} if (nd1>100) {nd1=100;} if (sai<1) {sai=1;}

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

if (sai>101) {sai=101;} if (td<20) {td=20;} if (td>255) {td=255;} if (td1<1) {td1=1;}

if (td1>10) {td1=10;} //khi tinh thi - 1 if (dta<2) {dta=2;}

if (dta>20) {dta=20;}

if (doc_phim==30) //[Mode] sang HL phat bao. { chedo=48+1; contro1=1; xuat=2; th_bao=15; //thongbao(); } }

Một phần của tài liệu 27656 (Trang 107 - 110)