找回密码
 立即注册

QQ登录

只需一步,快速开始

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

如何在按键程序去控制单片机花样彩灯暂停和启动?

[复制链接]
跳转到指定楼层
楼主
ID:907391 发表于 2021-4-17 16:02 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar tab2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uchar tab3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe} ;
uchar tab4[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f} ;
void delay (uint i)
{
        uchar t;
        while(i--)
        {
        for(t=0;t<120;t++);
               
    }        
}                  
void main()
{
  char k;
  uchar i,temp1,temp2;
   delay(500);
   P0=0x00;
   P2=0x00;
   delay(500);
   P0=0xff;
   P2=0xff;
   delay(500);
  while(1)
  {
  for(k=0;k<8;k++)
   {
    P0=tab1[k];
    delay(500);
   }
   P0=0xff;
     for(k=0;k<8;k++)
     {
       P2=tab1[k];
       delay(500);
         }
           P2=0xff;
   for(k=7;k>-1;k--)
   {
    P2=tab1[k];
    delay(500);
           
   }
   P2=0xff;
             for(k=7;k>-1;k--)
      {
        P0=tab1[k];
        delay(500);
      
      }
        P0=0xff;

   temp1=0x01;
   temp2=0x01;
   for(i=0;i<4;i++)
   {
            P0=~temp1;
         temp1=temp1<<2;
         delay(500);
   }
   P0=0xff;
   for(i=0;i<4;i++)
   {
            P2=~temp2;
         temp2=temp2<<2;
         delay(500);
   }

   for(k=0;k<16;k++)
   {
    P0=tab3[k];
        P2=tab4[k];
    delay(500);
   }
        delay(500);
   P0=0x00;
   P2=0x00;
   delay(500);
   P0=0xff;
   P2=0xff;
   delay(500);
  
  }                  

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

使用道具 举报

沙发
ID:554500 发表于 2021-4-17 23:38 | 只看该作者
可以设置标志位,1-执行彩灯代码,0不执行彩灯代码。
代码里用了太多的delay,效率太低了。
而且流水灯的代码这样写也不太好,可以改为:
for(k=0;k<8;k++)
{
     P2=~(1<<k);
      delay(500);
}
特殊的数据变化再用数组的方式
回复

使用道具 举报

板凳
ID:907391 发表于 2021-4-18 08:47 来自手机 | 只看该作者
18701931930 发表于 2021-4-17 23:38
可以设置标志位,1-执行彩灯代码,0不执行彩灯代码。
代码里用了太多的delay,效率太低了。
而且流水灯的 ...

可以帮忙改一下吗,我是个初学者,我在网上找了好多方法,你讲的这个应该也试了都没成功,我要废了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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