Ioannis,
I was working with Marcos on this and I am a little confused with the code and it using the decoder 74LS or HC138! We have the circuit working but the thing I noticed is that the PIC does not just give the 74LS138 just single HIGH and LOWS on the address lines. I used a logic probe since I don't have a scope at home and I am getting pulses. I also get pulses out on the outputs of the 74LS138. I can confirm this because I can see it when the leds light they have a pulse to them. In my experience working with electronics and looking at the data table for the 138 that it does not require a data stream but just highs and lows. The signal(pulses) I am getting is very fast. In my theory it should not require that fast of pulses for what we are doing. I should also be able to see the highs and lows at least from the 138 outputs that controls the column output lines.
I have attached a pic of the circuit and the code. If you could explain the code I would appreciate it. I am more of a VB6 programmer not a microprocessor programmer though I am learning.
If the code can be changed to not have those pulses going on it would make for a better circuit.
#include <pic.h>
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS &
UNPROTECT \
& UNPROTECT & BORDIS & IESODIS & FCMDIS);
int i, j, k, n, Dlay, CurLetter;
const char Letters[] = {
0b10000,
0b00000,
0b00000,
0b00000,
0b00000,
0b01000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00100,
0b00000,
0b00000,
0b00000,
0b00000,
0b00010,
0b00000,
0b00000,
0b00000,
0b00000,
0b00001,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00001,
0b00000,
0b00000,
0b00000,
0b00000,
0b00010,
0b00000,
0b00000,
0b00000,
0b00000,
0b00100,
0b00000,
0b00000,
0b00000,
0b00000,
0b01000,
0b00000,
0b00000,
0b00000,
0b00000,
0b10000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b10000,
0b00000,
0b00000,
0b00000,
0b00000,
0b01000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00100,
0b00000,
0b00000,
0b00000,
0b00000,
0b00010,
0b00000,
0b00000,
0b00000,
0b00000,
0b00001,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00001,
0b00000,
0b00000,
0b00000,
0b00000,
0b00010,
0b00000,
0b00000,
0b00000,
0b00000,
0b00100,
0b00000,
0b00000,
0b00000,
0b00000,
0b01000,
0b00000,
0b00000,
0b00000,
0b00000,
0b10000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b10000,
0b00000,
0b00000,
0b00000,
0b00000,
0b01000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00100,
0b00000,
0b00000,
0b00000,
0b00000,
0b00010,
0b00000,
0b00000,
0b00000,
0b00000,
0b00001};
main()
{
PORTA = 0; // All Bits are Low
PORTC = 0b000001; // Start With Top Left
CMCON0 = 7; // Turn Off Comparitors
ANSEL = 0; // Turn Off ADC
TRISA = 0b101000; // RA5/RA3 Inputs
TRISC = 0;
CurLetter = 0; // Start With "A"
while (1 == 1) // Loop Forever
{
for (Dlay = 0; Dlay < 25; Dlay++)
for (i = 0; i < 5; i++)
{
j = Letters[(CurLetter * 5) + i];
k = (j >> 2) & 0b010000;
PORTC = j & 0b111111;
PORTA = k + i;
for (n = 0; n < 259; n++); // 4ms Delay
}
CurLetter = (CurLetter +1) % 25; //Increment Letter
}
Thanks,
Kevin
Bookmarks