任务
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

项目三 LED 流水灯设计制作 PowerPoint PPT Presentation


  • 47 Views
  • Uploaded on
  • Presentation posted in: General

任务 5. 任意花样 LED 闪烁控制. 项目三 LED 流水灯设计制作. 任务 5 任意花样 LED 闪烁控制. 任务要求: 在广告彩灯控制和舞台灯光控制等领域,需要小灯具有间隔点亮、轮流点亮、逐点点亮等花样。此时控制数据没有任何规律,本任务将利用数组解决任意花样 LED 闪烁控制问题。. 任务 5 任意花样 LED 闪烁控制. 一、数组 1 、数组是一个由若干同类型变量组成的集合。 2 、数组分类 一维数组 如 a[5] 二维数组 a[2][4] 三维数组 a[3][4][5] 注意: 数组必须先定义后使用。.

Download Presentation

项目三 LED 流水灯设计制作

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Led

任务5

任意花样LED闪烁控制

项目三 LED流水灯设计制作


5 led

任务5 任意花样LED闪烁控制

任务要求:

在广告彩灯控制和舞台灯光控制等领域,需要小灯具有间隔点亮、轮流点亮、逐点点亮等花样。此时控制数据没有任何规律,本任务将利用数组解决任意花样LED闪烁控制问题。


5 led1

任务5 任意花样LED闪烁控制

一、数组

1、数组是一个由若干同类型变量组成的集合。

2、数组分类

一维数组 如a[5]

二维数组a[2][4]

三维数组a[3][4][5]

注意:数组必须先定义后使用。


5 led2

任务5 任意花样LED闪烁控制

3、一维数组的定义

形式:类型说明符 数组名[整型表达式];

例:

int a[5];

声明了一个整型数组。该数组名为a,包含5个元素,依

次为a[0]、a[1]、 a[2]、 a[3]、 a[4],其中每个元

素都相当于一个整型变量。

注意:数组元素的位置编号即索引是从0开始的。


5 led3

任务5 任意花样LED闪烁控制

4、一维数组的赋值

(1)在定义数组时对数组的全部元素赋予初值。

例:int a[5]={1,2,3,4,5};

(2)只对数组的部分元素初始化。

例:int a[5]={1,2};

说明:只对前面两个赋初值,因此a[0]和a[1]的值是1、

2,而后面三个元素的值全部是默认的0。

(3)在定义数组时对数组元素的全部元素都不赋初值,

则数组元素的值均被初始化为0。


5 led4

任务5 任意花样LED闪烁控制

(4)可以在定义时不指明数组元素的个数,而根据赋值部分由编译器自动确定。

例:

unsigned char BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};

定义了一个BitTab[6]这样一个数组。


5 led5

任务5 任意花样LED闪烁控制

(5)可以为数组指定存储空间,如果未指定空间时,则将数组定义在内部RAM中。

可以用code关键字将数组元素定义在ROM空间中,用于程序运行过程中元素数值不改变的场合。

例:

char code ledsegcode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};


5 led6

任务5 任意花样LED闪烁控制

(6)只有在初始化时,可以为数组的各个元素同时赋值,否则在程序的其他地方一次只能为数组的某一个元素赋值。

例:

i=a[2];//将数组元素a[2]的值赋给变量i。


5 led7

任务5 任意花样LED闪烁控制

(7)由于数组中的每一个元素是由顺序的编号来标识的,所以可以利用循环来访问和处理数组的每一个元素。

例:为数组a的10个元素分别赋值1-10。

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

a[i]=i+1;


5 led8

任务5 任意花样LED闪烁控制

注意:C 语言并不对越界使用数组进行检测,例如数组的长度是6,其元素应该是从BitTab[0]~ BitTab[5],但是如果在程序中写上BitTab[6],编译器并不会认为这有语法错误,也不会给出警告,这一点应引起编程者的注意。


5 led9

任务5 任意花样LED闪烁控制

  • #include "reg51.h"

  • unsigned char code Tab[ ]={0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0xFF,0xAA};

  • void delay(unsigned int t)

  • { unsigned int i,j;

  • for(i=t;i>0;i--)

  • for(j=110;j>0;j--); }

  • void main(void)

  • {

  • unsigned char i;

  • while(1)

  • {

  • for(i=0;i<10;i++)

  • { P1=Tab[i];

  • delay(500); }

  • }

  • }


5 led10

任务5 任意花样LED闪烁控制

二、指针与指针变量

int a=1,b=2;

char c=0xff;

一个地址唯一指向一个内存变量,这个地址称为变量的指针。

如果将变量的地址保存在内存的特定区域,用变量来存放这些地址,这样的变量就是指针变量。


5 led11

任务5 任意花样LED闪烁控制

1、指针变量的定义

例1:

int *ptr1;

指针变量ptr1指向一个整型变量。即ptr1可以存放整型变量的地址。

例2:

char * ptr1;

指针变量ptr1指向一个字符型变量。即ptr1可以存放字符型变量的地址。


5 led12

任务5 任意花样LED闪烁控制

2、指针变量的引用

*指针变量

含义:指针变量所指向的值。


5 led13

任务5 任意花样LED闪烁控制

3、指针运算符与指针表达式

&运算符:取地址运算符,&m即是变量m的地址。


5 led14

任务5 任意花样LED闪烁控制

练习:

执行下面程序段后,ab的值为( )。

int *var,ab;

ab=100;var=&ab; ab=*var+10;


5 led15

任务5 任意花样LED闪烁控制

4、指针与数组

变量存放于内存中时是有地址的,数组在内存存放时也同样具有地址。对数组来说,数组名的值就是数组在内存安放的首地址。指针变量是用于存放变量的地址,可以指向变量,也可以存放数组的首地址或数组元素的地址,也就是说,指针变量可以指向数组或数组元素,对数组而言,数组和数组元素的引用,也同样可以使用指针变量。


5 led16

任务5 任意花样LED闪烁控制

(1)指针与一维数组

例:int a[10],*ptr;

ptr=a;

或:ptr=&a[0];


5 led17

任务5 任意花样LED闪烁控制

指针对数组的表示方法:

(1)ptr+n与a+n表示数组元素a[n]的地址,即&a[n]。

(2)*(ptr+n)和*(a+n)表示数组的元素,即a[n]。

(3)指向数组的指针变量也可以用数组的下标形式表示ptr[n],即*(ptr+n)。


5 led18

任务5 任意花样LED闪烁控制

#include "reg51.h"

unsigned char code Tab[ ]={……};

void delay(unsigned int t)

{

unsigned int i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

void main(void)

{

unsigned char i;

while(1)

{

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

{

P1=*(Tab+i);

delay(500);

}

}

}


5 led19

任务5 任意花样LED闪烁控制

#include "reg51.h"

unsigned char code Tab[ ]={……};

void delay(unsigned int t)

{

unsigned int i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--);

}

void main(void)

{

unsigned char i,*ptab;

ptab=Tab;

while(1)

{

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

{

P1=*(ptab+i);

delay(500);

}

}

}


5 led20

任务5 任意花样LED闪烁控制

函数的首地址也可以存储在某个函数指针变量里。这样,就可以通过这个函数指针变量来调用所指向的函数了。

声明一个可以指向某个函数的函数指针变量pdelay的方法:

void (*pdelay)(unsigned int t);


5 led21

任务5 任意花样LED闪烁控制

#include "reg51.h"

unsigned char code Tab[ ]={……};

void delay(unsigned int t)

{ unsigned int i,j;

for(i=t;i>0;i--)

for(j=110;j>0;j--); }

void main(void)

{ unsigned char i,*ptab;

void (*pdelay)(unsigned int t);

pdelay=&delay;

while(1)

{

ptab=Tab;

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

{ P1=*ptab;

ptab++;

(*pdelay)(500);}

}

}


Led

Thank You !


  • Login