74hc595 ve kayan yazı sorunu

Başlatan satilla, 11 Aralık 2010, 00:24:30

satilla

günlerdir sacma sapan bir kayan yazı için saç baş yoluyorum protonda yazdıgım kodda sorun yok ancak inadına hi techte yazmaya calısıyorum, tabiki de
sorundan bdaska elime birşey geçmiyor

#include <pic.h>
#include "delay.h"



char ara;
unsigned char a;
unsigned char i;
unsigned char say=0;
unsigned char tarama[]={0b00000001,0b00000010,0b00000100,0b00001000,0b00010000,0b00100000,0b01000000,0b10000000};
const unsigned char A[]={0b00100000,0b01001000,0b10001000,0b11111000,0b10001000,0b10001000,0b10001000,0b10001000};

bir(){
RA3=1;DelayUs(10);
RA1=1;DelayUs(10);RA1=0;DelayUs(10);

}
sifir(){
RA3=0;DelayUs(10);
RA1=1;DelayUs(10);RA1=0;DelayUs(10);
}


void main(void){
TRISB=0x00;
TRISA=0x00;
PORTB=0x00;
PORTA=0x00;
CMCON=0X07;

RA2=1;
DelayMs(250);DelayMs(250);


while(1){



for(say=0;say<8;say++){
PORTB=tarama[say];
DelayMs(1);

if(say==0){

sifir();
sifir();
bir();
bir();
bir();
sifir();
sifir();
sifir();

}


if(say==1){

sifir();
bir();
sifir();
sifir();
sifir();
bir();
sifir();
sifir();

}

if(say==2){
sifir();
bir();
sifir();
sifir();
sifir();
bir();
sifir();
sifir();


}

if(say==3){
sifir();
bir();
bir();
bir();
bir();
bir();
sifir();
sifir();


}

if(say==4){
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();



}
if(say==5){
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();



}

if(say==6){
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
}
if(say==7){

sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();
sifir();


}




RA0=1;DelayUs(10);RA0=0; //acıklama




}
}
}


aslında her byte veriyi bitlerini test edip shift registera yollamayı deniyorum derleme yapıyorum ancak isiste çalışmıyor bende bu yyüzden tek tek yazdım sırf çalıştıgını görmek için

şu anda if==0 yazdıgım yerden baslaması gerekirken en üst satırın nedense bir sıra asagıdan baslıyor örn; A harfi en altta olması gereken satır en üstte baslıyor

ikinci sorun bi tane daha shift seri bagladıgımda bu defa yine bi sıra kayması yani A harfi bi sira daha asagıdan baslıyor ilk shift verilerine göre
kafayı yedirtecek bu lanet şey lütfen yardm edin arkadaşlar

şimdiden tşk

X-Fi

hocam gördüğüm tek hata bir ve sıfır fonksiyonlarını void olarak tanıtmamışsınız başkada bişey yok mantık hemen hemen aynı çalışması lazım aslında hata ney tam olarak anlamadım.

hi-tech de shift register ı şöyle çalıştırıyorum.

void gonder_595 (unsigned char veri)
{
		for(i=0; i<8; i++)
			{	 				 			
			if(veri&0x80)Dta=1; else Dta=0;
			CLK=1;  							 
			veri<<=1;				  	 
			CLK=0; 	    				
			}
	ST_CP=1;    
	NOP();
	ST_CP=0;
}
http://www.coskunergan.dev/    (Yürümekle varılmaz, lakin varanlar yürüyenlerdir.)

satilla

#2
http://hotfile.com/dl/88596652/f6897f1/Yeni_WinRAR_arivi.rar.html

hocam isis çizimide burda

sorun if==0 daki satır bilgisi sanki if==1 miş gibi hareket ediyor yani ilk gelmesi gerekn veri 2. satırda görünüyor
bu doğrultuda if==7 deki veri ilk satırı oluşturuyor

ayrıca sizin ayzdıgınız kodda veriyi 1 bit sola kaydırdıgınızı gördüm bu bir kayan yazı uygulaması oldugu içinmi yoksa baska bir amaç için mi?


Düzenleme:

hocam şimdi farketettim portb ilk taramayı yptıgında shiftte veri olmuyor bu nedenle ilk veri görünmüyor sorunu taramayı shifti aktif ettikten sonra yazarak halletim ancak!
isiste bazı satırları iki defa aktif oluyor ve yatay çizgiler çift sıra çıkıyor ayrıcam hala ikinci shiftte verinin bir satır asagıdan, üçüncüde 2 satır asagıdan baslamasını anlayamadım

satilla

az önce 74hc154 ile yaptım bi kayan yazı ilk enerji verdigim anda çalıştı

hala 74hc595 ile uygulama yapamadım yani hala fikir bekliyorum değerli hocalarım