文号
t54497
阅读
1650
回复
0
收藏
1
c51控制的8*8电子流动显示图像
2013/02/10
IP:河南
第一次发贴  这是我用开发板参照视频写的一个8*8电子的流动显示程序
  该点阵为8*8双色点阵


图片太大了 传不上来

点阵显示的是由下往上的方式显示 内容是
   I love(一个心形的图案) u


QQ截图20130210102600.png     


以下是该程序代码


#include<reg51.h>
unsigned char code tab1[]={     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                            
                            0xFF,0x81,0xE7,0xE7,0xE7,0xE7,0x81,0xFF,//心
                            0xFF,0x99,0x00,0x00,0x81,0xC3,0xE7,0xFF,//I
                            0xFF,0x99,0x99,0x99,0x99,0x81,0xC3,0xFF,//u
                            0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                         };//要显示的内容
unsigned char code tab[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   显示的行
sbit LE=P3^7;
void DIANZHEN(unsigned char i,unsigned char luse,unsigned char hongse)//双色点阵显示函数(1:公共端,2:绿色端,3:红色端)
{
    P0=tab[i];
    LE=1;
    LE=0;
    P0=0xff;
    P2=luse;
    P0=hongse;
}



void DELAYMS(unsigned int ms)    //毫秒级延时(ms)
{
    unsigned int i;
    unsigned char j;
    for(i=0;i<ms;i++)
        for(j=110;j>0;j--);
}


void main()
{
    unsigned char i,j;
    unsigned int k;
    while(1)
    {
                DIANZHEN(i,0xff,tab1[i+j]);
                DELAYMS(5);
                if(i<8)
                        i++;
                else
                    i=0;
                if(k<=100)
                    k++;
                else
                {    
                    k=0;
                    j++;
                    if(j>32)j=0;
                }    
    }


}
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的