|
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 |
11-11-2011, 05:58 AM | #1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2010
Bài gửi: 3
: |
Các bác vào xem giùm em...!!!! Buzzz
Em có bài tập quét ma trận phím LCD 36 phím,trong khi 25 phím thì e quét bình thường,qua 36 phím thì nó ko chịu quét đúng mà xảy ra nhiễu,em cũng ko hỉu tại sao...
đây là code chương trình của em.... #include <16f877a.h> #FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD #use delay(clock=20000000) #include <lcd_lib_4bit.c> #define RS RD2 #define E RD3 #define D4 RD4 #define D5 RD5 #define D6 RD6 #define D7 RD7 int8 enable=0,a=0; int16 pos=0xBF; #INT_RTCC void ngat_timer0() { set_timer0(6); a=a+1; if(a>=10) { a=0; enable=enable+1; if(enable==1) { output_low(pin_B2); output_high(pin_B3); output_high(pin_B4); output_high(pin_B5); output_high(pin_B6); output_high(pin_B7); if((input(pin_C0)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"A"); LCD_putchar(0); ; } if((input(pin_C1)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"G"); LCD_putchar(0); } if((input(pin_C2)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"M"); LCD_putchar(0); } if((input(pin_C3)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"S"); LCD_putchar(0); } if((input(pin_C4)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"Y"); LCD_putchar(0); } if((input(pin_C5)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"4"); LCD_putchar(0); } } if(enable==2) { output_low(pin_B3); output_high(pin_B2); if((input(pin_C0)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"B"); LCD_putchar(0); } if((input(pin_C1)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"H"); LCD_putchar(0); } if((input(pin_C2)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"N"); LCD_putchar(0); } if((input(pin_C3)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"T"); LCD_putchar(0); } if((input(pin_C4)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"Z"); LCD_putchar(0); } if((input(pin_C5)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"5"); LCD_putchar(0); } } if(enable==3) { output_low(pin_B4); output_high(pin_B3); if((input(pin_C0)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"C"); LCD_putchar(0); } if((input(pin_C1)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"I"); LCD_putchar(0); } if((input(pin_C2)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"O"); LCD_putchar(0); } if((input(pin_C3)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"U"); LCD_putchar(0); } if((input(pin_C4)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"0"); LCD_putchar(0); } if((input(pin_C5)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"6"); LCD_putchar(0); } } if(enable==4) { output_low(pin_B5); output_high(pin_B4); if((input(pin_C0)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"D"); LCD_putchar(0); } if((input(pin_C1)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"J"); LCD_putchar(0); } if((input(pin_C2)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"P"); LCD_putchar(0); } if((input(pin_C3)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"V"); LCD_putchar(0); } if((input(pin_C4)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"1"); LCD_putchar(0); } if((input(pin_C5)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"7"); LCD_putchar(0); } } if(enable==5) { output_low(pin_B6); output_high(pin_B5); if((input(pin_C0)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"E"); LCD_putchar(0); } if((input(pin_C1)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"K"); LCD_putchar(0); } if((input(pin_C2)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"Q"); LCD_putchar(0); } if((input(pin_C3)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"W"); LCD_putchar(0); } if((input(pin_C4)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"2"); LCD_putchar(0); } if((input(pin_C5)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"8"); LCD_putchar(0); } } if(enable==6) { output_low(pin_B7); output_high(pin_B6); if((input(pin_C0)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"F"); LCD_putchar(0); } if((input(pin_C1)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"L"); LCD_putchar(0); } if((input(pin_C2)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"R"); LCD_putchar(0); } if((input(pin_C3)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"X"); LCD_putchar(0); } if((input(pin_C4)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"3"); LCD_putchar(0); } if((input(pin_C5)==0)) { pos=pos+1; LCD_putchar(1); LCD_SetPosition(pos); printf(LCD_putchar,"9"); LCD_putchar(0); enable==0; } } if (pos>=0xCF) { LCD_putcmd(0x84); LCD_putchar("FULL!!!!!"); delay_ms(1); LCD_putcmd(0xC0); LCD_putchar(" "); LCD_putcmd(0x84); LCD_putchar("PRESS KEY"); pos=0xBF; } } } void main() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8); set_timer0(6); enable_interrupts(INT_RTCC); enable_interrupts(GLOBAL); LCD_init(); LCD_putcmd(0x83); LCD_putchar("VAA-DV1-K2"); LCD_putcmd(0xC0); LCD_putchar("N.D.Q.THAI"); // delay_ms(1000);//dung de nap chuong trinh thuc te Delay_ms(50);//dung chay mo phong LCD_putcmd(0x01); LCD_putcmd(0x83);//xuat ra hang 1 vi tri 3 LCD_putchar("WELCOME!!!"); LCD_putcmd(0xC0);//xuat ra dau dong 2 LCD_putchar("LCD1602xKEYPAD25 "); LCD_putcmd(0x01);//lenh xoa LCD_putcmd(0x84); LCD_putchar("PRESS KEY"); DELAY_US(20); output_B(0b11111111); output_high(pin_C6); while(1) { ; } } thay đổi nội dung bởi: kaitoukito, 11-11-2011 lúc 06:15 AM. |
|
|