Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

16x64 LED display Graphic & TEXT modes

Status
Not open for further replies.

gedo

Newbie level 1
Joined
Aug 10, 2006
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,286
atach file heve a source in mikroC & shematic

for all max chips CS /Load is same pin see shematic.

in graphic mode use 16x64 pixel any lcd editor to conver to hex code

MAIN MODULE
Code:
// Gedo 01.08.2006
#include "karakter.c"
#include "m7219.c"
#define satir1 &PortD
#define satir2 &PortB
void main() {
SPI_init();
  TRISD &= 0x00;            // LOAD
  TRISB &= 0x00;           // LOAD
  max7219_init1();        // initialize  max7219
// Text modu
ana:
kaydir("Deneme",satir1,5);   // asaya 1. satir gorunmezden gorunure
kaydir("Deneme",satir1,8);   // asaya ıkı satır arası gecıs
kaydir("Deneme",satir2,4);   // asya 2. satır gorunurden gorunmeze

kaydir("Deneme",satir2,6);   // yukarı 2. satır gorunmezden gorunure
kaydir("Deneme",satir1,7);   // yukarı ıkı satır arası gecıs
kaydir("Deneme",satir1,3);   // yukarı 1. satır gorunurden gorunmeze


kaydir("Deneme",satir1,0);   // 1. satır sabıt
kaydir("Deneme",satir2,0);   // 1. satır sabıt


kaydir("Deneme",satir1,1);   // 1. satır sagdan sola gorunmezden gorunure
kaydir("Deneme",satir2,2);   // 1. satır soldan saga gorunmezden gorun
   goto ana;
Grafik modunda
grafik(bmp);

}


MAX7219 Driver
Code:
//MAX 7219 chip_util Library
void max7219_init1() {

  PORTD &= 0x00;
  PORTB &= 0x00;           // SELECT MAX
  SPI_write(0x09);         // BCD mode for digit decoding
  SPI_write(0x00);
  PORTD |= 0xFF;
  PORTB |= 0xFF;              // DESELECT MAX

  PORTD &= 0x00;
  PORTB &= 0x00;           // SELECT MAX
  SPI_write(0x0A);
  SPI_write(0x0F);         // Segment luminosity intensity
  PORTD |= 0xFF;
  PORTB |= 0xFF;              // DESELECT MAX

  PORTD &= 0x00;
  PORTB &= 0x00;           // SELECT MAX
  SPI_write(0x0B);
  SPI_write(0x07);         // Display refresh
  PORTD |= 0xFF;
  PORTB |= 0xFF;              // DESELECT MAX

  PORTD &= 0x00;
  PORTB &= 0x00;           // SELECT MAX
  SPI_write(0x0C);
  SPI_write(0x01);         // Turn on the display
  PORTD |= 0xFF;
  PORTB |= 0xFF;              // DESELECT MAX

  PORTD &= 0x00;
  PORTB &= 0x00;           // SELECT MAX
  SPI_write(0x00);
  SPI_write(0x03);         // No test
  PORTD |= 0xFF;
  PORTB |= 0xFF;              // DESELECT MAX
}


Functions

Code:
int ii[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //port seçer
unsigned char i1,i2;
//unsigned char  img[128];
int KarakterNo, ColonSay,i;

unsigned char const bmp[128] = {
255, 255,1, 160,1, 160,5, 164,253, 167,1, 164,1, 160,
229, 161,37, 161,37, 161,61, 161,1, 160,5, 168,69, 168,
69, 168,69, 168,253, 175,1, 160,1, 160,1, 160,1, 160,
1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,
1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,
1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,
1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,
1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,1, 160,
1, 160,1, 160,255, 255};

const char KarakterTablosu[480] = {
0x00,0x00,0x00,0x00,0x00,	// 20 space
0x00,0x00,0x5f,0x00,0x00,	// 21 !
0x00,0x07,0x00,0x07,0x00,	// 22 "
0x14,0x7f,0x14,0x7f,0x14,	// 23 #
0x24,0x2a,0x7f,0x2a,0x12,	// 24 $
0x23,0x13,0x08,0x64,0x62,	// 25 %
0x36,0x49,0x55,0x22,0x50,	// 26 &
0x00,0x05,0x03,0x00,0x00,	// 27 '
0x00,0x1c,0x22,0x41,0x00,	// 28 (
0x00,0x41,0x22,0x1c,0x00,	// 29 )
0x14,0x08,0x3e,0x08,0x14,	// 2a *
0x08,0x08,0x3e,0x08,0x08,	// 2b +
0x00,0x50,0x30,0x00,0x00,	// 2c ,
0x08,0x08,0x08,0x08,0x08,	// 2d -
0x00,0x60,0x60,0x00,0x00,	// 2e .
0x20,0x10,0x08,0x04,0x02,	// 2f /
0x3e,0x51,0x49,0x45,0x3e,	// 30 0
0x00,0x42,0x7f,0x40,0x00,	// 31 1
0x42,0x61,0x51,0x49,0x46,	// 32 2
0x21,0x41,0x45,0x4b,0x31,	// 33 3
0x18,0x14,0x12,0x7f,0x10,	// 34 4
0x27,0x45,0x45,0x45,0x39,	// 35 5
0x3c,0x4a,0x49,0x49,0x30,	// 36 6
0x01,0x71,0x09,0x05,0x03,	// 37 7
0x36,0x49,0x49,0x49,0x36,	// 38 8
0x06,0x49,0x49,0x29,0x1e,	// 39 9
0x00,0x36,0x36,0x00,0x00,	// 3a :
0x00,0x56,0x36,0x00,0x00,	// 3b ;
0x08,0x14,0x22,0x41,0x00,	// 3c <
0x14,0x14,0x14,0x14,0x14,	// 3d =
0x00,0x41,0x22,0x14,0x08,	// 3e >
0x02,0x01,0x51,0x09,0x06,	// 3f ?
0x32,0x49,0x79,0x41,0x3e,	// 40 @
0x7e,0x11,0x11,0x11,0x7e,	// 41 A
0x7f,0x49,0x49,0x49,0x36,	// 42 B
0x3e,0x41,0x41,0x41,0x22,	// 43 C
0x7f,0x41,0x41,0x22,0x1c,	// 44 D
0x7f,0x49,0x49,0x49,0x41,	// 45 E
0x7f,0x09,0x09,0x09,0x01,	// 46 F
0x3e,0x41,0x49,0x49,0x7a,	// 47 G
0x7f,0x08,0x08,0x08,0x7f,	// 48 H
0x00,0x41,0x7f,0x41,0x00,	// 49 I
0x20,0x40,0x41,0x3f,0x01,	// 4a J
0x7f,0x08,0x14,0x22,0x41,	// 4b K
0x7f,0x40,0x40,0x40,0x40,	// 4c L
0x7f,0x02,0x0c,0x02,0x7f,	// 4d M
0x7f,0x04,0x08,0x10,0x7f,	// 4e N
0x3e,0x41,0x41,0x41,0x3e,	// 4f O
0x7f,0x09,0x09,0x09,0x06,	// 50 P
0x3e,0x41,0x51,0x21,0x5e,	// 51 Q
0x7f,0x09,0x19,0x29,0x46,	// 52 R
0x46,0x49,0x49,0x49,0x31,	// 53 S
0x01,0x01,0x7f,0x01,0x01,	// 54 T
0x3f,0x40,0x40,0x40,0x3f,	// 55 U
0x1f,0x20,0x40,0x20,0x1f,	// 56 V
0x3f,0x40,0x38,0x40,0x3f,	// 57 W
0x63,0x14,0x08,0x14,0x63,	// 58 X
0x07,0x08,0x70,0x08,0x07,	// 59 Y
0x61,0x51,0x49,0x45,0x43,	// 5a Z
0x00,0x7f,0x41,0x41,0x00,	// 5b [
0x02,0x04,0x08,0x10,0x20,	// 5c Yen Currency Sign
0x00,0x41,0x41,0x7f,0x00,	// 5d ]
0x04,0x02,0x01,0x02,0x04,	// 5e ^
0x40,0x40,0x40,0x40,0x40,	// 5f _
0x00,0x01,0x02,0x04,0x00,	// 60 `
0x20,0x54,0x54,0x54,0x78,	// 61 a
0x7f,0x48,0x44,0x44,0x38,	// 62 b
0x38,0x44,0x44,0x44,0x20,	// 63 c
0x38,0x44,0x44,0x48,0x7f,	// 64 d
0x38,0x54,0x54,0x54,0x18,	// 65 e
0x08,0x7e,0x09,0x01,0x02,	// 66 f
0x0c,0x52,0x52,0x52,0x3e,	// 67 g
0x7f,0x08,0x04,0x04,0x78,	// 68 h
0x00,0x44,0x7d,0x40,0x00,	// 69 i
0x20,0x40,0x44,0x3d,0x00,	// 6a j
0x7f,0x10,0x28,0x44,0x00,	// 6b k
0x00,0x41,0x7f,0x40,0x00,	// 6c l
0x7c,0x04,0x18,0x04,0x78,	// 6d m
0x7c,0x08,0x04,0x04,0x78,	// 6e n
0x38,0x44,0x44,0x44,0x38,	// 6f o
0x7c,0x14,0x14,0x14,0x08,	// 70 p
0x08,0x14,0x14,0x18,0x7c,	// 71 q
0x7c,0x08,0x04,0x04,0x08,	// 72 r
0x48,0x54,0x54,0x54,0x20,	// 73 s
0x04,0x3f,0x44,0x40,0x20,	// 74 t
0x3c,0x40,0x40,0x20,0x7c,	// 75 u
0x1c,0x20,0x40,0x20,0x1c,	// 76 v
0x3c,0x40,0x30,0x40,0x3c,	// 77 w
0x44,0x28,0x10,0x28,0x44,	// 78 x
0x0c,0x50,0x50,0x50,0x3c,	// 79 y
0x44,0x64,0x54,0x4c,0x44,	// 7a z
0x00,0x08,0x36,0x41,0x00,	// 7b <
0x00,0x00,0x7f,0x00,0x00,	// 7c |
0x00,0x41,0x36,0x08,0x00,	// 7d >
0x10,0x08,0x08,0x10,0x08,	// 7e Right Arrow 	->
0x78,0x46,0x41,0x46,0x78};	// 7f Left Arrow	<-
///////////////////////// GRAFİK MODU //////////////////////////////////////////
void grafik(unsigned char const img[128]){
int i;
int iii[8]={0,8,16,24,32,40,48,56}; // katlama sayar
for(i=1;i<9;i++){            //matrix sayar
 for(i1=1;i1<9;i1++){        //colon sayar
    PORTD=ii[i-1];
     SPI_write(i1);           // Sutun
     SPI_write(img[(i1-1)*2+iii[i-1]*2]);  // satır
    PORTD=0xff;
}}
for(i=1;i<9;i++){            //matrix sayar
 for(i1=1;i1<9;i1++){        //colon sayar
    PORTB=ii[i-1];
     SPI_write(i1);           // Sutun
     SPI_write(img[(i1*2)-1+iii[i-1]*2]);  // satır
    PORTB=0xff;
}}
}
//////////////////// KAYDIRMA ///////////////////////////////
void kaydir(const char *sdata,char *Portx,int efekt){
/************************************************************
kaydır fonksiyonunun parametreleri
sabit  = 0
saga   = 1  sagdan sola gorunmezden gorunure
sola   = 2  soldan saga gorunmezden gorunmeze
yukarı  = 3  gorunurden gorunmeze
asaya  = 4  gorunurden gorunmeze
asaya  = 5  gorunmezden gorunure
yukarı = 6  gorunmezden gorunure
***************************************
iki satir geçişli  parametreleri
***************************************
yukari =7 asadan yukarı satıra gecis
asaya  =8 yukarıdan asagıkı satıra gecis
 altta arayın içine girilen textin hexleri yükleniyor
************************************************************/
char Karakter;
char img1[64];
int tekrar;
i=1;
while(*sdata) {
Karakter=*sdata++;

	if ((Karakter<0x20)||(Karakter>0x7f)) {return;}
	KarakterNo = ((5*Karakter) - 160);
	for (ColonSay=1;ColonSay<6;ColonSay++)
	{
         img1[i]=KarakterTablosu[KarakterNo];
         KarakterNo++;
         i++;
}
img1[i]=0;
i++;
}

/////////////////////// efekt parametresine göre işlem yapacak /////////////////

if(efekt==0) tekrar=1;
if(efekt==1){tekrar=i;}
if(efekt==2){tekrar=i;}
else{tekrar=9;}
i=0;i1=0;i2=0;
for(ColonSay=0;ColonSay<tekrar;ColonSay++){
i2=0;
for(i=1;i<9;i++){            //matrix sayar
 for(i1=1;i1<9;i1++){
 i2++;        //colon sayar

switch (efekt){
case 0:
    *Portx=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]);// break; // << aşaya kayma
    *Portx=0xff;goto atla;
case 1:
    *Portx=ii[i-1];
     SPI_write(i1);
//     if(((i2+tekrar-colonsay-1)<tekrar)&&((i2+tekrar-colonsay-1)>0)){
      SPI_write(img1[i2+tekrar-colonsay-1]);//break; // << aşaya kayma
//      }else{SPI_write(0x00);}
    *Portx=0xff;goto atla;
case 2:
    *Portx=ii[i-1];
     SPI_write(i1);
     if((i2-tekrar+colonsay+1)>0){
     SPI_write(img1[i2-tekrar+colonsay+1]);// break;  // << aşaya kayma
} else{SPI_write(0x00);}
    *Portx=0xff;goto atla;
case 3:
    *Portx=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]>>colonsay);// break; // << aşaya kayma
    *Portx=0xff;goto atla;
case 4:
    *Portx=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]<<colonsay);// break;  // << aşaya kayma
    *Portx=0xff;goto atla;
case 5:
    *Portx=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]>>8-colonsay);// break; // << aşaya kayma
    *Portx=0xff;goto atla;
case 6:
    *Portx=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]<<9-colonsay);// break;  // << aşaya kayma
    *Portx=0xff;goto atla;
case 7:
    PortB=ii[i-1]; // satir 2 için çıkış
     SPI_write(i1);
     if(colonsay==0){goto atla;}
     SPI_write(img1[i2]>>colonsay-1);// break; // << aşaya kayma
    PortB=0xff;

    PortD=ii[i-1];  // satir 1 için giriş
     SPI_write(i1);
     SPI_write(img1[i2]<<9-colonsay);// break;  // << aşaya kayma
    PortD=0xff;
     goto atla;
case 8:
    PortD=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]<<colonsay);// break;  // << aşaya kayma
    PortD=0xff;
    
    PortB=ii[i-1];
     SPI_write(i1);
     SPI_write(img1[i2]>>8-colonsay);// break; // << aşaya kayma
    PortB=0xff;
     goto atla;
     }
 atla:
    *Portx=0xff;
}}
delay_ms(100);
}
}
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top