单片机节日彩灯源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.

单片机编程语言中的延时函数

人眼的视觉暂留时间是1/24秒,只要小于这个时间,看到的就是连续画面。所以为了看到LED灯流动,就必须在程序中加入延时函数。

void delay (uint z) //uint z 传递的是延时毫秒的数,比如延时10毫秒则为10

{

uchar x,y; //这里其实应该uint x,y;

for (x=z;x>0;x--) //这个循环是毫秒数

for (y=110;y>0;y--); //这个循环是1毫秒循环次数

}

3.

sbit key2=P3^5;//关闭彩灯的开关

4.

for( ; ;);是一个典型的简介的死循环。

解释如下:

所谓循环就是让计算机重复执行一段代码;

循环的核心有两个部分:循环控制、循环体;

循环控制部分的循环结束条件如果永远成立,将会导致一直循环,俗称”死循环“;

上面的程序:最后的分号,表示循环体为空,是空循环;括号中的两个分号之间是放循环结束条件的,这里也是空,等价于循环条件永远成立。

for( ; ;);的循环条件永远成立,所以导致死循环。

5

在注册表里面设一个变量,程序每运行的次数和这个变量进行比较,就可以控制程序的运行次数了

#include

#define uint unsigned int

#define uchar unsigned char

void san();

void wu();

void delay(uint);

sbit key2=P3^5;//关闭彩灯的开关

sbit key1=P3^4;//启动彩灯的开关

sbit key3=P3^3;//控制彩灯右移的开关

sbit key4=P3^1;//控制彩灯左移的开关

uchar temp;//定义一个无符号字符型数据变量

uchar temp1;//定义一个无符号字符型数据变量

uchar temp2;//定义一个无符号字符型数据变量

uint a;

int c;

void main()//主程序

{

while(1)//判断哪个开关被按下

{

if(key1==0)

{

san();

}

if(key2==0)

{

P1=0xff;

}

if(key3==0)

{

san();

}

if(key4==0)

{

wu();

}

}

}

void san()

{

uchar table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义一个数组for(a=0;a<8;a++)

{

temp=table[a];//将数组赋值给变量temp

P1=temp;

delay(300);//延时

}

}

void delay(uint z)//延时程序

{

uint x,y;

for(x=100;x>0;x--)

for(y=z;y>0;y--);

}

void wu()

{

uchar table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义一个数组

for(c=7;c>-1;c--)

{

temp1=table1[c];//将数组赋值给变量temp1

P1=temp1;

delay(300);//延时

}

}

相关文档
最新文档