74c922 entegresi kullanimi yardimmm

Başlatan fuzulidark, 18 Temmuz 2012, 15:28:39

fuzulidark

arkadaslar keypadi 74c922 entegresi ile kullanmaya calisiyorum. Fakat 1e bastigimda 0, 2de 1,3de 2; 4,5,6 da kendi degerlerini; 7de 8,8de 9, 9da 10; *da 11, 0da 12, #de 13 degerlerini veriyor. normal sartlarda *ve#de 15 degerini vermesi lazim. ne yapmam lazim yardim edebilirmisiniz

Salih

Keypad bağlantılarında hata olabilir.

fuzulidark

arkadaslar 74c922 entegresi ile devremi bu hale getirdim asagidaki kodlarida yazdim;

#include<16f877.h>
#fuses xt,nowdt,noprotect,nobrownout,nolvp,noput,nowrt,nodebug,nocpd
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(c)
#byte portc=0x07

char const keys[]={1,2,3,0,4,5,6,0,7,8,9,0,0x0a,0,0x0b,0};
int i=0;
int digit[]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,0b01111100,0b00000111,0b01111111,0b01101111,
0b01110111,0b01111100};
#use fast_io(d)

#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA_PORT d
#define LCD_TYPE 2
#define LCD_TRIS_LOCATION 88
#include <lcd.c>

#int_ext
void dis_kesme()
{
   i=keys[portc];
}

void main()
{
   setup_psp(psp_disabled);
   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);
   setup_ccp1(ccp_off);
   setup_ccp2(ccp_off);
   
   set_tris_b(0x01);
   set_tris_c(0xff);
   set_tris_d(0x00);
   output_d(0x00);
   
   ext_int_edge(l_to_h);
   
   enable_interrupts(int_ext);
   enable_interrupts(global);
   lcd_init();
   portc=0;
   while(1)
   printf(lcd_putc,"\f %d",i);
   
}


devremde;


benim asil sormak istedigim sey ise, ben 8 tane 2 basamakli sayi girip bu sayilarla islem yapmak istiyorum. analog switcher olarak kullanacagim bu devreyi keypadden 12 sayisini girdigimde 1. giris 2. devre seklinde islem yapacagim. o yuzden 8 tane 2 basamakli sayi girmem gerekiyor. ve her sayiyi girdikten sonra # tusuna basinca diger isleme gecmesini istiyorum. Nasil yapabilirim 2 haftadir ugrasiyorum cozum bulamadim...

drmp

projenizden biraz daha açıklayıcı bilgi verebilirmisiniz

mustafa_cmbz

puff bu entegre çok pahalı yaf ne gerek var bunla key-pad kullanmaya..

ozgurelkt

#5
tus=(tus*10)+i;  gibi bir ifade yazarsan tus iki basamaklı bir sayı olacaktır. if ile # tuşuna basılıp basılmadığını kontrol edersin.basılmıssa tus değerini başka bir değişkene atarsın.  bölme işlemi ile girilen ilk sayısı ,%  ile kalan sayısı bulursun.switch-case ile ne yaptırmak istiyorsan o değerleri atarsın .ilk aklıma gelen bu oldu. Umarım faydası olur. ;)

fuzulidark

Alıntı yapılan: drmp - 10 Ağustos 2012, 19:02:01
projenizden biraz daha açıklayıcı bilgi verebilirmisiniz


16f877 entegresinde 8 tane analog bacak bulunuyor bn bu analog bacaklara standart olarak kullanilabilecek 2 devre koyacagim. fakat 2 devreninde kurulumu birbirinden farkli yani beslemeleri vs. bu nedenle her analog girise analog switch koyacagim koyacagim switch'i keypadden girecegim tus ile kontrol edecegim. diyelimki 11 girdim birinci analog giriste ilk devre kullanicalak 12 girildiginde  birinci analog giriste 2. devre kullanilacak.  ve 2. devre kullanildiginda kullanilacak sicaklik degerinin minimum ve max degerlerini girmem gerekecek. ben bu islemi 8 girisede uygulayacagim. donanim olarak tasarladim devremi fakat keypad baglantisi kaldi. keypad hakkinda yeterli bilgim olmadigindan da sorun yasiyorum. Yardimci olursaniz cok sevinirim.