Thông báo

Collapse
No announcement yet.

giải mã bàn fím,help me!!!!!!!!

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • giải mã bàn fím,help me!!!!!!!!

    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

    0915914693

  • #2
    ai ơi giúp mình với,mình đang rất cần

    0915914693

    Comment


    • #3
      cậu dùng IC loại nào vậy?

      Comment


      • #4
        Đ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


        • #5
          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();
          		
          	 }
          
            }		  
          ////////////////////////////////////////////////
          Biến giatridat là biến toàn cục được khai báo ở đầu và nội dung của nó được hiển thị ra 4 led 7 thanh, nhưng ko hiểu sao nó không hiện được gì cà.

          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 đó
          Last edited by VNarmy; 29-10-2007, 16:32. Lý do: code

          0915914693

          Comment


          • #6
            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
            [QUOTE=thanhcom;51056]****************************************
            đâ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.
            Attached Files

            0915914693

            Comment


            • #7
              ban có thể tham khảo chương trình viết bằng asm đây cũng là ứng dụng quét phím đấy
              xin lỗi vì đây là chương trình dùng cho kít của mình hơi rắc rối cố đọc nhé mình định nghĩa các biến đối chiếu ra nhé
              Attached Files
              MaiDuySơn
              tell: 0902367555
              or

              Comment


              • #8
                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
                Link thì vẫn ok nhưng sao mình không down được file .pdf của nó mà toàn chỉ là cho down trang đó về thôi. Bạn xem lại link cụ thể được?

                Comment


                • #9
                  Bạ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.
                  Cái gì không mua được bằng tiền thì có thể mua được bằng ... nhiều tiền

                  Comment


                  • #10
                    sau 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?

                    Comment


                    • #11
                      Nguyên văn bởi cncPunch Xem bài viết
                      Bạ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.
                      hic , dùng chi nhìu phím ghê z ? bàn phím máy tính 104 phím mà cùng có 6 chân . nếu dùng nhìu thì lấy lun keyboard , viết code giao tiếp PS2 thui . Còn ko thì cùng ma trận 4x4 là phế oy

                      Comment


                      • #12
                        Nguyên văn bởi rongconn2t Xem bài viết
                        sau 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?
                        các bước quét phím :
                        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


                        • #13
                          keyboard

                          ai có ct cho bàn phím ps2 cho mình xem với! Viết bằng asem cho 8051 ấy. Thanks!

                          mobile:01692500603

                          Comment


                          • #14
                            Nguyên văn bởi digital Xem bài viết
                            ai có ct cho bàn phím ps2 cho mình xem với! Viết bằng asem cho 8051 ấy. Thanks!
                            hình như nó ko giải giao tiếp kiểu quét phím kia mà thông wa truyền thông uart thì phải
                            Kit thí nghiệm 8051 + mạch nạp + cable + LCD16x2 + CD hướng dẫn, giá chỉ

                            Comment


                            • #15
                              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

                              Về tác giả

                              Collapse

                              thanhcom Tìm hiểu thêm về thanhcom

                              Bài viết mới nhất

                              Collapse

                              • mèomướp
                                Trả lời cho Công thức điện tử
                                bởi mèomướp
                                Dạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
                                Hôm qua, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
                                Hôm qua, 20:31
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                Ok , thanks bác đã chỉ...
                                Hôm qua, 15:06
                              • nguyendinhvan
                                Công thức điện tử
                                bởi nguyendinhvan
                                Sau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !

                                Chập thì thay. Cháy thì tháo
                                Làm thì láo. Báo thì hay
                                May thì khoe. Rủi thì bỏ
                                Thành tích nhỏ. Báo thành to
                                Làm cho có. Báo chi li
                                Sai cả li. Báo
                                ...
                                Hôm qua, 00:35
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
                                25-11-2024, 22:31
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ ý chú là màn oled ấy ạ. Cùng chuẩn lvds cùng độ phân giải thì cắm được ạ. Còn nó mà khác thì hơi khó vì oled các điểm ảnh nó tự phát sáng chứ ko dùng đèn nền như lcd. Cháu chỉ biết đến vậy thôi ạ. Chú muốn nghịch phải tự tìm hiểu kỹ trước khi mua thôi, khó mà ông thợ nào tư vấn vụ này...
                                25-11-2024, 22:14
                              • bactho
                                Trả lời cho Tự làm máy đo Cuộn cảm
                                bởi bactho
                                Hay đấy bạn ạ. Đây có thể hiểu là máy đo cuộn dây. Tiện đây xin cho hỏi bạn có hiểu rõ về máy nạp rôm pcb 45 của hãng thiên minh không giúp mình cách cài fw của nó với vì mình vừa được anh bạn cho nhưng lại không biết cài fw nên chưa dùng được. Nếu có thể thì bạn giúp mình với...
                                25-11-2024, 21:48
                              • yname11
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi yname11
                                màn của mình là LCD , giờ m muốn mua màn LED để thay thế (ko muốn dùng màn LCD nữa) , lên muốn hỏi xem có cáp chuyển đổi nào có thể cắm đc màn LED vào ko , tất nhiên phải có cùng số chân pin với màn cũ rồi . VD: màn cũ là lcd mỏng , 40 pin...
                                25-11-2024, 21:43
                              • bactho
                                Trả lời cho các bạn giúp mình về file HEX với!!!
                                bởi bactho
                                Bạn vào trang phuclanshop.com ,tìm đến góc kỹ thuật. Tác giả vương khánh hưng nói rất rõ về điều bạn tìm...
                                25-11-2024, 21:21
                              • mèomướp
                                Trả lời cho Xin hỏi về màn hình laptop
                                bởi mèomướp
                                Dạ màn hình lcd đều có thể lai cấy cho nhau được hết ạ. Các loại cáp, bo mạch chuyển đổi lvds rất nhìu, với dòng sony còn phải nhổ cả chip nhớ của main cũ đưa lên gỗ thì mới lắp sang máy khác đc, chưa kể các bệnh về màu... ngay cả...
                                25-11-2024, 20:43
                              Đang tải...
                              X