16 sütun kayan yazı yardım

Başlatan aykut1234, 15 Nisan 2015, 17:03:49

aykut1234

http://www.biltek.tubitak.gov.tr/gelisim/elektronik/17.htm

arkadaşlar bu sitedeki kayan yazı uygulamasını yaptım

https://www.youtube.com/watch?v=SO2NMBe8BKY

bu videodaki gibi de kodları yazdım fakat çalıştıramıyorum sadece Bilim ve Teknik yazısı yazıyor lütfen yardımcı olurmusunuz usburn111a5 programını kullanıyorum osilatör ayarları yapmadığım içim mi çalışmıyor lütfen yardım

aykut1234


ete

Osilatör ayarları ile alakası yok. Devrede bir sorun olduğunu sanmıyorum.
Buraya ne bir şema nede bir program koymuşsunuz. Neye bakıp da soruna cevap vereceğiz?.
Bu yüzden cevap alamıyoruz. Link vermek bu istediklerimi yerine getirmiyor linkte işin teorisi anlatılıyor. Toplu şema toplu program yok yada var belki ama karma karışık. Ne olup bittiği anlaşılmıyor.
Ledlere sabit yazı şeklinde görüntü geldiğine göre devre ve program çalışıyor. Kaydırma bekliyorsan yazdığın programa bakmalısın.
Ete

aykut1234

http://www.biltek.tubitak.gov.tr/gelisim/elektronik/dosyalar/17/devre.jpg

hocam şema bu
kullandığım kodlar;

#include <built_in.h>

main(void)
{
unsigned char gecici_dizi[16];
unsigned char i,a,toplam_sutun;
signed int kayma,deger;
unsigned const char metin[]={
0xFF,0x89,0x89,0x89,0x76,0x00, // B
0x84,0xFD,0x84,0x00,           // İ
0xFF,0x80,0x80,0x80,0x80,0x00, // L
0xFF,0x18,0x24,0x42,0x81,0x00};// K

//Metindeki sütunların sayısını hesapla
toplam_sutun=22; //10x6+5x4=60+20=80

//Port ayarlama işlemleri
TRISB=0;
TRISA=0;
CMCON=0x07;
PORTB=0x00;

for(;;){//Ana döngü
//Geçici diziyi sıfırla
for(i=0;i<=15;i++){
gecici_dizi=0; //Dizi elemanları başlangıçta 0
}

//Kaydırma işlemleri   
for(kayma=-14;kayma<=toplam_sutun;kayma++){

//Metni 16 sütunluk parçalara böl
for(i=0;i<=15;i++){
deger=i+kayma;
if(deger<0)gecici_dizi=0; //metin girişi
if(deger>=0&&deger<=toplam_sutun-1)
gecici_dizi=metin[deger];
if(deger>toplam_sutun)gecici_dizi=0; //metin çıkışı
}

//Tarama işlemleri
for(a=0;a<40;a++){ //Aynı görüntüyü 40 kez tekrarla
for(i=0;i<=15;i++){ //Geçici diziyi görüntüle
PORTB=gecici_dizi; // Veriyi PortB'ye gönder
PORTA=i; // ilgili sütun'u seç
delay_us(200); // 200 mikrosaniye bekle
}}}

}// işlemleri tekrarla
}// Program sonu


aykut1234

hocam bu kodlarla hiçbir çıkış alamıyorum kaydırma vs hiçbirşey yok tek led bile yanmıyor

ete

Ne yazıkki C dilinden fazla anlamıyorum.  Programda bir şeyler eksik gibi gözüküyor. Karekterler geçici dizine aktarılması lazım ama aksine dizi sıfırlanıyor bence öylede kalıyor. Sonra elbette bir şey gösteremiyor içi boş çünki. Anladığım bu hatalıda olabilirim.

Ete

aykut1234

HOCAM BU KODLARI DA DENEDİM AMA BUNDA DA GARİP İFADELER ÇIKIYOR

#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)


int b,i,a; //döngüler için gerekli değişkenler
signed kayma;
int yazi_sutun;//yazının sütün sayısı
int matris_sutun; //matris sutun

char metin[]={
0x81, 0x42, 0x24, 0x18, 0x81, 0x42, 0x24, 0x18, // sola çift ok
0x00,
0x03, 0x07, 0x0E, 0xFC, 0xFC, 0x0E, 0x07, 0x03, //y
0x00,
0xFC, 0xFE, 0x13, 0x11, 0x11, 0x13, 0xFE, 0xFC, //a
0x00,
0x83, 0xC3, 0xE3, 0xF3, 0xDB, 0xCF, 0xC7, 0xC3, //z
0x00,
0xFF, 0xFF, 0x18, 0x3C, 0x66, 0xC3, 0x83, 0x00, //k
0x00,
0x00, 0x00, 0x88, 0xFB, 0xFB, 0x88, 0x00, 0x00, //i
0x00,
0x18, 0x24, 0x42, 0x81, 0x18, 0x24, 0x42, 0x81, // sağa çift ok
};

char kayan[8]; //kayan adında 16 elemanlı sahte dizi oluşturuldu.


void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

yazi_sutun=62;//yazinin toplam sutun sayısı belirleniyor
//yazi1_sutun=64; //diğer yazının sutun sayısı belirleniyor
matris_sutun=16;//kullanılan matrisin sutun sayısı


for(;;)// sonsuz döngü oluşturluyor
{

    for(kayma=-8;kayma<yazi_sutun;kayma++) // sütün sayısı kadar kayma işlemi gerçekleştiriliyor.
  {
      for(b=0;b<matris_sutun;b++)  //kayan adlı dizinin elemanlarını döngü  //sayesinde buluyoruz.
    {     
       kayan=metin[kayma+b]; // kaydırma işlemi hesaplanıyor
          if(kayma+b<0)  // şartlar
           kayan=0;
            if(kayma+b>yazi_sutun)
             kayan=0;
    }

      for(a=0;a<30;a++) //tarama sayısı
    {
        for(i=0;i<matris_sutun;i++) //bulunan değerler teker teker portlara gönderiliyor.
     { 
         output_a(i);
         output_b(kayan);
         delay_us(6000); //kayma hızı
         
  }   //kaydırma işlemi sonu
   }  // portlara gönderme sonu
    } //tarama sayısı sonu
}     //sonsuz döngü sonu
}      // ana program sonu

Powered by EzPortal