Witajcie.
Bawię się matryca 8x8
napisałem sobie multiplexowanie i procedurkę wyświetlającą napis po kolei po literce, wszystko fajnie jest niestety do kiedy długość mojego napisu nie przekroczy 48znaków, wtedy zaczynają sie dziać cuda, niektóre litery wyświetla normalnie a zamiast innych takie krzaki których nie mam w tablicy znaków ascii w ogóle zapisanych, najgorsze że te krzaki wyświetla nie po 48znaku dopiero ale czasem w środku, czasem na początku, normalnie jak się bestii chce. Piszę w AVRStudio, proszę o pomoc.
Bawię się matryca 8x8
napisałem sobie multiplexowanie i procedurkę wyświetlającą napis po kolei po literce, wszystko fajnie jest niestety do kiedy długość mojego napisu nie przekroczy 48znaków, wtedy zaczynają sie dziać cuda, niektóre litery wyświetla normalnie a zamiast innych takie krzaki których nie mam w tablicy znaków ascii w ogóle zapisanych, najgorsze że te krzaki wyświetla nie po 48znaku dopiero ale czasem w środku, czasem na początku, normalnie jak się bestii chce. Piszę w AVRStudio, proszę o pomoc.
#include <avr/io.h>
#include <string.h>
#define F_CPU 2000000 //2MHz zegar procesora
#define CYCLES_PER_US ((F_CPU+500000)/2000000) //cpu cycles per microsecond
#include <util/delay.h>
(...)
char FontTable[97][8] =
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // (blank) //0
(...)
};
void pojednej(char napis[])
{
int j = 0;
int litera = 0;
int aktznak = 0;
// weź znak z komunikatu
while(aktznak<strlen(napis))
{
litera = (napis[aktznak])-32;
//litera = clitera-32;
aktznak++;
ekran[0][0]=FontTable[litera][0];
ekran[1][0]=FontTable[litera][1];
ekran[2][0]=FontTable[litera][2];
ekran[3][0]=FontTable[litera][3];
ekran[4][0]=FontTable[litera][4];
ekran[5][0]=FontTable[litera][5];
ekran[6][0]=FontTable[litera][6];
ekran[7][0]=FontTable[litera][7];
for (j=0;j<=4;j++)
{
wyswietl();
}
}
}
(...)
int main ()
{
/* Wszystkie linie portu B będą wyjściami */
DDRB = 0xFF; /* 0xFF binarnie 1111 1111 */
/* Wszystkie linie portu D będą wyjściami */
DDRD = 0xFF; /* 0xFF binarnie 1111 1111 */
PORTB = 0b00000000; /* 0xaa binarnie 0000 0000 */
PORTD = 0b00000000;
char napis[] = "abcdefghijklmnoprstuvw1234567890abcdefghijklmnoprstuvw1234567890ABCDEFGHIJKLMNOPRSTUVWabcdefghijklmnoprstuvw1234567890a_teraz_znaki_!@#$%^&*()_i_KONIEC_i_Kropka.";
while(1)
{
pojednej(napis);
}
//return 0;
}
}