找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1693|回复: 0
打印 上一主题 下一主题
收起左侧

基于89C51的led点阵显示器设计c语言程序代码

[复制链接]
跳转到指定楼层
楼主
ID:265487 发表于 2017-12-23 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
sbit  SI=P1^0;        
sbit  SCK=P1^1;      
sbit  RCK=P1^2;            
unsigned char dis1[32],dis2[32] ;  
unsigned char i,j,k;     
unsigned char code  H_S[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};   
unsigned char code  L_S[][32]={      {0xFF,0xFF,0x7F,0xFF,0x7F,0xFF,0x3F,0xFE,0xBF,0xFD,0xDF,0xFB,0xEF,0xE4,0x17,0x8F,
0x7B,0xFF,0x1F,0xFC,0x7F,0xFB,0x5F,0xFD,0x7F,0xFF,0x0F,0xE0,0xF7,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xDF,0xFF,0x9F,0xF6,0xDF,0xF6,0xEF,0xF8,0xD7,0xFE,0x1B,0xEE,0xDF,0xE1,
0x5F,0xFE,0x7F,0xCF,0x03,0xF0,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xCF,0xB7,0xD0,0xD7,0xED,0xC7,0xED,0xC7,0xF1,
0xD7,0xFF,0x97,0xE9,0xC1,0xDD,0xDF,0x9E,0x5F,0xBF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFD,0xBF,0xFD,0xBF,0xFD,0xBF,0xED,0xB7,0xE5,
0xA7,0xF5,0xAF,0xF9,0xBF,0xFD,0xBF,0xFD,0x3F,0x80,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xEF,0xFF,0xDF,0xFB,0xDF,0xFB,0xEF,0xE3,0x9F,0xF8,0xE3,0xFD,0xAF,0xF5,
0x5F,0xF0,0x67,0xF7,0xE9,0xF8,0xEF,0xFB,0xEF,0xF5,0x2F,0x8E,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0x3F,0xFF,0x7F,0xF3,0xBF,0xFF,0xBF,0xF9,0x0F,0xFE,0x3F,0xFF,
0x9F,0xFE,0xAF,0xFD,0xB7,0xF3,0xBB,0xC7,0xBD,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xF3,0x5F,0xFB,0xDF,0xFD,0xFF,0xED,0x0F,0x82,0xF3,0xEE,0x1B,0xFC,
0x7F,0xFF,0xFF,0xC0,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0x3F,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xC3,0xFD,0xEB,0xE1,0x6B,0xFE,0xAB,0xFB,0x4B,0xFC,
0xDB,0xF3,0x3B,0xFC,0xFB,0xFC,0x7B,0xFD,0xBB,0xDD,0xDB,0x83,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xDF,0xF9,0xEF,0xFB,0xEF,0xDF,0x37,0xE0,0xF7,0xFF,0xEB,0xF8,
0xED,0xFF,0xEF,0xF8,0xEF,0xF7,0x6F,0xE8,0x6F,0xF7,0xEF,0xE0,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0x7F,0xFF,0xBF,0xFF,0xDF,0xFD,0x1F,0xF8,0x5F,0xFB,0x9F,0xFD,0x1F,0xFD,
0xDF,0xFC,0x1F,0xFD,0x7F,0x8E,0xFB,0xFE,0xDB,0xF7,0xBB,0xE7,0x7F,0xF0,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0x0F,0xFC,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,
0xFF,0xFE,0x7F,0xFF,0x7F,0xFF,0x7F,0x81,0x81,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xBF,0xEF,0xDF,0xC0,0xCF,0xED,0xDF,0xE5,0xC7,0xFB,0xE9,0xEF,
0x97,0xF1,0xA7,0xFB,0xDB,0xF0,0xDD,0xFB,0xDF,0x83,0x2F,0xFC,0xFF,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xF3,0x5F,0xFB,0xDF,0xFD,0xFF,0xED,0x0F,0x82,0xF3,0xEE,0x1B,0xFC,
0x7F,0xFF,0xFF,0xC0,0x03,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0x3F,0xFF,0xFF,0xFF},
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xC3,0xFD,0xEB,0xE1,0x6B,0xFE,0xAB,0xFB,0x4B,0xFC,
0xDB,0xF3,0x3B,0xFC,0xFB,0xFC,0x7B,0xFD,0xBB,0xDD,0xDB,0x83,0xFF,0xFF,0xFF,0xFF},
};
void Delay (unsigned char  a)         
{
    unsigned char b,c;
    for (b=a;b>0;b--)
        for(c=110;c>0;c--);
}
void Input(unsigned char  a)      
{
    unsigned char b;
    SCK=0;
    RCK=0;
    for (b=8;b>0;b--)
        {
            a=a<<1;
            SI=CY;
            SCK=1;
            SCK=0;
        }   
}
void Display()              
{
     for (i=0,j=0;i<16;i++)
     {
        if(i<8)
            {
                Input(H_S[j]);
                Input(0x00);
            }
        else
            {
                Input(0x00);
                Input(H_S[j]);
            }
        j++;
        if(j==8)
        j=0;
        Input(dis1[2*i+1]);
        Input(dis1[2*i]);
        RCK=1;
        Delay(3);
     }
}
void Now_dis(unsigned char *p,unsigned char *p1)           
{
    unsigned char a;
    for (a=0;a<16;a++)
    {
           p[a*2]=p1[a*2];
           p[a*2+1]=p1[a*2+1];
    }
}
void  V_Move(unsigned char e,unsigned char g,unsigned char *p1)   
{
    unsigned char a,b,c,d=0,f=31;
    for (a=0;a<16;a++)
    {
    if(g==1)
        {
            for (b=0;b<30;b++)
                dis1=dis1[b+2];
            if(p1==0)
                {
                  dis1[30]=0xff;
                  dis1[31]=0xff;
                }
            else
                {   
                  dis1[30]=p1[d++];
                  dis1[31]=p1[d++];
                }           
            for (c=e;c>0;c--)
             Display();
         }
    else
        {
            for (b=29;b>0;b--)
                dis1[b+2]=dis1;
            dis1[2]=dis1[0];
            if(p1==0)
                {
                  dis1[1]=0xff;
                  dis1[0]=0xff;
                }
            else
                {
            dis1[1]=p1[f--];
            dis1[0]=p1[f--];   
                }   
            for (c=e;c>0;c--)
             Display();
        }
    }
         
}
void  RL_Move(unsigned chara,unsigned char b,unsigned char  *p)  
{
    unsigned char i,j,k,c;
    for (i=0;i<16;i++)
        {   
            if(p==0)
                {
                    dis2[2*i]=0xff;
                    dis2[2*i+1]=0xff;
                }
            else
                {
                    dis2[2*i]=p[2*i];
                    dis2[2*i+1]=p[2*i+1];
                }
        }
    if(b==1)
    for (k=0;k<16;k++)
    {
        for(i=0;i<16;i++)
            {
            dis1[i*2+1]=dis1[i*2+1]<<1;
            dis1[i*2]=dis1[i*2]<<1;
            if (CY==1)
                dis1[i*2+1]=dis1[i*2+1]|0x01;
   
   
            dis2[i*2+1]=dis2[i*2+1]<<1;
            if (CY==1)
                dis1[i*2]=dis1[i*2]|0x01;
            dis2[i*2]=dis2[i*2]<<1;
            if (CY==1)
                dis2[i*2+1]=dis2[i*2+1]|0x01;
            }
        for(j=a;j>0;j--)
            Display();
    }
    else
    {
        for(k=0;k<16;k++)
        {
            for(i=0;i<16;i++)
                {
                dis1[i*2]=dis1[i*2]>>1;
                c=dis1[i*2+1]&0x01;
                dis1[i*2+1]=dis1[i*2+1]>>1;
                if(c)
                    dis1[i*2]=dis1[i*2]|0x80;                  
                c=dis2[i*2]&0x01;
                dis2[i*2]=dis2[i*2]>>1;
                if(c)
                    dis1[i*2+1]=dis1[i*2+1]|0x80;
                c=dis2[i*2+1]&0x01;
                dis2[i*2+1]=dis2[i*2+1]>>1;
                if(c)
                    dis2[i*2]=dis2[i*2]|0x80;
                }
            for (j=a;j>0;j--)
                Display();
        }
    }
}
void main ()
{
    while (1)
    {
            Now_dis(dis1,L_S[0]);
            V_Move(10,1,L_S[1]);
            V_Move(10,1,L_S[2]);
            V_Move(10,0,L_S[3]);
            V_Move(10,1,L_S[4]);
            V_Move(10,0,L_S[5]);
            V_Move(10,1,L_S[6]);
            V_Move(10,1,L_S[7]);
            V_Move(10,0,L_S[8]);
            V_Move(10,1,L_S[9]);
            V_Move(10,0,L_S[10]);
            V_Move(10,1,L_S[11]);
            V_Move(10,1,L_S[12]);
            V_Move(10,0,L_S[13]);
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表