• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

LED花样灯

1638192663@qq.com 2017-08-21 浏览量:661
请问各位大神51单片机里的LED花样灯怎么设置,就是比如一行LED灯从两边开始逐渐往中间亮,然后到中点在逐渐往两边熄灭之类的花样灯等等,(PS不要最原始最复杂的那种方法)
-1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 对于这种一行灯的情况,个人喜欢列一个数组出来,数组里的一个数代表一个灯,0代表熄灭,1代表亮起。

    然后写一个函数,循环读取数组中灯的状态。

    按照题主的要求,只要定时改变这个数组的取值就可以了。

    • 发布于 2017-08-22
    • 举报
    • 评论 1
    • 0
    • 0
d037d452855af78c 回复了 赤心木zqw:有道理,我老是把问题想复杂,以为要一次读取两个数组里的数,这个思路提醒了我 回复

其他答案 数量:4
  • 这种的话,分情况

    1,如果灯超过8个,就要加一个74595芯片,实现串行转并行,以节省io口

    2,灯不超过8个,可以直接接到普通io口,最好选择同一组,比如p1,p2

    写程序的,无非就是操作寄存器,将每种状态对应的寄存器的值写入相应寄存器,然后每隔几ms就写入下一状态对应的值

    • 发布于2017-08-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接用循环,循环里自己指定指定那些灯亮哪些灯灭(可以根据循环的计数器去确定);这样不限制灯的IO顺序。
    • 发布于2017-08-22
    • 举报
    • 评论 0
    • 0
    • 0

d037d452855af78c 回复了 donatello :我是想过这种最原始的,就是太麻烦了才不想这样子编程 回复

  • 設 8個燈

    for ( i=0;i<4=;i++)

      P1 |= ( (0x01<<i) | (0x80>>i); // 00000001 | 10000000

    for ( i=0;i<4=;i++)

    {

      P1 &= ( (0xF7<<i) ; //11110111

      P1 &= (0xEF>>i); //11101111

    }

    參考

    • 发布于2017-08-23
    • 举报
    • 评论 1
    • 0
    • 0
d037d452855af78c 回复了 MOP :厉害了这思路,不过下面几行&是什么意思,为什么是0xf7,0xef,左右移动移动的不是一吗,而且干嘛还要相与,那p1口的初值是多少 回复

相关问题

问题达人换一批

LED花样灯