View Single Post
Old 01-05-2012, 10:33 AM   #1
yukul
Đệ 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
Hình Kèm Theo
File Type: jpg phim 4x4.JPG (133.3 KB, 20 lần tải)

thay đổi nội dung bởi: yukul, 01-05-2012 lúc 10:43 AM.
yukul vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn