koolguy
Active Member
Hi,
I have written this code working fine, but i have issue with its shifting that is low frame rate and i want to shift the charter to 2 pixel not 1 as here...
when i make buffer[x]=buffer[x+2] charter get stretch which is not to be done ....
I have written this code working fine, but i have issue with its shifting that is low frame rate and i want to shift the charter to 2 pixel not 1 as here...
when i make buffer[x]=buffer[x+2] charter get stretch which is not to be done ....
C:
#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_HS);
#define _XTAL_FREQ 20000000
#define DAD PORTB
#define RST RC5
#define CLK RC3
#define DATA RC4
extern const char Font2[];
void blit(void), clear(void);
unsigned char leds[66];
unsigned char buffer[33];
unsigned char pow[] = {0,1,2,4,8,16,32,64,128};
display(char *str);
int data( int p);
char b;
main (){
TRISC=0B00000000;
TRISB=0B00000000;
RST=0;
clear();
display(" LED ");
while(1){
for(char d=0;d<50;d++){
buffer[31]=leds[d];
for(char z=0;z<32;z++){
buffer[z]=buffer[z+1];
blit();//for displaying function
}
}
}
}
display(char *str){
int addr;
int z;
while(*str!=0){
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=0;z<5;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=6;z<11;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=12;z<17;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=18;z<23;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=24;z<29;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=30;z<35;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=36;z<41;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=42;z<47;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=48;z<53;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=54;z<59;z++){
leds[z] = Font2[addr+y];
y++;
}
addr = ((int)*str++ - 0x20);
addr *= 5;
int y=0;
for(z=60;z<65;z++){
leds[z] = Font2[addr+y];
y++;
}
}
}
void blit(void){
char u=-1;
b=0b00000001;
for(int r=0;r<8;r++){
DAD=pow[r];
__delay_ms(1);
RST=0;
RST=1;
u++;
for(int a=0;a<32;a++){
DAD=0;
RST=1;
char t,n;
n=buffer[a];
n>>=u;
t=(n & b);
DATA=t;
CLK=1;
__delay_us(1);
CLK=0;
}
}
}
void clear(void){
for(char x=0;x<80;x++){
leds[x]=0;
}
}
Last edited by a moderator: