基于MCS-51单片机16*16点阵LED显示屏设计 [email protected] 发给我谢谢

如题所述

第1个回答  2011-06-27

ORG 0000H

  START:MOV DPTR,#TAB

        ACALL SCAN1

        AJMP START

  SCAN1:MOV R5,#00H

        MOV R4,#16

        MOV R0,#00

        MOV R1,#16

   LOOP:MOV P2,#00H

        MOV P3,#00H

        MOV A,R0

        MOVC A,@A+DPTR

        MOV P2,A

        INC R0

        

        MOV A,R1

        MOVC A,@A+DPTR

        MOV P3,A

        INC R1

        MOV P1,R5

        ACALL DELAY

        MOV P2,#00H

        MOV P3,#00H

        MOV A,R5

        INC A

        MOV R5,A

        DJNZ R4,LOOP

        RET

  DELAY:MOV R6,#5

     D1:MOV R7,#100

     D2:DJNZ R7,D2

        DJNZ R6,D1

        RET

    TAB:DB  44H,28H,10H,2DH,0C3H,04H,24H,24H,25H,0FEH,24H,2CH,14H,64H,04H,00H

        DB  20H,42H,81H,06H,0F8H,20H,40H,0FFH,92H,92H,92H,92H,92H,0FFH,00H,00H

       

        END

第2个回答  2011-06-30

可左移和静态显示,程序如下:

#include<reg51.h> 

sbit R=P2^0; 

sbit CLK=P2^1; 

sbit STB=P2^2; 

char code table[]={0x01,0x00,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x00,0x00,0xFF,0xFE,0x02,0x00,

0x04,0x08,0x0F,0xFC,0x18,0x08,0x28,0x08,0x48,0x08,0x08,0x08,0x0F,0xF8,0x08,0x08}; 

void delay(int z) 

 int x,y; 

 for(x=0;x<z;x++) 

  for(y=0;y<110;y++); 

void WriteByte(char dat) 

 char i; 

 for(i=0;i<8;i++) 

 {

  dat=dat>>1; 

  R=CY; 

  CLK=0; 

  CLK=1; 

 } 

void main() 

 int num; 

 while(1) 

 { 

  for(num=0;num<16;num++) 

   {

    WriteByte(table[2*num+1]);

    WriteByte(table[2*num]); 

   

    P1=num; 

    STB=1; 

    STB=0; 

    delay(2); 

   }  

 } 

哪块不懂问我!1540624329

相似回答