các cao thủ làm ơn viêt giúp mình hàm chức năng thực hiện giải mã bàn fím với, bàn fim 4x4,4 cột tương ứng P1.0-P1.3,còn 4 hàng là P1.4-P1.7, cảm ơn nhiều
Thông báo
Collapse
No announcement yet.
giải mã bàn fím,help me!!!!!!!!
Collapse
X
-
Đang hỏi trong box 8051 thì chắc chắn là dùng 8051 rồi! Bạn vào đây down về mà xem, phần giao tiếp với ngoại vi nhé!
http://www.esnips.com/web/Sach-VDK-8051
Comment
-
Nguyên văn bởi natra2k2 Xem bài viếtĐang hỏi trong box 8051 thì chắc chắn là dùng 8051 rồi! Bạn vào đây down về mà xem, phần giao tiếp với ngoại vi nhé!
http://www.esnips.com/web/Sach-VDK-8051
cám ơn các bạn nhiều nhé,nhưng mà trong tài liệu chỉ nói về thuật toán chứ ko có chương trình mẫu, mình cũng không thạo về vdk lắm, mọi người giúp mình viết bằng c nhé,
mình có một hàm thế này mọi người xem và chỉ giùm nhé
Code://///////////////////////////////////////////////////////// void quetfim() { unsigned char cot,hang,k,k1,t; t=1; trefim++; if(trefim==1) { P1=0xf0; //dua cac cot ve 0 //P1=0xf0; trefim = 0; if(flagfim==0) { k=(P1&0xf0); if(k!=0xf0)//kiem tra xen co fim an ko? { if(flagfim1==0)flagfim=1; } else flagfim1=0; } else { flagfim1=1; if((P1&0xf0)!=0xf0) { P1=0xff; k=1; for(cot=0;cot<4;cot++) { P1=0xff-k; //P1=0xff-k; k=k*2; if(k==1){}; k1=((P1&0xf0)>>4)^0xf; for(hang=0;hang<4;hang++) { if(k1==1) { fim=cot*4+hang; if(fim==11) {IN1=0; IN2=1;} if(fim==12) {IN1=1; IN2=0;} if(fim==13) {IN1=0; IN2=0;} if(fim>=0&fim<=9) { giatridat=giatridat*t+fim; t=t*10; } flagfim=0; } k1=k1>>1; } } } else flagfim=0; } } } ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// void main(void) { TMOD=0x1; // che do 8 bit tu nap lai IE = 0x82; TH0=0xFC; TL0=0x18; //tran 100us ET0=1; P0=0xff; //P1=0xfe; P2=0x00; TR0 = 1; EA=1; //cho phep su dung ngat IN1=0; IN2=0; PWM=0; flagfim=0; flagfim1=0; fim=0; trefim=0; giatridat=fim; while(1) { quetfim(); hienthi(); } } ////////////////////////////////////////////////
còn hàm hienthi() của mình chạy rất tốt nếu gán cho giatridat = một con số nào đó
0915914693
Comment
-
Nguyên văn bởi natra2k2 Xem bài viếtĐang hỏi trong box 8051 thì chắc chắn là dùng 8051 rồi! Bạn vào đây down về mà xem, phần giao tiếp với ngoại vi nhé!
http://www.esnips.com/web/Sach-VDK-8051
đây là sơ đồ nối ghép của mình.
Lần đầu làm quen với VDK mong các bạn chỉ giáo.
0915914693
Comment
-
Nguyên văn bởi natra2k2 Xem bài viếtĐang hỏi trong box 8051 thì chắc chắn là dùng 8051 rồi! Bạn vào đây down về mà xem, phần giao tiếp với ngoại vi nhé!
http://www.esnips.com/web/Sach-VDK-8051
Comment
-
Nguyên văn bởi cncPunch Xem bài viếtBạn nào thích dùng thêm IC phụ để quét phím không? Tớ dùng 74138 và 74148 kết hợp, có thể quét bàn phím 8 x 8 = 64 phím.
Comment
-
Nguyên văn bởi rongconn2t Xem bài viếtsau 1 hồi thì các bác cho em hỏi để có thể quét được bàn phím thì phải làm gì?giá trị đọc được sẽ được nhận về = cách nào?
B1 : xuất tất cả các cột mức 0, xét . ( nếu cột là port xuất)
B2 : cho hàng 1 mức 0 , xét 4 phím trong hàng 1. phím nào có mức 0 thì đc nhấn , ko thì bỏ qua hàng 1
B2 : cho hàng 2 mức 0 , xét 4 phím trong hàng 2.....
Tiếp tục vậy đến hàng 4
Đó là nguyên tắc quét phím
Sợ các u ko tin , thử lun cho mấy u tin
Code:void quetphim_hienthi() { P1_0=0;P1_1=P1_2=P1_3=1; if (P0_0==0) { delay_ms(50); while(P0_0==0) continue ; delay_ms(20); LCD_PutChar('0');a = '0'; } ; if (P0_1==0) { delay_ms(50); while(P0_1==0) continue ; delay_ms(20); LCD_PutChar('4');a = '4'; } ; if (P0_2==0) { delay_ms(50); while(P0_2==0) continue ; delay_ms(20); LCD_PutChar('8');a = '8'; } ; if (P0_3==0) { delay_ms(50); while(P0_3==0) continue ; delay_ms(20); LCD_PutChar('C') ; a = 'C'; } ; P1_0=P1_2=P1_3=1;P1_1=0; if (P0_0==0) { delay_ms(50); while(P0_0==0) continue ; delay_ms(20); LCD_PutChar('1');a = '1'; } ; if (P0_1==0) { delay_ms(50); while(P0_1==0) continue ; delay_ms(20); LCD_PutChar('5'); a = '5'; } ; if (P0_2==0) { delay_ms(50); while(P0_2==0) continue ; delay_ms(20); LCD_PutChar('9');a = '9'; } ; if (P0_3==0) { delay_ms(50); while(P0_3==0) continue ; delay_ms(20); LCD_PutChar('D') ;a = 'D'; } ; P1_0=P1_1=P1_3;P1_2=0; if (P0_0==0) { delay_ms(50); while(P0_0==0) continue ; delay_ms(20); LCD_PutChar('2'); a = '2'; } ; if (P0_1==0) { delay_ms(50); while(P0_1==0) continue ; delay_ms(20); LCD_PutChar('6');a = '6'; } ; if (P0_2==0) { delay_ms(50); while(P0_2==0) continue ; delay_ms(20); LCD_PutChar('A');a = 'A'; } ; if (P0_3==0) { delay_ms(50); while(P0_3==0) continue ; delay_ms(20); LCD_PutChar('E');a = 'E'; } ; P1_0=P1_1=P1_2=1;P1_3=0;; if (P0_0==0) { delay_ms(50); while(P0_0==0) continue ; delay_ms(20); LCD_PutChar('3');a = '3'; } ; if (P0_1==0) { delay_ms(50); while(P0_1==0) continue ; delay_ms(20); LCD_PutChar('7');a = '7'; } ; if (P0_2==0) { delay_ms(50); while(P0_2==0) continue ; delay_ms(20); LCD_PutChar('B');a = 'B'; } ; if (P0_3==0) { delay_ms(50); while(P0_3==0) continue ; delay_ms(20); LCD_PutCmd(0x01) ; // clearscreen LCD_PutCmd(0x80) ; a = 0; } ; }
Comment
-
Nguyên văn bởi digital Xem bài viếtai có ct cho bàn phím ps2 cho mình xem với! Viết bằng asem cho 8051 ấy. Thanks!Kit thí nghiệm 8051 + mạch nạp + cable + LCD16x2 + CD hướng dẫn, giá chỉ
Comment
-
Theo mình nếu làm bàn phím đơn giản khoảng 16 phím trở lại thì lập trình cũng không phức tạp lắm.
Ví dụ bàn phím 4 phím hiển thị led 7 đoạn các số tương ứng từ 1-->4:
;phím 1-->4 :1 đầu nối đất,1 đầu nối các chân P1.0-->P1.3
main:
jnb P1.0,sw1
jnb P1.1,sw2
jnb P1.2,sw3
jnb P1.3,sw4
sjmp main
...
Đây là một cách mà mình lập trình với bàn phím,với bàn phím có nhiều hàng và cột bạn cũng có thể làm theo phương pháp trên cộng với việc quét cột,hàng.
Hoặc bạn cũng có thể dùng ngắt bàn phím,nếu nhiều hàng và cột thì có thể dùng mạch mã hóa,tổ hợp ...để tiết kiệm chân VĐK.
Chúc vui!
Comment
Bài viết mới nhất
Collapse
-
bởi FschoolvnTrong bối cảnh toàn cầu hóa giáo dục, ngày càng nhiều học sinh được gia đình chắp cánh để truy cầu kiến thức từ các quốc gia phát triển, đặc biệt là Hoa Kỳ. Từ ước mơ thụ hưởng nền giáo dục chất lượng, không ít học sinh nhìn...01-05-2024, 00:54
-
Trả lời cho Hỏi xin sơ đồ tivi các loạibởi Trân thànhCần các Bạn giúp sơ đồ Lcd Samsung UA40JU6400 và UA43ku6500k. Xin cảm ơn!...
-
Channel: Điện tử truyền hình
28-04-2024, 16:07 -
-
Trả lời cho Hỏi xin sơ đồ tivi các loạibởi Trân thànhCần các Bạn giúp sơ đồ Lcd Samsung UA40JU6400 và UA43ku6500k. Xin cảm ơn!...
-
Channel: Điện tử truyền hình
28-04-2024, 16:01 -
-
bởi chinhnguyen9Hoạt động của thế hệ mạch cân bằng trước đây dựa trên nguyên lý so áp giữa 2 string liền kề. Hoạt động cân bằng chỉ kích hoạt khi sự chênh lệch vượt ngưỡng 100mV và ngưng hoạt động khi mức chênh lệch giảm xuống còn 30mV. Bản...
-
Channel: Điện tử dành cho người mới bắt đầu
27-04-2024, 05:07 -
-
bởi chinhnguyen9Xem hình minh họa có phần thuyết minh bên trong tiện việc quan sát và đọc thuyết minh. Khi G1 high dòng điện chạy theo các đường màu đen khi G2 high dòng điện chạy theo các đường màu nâu đỏ.
Bổ sung một tính chất củng cố cho tên gọi tụ bay: Trong mạch đề cập chỉ...-
Channel: Điện tử dành cho người mới bắt đầu
26-04-2024, 21:02 -
-
bởi chinhnguyen9Sản phẩm này ghi version 2.0 01-2024 MADE IN CHINA nhưng không thấy thương hiệu hình 1
Do 8 chân G của 8 mosfet được đấu song song thành 2 nhóm nên có cùng biên độ xung kích 12V. Nhưng Q1 và Q2 nằm cuối dãy, chân S cùa chúng có điện áp DC cao đến...-
Channel: Điện tử dành cho người mới bắt đầu
26-04-2024, 20:37 -
-
bởi xuanthiettivi em bị mất remote lỡ vào chế độ usb giờ không chọn lại source được. ai có file nạp cho em xin với ạ. Model 32HD957T2
-
Channel: Điện tử truyền hình
26-04-2024, 10:53 -
-
Trả lời cho Giải thích nôm na từ "tụ bay"bởi chinhnguyen9Đa tạ lời cảm ơn của bạn. Mến!
-
Channel: Hướng dẫn sử dụng diễn đàn
26-04-2024, 05:06 -
-
Trả lời cho Xin tư vấn về mạch cầu H cho inverter 1000wbởi thebinhzChắc là không được đâu bạn ơi
Quán ăn Vĩnh Yên-
Channel: Điện tử công suất
25-04-2024, 21:56 -
-
Trả lời cho Giải thích nôm na từ "tụ bay"bởi thebinhzCảm ơn bạn nhiều nha
Nhà hàng Vĩnh Yên-
Channel: Hướng dẫn sử dụng diễn đàn
25-04-2024, 21:50 -
Comment