![]() | ![]() | ![]() |
| |||||||
| Micro Controllers Discuss all aspects of micro controllers - building them, coding them, etc. All controllers are welcome - PIC, BASIC, Z8 Encore!, etc. |
![]() |
| | Tools |
| | #1 |
|
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: 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;
}
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics Last edited by AtomSoft; 10th November 2008 at 02:09 AM. | |
| |
| | #2 | |
| Quote:
Just a guess. I haven't studied the code at all.
__________________ ========================= Futz's Microcontrollers & Robotics ========================= | ||
| |
| | #3 |
|
One of the things that looks a little risky is doing a shift on signed data: Data = Data >> 1; In the routine: void ShiftReg(char Reg, char Data)
__________________ Inside every little problem, is a big problem trying to get out. | |
| |
| | #4 |
|
OK... Futz the "S" shows Correctly.... But the next one is "!" and its shifted to the RIGHT (>>) by 1? kchriste im not using that routine yet. Meaning its not being called.
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics | |
| |
| | #5 |
|
If you have the pickit try running debug mode and watching the variable while single stepping trough your code. And as already sead,watch your byte variables don't overflow somewhere.
__________________ Il give you shocking experience. | |
| |
| | #6 |
|
What happens if you change it to, Code: void showChar(unsigned rom char *image, unsigned char alpha){
unsigned char x,y,w,z;
//alpha *= 5;
//image += alpha;
image+=5*(int)alpha;
Mike. | |
| |
| | #7 |
|
I tried to debug but that ghost breakpoint keeps happening and im tired of it. It sux! I think futz was on the right track. I seperated the whole thing into Numbers/Symbols/Text(alpha) and it shows each ok when i loop through each. I guess i can use it like that but i have to create a way to change input for lookup. Like : Test to perform on all chars: Code: 1) toupper to all. If its already a Upper or a symbol then it returns the original.
2) isdigit , isalpha if none of the 2 then its a symbol
3.
a. If its a alpha. - 0x41
b. if its a number - 0x30
c. If its a symbol - 0x20 (for most symbols except 4)
c.2. If its last 4 symbols - 0x7B
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics Last edited by AtomSoft; 10th November 2008 at 03:23 PM. | |
| |
| | #8 |
|
OMG thanks Pommie! you saved me so much time! Thanks goes to all of course also. Why would Alpha being a char overflow?
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics | |
| |
| | #9 |
|
oh i see now if its char * 5 = overflow on the alpha Its funny tho becuase "S" showed perfect and its number 52 52*5 = 260 and a char is 255. So isnt it supposed to get screwed?
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics Last edited by AtomSoft; 10th November 2008 at 03:31 PM. | |
| |
| | #10 |
|
PICs don't have error handling so if you overflow a variable it just rolls over back to 0 and goes on from there. With dsPICs you can have it generate a error or simply clip it to prevent a overflow.
__________________ Il give you shocking experience. | |
| |
| | #11 |
|
Someone Electro: Awsome i knew about the overflow thing from 0x00-0xFF->0x00 but i didnt know that info on dsPic's . Nice to know
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics | |
| |
| | #12 |
|
Since i had to make my own Eagle drawing would you say this is accurate? ![]() ![]() Anyone know how to move the text on the Symbol? Of course i have to move the pins down some so it matches my datasheet. OK I now have a eagle part made for it fits nice too! I tried it on paper and a foam back and pressed it into the paper.
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics Last edited by AtomSoft; 10th November 2008 at 08:33 PM. | |
| |
| | #13 |
| Excellent! Can I have a copy when you're done? I'll swap ya for my 3M MicroSD socket.
__________________ ========================= Futz's Microcontrollers & Robotics ========================= | |
| |
| | #14 |
|
sure let me add some finishing touches and ill post my library here. Its called... well...AtomSoft.lbr lol
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics | |
| |
| | #15 |
|
Here it is. I also made a Molex Mini-B and a V-Ref (7805): Molex info: http://www.molex.com/pdm_docs/sd/482420001_sd.pdf
__________________ AtomSofts eBay Store AtomSoftTech: C18 TIPS & TRICKS v9 PDF My Name: Jason Lopez http://atomsofttech.info/ | My YouTube Videos! My Favorite Store: dipmicro Electronics | |
| |
|
| Tags |
| 5x7, issue, matrix |
| Thread Tools | |
| Display Modes | |
| |
Similar | ||||
| Title | Starter | Forum | Replies | Latest |
| SPI issue - HW or SW | Kryten | Micro Controllers | 2 | 24th May 2008 09:30 AM |
| AV Issue | Baggins | Electronic Projects Design/Ideas/Reviews | 3 | 6th June 2007 02:26 PM |
| Pic microcontrolller pwm issue | ym2k | Micro Controllers | 2 | 23rd September 2004 01:44 AM |
| some pcb making issue...... | bogdanfirst | General Electronics Chat | 5 | 5th October 2003 11:05 AM |
| DVD PSU Issue | Callidus | General Electronics Chat | 1 | 19th September 2003 03:28 PM |