yyoollccuu
Üye
- Katılım
- 29 Eyl 2008
- Mesajlar
- 51
- Puanları
- 1
- Yaş
- 37
merhaba arkadaşlar...bir tuş takımı ve lcd ile bir menu oluşturmaya çalışıyorum....deneme aşamasında uydurma bir menuyle işe koyuldum...ancak bir sıkıntım var...kodu da ekliyorum.bu işte iyi olanlar mutlaka bir bakışta sorunu görecek ve bana yardım edebilecektir diye ümit ediyorum![Gülümse :) :)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
şimdi gelelim soruna.# tuşuna basınca menuye giriyoruz.menüde 4 secenek var.diyelim ki 1'e bastık ve ışık secenegini sectik. ekrana 1-AC ve 2-KAPA yazısı yazdırımalı. burda tekrardan 1'e basınca yeniden koda göre ekranda başka bir şey yazmalı. ancak böyle olmuyor. ben ilk 1e bastıktan sonra AC KAPA yazısı görülmüyor,direk 1-dldl yazısını görüyorum. tuş taramada bir sıkıntım var sanırım ama çözemedim ne yazık ki. 2 kez üst üste 1'e basınca görünsün istiyorum 1-dldl yazısı ekranda, ama olmuyor.
biraz karışık oldu ama umarım derdim anlaşılmıştır. yardımlarınızı bekliyorum.çünkü bu sorunu halledemediğim sürece bir ilerleme kaydedemeyecegim![Üzgün :( :(](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
şimdi gelelim soruna.# tuşuna basınca menuye giriyoruz.menüde 4 secenek var.diyelim ki 1'e bastık ve ışık secenegini sectik. ekrana 1-AC ve 2-KAPA yazısı yazdırımalı. burda tekrardan 1'e basınca yeniden koda göre ekranda başka bir şey yazmalı. ancak böyle olmuyor. ben ilk 1e bastıktan sonra AC KAPA yazısı görülmüyor,direk 1-dldl yazısını görüyorum. tuş taramada bir sıkıntım var sanırım ama çözemedim ne yazık ki. 2 kez üst üste 1'e basınca görünsün istiyorum 1-dldl yazısı ekranda, ama olmuyor.
biraz karışık oldu ama umarım derdim anlaşılmıştır. yardımlarınızı bekliyorum.çünkü bu sorunu halledemediğim sürece bir ilerleme kaydedemeyecegim
Kod:
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(d) //Port yönlendirme komutları B portu için geçerli
#define use_portd_lcd TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor
#define sut1 pin_b1 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2 pin_b2 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3 pin_b3 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sat1 pin_b4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2 pin_b5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3 pin_b6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4 pin_b7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor
char tus; // karakter tipinde değişken tanımlanıyor
// Tustakimi Tarama Fonksiyonu
char keypad_oku()
{
output_b(0x00); // D portu çıkışı sıfırlanıyor
output_high(sat1); // 1. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=1; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=2; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=3; }
output_low(sat1); // 1. satır lojik-0 yapılıyor
output_high(sat2); // 2. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=4; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=5; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=6; }
output_low(sat2); // 2. satır lojik-0 yapılıyor
output_high(sat3); // 3. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=7; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=8; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=9; }
output_low(sat3); // 3. satır lojik-0 yapılıyor
output_high(sat4); // 4. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=0xE; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=0; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=0xF; }
output_low(sat4); // 4. satır lojik-0 yapılıyor
return tus;
}
void main ( )
{
set_tris_d(0x00); // B portu komple çıkış
set_tris_b(0x0F); // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş
lcd_init(); // LCD hazırlanıyor
printf(lcd_putc,"\f#->menu"); // LCD'ye string yazdırılıyor
while(1)
{
[B] keypad_oku();
if(tus!='\0')//tusa basilmissa
{
if (tus==0xF)
{
lcd_gotoxy(1,1);
lcd_putc(" 1-ISIK 2-ISI\n 3-BAHCE 4-FIRIN");
keypad_oku();
if (tus==1)
{
keypad_oku();
lcd_gotoxy(1,1);
lcd_putc(" \f 2-AC\n 3-KAPA ");
keypad_oku(); if (tus==1)
{
lcd_gotoxy(1,1);lcd_putc("1-dldl ");
} } }}[/B]
}
}