|
Tài trợ cho PIC Vietnam |
|
Ðiều Chỉnh | Xếp Bài |
01-05-2012, 10:33 AM | #1 |
Đệ tử 1 túi
Tham gia ngày: Aug 2010
Bài gửi: 22
: |
cac anh chi vao xem giup e ve code quet ban phim 4x4 voi a?????
chả là e tìm trên mạng thấy code quét phím 4x4 nhưng e chưa hiểu thuật toán của nó như thế nào???ai vào giúp e với ạ.e cám ơn nhiều ạ.
code e nó đây ạ: #include "C:\Documents and Settings\Administrator\Desktop\Kit 18f4520\Matrix phim\matrix phim + LCD.h" #define LCD_ENABLE_PIN PIN_D5 #define LCD_RS_PIN PIN_D7 #define LCD_RW_PIN PIN_D6 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_C5 #define LCD_DATA6 PIN_D3 #define LCD_DATA7 PIN_D2 #define LCD_TYPE 2 #include <lcd.c> #use fast_io(d) #byte portd=0xf83 #use fast_io(c) #byte portc=0xf82 #use fast_io(b) #byte portb=0xf81 #DEFINE KEYPORT PORTB #DEFINE TRISKEYPORT TRISB #DEFINE BASEKEY PIN_B4 //CAC HAM CO BAN CHO QUET PHIM char xoayTrai(char value);//XOAY VONG MOT BIEN 8 BIT char readKey();//BAN DUNG CAI NAY TRONG CHUONG TRINH DE DOC PHIM BAN NHE void so(long int x) { int i; char m[4]; for(i=0;i<=3;i++) { m[i]=x%10; x=x/10; } // lcd_putc(m[2]+0x30); lcd_putc(m[1]+0x30); // lcd_putc('.'); lcd_putc(m[0]+0x30); } char key=0; int x; void main() { lcd_init(); //set_TRIS_C(0X00);//OUPUT CHO PORTB DE DEBUG //PORTC=0XF0;//DANH DAU XUAT PORT OK //delay_ms(1000); while(1) { key=readKey();//DOC PHIM if(key!=0)x=key-1; //PORTC=key-1;//HIEN THI PHIM NEU CO MOT PHIM NHAN lcd_gotoxy(1,1); so(x); } } 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 //SAU NAY BAN MA HOA BIEN KEY DE HIEN THI RA LED HAY GI GI DO NHE int i;//BIEN DEM VONG set_tris_b(0XF0);//BAN PHAI THIET LAP INPUT VA OUTPUT CHO PORT QUET NHE KEYPORT=0X00;//TEST PORT MOT CHUT O DAY,KO QUAN TRONG LAM temp=0x7F; for( i=0;i<4;i++) { temp=xoayTrai(temp);//XOAY MOT BIT KEYPORT=temp;//DUA RA PORT DE QUET QUA HANG/COT MOI KEY=0;//MINH CHO KEY LUC NAO CUNG BAT DAU BANG 0, NEU KHAC 0 THI LA CO PHIM NHAN if( input_state(BASEKEY)==0 )//PHAI DUNG HAM INPUT_STATE KHONG DUOC DUNG INPUT(PIN) BAN NHE,HAM INPUT(PIN) DUNG LA CO LOI { KEY=i*4+1; break; } else if( input_state(BASEKEY+1)==0 ) { KEY=i*4+2; break; } else if( input_state(BASEKEY+2)==0 ) { KEY=i*4+3; break; } else if( input_state(BASEKEY+3)==0 ) { KEY=i*4+4; break; } } return KEY; } //CUOI FILE CO MOT DONG TRONG thay đổi nội dung bởi: yukul, 01-05-2012 lúc 10:43 AM. |
|
|