普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1835|回复: 0

我怎么样能实现让led点阵先出现"普",一段时间够,出现"中"呢

 关闭 [复制链接]

2

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2019-7-25 17:25:35 | 显示全部楼层 |阅读模式
#include "reg51.h"
#include <intrins.h>
typedef  unsigned char u8;
typedef  double u16;

sbit  SRCLK= P3^6;
sbit  RCLK=P3^5;
sbit  SER=P3^4;
u8 code ledwei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 code ledduan1[]={0x02,0x22,0x22,0xAA,0xAF,0xAA,0xAA,0xFA,0xAA,0xAA,0xAF,0xAA,0x22,0x22,0x02,0x00,
                    0x80,0x80,0xA0,0xAF,0xAA,0xAA,0xAA,0xFF,0xAA,0xAA,0xAA,0xAF,0xA0,0x80,0x80,0x00};
u8 code ledduan2[]={0x00,0xFE,0x02,0x22,0xDA,0x06,0x00,0xFC,0x04,0x04,0x04,0x04,0x04,0xFC,0x00,0x00,
                    0x00,0xFF,0x08,0x10,0x08,0x07,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00};
         
void delay(u16 j)
{
while(j--);
}
void hc595(u8 dat1,u8 dat2,u8 dat3,u8 dat4)
{  u8 i;
//SRCLK=1;
//RCLK=1;
for(i=0;i<8;i++)
{  SER=dat1>>7;
   dat1 <<=1;
  SRCLK=0;
  _nop_();
  _nop_();
  SRCLK=1;
}


for(i=0;i<8;i++)
{  SER=dat2>>7;
   dat2 <<=1;
  SRCLK=0;
  _nop_();
  _nop_();
  SRCLK=1;
}


for(i=0;i<8;i++)
{  SER=dat3>>7;
   dat3 <<=1;
  SRCLK=0;
  _nop_();
  _nop_();
  SRCLK=1;
}


for(i=0;i<8;i++)
{  SER=dat4>>7;
   dat4 <<=1;
  SRCLK=0;
  _nop_();
  _nop_();
  SRCLK=1;
}
RCLK=0;
_nop_();
_nop_();
RCLK=1;
}
void main()
{  u8 k,l;
while(1)
{
  for(k=0;k<16;k++)
  {
    hc595(~ledwei[k+16],~ledwei[k],ledduan1[k+16],ledduan1[k]);
     delay(10);

  
  }
  
for(l=0;l<16;l++)
{ hc595(~ledwei[l+16],~ledwei[l],ledduan2[l+16],ledduan2[l]);
     delay(10);
}
}
}

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-14 21:25 , Processed in 0.096269 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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