极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11700|回复: 3

关于流水等的不同处理方法

[复制链接]
发表于 2016-4-7 09:04:56 | 显示全部楼层 |阅读模式
本帖最后由 fullmous 于 2016-4-7 09:04 编辑




流水灯是单片机学习过程中最经典的案例。        程序的实际运行效果是8个LED以一定时间间隔循环点亮,如同节日彩灯一样。
        实验电路本身很简单,但要用面包板搭建也相当费时费力,我使用了一块八LED模块就简单多了。
        为了对比,我们首先看一个采用Arduino的引脚概念编写的程序。
        右下图为实际电路,八LED模块的引脚0~7接我自己的AVR单片机最小系统板的B端口的0~3,也就是Arduino标识为数字引脚的8~13以及D端口的4~7,也就是Arduino的4、5、6、7引脚。
        八LED模块的C引脚接我的板子的低电位即GND引脚。
引脚形式编写的流水灯程序

byte ledPin[] = {4,5,6,7,8,9,10,11};        //引脚数组
int currentLED = 0;        //当前要点亮的LED的标记变量

void setup()        //初始化,只运行一次
{
  for (int x = 0;x < 8;x++)                        //8个引脚都设为输出
  {
    pinMode(ledPin[x],OUTPUT);
  }
}
void loop()                //主循环
{
  changeLED();        //调用变换LED函数
  delay(500);                //延时
}

void changeLED()                        //变换LED函数主体
{
  for (int x = 0;x < 8;x++)                //先将8个LED都置低,熄灭
  {
    digitalWrite(ledPin[x],LOW);
  }

  digitalWrite(ledPin[currentLED],HIGH);        //仅点亮要点亮的LED
  currentLED++;                                //要点亮LED计数变量增一
  if (currentLED == 8)                //如果要点亮LED计数变量等于8
    currentLED = 0;                        //要点亮LED计数变量归零
}

用端口形式编写流水灯程序
        这个例程使用端口的概念实现与前例相同的运行效果,但程序代码要短小简洁的多,连线也顺当得多。
        右图为我的最小系统板与八LED模块的接线图,请读者注意此例与前例的区别。
        此例的引脚直接接B端口的8个引脚,也就是Arduino的8、9、10、11、12、13引脚,以及被晶振占用的两个引脚。

void setup() {      
  DDRB = 0xFF;        //设置端口B为输出
}

void loop() {
  byte cnt;
  PORTB = 0x01;  //从最右侧第一个LED开始
  for (cnt = 0;cnt < 8;cnt++)
  {
    delay(500);                                  //延迟500毫秒
    PORTB = PORTB << 1;          //左移一位
  }
}

        感兴趣的朋友可以比较一下,也请给出评价。后续,还将给出8段数码管的例子。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-4-7 12:08:39 | 显示全部楼层
楼主的意思我明白了,就是把arduino的外衣脱掉,就看到底层的了,很好。学习学习。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-7 14:57:10 | 显示全部楼层
是的,现在有一种倾向或是潮流,就是太依赖Arduino。现在,发表的很多作品、文章都要冠以基于Arduino云云,其实就是AVR单片机,如果总是躺在Arduino上,是会影响你的成长的。
回复 支持 反对

使用道具 举报

发表于 2016-4-8 12:13:25 | 显示全部楼层
个人觉得 适合就好! 一个编程语言好坏不在于有多简单和高效。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 04:30 , Processed in 0.037443 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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