![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Sep 2011
Bài gửi: 3
: |
ma trận phím
mình đang làm ma trận phím 4x4 hiển thị lên 2 led 7 đoạn. ban nào lập trình pic tốt thì xem cái code mình bi sai chỗ nào mà sao led bên phải không sáng còn led bên trái lại sáng. mình muốn khi ấn nút nhấn thì nó hiển thị vị trí nút nhấn lên led 7 đoạn.
đây là code và file mô phỏng http://www.mediafire.com/?hwj8z4zq61kph9b #include <16f877a.h> #include <def_877a.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=2000000) #use fast_io(b) const char LED7[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0,0x88,0x83,0xc6,0xa1,0x86,0x8e};//HIEN THI TU SO 0 DEN F //CAC HAM CO BAN CHO QUET PHIM char xoayTrai(char value); char readKey(); int8 chuc,dvi,i; //HAM CHINH void main(void) { char key=0; SET_TRIS_B(0X00);//PORTB LA OUTPUT SET_TRIS_E(0X00);//PORTE LA OUTPUT PORTB=0XFF;//BAN DAU HIEN THI SO 0 while(true) { key=readKey();//DOC PHIM if(key!=0) { if(key<=10) { PORTB=LED7[key-1]; PORTE=0b00000010; delay_ms(1); porte=0b00000000; delay_ms(1); portb=led7[0]; porte=0b00000001; delay_ms(1); porte=0b00000000; delay_ms(1); } else { chuc=key/10; dvi=key%10; PORTB=LED7[chuc+1]; PORTE=0b00000010; delay_ms(1); porte=0b00000000; delay_ms(1); portb=led7[dvi-1]; porte=0b00000001; delay_ms(1); porte=0b00000000; delay_ms(1); } } } } //HAM CON char xoayTrai(char value) { char temp; temp=value; temp=temp>>7; value=value<<1; value=value|temp; return value; } char readKey() { char temp;//LUU GIA TRI XOAY CHO PORT QUET PHIM char key;//LUU GIA TRI KEY DA NHAN int i;//BIEN DEM VONG SET_TRIS_C(0XF0);//BAN PHAI THIET LAP INPUT VA OUTPUT CHO PORT QUET NHE temp=0x80; for( i=0;i<4;i++) { temp=xoayTrai(temp);//XOAY MOT BIT PORTC=temp;//DUA RA PORT DE QUET QUA HANG/COT MOI KEY=0; if( input_state(PIN_C4)==1 )//PHAI DUNG HUNG INPUT(PIN) BAN NHE,HAM INPUT(PIN) DUNG LA CO LOI { KEY=i*4+1; break; } else if( input_state(PIN_C5)==1 ) { KEY=i*4+2; break; } else if( input_state(PIN_C6)==1 ) { KEY=i*4+3; break; } else if( input_state(PIN_C7)==1 ) { KEY=i*4+4; break; } } return KEY; } thay đổi nội dung bởi: thajcobac, 19-02-2012 lúc 12:12 PM. |
![]() |
![]() |
|
|