AtomSoft
Well-Known Member
Ok i got a new matrix up and its pretty cool. The issue im having is that it shows all data until the letter "T" im not sure why? Everything else seems to work and the letters and number and symbols show fine ... (upto "T") then it jumps to the beginning and everything looks shifted or not in places.
Here is the complete code so far.
Im using 2 8 bit shift registers to control columns in 2 digits. Might alter that later to fit 3 digits. But anyway here is the code:
EDIT: The above in bold is new.
Here is the complete code so far.
Im using 2 8 bit shift registers to control columns in 2 digits. Might alter that later to fit 3 digits. But anyway here is the code:
Code:
#include <p18f448.h>
#include <stdio.h>
#include <delays.h>
#pragma config WDT = OFF, LVP = OFF, OSC = HS
unsigned rom char mytxt[] = {
0x00, 0x00, 0x00, 0x00, 0x00, // Code for char
0x00, 0x00, 0x5F, 0x00, 0x00, // Code for char !
0x00, 0x0E, 0x00, 0x0E, 0x00, // Code for char "
0x14, 0x3E, 0x14, 0x3E, 0x14, // Code for char #
0x00, 0x2E, 0x6B, 0x3A, 0x00, // Code for char $
0x26, 0x16, 0x08, 0x34, 0x32, // Code for char %
0x36, 0x49, 0x49, 0x76, 0x60, // Code for char &
0x00, 0x06, 0x00, 0x00, 0x00, // Code for char '
0x00, 0x1C, 0x22, 0x41, 0x00, // Code for char (
0x00, 0x41, 0x22, 0x1C, 0x00, // Code for char )
0x22, 0x14, 0x6B, 0x14, 0x22, // Code for char *
0x08, 0x08, 0x3E, 0x08, 0x08, // Code for char +
0x00, 0x00, 0x58, 0x38, 0x00, // Code for char ,
0x00, 0x08, 0x08, 0x08, 0x00, // Code for char -
0x60, 0x60, 0x00, 0x00, 0x00, // Code for char .
0x20, 0x10, 0x08, 0x04, 0x02, // Code for char /
0x3E, 0x45, 0x49, 0x51, 0x3E, // Code for char 0
0x00, 0x42, 0x7F, 0x40, 0x00, // Code for char 1
0x72, 0x49, 0x49, 0x49, 0x46, // Code for char 2
0x22, 0x41, 0x49, 0x49, 0x36, // Code for char 3
0x18, 0x14, 0x12, 0x7F, 0x10, // Code for char 4
0x2F, 0x49, 0x49, 0x49, 0x31, // Code for char 5
0x3E, 0x49, 0x49, 0x49, 0x32, // Code for char 6
0x01, 0x71, 0x09, 0x05, 0x03, // Code for char 7
0x36, 0x49, 0x49, 0x49, 0x36, // Code for char 8
0x26, 0x49, 0x49, 0x49, 0x3E, // Code for char 9
0x00, 0x00, 0x36, 0x36, 0x00, // Code for char :
0x00, 0x00, 0x5B, 0x3B, 0x00, // Code for char ;
0x08, 0x14, 0x22, 0x41, 0x00, // Code for char <
0x14, 0x14, 0x14, 0x14, 0x14, // Code for char =
0x00, 0x41, 0x22, 0x14, 0x08, // Code for char >
0x02, 0x01, 0x59, 0x09, 0x06, // Code for char ?
0x0F, 0x05, 0x1F, 0x70, 0x10, // Code for char @
0x7E, 0x09, 0x09, 0x09, 0x7E, // Code for char A
0x7F, 0x49, 0x49, 0x49, 0x36, // Code for char B
0x3E, 0x41, 0x41, 0x41, 0x22, // Code for char C
0x7F, 0x41, 0x41, 0x22, 0x1C, // Code for char D
0x7F, 0x49, 0x49, 0x49, 0x41, // Code for char E
0x7F, 0x09, 0x09, 0x09, 0x01, // Code for char F
0x3E, 0x41, 0x49, 0x49, 0x3A, // Code for char G
0x7F, 0x08, 0x08, 0x08, 0x7F, // Code for char H
0x00, 0x00, 0x7F, 0x00, 0x00, // Code for char I
0x30, 0x40, 0x40, 0x3F, 0x00, // Code for char J
0x7F, 0x08, 0x14, 0x22, 0x41, // Code for char K
0x7F, 0x40, 0x40, 0x40, 0x40, // Code for char L
0x7E, 0x01, 0x06, 0x01, 0x7E, // Code for char M
0x7F, 0x02, 0x1C, 0x20, 0x7F, // Code for char N
0x3E, 0x41, 0x41, 0x41, 0x3E, // Code for char O
0x7E, 0x09, 0x09, 0x09, 0x06, // Code for char P
0x3E, 0x41, 0x51, 0x21, 0x5E, // Code for char Q
0x7E, 0x09, 0x19, 0x29, 0x46, // Code for char R
0x26, 0x49, 0x49, 0x49, 0x32, // Code for char S
0x01, 0x01, 0x7F, 0x01, 0x01, // Code for char T
0x3F, 0x40, 0x40, 0x40, 0x3F, // Code for char U
0x1F, 0x20, 0x40, 0x20, 0x1F, // Code for char V
0x3F, 0x40, 0x30, 0x40, 0x3F, // Code for char W
0x41, 0x22, 0x1C, 0x22, 0x41, // Code for char X
0x01, 0x02, 0x7C, 0x02, 0x01, // Code for char Y
0x61, 0x51, 0x49, 0x45, 0x43, // Code for char Z
0x00, 0x7F, 0x41, 0x41, 0x41, // Code for char [
0x02, 0x04, 0x08, 0x10, 0x20, // Code for char BackSlash
0x41, 0x41, 0x41, 0x7F, 0x00, // Code for char ]
0x08, 0x04, 0x02, 0x04, 0x08, // Code for char ^
0x40, 0x40, 0x40, 0x40, 0x40, // Code for char _
0x03, 0x03, 0x06, 0x00, 0x00, // Code for char `
0x00, 0x20, 0x54, 0x54, 0x38, // Code for char a
0x7E, 0x50, 0x50, 0x20, 0x00, // Code for char b
0x38, 0x44, 0x44, 0x28, 0x00, // Code for char c
0x00, 0x20, 0x50, 0x50, 0x7C, // Code for char d
0x38, 0x54, 0x54, 0x48, 0x00, // Code for char e
0x10, 0x7C, 0x12, 0x02, 0x04, // Code for char f
0x00, 0x24, 0x4A, 0x4A, 0x3C, // Code for char g
0x7C, 0x10, 0x10, 0x60, 0x00, // Code for char h
0x00, 0x00, 0x7A, 0x00, 0x00, // Code for char i
0x20, 0x40, 0x40, 0x3A, 0x00, // Code for char j
0x7C, 0x10, 0x6C, 0x00, 0x00, // Code for char k
0x00, 0x00, 0x7C, 0x00, 0x00, // Code for char l
0x70, 0x08, 0x10, 0x08, 0x70, // Code for char m
0x78, 0x10, 0x08, 0x08, 0x70, // Code for char n
0x30, 0x48, 0x48, 0x30, 0x00, // Code for char o
0x00, 0x7C, 0x14, 0x14, 0x08, // Code for char p
0x08, 0x14, 0x14, 0x7C, 0x40, // Code for char q
0x00, 0x78, 0x10, 0x08, 0x10, // Code for char r
0x00, 0x48, 0x54, 0x54, 0x24, // Code for char s
0x00, 0x10, 0x7C, 0x10, 0x00, // Code for char t
0x38, 0x40, 0x40, 0x38, 0x00, // Code for char u
0x00, 0x38, 0x40, 0x38, 0x00, // Code for char v
0x38, 0x40, 0x30, 0x40, 0x38, // Code for char w
0x44, 0x28, 0x10, 0x28, 0x44, // Code for char x
0x04, 0x08, 0x70, 0x08, 0x04, // Code for char y
0x64, 0x54, 0x54, 0x54, 0x4C, // Code for char z
0x00, 0x08, 0x36, 0x41, 0x41, // Code for char {
0x00, 0x00, 0x7F, 0x7F, 0x00, // Code for char |
0x41, 0x41, 0x36, 0x08, 0x00, // Code for char }
0x00, 0x00, 0x00, 0x00, 0x00 // Code for char ~
};
void showChar(unsigned rom char *image, unsigned char alpha);
void Scroll(unsigned rom char *image, unsigned char *alpha);
//SHIFT INFO
#define Shift_Tris TRISD
#define S_Data LATDbits.LATD0
#define RegOne LATDbits.LATD1
#define RegTwo LATDbits.LATD2
void ShiftReg(char Reg, char Data);
void BitShift(char tBit, char Reg);
void showChar(unsigned rom char *image, unsigned char alpha);
void main (void){
unsigned char i;
int x,w;
ADCON1 = 0x07;
Shift_Tris = 0x00;
TRISB = 0x00;
while(1){
for(w=0;w<94;w++){
for (x=0;x<120;x++){
showChar(mytxt,w);
}
}
}
}
void BitShift(char tBit, char Reg){
char x;
RegOne = 0;
RegTwo = 0;
if(tBit != 0)
S_Data = 1;
else
S_Data = 0;
if(Reg == 1){
RegOne = 0;RegOne = 1;
}
else if(Reg == 2){
RegTwo = 0;RegTwo = 1;
}
RegOne = 0;
RegTwo = 0;
}
void showChar(unsigned rom char *image, unsigned char alpha){
unsigned char x,y,w,z;
alpha *= 5;
image += alpha;
BitShift(1,1);
for (x=0;x<5;x++){
LATB = *image++ & 0xFF;
BitShift(0,1);
Delay100TCYx(60);
}
for(x=0;x<2;x++)
BitShift(0,1);
}
void ShiftReg(char Reg, char Data){
//S_Data S_Clock RegOne RegTwo
char x;
RegOne = 0;
RegTwo = 0;
for(x=0;x<8;x++){
if((Data & 0x01) != 0)
S_Data = 1;
else
S_Data = 0;
if(Reg == 1){
RegOne = 0;Nop();RegOne = 1;
}
else if(Reg == 2){
RegTwo = 0;Nop();RegTwo = 1;
}
Data = Data >> 1;
}
RegOne = 0;
RegTwo = 0;
}
EDIT: The above in bold is new.
Last edited: