Merhaba
Devremde 6 adet butonum var. bu butonlardan birine bastıgım zaman ilgli case yapısı çalışacak. ancak devrede a,b, c portlarını set tris komtuyla tanımladıgımız zaman bütün b portunun tümü çıkş 5 volt veriyor. ben sadece butona bsstıgımız zman istediğimiz pinleri çıkış vermesini istiyorum.
(http://s10.postimg.cc/t0tp8ngr9/image.jpg) (http://postimg.cc/image/t0tp8ngr9/)[/code]
# include <16f877.h>
# fuses xt,nowdt,noprotect
# use delay(clock=4m)
# use fast_io(a)
# use fast_io(b)
# use fast_io(c)
# use fast_io(d)
# byte portb=6
# byte porta=5
# define buton0 input(pin_b0)
# define buton1 input(pin_b1)
# define buton2 input(pin_b2)
# define buton3 input(pin_b3)
# define buton4 input(pin_b4)
# define buton5 input(pin_b5)
int giris;
void main(){
set_tris_a(0x00);
set_tris_b(0xff);
set_tris_c(0x00);
set_tris_d(0xf0);
while(true){
giris=input_b();
giris=giris&&0x00111111;
porta=giris;
switch (portb){
case 3e :
output_c(0b00000001);
output_d(0x01);
/*
delay_ms(100);
output_d(0b00000010);
output_c(0xf5);
delay_ms(10);
output_d(0b00000100);
output_c(0xf6);
delay_ms(10);
output_d(0b00001000);
output_c(0xf5);
delay_ms(10);
output_d(0b00010000);
output_c(0x03);
delay_ms(10);
*/
break;
}}}
Buradaki kodlarla bu işleri yaptığına emin misin.Kodlarda çok fazla eksik olduğu görülüyor. İsis şemasını ve tam olarak ne istediğini yazarsan kodları yeniden düzenliyebilirim.
b portuna 0b00111110 bilgisi geldiği zaman ortak anot displeyde A karakteei oluşacak. b0 pini 1 oldugunda karakter görünmeyecek. isi şeması resim olarak yüklü
# include <16f877.h>
# fuses xt,nowdt,noprotect
# use delay(clock=4000000)
# use fast_io(a)
# use fast_io(b)
# use fast_io(c)
# use fast_io(d)
# byte portb=6
# byte porta=5
# define buton0 input(pin_b0)
# define buton1 input(pin_b1)
# define buton2 input(pin_b2)
# define buton3 input(pin_b3)
# define buton4 input(pin_b4)
# define buton5 input(pin_b5)
int giris,k;
void main(){
set_tris_a(0x00);
set_tris_b(0xff);
set_tris_c(0x00);
set_tris_d(0xf0);
output_c(0x00);
output_d(0x00);
while(true){
giris=input_b();
k=giris && 0b00111111;
switch (5){
case 5 :
output_c(0xfe);
output_d(0x01);
delay_ms(10);
output_c(0x01);
output_d(0x02);
delay_ms(10);
output_c(0x01);
output_d(0x04);
delay_ms(10);
output_c(0x01);
output_d(0x08);
delay_ms(10);
output_c(0xfe);
output_d(0x1e);
delay_ms(10);
break;
}}}
@bbs2006 arkadaşım,özelden attığın mesaja göre 6 buton kullanılması mı gerekiyor. Benim kendi yaptığım çalışma var.Aşağıda videosu olan çalışma.İşine yararsa kod ve simülasyonu gönderebilirim.Ya da istediğin değişiklikleri söyle beraber ekleyebiliriz.
https://youtu.be/9ni9RLTV30E
Sizin yapmış oldugunuz kodları gönderebilrmsiniz. ben onların üzerinden gerekli ayarlamaları yapmaya çalışırım. teşekkür ederim.
CCS C kodu ve isis simülasyonu yükledim.Başarılar dilerim.
http://s3.dosya.tc/server/x7ee2a/Matris_LED_Display_Uygulamasi.rar.html (http://s3.dosya.tc/server/x7ee2a/Matris_LED_Display_Uygulamasi.rar.html)
Merhaba, bir konuda nacizane yardımlarınıza ihtiyacım var, ccs c ye yeni başladığımdan dolayı çözmek de zorlanıyorum. Yardımlarınız için şimdiden çok teşekkür ediyorum
Yapmak istediğim konu ise
628 in a portunu giriş yapıp ilk dört pinine buton bağlamak istedim fakat bu seferde ses çalışmadı
A0 pini low olduğu sürece, B0 daki ses çalışacak, ve B1 e bağlanacak led yanıp sönecek
A1 pini low olduğu sürece, B0 daki ses çalışacak, ve B2 ye bağlanacak led yanıp sönecek
A2 pini low olduğu sürece, B0 daki ses çalışacak, ve B1 ve B2 ledleri yanıp sönecek.
Konuda en çok takıldığım yerler, bir butonu tanımlarken, butona basınca şu döngüdeki
(örneğin: void deneme(void) içerisindeki while deneme(1) döngüsüne git butonu bırakınca normal çalışmaya devam et gibi )
olayı yapmaya başla bırakınca şu kısımdan deva et mantığını kavrayamadım,
#include <16F628A.h>
#FUSES NOWDT, INTRC_IO, NOPUT, NOPROTECT, NOBROWNOUT, NOMCLR, NOLVP, NOCPD
#use delay(clock=4000000)
#include <C:\Users\toshiba\Desktop\Ses Uygulaması\Ses Uygulaması\TONES.c> // TONES.c dosyası programa ekleniyor
// Ses tonlarından oluşan dizi tanımlanıyor
const char muzik[2]={Gb_NOTE[1],Gb_NOTE[2] };
int k; // Tam sayı tipinde değişken tanımlanıyor
//******************* ANA PROGRAM FONKSİYONU *******************
void generate_tone (void)
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_1(T1_DISABLED); // T1 zamanlayıcısı devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
setup_CCP1(CCP_OFF); // CCP1 birimi devre dışı
setup_CCP2(CCP_OFF); // CCP2 birimi devre dışı
output_low(pin_b0); // RB0 çıkışı ilk anda lojik-0
while(1) // Sonsuz döngü
{
for(k=0;k<2;k++)
{
generate_tone(muzik[k],100); delay_ms(500); // Sırayla muzık[] dizisindeki
} // tonlar oluşturuluyor
}
}
İsis simülasyonu yuklersen uzerinde çalışırım.
Böyle bir şey işinize yaramaz mı?
Kendinize göre kodlarınızı düzenlersiniz...
https://www.picproje.org/index.php/topic,58766.msg453817.html#msg453817 (https://www.picproje.org/index.php/topic,58766.msg453817.html#msg453817)
Konu çözüldü