nemo41
Joined: 29 Jun 2010 Posts: 1
|
scrolling message board but animated problem |
Posted: Tue Jun 29, 2010 1:12 pm |
|
|
I sending working source code. My problem is to animate. Its up to down scroll message. I cant do it. Maybe write anybody?
Source code:
Code: |
#include <18F452.h>
#include <string.h>
#FUSES NOWDT,WDT128,HS,NOPROTECT,NOOSCSEN,NOBROWNOUT,NOPUT,STVREN,NODEBUG,NOLVP,NOWRT,NOWRTD,NOWRTB,NOWRTC,NOCPD,NOCPB,NOEBTR,NOEBTRB
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
//#include <SHT75.c>
//#include <DS1302.c>
#define clock pin_a0 //
#define latch pin_a1 //
#define ds1 pin_a2 //
#use fast_io(a)
#use fast_io(b)
#use standard_io(c)
#use fast_io(d)
#use fast_io(e)
unsigned int16 adres_sec;
char sutun_1[145],sutun_2[145],satir_1[320];
unsigned int yinele,data;
int t=0,degis=0,buton2=0;
char mesaj_1[]={'P','E','A','C','E',' ','I','N',' ','T','H','E',' ','W','O','R','L','D',' ',' ',' ',' '};
char mesaj_2[]={'B','A','R','I','S',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char mesaj_3[]={'P','E','A','C','E',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
char mesaj_4[]={'P','E','A','C','E',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
unsigned int karakter[]={0x3F,0x3F,0x48,0x3F,0x3f,0x00 //A 0
,0x7f,0x49,0x49,0x49,0x36,0x00 //B 6
,0x3e,0x41,0x41,0x41,0x22,0x00 //C 12
,0x7f,0x41,0x41,0x41,0x3e,0x00 //D 18
,0x7f,0x49,0x49,0x49,0x41,0x00 //E 24
,0x7f,0x48,0x48,0x48,0x40,0x00 //F 30
,0x3E,0x41,0x49,0x49,0x2E,0x00 //G 36
,0x7F,0x08,0x08,0x08,0x7F,0x00 //H 42
,0x41,0x7F,0x41,0x00,0x00,0x00 //I 48
,0x11,0x5F,0x11,0x00,0x00,0x00 //İ 54
,0x02,0x01,0x41,0x7e,0x40,0x00 //J 60
,0x7f,0x08,0x14,0x22,0x41,0x00 //K 66
,0x7f,0x01,0x01,0x01,0x01,0x00 //L 72
,0x7f,0x20,0x18,0x20,0x7F,0x00 //M 78
,0x7F,0x10,0x08,0x04,0x7F,0x00 //N 84
,0x3E,0x41,0x41,0x41,0x3E,0x00 //O 90
,0x7f,0x48,0x48,0x48,0x30,0x00 //P 96
,0x3e,0x41,0x45,0x42,0x3d,0x00 //Q 102
,0x7f,0x48,0x4C,0x4a,0x31,0x00 //R 108
,0x32,0x49,0x49,0x49,0x26,0x00 //S 114
,0x40,0x40,0x7F,0x40,0x40,0x00 //T 120
,0x7E,0x01,0x01,0x01,0x7E,0x00 //U 126
,0x1E,0x41,0x01,0x41,0x1E,0x00 //Ü 132
,0x7C,0x02,0x01,0x02,0x7C,0x00 //V 138
,0x7E,0x01,0x0E,0x01,0x7E,0x00 //W 144
,0x63,0x14,0x08,0x14,0x63,0x00 //X 150
,0x70,0x08,0x07,0x08,0x70,0x00 //Y 156
,0x43,0x45,0x49,0x51,0x61,0x00 //Z 162
,0x00,0x00,0x00,0x00,0x00,0x00 //Space 168
,0x3E,0x45,0x49,0x51,0x3E,0x00 //0 174
,0x21,0x7F,0x01,0x00 //1 178
,0x21,0x43,0x45,0x49,0x31,0x00 //2 184
,0x42,0x41,0x51,0x69,0x46,0x00 //3 190
,0x0c,0x14,0x24,0x7f,0x04,0x00 //4 196
,0x72,0x51,0x51,0x51,0x4e,0x00 //5 204
,0x1e,0x29,0x49,0x49,0x06,0x00 //6 210
,0x40,0x47,0x48,0x50,0x60,0x00 //7 216
,0x36,0x49,0x49,0x49,0x36,0x00 //8 222
,0x30,0x49,0x49,0x4a,0x3c,0x00 //9 228
,0x1E,0x61,0x21,0x61,0x1E,0x00 //Ö 234
,0x03,0x03,0x00 //. 237
,0x1B,0x1B,0x00 //: 240
,0x60,0x90,0x90,0x60,0x00 //' 245
,0x09,0x09,0x09,0x09,0x09,0X00 //= 251
,0x08,0x08,0x08,0x08,0X08,0x00 //- 257
,0x00,0x03,0xFF,0xFF,0x03,0x00,0xFE,0xFF,0x03,0x03,0x02,0x00,0x00 //_ 270
,0x00,0x10,0x3F,0xFF,0x00,0x00,0x3F,0xFF,0x60,0x60,0x20,0x00,0x00 //+ 283
,0x60,0x92,0x94,0x68,0x16,0x29 //% 289
,0x49,0x06,0x00 //% 292
,0x11,0x0f,0x11,0x10,0x08,0x00 //r
,0x08,0x08,0x08,0x2a,0x1c,0x08,0x00 //>
,0x00,0x03,0xFF,0xFF,0X03,0x00,0xFE,0xFF,0x03,0x03,0x02,0x00,0x00 //_ 361
,0x00,0x10,0x3F,0xFF,0x00,0x00,0x3F,0xFF,0x60,0x60,0x20,0x00,0x00 //+ 374
};
void data_sec()
{
switch (data)
{
case 'A':
adres_sec=0 ; yinele=5 ; break ;
case 'B':
adres_sec=6 ; yinele=5 ; break;
case 'C':
adres_sec=12 ; yinele=5 ; break;
case 'D':
adres_sec=18 ; yinele=5 ; break;
case 'E':
adres_sec=24 ; yinele=5 ; break;
case 'F':
adres_sec=30 ; yinele=5 ; break;
case 'G':
adres_sec=36 ; yinele=5 ; break;
case 'H':
adres_sec=42 ; yinele=5 ; break;
case 'I':
adres_sec=48 ; yinele=5 ; break;
case 'İ':
adres_sec=54 ; yinele=5 ; break;
case 'J':
adres_sec=60 ; yinele=5 ; break;
case 'K':
adres_sec=66 ; yinele=5 ; break;
case 'L':
adres_sec=72 ; yinele=5 ; break;
case 'M':
adres_sec=78 ; yinele=5 ; break;
case 'N':
adres_sec=84 ; yinele=5 ; break;
case 'O':
adres_sec=90 ; yinele=5 ; break;
case 'P':
adres_sec=96 ; yinele=5 ; break;
case 'Q':
adres_sec=102 ; yinele=5 ; break;
case 'R':
adres_sec=108 ; yinele=5 ; break;
case 'S':
adres_sec=114 ; yinele=5 ; break;
case 'T':
adres_sec=120 ; yinele=5 ; break;
case 'U':
adres_sec=126 ; yinele=5 ; break;
case 'Ü':
adres_sec=132 ; yinele=5 ; break;
case 'V':
adres_sec=138 ; yinele=5 ; break;
case 'W':
adres_sec=144 ; yinele=5 ; break;
case 'X':
adres_sec=150 ; yinele=5 ; break;
case 'Y':
adres_sec=156 ; yinele=5 ; break;
case 'Z':
adres_sec=162 ; yinele=5 ; break;
case ' ':
adres_sec=168 ; yinele=5 ; break;
case '0':
adres_sec=174 ; yinele=5 ; break;
case '1':
adres_sec=180 ; yinele=3 ; break;
case '2':
adres_sec=184 ; yinele=5 ; break;
case '3':
adres_sec=190 ; yinele=5 ; break;
case '4':
adres_sec=196 ; yinele=5 ; break;
case '5':
adres_sec=202 ; yinele=5 ; break;
case '6':
adres_sec=208 ; yinele=5 ; break;
case '9':
adres_sec=226 ; yinele=5 ; break;
case 'Ö':
adres_sec=232 ; yinele=5 ; break;
case '.':
adres_sec=238 ; yinele=2 ; break;
case ':':
adres_sec=241 ; yinele=2 ; break;
case '`':
adres_sec=244 ; yinele=4 ; break;
case '=':
adres_sec=249 ; yinele=5 ; break;
case '-':
adres_sec=255 ; yinele=5 ; break;
case '_':
adres_sec=261 ; yinele=12 ; break;
case '+':
adres_sec=274 ; yinele=12 ; break;
case '%':
adres_sec=286 ; yinele=8 ; break;
case 'r':
adres_sec=295 ; yinele=5 ; break;
case '>':
adres_sec=301 ; yinele=6 ; break;
case '*':
adres_sec=308 ; yinele=12 ; break;
case '/':
adres_sec=321 ; yinele=12 ; break;
default:
adres_sec=164 ; yinele=5 ;
break;
}
}
void Animasyon_Sec()
{
//volatile int buton2=0;
if(input(PIN_E2) & buton2==0)
{
degis++;
buton2=1;
if (degis>2)degis=1;
if (degis<1)degis=2;
output_high(PIN_E1);
write_eeprom(1,degis);
delay_ms(20);
reset_cpu();
}
if(!input(PIN_E2))
{
buton2=0;
output_low(PIN_E1);
}
}
/**************************SÜTUN BİLGİSİ**************************/
void sutun_reg(char str[],int16 b) //sutun_reg() alt programı.
{
unsigned int j=0,i=0; //
unsigned int16 y=0,stn_index; //
for(i=0;i<strlen(str);i++) //
{ //
data=str[i]; //
data_sec(); //
for(j=0;j<=yinele;j++,adres_sec++,y++)//
sutun_1[y]=karakter[adres_sec]; //
} //
for(stn_index=y;stn_index<b;stn_index++)//
sutun_1[stn_index]=0; //
y=0; //
}
void sutun_reg_2(char str[],int16 b) //sutun_reg() alt programı.
{
unsigned int p=0,w=0; //
unsigned int16 u=0,stn_index1; //
for(w=0;w<strlen(str);w++) //
{ //
data=str[w]; //
data_sec(); //
for(p=0;p<=yinele;p++,adres_sec++,u++)//
sutun_2[u]=karakter[adres_sec]; //
} //
for(stn_index1=u;stn_index1<b;stn_index1++)//
sutun_2[stn_index1]=0; //
u=0; //
} //
/*----------------------------------------------------------------------------*/
/*************************goto data display***************************/
void ekran_yaz(int tekrar)
{
int s=0,i=0,j=0;
for(j=0;j<tekrar;j++)
{
for(s=0;s<16;s++)
{
for(i=0;i<96;i++)
{
Animasyon_Sec();
if(s<8)output_bit(ds1,bit_test(sutun_1[i],s));
if(s>=8)output_bit(ds1,bit_test(sutun_2[i],s-7));
output_high(clock);
delay_us(1);
output_low(clock);
}
if(s<8) output_b(0x00);
if(s>=8)output_d(0x00);
output_high(latch);
delay_us(1);
output_low(latch);
if(s<8) output_b(s+1);
if(s>=8 & s<16) output_d(s-6);
}
}
}
/*----------------------------------------------------------------------------*/
/***************************scroll message**************************/
void efekt_1(int16 kay , int mod)
{
int reg_0=0;
int16 n=0,k=0;
for(n=0;n<kay;n++)
{
ekran_yaz(10);
disable_interrupts(INT_RDA);
switch (mod)
{
case 0:
reg_0=sutun_1[0];
for(k=0;k<(kay-1);k++)
sutun_1[k]=sutun_1[k+1];
sutun_1[kay-1]=reg_0;
break;
case 1:
for(k=0;k<(kay-1);k++)
sutun_1[k]=sutun_1[k+1];
sutun_1[kay-1]=0;
break;
default:
break;
}
enable_interrupts(INT_RDA);
}
}
void efekt_2(int16 kay , int mod)
{
int reg_0=0;
int16 z=0,l=0;
for(z=0;z<kay;z++)
{
Animasyon_Sec();
ekran_yaz(1);
disable_interrupts(INT_RDA);
switch (mod)
{
case 0:
reg_0=sutun_2[0];
for(l=13;l<(kay-1);l++)
sutun_2[l]=sutun_2[l+1];
sutun_2[kay-1]=reg_0;
break;
case 1:
for(l=13;l<(kay-1);l++)
sutun_2[l]=sutun_2[l+1];
sutun_2[kay-1]=0;
break;
default:
break;
}
enable_interrupts(INT_RDA);
}
}
void efekt_3(int16 yuk , int mod)
{
int reg_0=0;
int16 a=0,y=0;
for(a=0;a<yuk;a++)
{
ekran_yaz(10);
disable_interrupts(INT_RDA);
switch (mod)
{
case 0:
reg_0=satir_1[0];
for(y=0;y<(yuk-1);y++)
satir_1[y]=satir_1[y+1];
satir_1[yuk-1]=reg_0;
break;
case 1:
for(y=0;y<(yuk-1);y++)
satir_1[y]=satir_1[y+1];
satir_1[yuk-1]=0;
break;
default:
break;
}
enable_interrupts(INT_RDA);
}
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
/* main PROGRAM */
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
void main()
{
int i=0;
/*_______________________PORT GİRİŞ-ÇIKIŞ İŞLEMLERİ___________________________*/
set_tris_a(0x00) ; set_tris_b(0x00) ;//pin_c7(RX) giriş,giğer
set_tris_d(0x00) ; set_tris_e(0x00) ;//pinler çıkış
output_a(0x00) ; output_b(0x00) ;//bütün çıkışları
output_d(0x00) ; output_e(0x00) ;//temizle
/*----------------------------------------------------------------------------*/
setup_adc_ports(NO_ANALOGS); //adc pinleri digital
setup_adc(ADC_OFF); //adc kapalı
setup_psp(PSP_DISABLED); //psp kapalı
setup_spi(SPI_SS_DISABLED); //spı kapalı
setup_wdt(WDT_OFF); //wdt kapalı
setup_timer_0(RTCC_INTERNAL); //timer0 dahili kaynak
setup_timer_1(T1_DISABLED); //timer1 kapalı
setup_timer_2(T2_DISABLED,0,1); //timer2 kapalı
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);//timer3 kapalı
/*----------------------------------------------------------------------------*/
//enable_interrupts(INT_RDA); //rs232 bilgi giriş kesmesi aktif
//enable_interrupts(GLOBAL); //tüm kesmelere izin ver
/*----------------------------------------------------------------------------*/
for(t=0;t<100;t++){
sutun_1[t]=0;
sutun_2[t]=0;
}
//rtc_init();
degis=read_eeprom(1);
//mesaj_1[] dizisine kopyala
while(true)
{
/*********EEPROM'DAN SATIR BİLGİLERİNİ OKUMA VE SUTUN REGISTER'INA YAZMA*******/
// for(i=0;i<4;i++) //dahili eepromdan 55 karakter oku
// mesaj_1[i]=read_eeprom(i);
// char string[10], string2[10];
Animasyon_Sec();
switch(degis)
{
case 1:
sutun_reg(mesaj_1,145); break;
sutun_reg_2(mesaj_2,1);
case 2:
sutun_reg(mesaj_3,145); break;
sutun_reg_2(mesaj_4,1);
}
/*----------------------------------------------------------------------------*/
/***************************MESAJ RUTİNİ***************************/
// ekran_yaz(320);
// efekt_1(300,1);
efekt_2(145,1);
// efekt_3(320,1);
/*----------------------------------------------------------------------------*/
}
} |
_________________ electronic |
|