#include <htc.h>
__CONFIG(LVP_OFF & BOREN_OFF & PWRTE_ON & WDTE_OFF & FOSC_XT);
#define _XTAL_FREQ 4000000
#define DAD PORTB
#define RST RD7
#define CLK RD4
#define DATA RD5
#define D 1
int data(int a);
int v;
main (){
TRISB=0B00000000;
TRISD=0B00000000;
int row;
int b[6][7]= {
{0x00, 0x0e, 0x01, 0x0d, 0x13, 0x13, 0x0d},//font
{0x0e, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0e,} ,
{0x04, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x0e,} ,
{0x0e, 0x11, 0x01, 0x02, 0x04, 0x08, 0x1f,} ,
{0x0e, 0x11, 0x01, 0x06, 0x01, 0x11, 0x0e,} ,
{0x02, 0x06, 0x0a, 0x12, 0x1f, 0x02, 0x02,},
};
while(1){
DAD=0X00;
int a;
v=15;
for(row=0;row<6;row++)// for getting new character fromnext row
{
for(int o =0;o<15;o++)// for scrolling/moving the font by changing the bit store in 164
{
v--;
for (int k=0;k<50;k++)// just for holdong the character on led for mSec
{
a=b[row][0];
data(a);
DAD=0B10000000;
__delay_ms(D);
a=b[row][1];
data(a);
DAD=0B01000000;
__delay_ms(D);
a=b[row][2];
data(a);
DAD=0B00100000;
__delay_ms(D);
a=b[row][3];
data(a);
DAD=0B00010000;
__delay_ms(D);
a=b[row][4];
data(a);
DAD=0B00001000;
__delay_ms(D);
a=b[row][5];
data(a);
DAD=0B00000100;
__delay_ms(D);
a=b[row][6];
data(a);
DAD=0B00000010;
__delay_ms(D);
}
}
}
}
}
int data(int a)// serial to // converter for 164
{
RST=0;
RST=1;
DAD=0X00;
for (int k=0; k<v;k++) { //send 8 bits
CLK = 0; // serial clock low
if ((a & 0x01)==1) DATA = 1;
else DATA =0;
CLK =1;
a >>=1;
} }