DIY Moving Message Display

Status
Not open for further replies.
I built this little scrolling sign long ago. Design specs: at89c2051, programmed in assembly, 4017 + transistors dmux, 5x21 dots.

Schematic and full source at:
**broken link removed**

Hope that it is useful for someone
 



Thank You.. I missed this One
- EXPERT -
 

Re: 16x16 led moving message projects

I same problem If i compiler to Atmega8535 void lcd_puts(unsigned char *str) & void lcd_putsf(unsigned char flash *str)
these two functions are not included in the main function, are there some error in the code any solution for if i make Atmega8535
 
Hi;

those are for my clients..,

look this 16x24

the display is not yet completed .., i will complete it and post the code.,

look this 16x24 with keyboard interface
 
Nice work done. Good effort. Hope to see more projects shared. Cheers
 


hareeshmohankavassery said:
i need that ic max6953 for doin my project....frm where we can buy it in india...anyone plese help me

Dear hareeshmohankavassery,
Have U got MAX6953?. Have U done the project? If done please help me too. I got the sample from maxim with in two weeks from the ordered date. I am experimenting with this IC, do U know how to send data through I2C?. This IC has got I2C interface.

Expecting ur replay
 

hi every one . i had a question . i need a simple project using AT89C51 and two 5*7 LED matrix with asm file to show only 3 words : "electronic project with 8051 " . can any one help me ?
 

do you want to scroll or not if not here is the code
Code:
;Program for 5x7 COMMON CATHODE DOT MATRIX DISPLAY
		 

		    ;P1      COL
		 	;P2      ROW
		 	
		 	ORG 0000H   		
			AJMP MAIN			
			ORG 0030H  
		MAIN:  	
		 	         
			  MOV P1,#00H
			  MOV P2,#00H
			  MOV DPTR,#TABLE
		LOOP3:      MOV R4,#50		
		LOOP2:      MOV R3,#250
	
		LOOP1:     MOV R1,#0H
			 MOV A,#00H
			 MOV B,#80H
		LOOP:	
			MOVC A,@A+DPTR
			CJNE A,#2FH,DO
			AJMP MAIN
	DO:	INC R1
			CPL A
			MOV P2,A
			MOV P1,B	
			CALL STAY
			MOV P2,#0FFH  ;row  
		   	MOV P1,#0FFH  ;col 
			CALL STAY
			MOV A,B
			RR A    
			MOV B,A 
			MOV A,R1
			CJNE  R1,#5H,LOOP    ;CHECK FOR FIFTH COLOUMN 
      		                  DJNZ R3,LOOP1
     		                  DJNZ R4,LOOP2
    		                  INC DPTR 
    		                  INC DPTR
         			INC DPTR
         			INC DPTR
         			INC DPTR
         			CALL DELAY
         			CALL DELAY
         			AJMP LOOP3
         
  			
						
	
	                  STAY:
	   		MOV R7,#20
	   	ST:	NOP
	      		DJNZ R7,ST
	     		RET
			
		DELAY:            	;100ms DELAY
			SETB PSW.4
			MOV R7,#200
		HDH:								
			MOV R6,#100
		HD:	NOP
			NOP
			NOP
			DJNZ R6,HD
			DJNZ R7,HDH	
			CLR PSW.4	
			RET
END
				
						
			

TABLE:        ;HEX ARRAY TO DISPLAY CHARACTERS 
	

DB		07fH,049H,049H,049H,041H	; 45 E
DB		07fH,040H,040H,040H,040H	; 4c L
DB		07fH,049H,049H,049H,041H	; 45 E
DB		03eH,041H,041H,041H,022H	; 43 C
DB		001H,001H,07fH,001H,001H	; 54 T
DB		03eH,041H,041H,041H,03eH	; 4f O
DB		07fH,004H,008H,010H,07fH	; 4e N
DB		000H,041H,07fH,041H,000H	; 49 I
DB		03eH,041H,041H,041H,022H	; 43 C
DB		07fH,009H,009H,009H,006H	; 50 P
DB		07fH,009H,019H,029H,046H	; 52 R	
DB		03eH,041H,041H,041H,03eH	; 4f O
DB		020H,040H,041H,03fH,001H	; 4a J
DB		07fH,049H,049H,049H,041H	; 45 E
DB		03eH,041H,041H,041H,022H	; 43 C
DB		001H,001H,07fH,001H,001H	; 54 T


END




TABLE:        ;HEX ARRAY TO DISPLAY CHARACTERS 
DB		000H,000H,000H,000H,000H	; 20 space		
DB		000H,000H,05fH,000H,000H	; 21 !			
DB		000H,007H,000H,007H,000H	; 22 "			
DB		014H,07fH,014H,07fH,014H	; 23 #			
DB		024H,02aH,07fH,02aH,012H	; 24 $			
DB		023H,013H,008H,064H,062H	; 25 %
DB		036H,049H,055H,022H,050H	; 26 &
DB		000H,005H,003H,000H,000H	; 27 '
DB		000H,01cH,022H,041H,000H	; 28 (
DB		000H,041H,022H,01cH,000H	; 29 )
DB		014H,008H,03eH,008H,014H	; 2a *
DB		008H,008H,03eH,008H,008H	; 2b +
DB		000H,050H,030H,000H,000H	; 2c ,
DB		008H,008H,008H,008H,008H	; 2d -
DB		000H,060H,060H,000H,000H	; 2e .
DB		020H,010H,008H,004H,002H	; 2f /
DB		03eH,051H,049H,045H,03eH	; 30 0
DB		000H,042H,07fH,040H,000H	; 31 1
DB		042H,061H,051H,049H,046H	; 32 2
DB		021H,041H,045H,04bH,031H	; 33 3
DB		018H,014H,012H,07fH,010H	; 34 4
DB		027H,045H,045H,045H,039H	; 35 5
DB		03cH,04aH,049H,049H,030H	; 36 6
DB		001H,071H,009H,005H,003H	; 37 7
DB		036H,049H,049H,049H,036H	; 38 8
DB		006H,049H,049H,029H,01eH	; 39 9
DB		000H,036H,036H,000H,000H	; 3a :
DB		000H,056H,036H,000H,000H	; 3b ;
DB		008H,014H,022H,041H,000H	; 3c <
DB		014H,014H,014H,014H,014H	; 3d =
DB		000H,041H,022H,014H,008H	; 3e >
DB		002H,001H,051H,009H,006H	; 3f ?
DB		032H,049H,079H,041H,03eH	; 40 @
DB		07eH,011H,011H,011H,07eH	; 41 A
DB		07fH,049H,049H,049H,036H	; 42 B
DB		03eH,041H,041H,041H,022H	; 43 C
DB		07fH,041H,041H,022H,01cH	; 44 D
DB		07fH,049H,049H,049H,041H	; 45 E
DB		07fH,009H,009H,009H,001H	; 46 F
DB		03eH,041H,049H,049H,07aH	; 47 G
DB		07fH,008H,008H,008H,07fH	; 48 H
DB		000H,041H,07fH,041H,000H	; 49 I
DB		020H,040H,041H,03fH,001H	; 4a J
DB		07fH,008H,014H,022H,041H	; 4b K
DB		07fH,040H,040H,040H,040H	; 4c L
DB		07fH,002H,00cH,002H,07fH	; 4d M
DB		07fH,004H,008H,010H,07fH	; 4e N
DB		03eH,041H,041H,041H,03eH	; 4f O
DB		07fH,009H,009H,009H,006H	; 50 P
DB		03eH,041H,051H,021H,05eH	; 51 Q
DB		07fH,009H,019H,029H,046H	; 52 R
DB		046H,049H,049H,049H,031H	; 53 S
DB		001H,001H,07fH,001H,001H	; 54 T
DB		03fH,040H,040H,040H,03fH	; 55 U
DB		01fH,020H,040H,020H,01fH	; 56 V
DB		03fH,040H,038H,040H,03fH	; 57 W
DB		063H,014H,008H,014H,063H	; 58 X
DB		007H,008H,070H,008H,007H	; 59 Y
DB		061H,051H,049H,045H,043H	; 5a Z
DB		000H,07fH,041H,041H,000H	; 5b [
DB		002H,004H,008H,010H,020H	; 5c Yen Currency Sign
DB		000H,041H,041H,07fH,000H	; 5d ]
DB		004H,002H,001H,002H,004H	; 5e ^
DB		040H,040H,040H,040H,040H	; 5f _
DB		000H,001H,002H,004H,000H	; 60 `
DB		020H,054H,054H,054H,078H	; 61 a
DB		07fH,048H,044H,044H,038H	; 62 b
DB		038H,044H,044H,044H,020H	; 63 c
DB		038H,044H,044H,048H,07fH	; 64 d
DB		038H,054H,054H,054H,018H	; 65 e
DB		008H,07eH,009H,001H,002H	; 66 f
DB		00cH,052H,052H,052H,03eH	; 67 g
DB		07fH,008H,004H,004H,078H	; 68 h
DB		000H,044H,07dH,040H,000H	; 69 i
DB		020H,040H,044H,03dH,000H	; 6a j 
DB		07fH,010H,028H,044H,000H	; 6b k
DB		000H,041H,07fH,040H,000H	; 6c l
DB		07cH,004H,018H,004H,078H	; 6d m
DB		07cH,008H,004H,004H,078H	; 6e n
DB		038H,044H,044H,044H,038H	; 6f o
DB		07cH,014H,014H,014H,008H	; 70 p
DB		008H,014H,014H,018H,07cH	; 71 q
DB		07cH,008H,004H,004H,008H	; 72 r
DB		048H,054H,054H,054H,020H	; 73 s
DB		004H,03fH,044H,040H,020H	; 74 t
DB		03cH,040H,040H,020H,07cH	; 75 u
DB		01cH,020H,040H,020H,01cH	; 76 v
DB		03cH,040H,030H,040H,03cH	; 77 w
DB		044H,028H,010H,028H,044H	; 78 x
DB		00cH,050H,050H,050H,03cH	; 79 y
DB		044H,064H,054H,04cH,044H	; 7a z
DB		000H,008H,036H,041H,000H	; 7b <
DB		000H,000H,07fH,000H,000H	; 7c |
DB		000H,041H,036H,008H,000H	; 7d >
DB		010H,008H,008H,010H,008H	; 7e Right ArP2 	->
DB		078H,046H,041H,046H,078H	; 7f Left ArP2	<-
DB 	2FH
 

Hi,
The way to do it is, get your circuit drawn first, then the code.

Cheers.
 

Please help me to resolve this ...
how to edit a program that can only display 41 character charcter shown that at least 100 character. This circuit using hardware AT89C52

this is code c:

Code:
;----------------------------------------------------
/*
                          MATRIX FORMAT
                          ROW & COL ACTIVE HI
                          COL SCAN BY 74LS164
                              
                -----------5
                -----------4
				-----------3
   				-----------2
   				-----------1
      			-------2 1 0
row 3-7 decoder
a=2.0
b=2.1
c=2.2
column ck,dt
ck=1.6
dt=1.7 
*/



#include <reg51.h>
#include <intrins.h>


#define TRUE 1			/* define logical true / false          */
#define FALSE 0			/* values for bit variables             */
#define SCROLL_DELAY 1         /* scroll delay */

#define TIMER0_COUNT    0xFADA // 1.1ms

void modu1();
void modu2();
void modu3();
void modu4();
void modu5();

void sendCommand(char* command);
void sendChar(unsigned char c);
void delay_us(unsigned int d);
void sort(unsigned char a,unsigned char *d,unsigned char *m);
extern  signed char write2464(unsigned int Address, unsigned char Data);
extern  unsigned char read2464(unsigned int Address);

typedef	unsigned char byte;	/* type define objects with             */
typedef unsigned int word;	/* more classical microprocessor        */
code unsigned char matrix[91][7]=
      { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,  // Space
	0xFB,0xFB,0xFB,0xFB,0xFB,0xFF,0xFB,	 // ;!
	0xF5,0xF5,0xF5,0xFF,0xFF,0xFF,0xFF,  // "
	0xF5,0xF5,0xE0,0xF5,0xE0,0xF5,0xF5,  // #
	0xFB,0xF0,0xEB,0xF1,0xFA,0xE1,0xFB,  // $
	0xE3,0xEA,0xE5,0xFB,0xF4,0xEA,0xF8,  // %
	0xF7,0xEB,0xEB,0xF7,0xEA,0xED,0xF2,  // &
	0xF9,0xF9,0xFD,0xFB,0xFF,0xFF,0xFF,  // '
	0xFD,0xFB,0xF7,0xF7,0xF7,0xFB,0xFD,  // (
	0xF7,0xFB,0xFD,0xFD,0xFD,0xFB,0xF7,  // )
	0xFB,0xEA,0xF1,0xFB,0xF1,0xEA,0xFB,  // *
	0xFF,0xFB,0xFB,0xE0,0xFB,0xFB,0xFF,  // +
	0xFF,0xFF,0xFF,0xF3,0xF3,0xFB,0xF7,  // ,
	0xFF,0xFF,0xFF,0xF1,0xFF,0xFF,0xFF,  // -
	0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xF3,  // .
	0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xFF,  // /
	0xF1,0xEE,0xEC,0xEA,0xE6,0xEE,0xF1,  // 0
	0xFB,0xF3,0xFB,0xFB,0xFB,0xFB,0xF1,  // 1
	0xF1,0xEE,0xFE,0xF1,0xEF,0xEF,0xE0,  // 2
	0xF1,0xEE,0xFE,0xF9,0xFE,0xEE,0xF1,  // 3
	0xFD,0xF9,0xF5,0xED,0xE0,0xFD,0xFD,  // 4
	0xE0,0xEF,0xE1,0xFE,0xFE,0xFE,0xE1,  // 5
	0xF9,0xF7,0xEF,0xE1,0xEE,0xEE,0xF1,  // 6
	0xE0,0xFE,0xFD,0xFB,0xF7,0xF7,0xF7,  // 7
	0xF1,0xEE,0xEE,0xF1,0xEE,0xEE,0xF1,  // 8
	0xF1,0xEE,0xEE,0xF0,0xFE,0xFD,0xF3,  // 9
    0xFF,0xF3,0xF3,0xFF,0xF3,0xF3,0xFF,  // :
	0xF3,0xFB,0xF3,0xF3,0xFF,0xF3,0xF3,  // ;
	0xFD,0xFB,0xF7,0xEF,0xF7,0xFB,0xFD,  // <
	0xFF,0xFF,0xF1,0xFF,0xF1,0xFF,0xFF,	 // ;=
	0xF7,0xFB,0xFD,0xFE,0xFD,0xFB,0xF7,  // >
	0xF1,0xEE,0xFE,0xFD,0xFB,0xFF,0xFB,  // ?
    0xF1,0xEE,0xFE,0xF2,0xEA,0xEA,0xF1,  // @
	0xFB,0xF5,0xEE,0xEE,0xE0,0xEE,0xEE,  // A
	0xE1,0xF6,0xF6,0xF1,0xF6,0xF6,0xE1,  // B
	0xF1,0xEE,0xEF,0xEF,0xEF,0xEE,0xF1,  // C
	0xE1,0xF6,0xF6,0xF6,0xF6,0xF6,0xE1,  // D
	0xE0,0xEF,0xEF,0xE3,0xEF,0xEF,0xE0,  // E
	0xE0,0xEF,0xEF,0xE3,0xEF,0xEF,0xEF,  // F
	0xF1,0xEE,0xEF,0xE8,0xEE,0xEE,0xF1,  // G
	0xEE,0xEE,0xEE,0xE0,0xEE,0xEE,0xEE,  // H
	0xF1,0xFB,0xFB,0xFB,0xFB,0xFB,0xF1,	 // ;I
	0xF8,0xFD,0xFD,0xFD,0xFD,0xFD,0xF3,  // J
	0xEE,0xED,0xEB,0xE7,0xEB,0xED,0xEE,  // K
	0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE0,  // L
	0xEE,0xE4,0xEA,0xEA,0xEE,0xEE,0xEE,  // M
	0xEE,0xE6,0xEA,0xEC,0xEE,0xEE,0xEE,  // N
	0xF1,0xEE,0xEE,0xEE,0xEE,0xEE,0xF1,  // O
	0xE1,0xEE,0xEE,0xE1,0xEF,0xEF,0xEF,  // P
	0xF1,0xEE,0xEE,0xEE,0xEA,0xED,0xF2,  // Q
	0xE1,0xEE,0xEE,0xE1,0xEB,0xED,0xEE,  // R
	0xF1,0xEE,0xEF,0xF1,0xFE,0xEE,0xF1,  // S
	0xE0,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,  // T
    0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xF1,  // U
	0xEE,0xEE,0xEE,0xF5,0xF5,0xFB,0xFB,  // V
	0xEE,0xEE,0xEE,0xEA,0xEA,0xE4,0xEE,  // W
	0xEE,0xEE,0xF5,0xFB,0xF5,0xEE,0xEE,  // X
	0xEE,0xEE,0xF5,0xFB,0xFB,0xFB,0xFB,  // Y
	0xE0,0xFE,0xFD,0xFB,0xF7,0xEF,0xE0,  // Z
	0xF1,0xF7,0xF7,0xF7,0xF7,0xF7,0xF1,  /* [ */
	0xFF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,  /* \ */
	0xF1,0xFD,0xFD,0xFD,0xFD,0xFD,0xF1,  /* [ */
	0xFB,0xF5,0xEE,0xFF,0xFF,0xFF,0xFF,  // ^
	0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,  // _
    0xF3,0xF3,0xF7,0xFB,0xFF,0xFF,0xFF,  // '
	0xFF,0xFF,0xF1,0xFE,0xF0,0xEE,0xF1,  // a
	0xEF,0xEF,0xE9,0xE6,0xEE,0xE6,0xE9,  // b
	0xFF,0xFF,0xF8,0xF7,0xF7,0xF7,0xF8,  // c
	0xFE,0xFE,0xF2,0xEC,0xEE,0xEC,0xF2,  // d
	0xFF,0xFF,0xF1,0xEE,0xE0,0xEF,0xF1,  // e
	0xF9,0xF6,0xF7,0xE1,0xF7,0xF7,0xF7,  // f
	0xFF,0xFF,0xF0,0xEE,0xF0,0xFE,0xF1,  // g
	0xEF,0xEF,0xE9,0xE6,0xEE,0xEE,0xEE,  // h
	0xFB,0xFF,0xF3,0xFB,0xFB,0xFB,0xF1,  // i
	0xFD,0xFF,0xF9,0xFD,0xFD,0xFD,0xF3,  // j
	0xF7,0xF7,0xF6,0xF5,0xF3,0xF5,0xF6,  // k
	0xF3,0xFB,0xFB,0xFB,0xFB,0xFB,0xF1,  // l
	0xFF,0xFF,0xE5,0xEA,0xEA,0xEA,0xEA,  // m
	0xFF,0xFF,0xE9,0xE6,0xEE,0xEE,0xEE,  // n
	0xFF,0xFF,0xF1,0xEE,0xEE,0xEE,0xF1,  // o
	0xFF,0xFF,0xE1,0xEE,0xE1,0xEF,0xEF,  // p
	0xFF,0xFF,0xF0,0xEE,0xF0,0xFE,0xFE,  // q
	0xFF,0xFF,0xE9,0xE6,0xEF,0xEF,0xEF,  // r
	0xFF,0xFF,0xF0,0xEF,0xF1,0xFE,0xE1,  // s
	0xFB,0xFB,0xF0,0xFB,0xFB,0xFB,0xFC,  // t
	0xFF,0xFF,0xEE,0xEE,0xEE,0xEC,0xF2,  // u
	0xFF,0xFF,0xEE,0xEE,0xEE,0xF5,0xFB,  // v
	0xFF,0xFF,0xEE,0xEE,0xEA,0xEA,0xF4,  // w
    0xFF,0xFF,0xEE,0xF5,0xFB,0xF5,0xEE,  // x
	0xFF,0xFF,0xEE,0xF5,0xFB,0xFB,0xF3,  // y
    0xFF,0xFF,0xE0,0xFD,0xFB,0xF7,0xE0};  // z				


[b]code char MSG1[]="WELLCOME TO MOVING MESSAGE THE BANDUNG JAVA";   
[/b]   // add to long character
sbit	LED_CLOCK	= P1^7;
sbit	LED_DATA	= P1^6;


char msg[41];
unsigned char dig[20];
bit CH_LIM,OFF_CH;
byte tmp,t;

void main(void)
{
   byte modu,divi,blank1_limit,blank2_limit,ch_limit;
   byte i,j,k,offset_ch,old_divi,diff; 
   int offset_col,t1;
   int row; 
   
	P1=0xFF;
	P3=0xFF;
	P2=0xFF;
    EA      =0;
	TL1=0XFD;	//9600 @ 11.0592
	TH1=0XFD;
    TMOD =0x21;
    SCON =0X50;
    ET0=1;
    TR1=1;
    //EA = 1;       
    RI=0;       
/*
	main execution loop, executes forever.
*/
  
  
  LED_CLOCK = 1; 
  P2=7;
  offset_col=0;
  blank1_limit=17;
  ch_limit=0;
  blank2_limit=0;
  offset_ch=40;
  CH_LIM=0;
  OFF_CH=0;
  k=0;
  for(i=0;i<=40;i++) msg[i]=read2464(i);
  for(t1=40;t1>=0;t1--)msg[t1]=MSG1[40-t1]; //store msg
  while(1){
     if(RI){
	    P2=7;
	    sendCommand("TYPE MSG:\r");
		i=41;
		while(1){
		    while(!RI);    
			RI=0;
			if(i!=0 || SBUF==13){
			   if(SBUF==13){
				 sendCommand("\rOK\r");
				 sendCommand("Storing....wait\r");
				 for(k=i;k>0;k--)msg[k]=0x20; //space char
				 msg[0]=0x20;
				 for(i=0;i<=40;i++) tmp=write2464(i,msg[i]);
				 sendCommand("OK\r");
				 break;
			   }
   			   if(SBUF==0x08){
				  if(i!=40){sendChar(SBUF);++i;}
			   }
			   else{
   			     msg[i]=SBUF;
			     sendChar(msg[i]);
 			     --i;
			   }

			}
			if(SBUF==0x08 && i==0){
				  if(i!=40){sendChar(SBUF);++i;}
			}
		}

	 }
     for(k=0;k<SCROLL_DELAY;k++){
	  //delay_us(60000);    
      for(row=6;row>-1;row--){
		 i=16;
	     for(j=0;j<blank1_limit;j++){
		    dig[i]=0xff;--i;
		 }
		 t=0;
		 for(j=0;j<ch_limit;j++){
		    dig[i]=matrix[msg[(t+offset_ch)]-0x20][row];
			--t;
			--i;
		 }
	     for(j=0;j<blank2_limit;j++){
		    dig[i]=0xff;--i;
		 }
		 if(modu==1)modu1();
		 else if(modu==2) modu2();
		 else if(modu==3) modu3();
		 else if(modu==4) modu4();
		 else if(modu==5) modu5();
         for(i=1;i<17;i++){
		     t=dig[i];
			 if(t & 0x01) LED_DATA =0;
			 else LED_DATA=1;
	         LED_CLOCK = 1;LED_CLOCK = 0; LED_CLOCK = 1;

			 t=t >>1;
			 if(t & 0x01) LED_DATA =0;
			 else LED_DATA=1;
	         LED_CLOCK = 1;LED_CLOCK = 0; LED_CLOCK = 1;

			 t=t >>1;
			 if(t & 0x01) LED_DATA =0;
			 else LED_DATA=1;
	         LED_CLOCK = 1;LED_CLOCK = 0; LED_CLOCK = 1;

			 t=t >>1;
			 if(t & 0x01) LED_DATA =0;
			 else LED_DATA=1;
	         LED_CLOCK = 1;LED_CLOCK = 0; LED_CLOCK = 1;

			 t=t >>1;
			 if(t & 0x01) LED_DATA =0;
			 else LED_DATA=1;
	         LED_CLOCK = 1;LED_CLOCK = 0; LED_CLOCK = 1;

			 t=t >>1;
			 if(t & 0x01) LED_DATA =0;
			 else LED_DATA=1;
	         LED_CLOCK = 1;LED_CLOCK = 0; LED_CLOCK = 1;

         }
		 P2=row;
		 delay_us(2000);
		 P2=7;
	  }
	}//delay
	if(++offset_col>348){	 // 96 + 150 + 96
	   offset_col=0;
       blank1_limit=17;
	   ch_limit=0;
	   blank2_limit=0;
       offset_ch=40;
	   CH_LIM=0;
       OFF_CH=0;
	}
	modu=offset_col%6;
	divi=offset_col/6;
	if(divi!=old_divi)diff=1;
	else diff=0;
	if(blank1_limit!=0)blank1_limit=blank1_limit-diff;
	if(CH_LIM){
	   if(OFF_CH){
	      blank2_limit=blank2_limit+diff;
		  ch_limit=ch_limit-diff;
		  if(ch_limit==255)ch_limit=0;
	   }
	   offset_ch=offset_ch-diff;
	   if(offset_ch>41)offset_ch=0;
	}else{
    	ch_limit=ch_limit+diff;
	}
	if(offset_ch==16)OFF_CH=1;
	if(ch_limit==17)CH_LIM=1;
	old_divi=divi;
    
  }//while
}//----------------end main
void sendCommand(char* command){
   char index, temp;
   
   index=0;
   while(1){ //for(index =  0; temp != 0; index++){
      temp = command[index];
      if(temp==0)break;
      sendChar(temp);
      ++index;
   }
}

void sendChar(unsigned char c){

   SBUF = c;
   while(!TI);TI = 0;
}
void delay_us(unsigned int d){
   unsigned int i,m;
   m=d/14;
   for(i=0;i<m;i++);
}

void modu1(){
  tmp=dig[0];
  dig[0]<<=1;

  t=dig[1];
  dig[1]<<=1;
  dig[1]=(dig[1])|((tmp>>5) & 0x01);
  tmp=dig[2];
  dig[2]<<=1;
  dig[2]=(dig[2])|((t>>5)& 0x01);
  t=dig[3];
  dig[3]<<=1;
  dig[3]=(dig[3])|((tmp>>5)& 0x01);
  tmp=dig[4];
  dig[4]<<=1;
  dig[4]=(dig[4])|((t>>5)& 0x01);
  t=dig[5];
  dig[5]<<=1;
  dig[5]=(dig[5])|((tmp>>5)& 0x01);
  tmp=dig[6];
  dig[6]<<=1;
  dig[6]=(dig[6])|((t>>5) & 0x01);
  t=dig[7];
  dig[7]<<=1;
  dig[7]=(dig[7])|((tmp>>5)& 0x01);
  tmp=dig[8];
  dig[8]<<=1;
  dig[8]=(dig[8])|((t>>5)& 0x01);
  t=dig[9];
  dig[9]<<=1;
  dig[9]=(dig[9])|((tmp>>5)& 0x01);
  tmp=dig[10];
  dig[10]<<=1;
  dig[10]=(dig[10])|((t>>5) & 0x01);
  t=dig[11];
  dig[11]<<=1;
  dig[11]=(dig[11])|((tmp>>5)& 0x01);
  tmp=dig[12];
  dig[12]<<=1;
  dig[12]=(dig[12])|((t>>5)& 0x01);
  t=dig[13];
  dig[13]<<=1;
  dig[13]=(dig[13])|((tmp>>5)& 0x01);
  tmp=dig[14];
  dig[14]<<=1;
  dig[14]=(dig[14])|((t>>5) & 0x01);
  t=dig[15];
  dig[15]<<=1;
  dig[15]=(dig[15])|((tmp>>5) & 0x01);
  tmp=dig[16];
  dig[16]<<=1;
  dig[16]=(dig[16])|((t>>5) & 0x01);
//  t=dig[17];
//  dig[17]<<=1;
//  dig[17]=(dig[17])|((tmp>>5) & 0x01);
//  tmp=dig[18];
//  dig[18]<<=1;
//  dig[18]=(dig[18])|((t>>5) & 0x01);

}
void modu2(){
  tmp=dig[0];
  dig[0]<<=2;

  t=dig[1];
  dig[1]<<=2;
  dig[1]=(dig[1])|((tmp>>4) & 0x03);
  tmp=dig[2];
  dig[2]<<=2;
  dig[2]=(dig[2])|((t>>4)& 0x03);
  t=dig[3];
  dig[3]<<=2;
  dig[3]=(dig[3])|((tmp>>4)& 0x03);
  tmp=dig[4];
  dig[4]<<=2;
  dig[4]=(dig[4])|((t>>4)& 0x03);
  t=dig[5];
  dig[5]<<=2;
  dig[5]=(dig[5])|((tmp>>4)& 0x03);
  tmp=dig[6];
  dig[6]<<=2;
  dig[6]=(dig[6])|((t>>4) & 0x03);
  t=dig[7];
  dig[7]<<=2;
  dig[7]=(dig[7])|((tmp>>4)& 0x03);
  tmp=dig[8];
  dig[8]<<=2;
  dig[8]=(dig[8])|((t>>4)& 0x03);
  t=dig[9];
  dig[9]<<=2;
  dig[9]=(dig[9])|((tmp>>4)& 0x03);
  tmp=dig[10];
  dig[10]<<=2;
  dig[10]=(dig[10])|((t>>4) & 0x03);
  t=dig[11];
  dig[11]<<=2;
  dig[11]=(dig[11])|((tmp>>4)& 0x03);
  tmp=dig[12];
  dig[12]<<=2;
  dig[12]=(dig[12])|((t>>4)& 0x03);
  t=dig[13];
  dig[13]<<=2;
  dig[13]=(dig[13])|((tmp>>4)& 0x03);
  tmp=dig[14];
  dig[14]<<=2;
  dig[14]=(dig[14])|((t>>4) & 0x03);
  t=dig[15];
  dig[15]<<=2;
  dig[15]=(dig[15])|((tmp>>4) & 0x03);
  tmp=dig[16];
  dig[16]<<=2;
  dig[16]=(dig[16])|((t>>4) & 0x03);
//  t=dig[17];
//  dig[17]<<=2;
//  dig[17]=(dig[17])|((tmp>>4) & 0x03);
//  tmp=dig[18];
//  dig[18]<<=2;
//  dig[18]=(dig[18])|((t>>4) & 0x03);
  
}
void modu3(){
  tmp=dig[0];
  dig[0]<<=3;

  t=dig[1];
  dig[1]<<=3;
  dig[1]=(dig[1])|((tmp>>3) & 0x07);
  tmp=dig[2];
  dig[2]<<=3;
  dig[2]=(dig[2])|((t>>3)& 0x07);
  t=dig[3];
  dig[3]<<=3;
  dig[3]=(dig[3])|((tmp>>3)& 0x07);
  tmp=dig[4];
  dig[4]<<=3;
  dig[4]=(dig[4])|((t>>3)& 0x07);
  t=dig[5];
  dig[5]<<=3;
  dig[5]=(dig[5])|((tmp>>3)& 0x07);
  tmp=dig[6];
  dig[6]<<=3;
  dig[6]=(dig[6])|((t>>3) & 0x07);
  t=dig[7];
  dig[7]<<=3;
  dig[7]=(dig[7])|((tmp>>3)& 0x07);
  tmp=dig[8];
  dig[8]<<=3;
  dig[8]=(dig[8])|((t>>3)& 0x07);
  t=dig[9];
  dig[9]<<=3;
  dig[9]=(dig[9])|((tmp>>3)& 0x07);
  tmp=dig[10];
  dig[10]<<=3;
  dig[10]=(dig[10])|((t>>3) & 0x07);
  t=dig[11];
  dig[11]<<=3;
  dig[11]=(dig[11])|((tmp>>3)& 0x07);
  tmp=dig[12];
  dig[12]<<=3;
  dig[12]=(dig[12])|((t>>3)& 0x07);
  t=dig[13];
  dig[13]<<=3;
  dig[13]=(dig[13])|((tmp>>3)& 0x07);
  tmp=dig[14];
  dig[14]<<=3;
  dig[14]=(dig[14])|((t>>3) & 0x07);
  t=dig[15];
  dig[15]<<=3;
  dig[15]=(dig[15])|((tmp>>3) & 0x07);
  tmp=dig[16];
  dig[16]<<=3;
  dig[16]=(dig[16])|((t>>3) & 0x07);
//  t=dig[17];
//  dig[17]<<=3;
//  dig[17]=(dig[17])|((tmp>>3) & 0x07);
//  tmp=dig[18];
//  dig[18]<<=3;
//  dig[18]=(dig[18])|((t>>3) & 0x07);
}
void modu4(){
  tmp=dig[0];
  dig[0]<<=4;

  t=dig[1];
  dig[1]<<=4;
  dig[1]=(dig[1])|((tmp>>2) & 0x0f);
  tmp=dig[2];
  dig[2]<<=4;
  dig[2]=(dig[2])|((t>>2)& 0x0f);
  t=dig[3];
  dig[3]<<=4;
  dig[3]=(dig[3])|((tmp>>2)& 0x0f);
  tmp=dig[4];
  dig[4]<<=4;
  dig[4]=(dig[4])|((t>>2)& 0x0f);
  t=dig[5];
  dig[5]<<=4;
  dig[5]=(dig[5])|((tmp>>2)& 0x0f);
  tmp=dig[6];
  dig[6]<<=4;
  dig[6]=(dig[6])|((t>>2) & 0x0f);
  t=dig[7];
  dig[7]<<=4;
  dig[7]=(dig[7])|((tmp>>2)& 0x0f);
  tmp=dig[8];
  dig[8]<<=4;
  dig[8]=(dig[8])|((t>>2)& 0x0f);
  t=dig[9];
  dig[9]<<=4;
  dig[9]=(dig[9])|((tmp>>2)& 0x0f);
  tmp=dig[10];
  dig[10]<<=4;
  dig[10]=(dig[10])|((t>>2) & 0x0f);
  t=dig[11];
  dig[11]<<=4;
  dig[11]=(dig[11])|((tmp>>2)& 0x0f);
  tmp=dig[12];
  dig[12]<<=4;
  dig[12]=(dig[12])|((t>>2)& 0x0f);
  t=dig[13];
  dig[13]<<=4;
  dig[13]=(dig[13])|((tmp>>2)& 0x0f);
  tmp=dig[14];
  dig[14]<<=4;
  dig[14]=(dig[14])|((t>>2) & 0x0f);
  t=dig[15];
  dig[15]<<=4;
  dig[15]=(dig[15])|((tmp>>2) & 0x0f);
  tmp=dig[16];
  dig[16]<<=4;
  dig[16]=(dig[16])|((t>>2) & 0x0f);
//  t=dig[17];
//  dig[17]<<=4;
//  dig[17]=(dig[17])|((tmp>>2) & 0x0f);
//  tmp=dig[18];
//  dig[18]<<=4;
//  dig[18]=(dig[18])|((t>>2) & 0x0f);
}
void modu5(){
  tmp=dig[0];
  dig[0]<<=5;

  t=dig[1];
  dig[1]<<=5;
  dig[1]=(dig[1])|((tmp>>1) & 0x1f);
  tmp=dig[2];
  dig[2]<<=5;
  dig[2]=(dig[2])|((t>>1)& 0x1f);
  t=dig[3];
  dig[3]<<=5;
  dig[3]=(dig[3])|((tmp>>1)& 0x1f);
  tmp=dig[4];
  dig[4]<<=5;
  dig[4]=(dig[4])|((t>>1)& 0x1f);
  t=dig[5];
  dig[5]<<=5;
  dig[5]=(dig[5])|((tmp>>1)& 0x1f);
  tmp=dig[6];
  dig[6]<<=5;
  dig[6]=(dig[6])|((t>>1) & 0x1f);
  t=dig[7];
  dig[7]<<=5;
  dig[7]=(dig[7])|((tmp>>1)& 0x1f);
  tmp=dig[8];
  dig[8]<<=5;
  dig[8]=(dig[8])|((t>>1)& 0x1f);
  t=dig[9];
  dig[9]<<=5;
  dig[9]=(dig[9])|((tmp>>1)& 0x1f);
  tmp=dig[10];
  dig[10]<<=5;
  dig[10]=(dig[10])|((t>>1) & 0x1f);
  t=dig[11];
  dig[11]<<=5;
  dig[11]=(dig[11])|((tmp>>1)& 0x1f);
  tmp=dig[12];
  dig[12]<<=5;
  dig[12]=(dig[12])|((t>>1)& 0x1f);
  t=dig[13];
  dig[13]<<=5;
  dig[13]=(dig[13])|((tmp>>1)& 0x1f);
  tmp=dig[14];
  dig[14]<<=5;
  dig[14]=(dig[14])|((t>>1) & 0x1f);
  t=dig[15];
  dig[15]<<=5;
  dig[15]=(dig[15])|((tmp>>1) & 0x1f);
  tmp=dig[16];
  dig[16]<<=5;
  dig[16]=(dig[16])|((t>>1) & 0x1f);
//  t=dig[17];
//  dig[17]<<=5;
//  dig[17]=(dig[17])|((tmp>>1) & 0x1f);
//  tmp=dig[18];
//  dig[18]<<=5;
//  dig[18]=(dig[18])|((t>>1) & 0x1f);
}


thx

regard


wandi,indonesian,bandung city
 
Re: led moving message display circuit

I want my circuit to work independent of pc, so i will have to use EPROM for that?

---------- Post added at 10:17 AM ---------- Previous post was at 10:12 AM ----------

I want to use 8051 for this project, so the same circuit what ME have posted can be employed??
 

Re: moving message display using 89c51

Hi Mausad,
Even i am looking for building this project using 8051. Can u send me the circuit diagram??

---------- Post added at 08:09 AM ---------- Previous post was at 07:25 AM ----------

Have u used EEPROM & RS232 interface in ur project?? Can u plz post schematic & component list also?
 

Re: My newest 16 char MMD with a small PIC

Hi;

1.
I found this on a Chinese site (a working Proteus MMD project):
It is worth studying, contains many interesting

- uC: AT89C52, asm source included (appr. 90 instr. only!)
- horizontal pixel scrolling (good !)
- It's using the UART mode 0 (shift reg) !!
- 16 x 8x8 LED matrix array (in 2 rows), hc595 shift regs
- Unfortunately chinese characters but also numbers

I do not work with AVRs, but others may be interested.
Attached: 'xiangmu.zip'
View attachment xiangmu.zip

2.
I made a tiny addition to my PIC MMD project at 16 char:

- Now the last stored char can change (up-down its asc value)
I's useful to found and store an extended character
- It's just a modifying the SW, the HW is the same.

If someone is interested search me in a normal way.
Attached: '16ch_last_u_d.jpg'


3.
Three months working on a commercial led matrix MMD project.
I'm using a 28 pin PIC18F2620 and 2x12 8x8 led matrices.
It's far from ready, even to a DS1307 clock drivers ...

But, to test and debug my main scrolling routines, I made
a simplified ISIS simulation and it's working fine yet.

It presents and describes almost all possible functions.

Some features:

horizontal - vertical scroll
left - right scroll
big (double) chars too
settable CLOCK
max 623 chars/message (limited by the PIC's RAM)
max 90 fix and one user modifiable message
insert a running clock into a fix message

Measured in ISIS the program is fast enough, at 16 MHz PIC clock
the whole refresh rate is better than 240 Hz. In ISIS I'm using
a slower (4 Mhz) clock, so the refresh rate is better than 60 Hz.


Sorry but I do not intend to make public the project, you must this understand.
But ...
- for those who are interested I uploaded a video which shows the
operation of the simulation, attached as 'Pic18_MMD_zuisti_avi.rar'
View attachment Pic18_MMD_zuisti_avi.rar
- or ... look at this screenshot, attached as 'Pic18_MMD_Clock_capt_sh1.jpg'

Greetings
zuisti
 
i built this little scrolling sign long ago. Design specs: At89c2051, programmed in assembly, 4017 + transistors dmux, 5x21 dots.

Schematic and full source at:
**broken link removed**

hope that it is useful for someone


it is intresting. But i can not fuond hex code & other softwaer
 

Dear deniah,
Please translate this serbian language.
Thanks.
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…