单片机节日彩灯源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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);//延时
}
}