Kỹ thuật quét ma trận phím trong vi điều khiển

5 743 6
Kỹ thuật quét ma trận phím trong vi điều khiển

Đang tải... (xem toàn văn)

Thông tin tài liệu

Trong lập trình ứng dụng vi điều khiển việc giao tiếp giữa vi điều khiển và thiết bị ngoại vi điều rất quan trọng. Do số cổng của vi điều khiển thường không nhiều, trong khi vi điều khiển lại thực hiện nhiều nhiệm vụ khác nhau. Để giải quyết bài toán đó bắt buộc phải mở rộng đầu vào cho vi điều khiển. Ta có thể mở rộng đầu vào bằng nhiều phương pháp khác nhau như sử dụng IC ghi dịch 74HC595, kỹ thuật quét ma trận phím. Sử dụng kỹ thuật quét phím để kiểm tra trạng thái của ma trận phím là một trong những kỹ thuật sử dụng cổng đơn giản và hiệu quả hiệu quả. Để thực hiện quét ma trận phím ta có thể thực hiện quét theo dòng hoặc theo cột. Ở đây tác giả trình bày về cách quétt hàng, quét cột cũng hoàn toàn tương tự. Thuật toán quét ma trận phím: Ta có ma trận 16 phím được nối thành 4 hàng và 4 cột

Kỹ thuật quét ma trận phím vi điều khiển C1 C2 C3 C4 H1 30 31 H2 H3 ALE EA P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD AT89C52 H4 Hình 1: Ma trận phím 4x4 Đầu tiên xuất giá trị chân Port giữ mức điện cao nhờ điện trở kéo lên Một mức chân lại nhấn phím, phím nối hàng với cột hàng cột nối phím nhấn có mức làm cho chân lại có điện áp mức Và ta biết hàng cột phím ta biết xác vị trí phím nhấn Để đọc ma trận phím ta thực bước sau: Xóa cổng cách nạp giá trị 1111 1111 vào cổng P 25 26 27 28 10 11 12 13 14 15 16 17 Trong lập trình ứng dụng vi điều khiển việc giao tiếp vi điều khiển thiết bị ngoại vi điều quan trọng Do số cổng vi điều khiển thường không nhiều, vi điều khiển lại thực nhiều nhiệm vụ khác Để giải toán bắt buộc phải mở rộng đầu vào cho vi điều khiển Ta mở rộng đầu vào nhiều phương pháp khác sử dụng IC C1 ghi dịch 74HC595, kỹ thuật quét ma trận phím Sử dụng kỹ thuật quét phím để RP1 10k 33p kiểm tra trạng thái ma trận phím kỹ thuật sử dụng +5V +5V C2 cổng đơn giản hiệu hiệu U1 33p Để thực quét ma trận phím ta thực quét theo dòng 19 39 XTAL1 P0.0/AD0 38 P0.1/AD1 theo cột Ở tác giả trình bày cách quétt hàng, C3 quét cột hoàn toàn 37 P0.2/AD2 18 36 10uF XTAL2 P0.3/AD3 35 tương tự P0.4/AD4 Reset 34 P0.5/AD5 33 P0.6/AD6 Thuật toán quét ma trận phím: 32 R20 RST P0.7/AD7 Ta có ma trận 16 phím nối hàng cột vàP2.0/A8 2122 10k thành +5V P2.1/A9 23 P2.2/A10 nối với Port vi điều khiển hình 29 PSEN 24 P2.3/A11 Đưa liệu 0111 vào bit Px.0 đến Px.33 cổng P Để kiểm tra phím cột (Px.0) Đọc chân từ Px.4 đến Px.7 vào Nếu phím nhấn cột giá trị đọc vào 1111 Ngược lại có phím nhấn cột giá trị tương ứng đọc vào có giá trị Tiếp tục đưa giá trị 1011 vào chân Px.0 đến Px.3 Px Để kiểm tra phím cột thứ hai (Px.1) Sau đọc vào bốn bit Px.4 đến Px.7 Và tương tự ta xác định vị trí phím nhấn cột (nếu có) Tương tự ta đưa giá trị 1101 1110 chân Px.0 đến Px.3 đọc vào giá trị Px.4 đến Px.7 để xác định vị trí phím nhấn có Chu trình lặp lặp lại vô hạn cách quay lại bước Ứng dụng ma trận phím: Sử dụng vi điều khiển 8051 lập trình quét ma trận phím 4x4 cho hiển thị giá trị phím bấm lên LCD Sơ đồ nguyên lý LCD1 LM016L 10k 33p +5V C3 18 10uF R20 C1 H1 H2 H3 C2 C3 C4 D0 D1 D2 D3 D4 D5 D6 D7 10 11 12 13 14 33p XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 XTAL2 RST +5V 29 30 31 8 U1 10k RS RW E 10k +5V C2 19 Reset 51% RP1 RV1 C1 VSS VDD VEE +5V P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 PSEN ALE EA P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 +5V 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 AT89C52 H4 Hình 2: Sơ đồ nguyên lý giao tiếp vi điều khiển với LCD ma trận phím 4x4 Chương trình điều khiển: #include #define RS P3_0 //RS=0 => code,RS=1 => data #define RW P3_1 //RW=0 => ghi,RW=1 => doc #define EN P3_2 //Chan chot #define lcd_port P0 #define busy P0_7 #define hang1 P1_0 #define hang2 P1_1 #define hang3 P1_2 #define hang4 P1_3 #define cot1 P1_4 #define cot2 P1_5 #define cot3 P1_6 #define cot4 P1_7 unsigned char k; void delay_ms (unsigned int delay) { unsigned char i=121; while(delay ){ while(i ){} } } void wait_busy () { busy=1; RS=0; RW=1; while (!busy) { EN=1; EN=0; } } void lcd_putcmd(unsigned char cmd) { RS=0; RW=0; lcd_port=cmd; EN=1; EN=0; wait_busy (); } void lcd_putchar(unsigned char chr){ RS=1; RW=0; lcd_port=chr; EN=1; EN=0; wait_busy (); } void lcd_init() { delay_ms(15); lcd_putcmd(0x38); delay_ms(5); lcd_putcmd(0x0C); delay_ms(2); lcd_putcmd(0x01); delay_ms(2); } void lcd_clear() { lcd_putcmd(0x01); } void lcd_putsf(unsigned char *s){ while (*s){ lcd_putchar(*s); s++; } } void lcd_gotoxy(unsigned char x, unsigned char y) { lcd_putcmd((0x80+y*64)+x); delay_ms(1); } void quet_phim() { hang1=1;hang2=1;hang3=1;hang4=1; // P1=0x0f; cot1=0;cot2=0;cot3=0;cot4=0; if(hang1==0) { hang1=0; cot1=1;cot2=1;cot3=1;cot4=1; // P1=0xf0; if(cot1==0){k=99;} if(cot2==0){k=1;} if(cot3==0){k=2;} if(cot4==0){k=3;} } if(hang2==0) { hang2=0; cot1=1;cot2=1;cot3=1;cot4=1; if(cot1==0){k=4;} if(cot2==0){k=5;} if(cot3==0){k=6;} if(cot4==0){k=7;} } if(hang3==0) { hang3=0; cot1=1;cot2=1;cot3=1;cot4=1; if(cot1==0){k=8;} if(cot2==0){k=9;} if(cot3==0){k=10;} if(cot4==0){k=11;} } if(hang4==0) { hang4=0; cot1=1;cot2=1;cot3=1;cot4=1; if(cot1==0) {k=12;} if(cot2==0){k=13;} if(cot3==0){k=14;} if(cot4==0){k=15;} } } void hien_thi() { lcd_gotoxy(7,1); lcd_putchar(k%100/10+48); lcd_gotoxy(8,1); lcd_putchar(k%10+48); } void main() { lcd_init(); lcd_clear(); lcd_gotoxy(0,0); lcd_putsf(" PHIM NHAN LA:"); while (1) { quet_phim(); hien_thi(); } } Trên thuật toán ứng dụng ma trận phím, giúp ta giải toán mở rộng đầu vào cho vi điều khiển đơn giản hiệu Với giải thuật bạn ứng dụng cho thiết kế số project như: kiểm tra vào cho vi điều khiển, máy tính điện tử, điều khiển hệ thống tay … ... xác định vị trí phím nhấn có Chu trình lặp lặp lại vô hạn cách quay lại bước Ứng dụng ma trận phím: Sử dụng vi điều khiển 8051 lập trình quét ma trận phím 4x4 cho hiển thị giá trị phím bấm lên... toán mở rộng đầu vào cho vi điều khiển đơn giản hiệu Với giải thuật bạn ứng dụng cho thiết kế số project như: kiểm tra vào cho vi điều khiển, máy tính điện tử, điều khiển hệ thống tay … ... 10 11 12 13 14 15 16 17 AT89C52 H4 Hình 2: Sơ đồ nguyên lý giao tiếp vi điều khiển với LCD ma trận phím 4x4 Chương trình điều khiển: #include #define RS P3_0 //RS=0 => code,RS=1 => data

Ngày đăng: 08/04/2016, 09:03

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan