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

                              Đang tải...
                              X