Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: Chan86 - 19 Kasım 2008, 16:37:22

Başlık: C Hi_Tech 8*32 Kayan yazı dekoder sorunu
Gönderen: Chan86 - 19 Kasım 2008, 16:37:22
Arkadaşlar benim takıldığım yer 1 adet 74hc154 ile 8*16 kayan yazı yapabiliyorum ancak bir kod çözücü daha ekleyip 8*32 kayan yazı yapıp programda değişiklik yapğtığım zaman ya 2 dekoderde paralel çalışıyor ya da sadece bir tanesi çalışıyor.Programı aşağıdadır devre çemasınıda aşağıdaki linkten ulaşabiliirsiniz sitemizde arkadaşımız 40 koz çözücülü yapmış ama anlayamadım.Şimdiden teşekkürler...

#include <pic.h>
#include <delay.c>
#include <stdio.h>
__CONFIG(WDTDIS&LVPDIS&PWRTEN&XT);
main (void)
{
unsigned const char metin[]={0x82,0xFF,0x82};
unsigned char gecici_dizi[16];
unsigned char toplam_sutun;
signed int kayma,deger;
int c,b,d,e,i;
b=0;
c=0;
d=0;
e=0;
TRISA=0;
TRISB=0;
TRISC=0;
TRISD=0;
PORTA=0X00;
PORTB=0X00;
PORTC=0X00;
PORTD=0X00;
ADCON1=0x06;
toplam_sutun=3;
for(;;){
for(i=0;i<=15;i++){
gecici_dizi=0;
}   
for(kayma=-14;kayma<=toplam_sutun;kayma++){
for(i=0;i<=15;i++){
deger=i+kayma;
if(deger<0)gecici_dizi=0;
if(deger>=0&&deger<=toplam_sutun-1)
gecici_dizi=metin[deger];
if(deger>toplam_sutun)gecici_dizi=0;
}
for(i=0;i<=15;i++)
{ //Geçici diziyi görüntüle
PORTD=2;
PORTB=gecici_dizi;
PORTC=i;
DelayMs(1);
if(i==15)
{
for(i=0;i<=15;i++)
{
PORTD=1;
PORTB=gecici_dizi;
PORTC=i;
DelayMs(1);
}}}
}
}
}




Devre Şeması

http://rapidshare.com/files/165330731/kayan_yaz__305_1.dns.DSN.html
Başlık: C Hi_Tech 8*32 Kayan yazı dekoder sorunu
Gönderen: arslan74 - 20 Kasım 2008, 09:47:10
Merhaba,

74HC154 pek sağlıklı bir çözüm olmaz. Onun yerine shift register kullan örneğin 74HC595 gibi. Senin işi cok daha iyi çözecektir.

Selamlar
Başlık: cevap
Gönderen: ibrahimgurler - 20 Kasım 2008, 20:53:31
yazılımda bir değişiklikle 8*32 olur hemde 74hc154 kullana bilirsin. yapman gereken ilk 16 satır okutuluyor sen 16 dan 32 ye kadar bir daha okut geçişi sağmak için ise 74hc00 kullan
SAYGILARIMLA
Başlık: C Hi_Tech 8*32 Kayan yazı dekoder sorunu
Gönderen: Chan86 - 20 Kasım 2008, 21:32:07
1. sorun programda nasıl bir değişikli yapacağım?
2. sorun ise 74hc00 NAND kapısı deilmi nasıl kullanacağım burada?
Başlık: cevap
Gönderen: ibrahimgurler - 24 Kasım 2008, 10:33:16
for(i=0;i<=15;i++)
{
PORTD=1;
PORTB=gecici_dizi;
PORTC=i;
DelayMs(1);
burayının altına birdaha for döngüsü yazmalısın
for(i=16;i<=32;i++)
şeklinde böylelikle 16 dan 32 ye kadar olanını göstemiş olursun

74hc00 ise illk 16 satır ile ikinci 16 satır arasında geçiş sağlayacak yani bir aktifken diğeri pasif , diğeri pasifken diğeri aktif etmeye yarayacak