如何实现一个LED流水灯程序

描述

本节重点:实现一个LED流水灯程序

预备知识:

一、C语言常用到的预处理命令

1、define

define是宏定义,程序在预处理阶段将用define定义的内容进行了替换 。因此在程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。

使用#define定义的常量也称为符号常量,可以提高程序的运行效率。

其常见的用法包括两种,分别是:

1)#define 宏名 宏值
2)#define 宏名(参数列表)表达式

而define命令的用法一般分为两种:

第一种语法就是定义符号常量

第二种语法常用来定义符号函数。

举例说明一下:

#define A 3.14

执行这个条件之后,就是能直接将3.14的数值给到A上。

#define AREA(x,y)(x)*(y)

表示用来求长和宽分别是x和y的矩形的面积。

二、函数循环左移/右移

crol (a,b);循环左移函数,a是左移的值,b是左移的位数。包含在intrins.h库函数里面。

cror (a,b);循环右移函数,a是右移的值,b是右移的位数。包含在intrins.h库函数里面

编写程序:

有了上述的知识储备之后,我们在编写一个LED流水灯的程序。

流水灯思路:

首先点亮第一个LED灯,然后延时一段时间,再将当前LED熄灭,然后点亮第二个LED灯,这个过程通过一个函数移动的方式去实现,再延时一段时间,熄灭LED灯,如此往复的循环下去,就能实现一个LED灯的流水视觉。

(本此实验LED灯组采用的是共阴极接法,也就是说需要单片机引脚输出一个1,才会使得LED灯点亮)

程序编写:

#include< reg52.h >                         //头文件

#include< intrins.h >                       //头文件

typedef unsigned char u8;            //定义类型

typedef unsigned int u16;

#define led P2                              //定义LED灯组使用的是P2的八个引脚

void delay(u16 i)                          //延时函数delay

{

 while(i--);

}

void main()

{

u8 i=0;                                   //定义变量i

led=0x01;                             //设置LED灯组的初始状态值(0000 0001,使用的是共阴极)

  delay(50000);

  while(1)

  {

for(i=0;i< 7;i++)                   //for循环函数,初始值i为0,满足i< 7的条件,每次循环一次执行i自加1

   {

led=_crol_(led,1);             //LED左移函数,每次执行for循环执行一次函数移动

delay(50000);

   }

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

   {

led=_cror_(led,1);             //LED右移函数,每次执行for循环执行一次函数移动

delay(50000);

   }

  }

}

流水灯

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分