View Single Post
Old 11-11-2011, 05:58 AM   #1
kaitoukito
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.
kaitoukito vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn