#include"characters.h"
void port_initialization()
{
volatile char *portF_dir=(volatile char *)0x30;
volatile char *portK_dir=(volatile char *)0x107;
*portF_dir=0x03;
*portK_dir=0x01;
}
void outportF(char data1)
{
volatile char *portF_data= (volatile char *)0x31;
*portF_data=data1 & 0x03;
}
void outportK(char data2)
{
volatile char *portK_data=(volatile char *)0x108;
*portK_data=data2 & 0x01;
}
void clock_pulse()
{
outportK(0x01);
delayMicroseconds(50);
outportK(0x00);
delayMicroseconds(50);
}
void latch_enable()
{
outportF(0x02);
delayMicroseconds(50);
outportF(0x00);
}
void shift(unsigned char address,unsigned char data3)
{
int i;
unsigned char temp;
for(i=0;i<8;i++)
{
outportF(((address<<i)&0x80)>>7);
clock_pulse();
}
for(i=0;i<8;i++)
{
outportF(((data3<<i)&0x80)>>7);
clock_pulse();
}
//Latch_enable();
}
void display_buffer(unsigned char in1[],unsigned char in2[])
{
int i;
for(i=0;i<8;i++)
{
in2[i]=((in2[i+8]&0x80)>>7)|(in2[i]<<1);
in2[i+8]=((in2[i+16]&0x80)>>7)|(in2[i+8]<<1);
in2[i+16]=((in2[i+24]&0x80)>>7)|(in2[i+16]<<1);
in2[i+24]=((in2[i+24])<<1)|(in1[i])&0x01;
}
}
void scroll_text(unsigned char mess[],unsigned char inputs[],int shift)
{
int i;
for(i=0;i<8;i++)
{
mess[i]=((inputs[i]<<shift)&0x80)>>7;
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
int i,j,p=0,h=0,pos=24;
unsigned char buff[8];
char row=0;
unsigned char temp[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
port_initialization();
char *ch[15]={W,e,l,c,o,m,e,space,T,o,space,E,D,N,A};
int length[15]={4,4,2,4,4,4,4,1,4,4,1,4,4,4,4};
outportF(0x00);
outportK(0x00);
while(1)
{
for(i=0;i<100;i++)
{
if(h<15)
{
scroll_text(buff,ch[h],p);
}
else
{
scroll_text(buff,space,0);
}
display_buffer(buff,temp);
for(j=0;j<8;j++)
{
row =row+0x01;
shift(row,temp[j]);
shift(row,temp[j+8]);
shift(row,temp[j+16]);
shift(row,temp[j+24]);
latch_enable();
}
row=0x00;
delay(100);
p=p+1;
if(p>=length[h]){p=0;h=h+1;}
}
h=0;
p=0;
}
}
void loop() {
// put your main code here, to run repeatedly:
}