Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

KEYPAD-LCD

Başlatan YıldırımBey, 10 Mayıs 2012, 20:02:10

YıldırımBey

Aşağıdaki kodlar keypad taramayı yapıyorum fakat keypadden gönderdiğim bilgiyi lcd ye yazdırma da sıkıntı yaşadım ağaşıda gösterdim nerede sıkıntı olduğunu ilgilenen arkadaşlar için teşekkürler.




#include<p18f242.h>
#include <xlcd.h>
#include <delays.h>
#pragma config OSC = XT, PWRT = ON, WDT = OFF, LVP = OFF, DEBUG = OFF
#pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF, CPB = OFF, CPD = OFF
#pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF, WRTB = OFF,WRTC = OFF, WRTD = OFF
#pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF, EBTRB = OFF
#define sutun1 RD0
#define sutun2 RD1
#define sutun3 RD2
#define satir1 RD3
#define satir2 RD4
#define satir3 RD5
#define satir4 RD6


void DelayFor18TCY( void )
{
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
Nop(); Nop(); Nop();
}
void DelayPORXLCD (void)
{
Delay1KTCYx(60); // Delay of 15ms
// Cycles = (TimeDelay * Fosc) / 4
// Cycles = (15ms * 16MHz) / 4
// Cycles = 60,000
return;
}
void DelayXLCD (void)
{
Delay1KTCYx(20); // Delay of 5ms
// Cycles = (TimeDelay * Fosc) / 4
// Cycles = (5ms * 16MHz) / 4
// Cycles = 20,000
return;
}
void delay(void)
{
unsigned int i,j;
for (i=0; i<100; i++)
for(j=0; j<50; j++)
{
}
}
char tus=0;
char keypadoku(){
PORTD=0x00;
PORTDbits.RD3=1;
if(PORTDbits.RD0==1){
delay();
tus=1;}
if(PORTDbits.RD1==1){
delay();
tus=2;}
if(PORTDbits.RD2==1){
delay();
tus=3;}
PORTDbits.RD3=0;
PORTDbits.RD4=1;
if(PORTDbits.RD0==1){
delay();
tus=4;}
if(PORTDbits.RD1==1){
delay();
tus=5;}
if(PORTDbits.RD2==1){
delay();
tus=6;}
PORTDbits.RD4=0;
PORTDbits.RD5=1;
if(PORTDbits.RD0==1){
delay();
tus=7;}
if(PORTDbits.RD1==1){
delay();
tus=8;}
if(PORTDbits.RD2==1){
delay();
tus=9;}
PORTDbits.RD5=0;
PORTDbits.RD6=1;
if(PORTDbits.RD0==1){
delay();
tus=0x0E;}
if(PORTDbits.RD1==1){
delay();
tus=0x00;}
if(PORTDbits.RD2==1){
delay();
tus=0x0F;}
PORTDbits.RD6=0;
return tus;
}
void main(void)
{
char x;
TRISB=0x00;
TRISD=0x07;
OpenXLCD( FOUR_BIT & LINES_5X7 );
while( BusyXLCD() );
PORTB=0x00;
WriteCmdXLCD(0x01);
while( BusyXLCD() );
while(1)
{
x=keypadoku();
if(x>9)                                 ------------------>Bu noktada yapmış olduğum bir hata mı var neden lcd ye yazdıramıyorum keypadden okunan değeri...
putcXLCD(x);
else
putcXLCD(x);
break;}}