CCS ile Tuş Takımı ile Sıralı LCD Yazısı

ricetyx

Üye
Katılım
14 May 2009
Mesajlar
142
Puanları
1
Yaş
37
ARKADAŞLAR MERHABA ;

Tuş Takımı ile LCD de sayıları sıralı yazmak istiyorum. yani aşağıdaki kodda , 1 e basınca 1 , 5 e basınca da 5 yazıyor.

Ben sıralı olarak yazmasını istiyorum ne yapabilirim ?

Örnek olarak ; 1987 tuşladığım zaman LCD de 1987 Görmeliyim.

Kod:
#include <16f877.h> #fuses HS,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=20000000)
#define use_portb_lcd TRUE
#include <lcd.c>


#define CONVERT  pin_c0
#define SATIR1   pin_d0
#define SATIR2   pin_d1
#define SATIR3   pin_d2
#define SATIR4   pin_d3
#define SUTUN1   pin_d4
#define SUTUN2   pin_d5
#define SUTUN3   pin_d6
#define SUTUN4   pin_d7


int16 tus=0;
 


//*********** Keypad Tarama Fonksiyonu *********
char buton_oku() // Fonksiyon ismi
{
output_d(0x00);


output_high(SUTUN1);
if (input(SATIR1)){delay_ms(20); tus=0x01;}
if (input(SATIR2)){delay_ms(20); tus=0x04;}
if (input(SATIR3)){delay_ms(20); tus=0x07;}
if (input(SATIR4)){delay_ms(20); tus=0x0F;}
output_low(SUTUN1);


output_high(SUTUN2);
if (input(SATIR1)){delay_ms(20); tus=0x02;}
if (input(SATIR2)){delay_ms(20); tus=0x05;}
if (input(SATIR3)){delay_ms(20); tus=0x08;}
if (input(SATIR4)){delay_ms(20); tus=0x00;}
output_low(SUTUN2);


output_high(SUTUN3);
if (input(SATIR1)){delay_ms(20); tus=0x03;}
if (input(SATIR2)){delay_ms(20); tus=0x06;}
if (input(SATIR3)){delay_ms(20); tus=0x09;}
if (input(SATIR4)){delay_ms(20); tus=0x0E;}
output_low(SUTUN3);


output_high(SUTUN4);
if (input(SATIR1)){delay_ms(20); tus=0x0A;}
if (input(SATIR2)){delay_ms(20); tus=0x0B;}
if (input(SATIR3)){delay_ms(20); tus=0x0C;}
if (input(SATIR4)){delay_ms(20); tus=0x0D;}
output_low(SUTUN4);


return tus;
}
//*********** Keypad Tarama Fonksiyonu *********


void main ( )
{
   setup_spi(SPI_SS_DISABLED);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_adc_ports(NO_ANALOGS); 
   setup_adc(ADC_OFF); 
   set_tris_d(0b11110000);
   lcd_init();
   printf(lcd_putc,"\fBasilan Tus=");


   while(1)
   {
      printf(lcd_putc,"\n%2d",buton_oku());
   }
}
 
Benim sana geçende yazdığım yazılımda zaten istediğin şey oluyor...
 
"\f" komutu LCD ekranını temizliyor ve ana döngüye 4 seferden sonra LCD ye komut göndermesini engellersen işin olur.

Dostum senin esas öğrenmen gereken konular dizin yapıları, string yapıları öğrenmen gerekir.
 


4 seferden kastın nedir yani o durumu nasıl yapabilirim ?
 
Dostum CCS de tahmini 500 kod vardır. Bu kodların tamamına yakını ezberlenilmeden yazılan kodlar pek işe yaramaz. Yani bizim daha çok kod ezberlememiz gerekiyor 5-10 tane kodla program yazılmaz. Programın yardım dosyasındaki tüm kodları öğrenmeye çalış yoksa bu programlar bitmez.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…