_MeRKeZ_
Üye
- Katılım
- 30 May 2011
- Mesajlar
- 44
- Puanları
- 1
- Yaş
- 32
Merhaba arkadaşlar,
Devre üzerinde basılan butonların sonucunu Lcd üzerinde gösteriyorum. Ancak Lcd üzerinde dalgalanma oluyor. İlk önce A ve B portundaki girişler okunuyor daha sonra bunlar LCD'ye yansıyor. İlk satırda herhangi bir sorun yok. İkinci satır dalgalanıyor sadece
Devre üzerinde basılan butonların sonucunu Lcd üzerinde gösteriyorum. Ancak Lcd üzerinde dalgalanma oluyor. İlk önce A ve B portundaki girişler okunuyor daha sonra bunlar LCD'ye yansıyor. İlk satırda herhangi bir sorun yok. İkinci satır dalgalanıyor sadece
Kod:
#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use rs232(baud=2400, xmit=PIN_C6, rcv=PIN_C7, parity=N, stop=1)
#include <benim_LCD.c>
#define Vites_Ileri PIN_B6
#define Vites_Geri PIN_B7
int1 Sol,Sag,Ileri,Geri;
int Vites=1;
int Hareket_Durumu=0;
long Deger_1,Deger_2;
float V1,V2;
#int_RB
void Vites_Belirle()
{
disable_interrupts(int_rb);
if(input(Vites_Ileri))
{
delay_ms(20);
while(input(Vites_Ileri));
Vites++;
if(Vites>5)
Vites=5;
}
else if(input(Vites_Geri))
{
delay_ms(20);
while(input(Vites_Geri));
Vites--;
if(Vites<1)
Vites=1;
}
}
void Deger_Oku()
{
set_adc_channel(0);
delay_us(20);
Deger_1=read_adc();
V1=0.0048828125*Deger_1;
delay_ms(60);
set_adc_channel(1);
delay_us(20);
Deger_2=read_adc();
V2=0.0048828125*Deger_2;
delay_ms(60);
Sol=0;
Sag=0;
Ileri=0;
Geri=0;
}
void Degerlendir()
{
if((V1<1.5) && (V1>=0))
{
Sol=1;
Sag=0;
}
else if((V1<=5) && (V1>3.5))
{
Sol=0;
Sag=1;
}
else
{
Sol=0;
Sag=0;
}
if((V2<1.5) && (V2>=0))
{
Ileri=1;
Geri=0;
}
else if((V2<=5) && (V2>4))
{
Ileri=0;
Geri=1;
}
else
{
Ileri=0;
Geri=0;
}
if((Ileri==1)&&(Sol==1))
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Kuzeybati ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=180;
}
else if((Ileri==1)&&(Sag==1))
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Kuzeydogu ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=120;
}
else if((Geri==1)&&(Sag==1))
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Guneydogu ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=140;
}
else if((Geri==1)&&(Sol==1))
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Guneybati ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=160;
}
else if(Ileri==1)
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Kuzey ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=110;
}
else if(Sag==1)
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Dogu ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=130;
}
else if(Geri==1)
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Guney ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=150;
}
else if(Sol==1)
{
lcd_komut(0x01);
printf(lcd_veri," Yon: Bati ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=170;
}
else if((Sol==0)&&(Sag==0)&&(Ileri==0)&&(Geri==0))
{
lcd_komut(0x01);
printf(lcd_veri,"Arac durduruldu ");
imlec(2,1);
printf(lcd_veri,"Hiz seviyesi: %d",Vites);
Hareket_Durumu=100;
}
}
void Hareket_Yonu_Gonder(int veri)
{
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc('A');
putc('A');
putc('A');
putc(veri);
putc(veri);
putc(veri);
}
void Vites_Bilgisi_Gonder(int veri)
{
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x55);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0x00);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc(0xFF);
putc('B');
putc('B');
putc('B');
putc(veri);
putc(veri);
putc(veri);
}
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_INTERNAL);
set_tris_a(0x03);
set_tris_b(0xC0);
set_tris_c(0x00);
output_a(0x00);
output_b(0x00);
output_c(0x00);
lcd_hazirla();
enable_interrupts(GLOBAL);
while(1)
{
enable_interrupts(int_rb);
Deger_Oku();
Degerlendir();
Hareket_Yonu_Gonder(Hareket_Durumu);
Vites_Bilgisi_Gonder(Vites);
}
}