找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

用数组点亮单片机流水灯结果没有动态效果直接全亮了?

查看数: 3673 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-2-17 11:29

正文摘要:

很喜欢51黑论坛,论坛里面有很多热心的大佬,这是我见过的最有爱的论坛,没有之一。每一位回贴的网友都是优秀的老师,像我这样的小白在这里能学到很多东西。 最近想用数组跑一个流水灯,LED的引脚是随便接的,考虑 ...

回复

ID:466499 发表于 2019-2-17 22:46
wulin 发表于 2019-2-17 20:36
你这样写LED驱动函数不行,改成这样就可以了。

看了你的例程,我在我的程序LED()驱动函数里面加了一个参数y,在main函数的for循环里面调用了这个带参数的驱动函数LED(y),就美妙的跑起来了,跪谢大佬用心给我仿真,祝新年快乐!万事大吉!
ID:466499 发表于 2019-2-17 22:07
顶顶顶!还有没有其它好方法实现啊,这种引脚分散的怎么用数组来操作哦?
ID:154074 发表于 2019-2-17 21:49
你的大循环没写
ID:213173 发表于 2019-2-17 20:36
你这样写LED驱动函数不行,改成这样就可以了。



#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LED1  = P3^5;
sbit LED2  = P1^7;
sbit LED3  = P1^6;
sbit LED4  = P1^5;
sbit LED5  = P1^4;
sbit LED6  = P1^3;
sbit LED7  = P3^7;
sbit LED8  = P0^0;
sbit LED9  = P1^2;
sbit LED10 = P1^0;
sbit LED11 = P3^2;
sbit LED12 = P1^1;
//全局变量//
uint y;
//定义LED数组//
uint leddata[]={0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff};
//延时函数//
delay(uint t)
{
        uint i,j;
        for(i=t;i>0;i--)
                for(j=112;j>0;j--);
}
//LED驱动函数//
void LED(uint i)//写入12位数据
{   
        LED1=i&0x01;i>>=1;       
        LED2=i&0x01;i>>=1;
        LED3=i&0x01;i>>=1;
        LED4=i&0x01;i>>=1;
        LED5=i&0x01;i>>=1;
        LED6=i&0x01;i>>=1;
        LED7=i&0x01;i>>=1;
        LED8=i&0x01;i>>=1;
        LED9=i&0x01;i>>=1;
        LED10=i&0x01;i>>=1;
        LED11=i&0x01;i>>=1;
        LED12=i&0x01;
}

void main()
{
        uchar j=0;
        while(1)
        {
                y=leddata[j];
                LED(y);
                j++;
                j%=12;
                delay(500);
        }
}


评分

参与人数 2黑币 +18 收起 理由
Trump1438 + 8 回帖助人的奖励!
toaaa + 10 跪谢大佬!按照你的例程我找到了我程序问题.

查看全部评分

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

Powered by 单片机教程网

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