单片机C语言LED灯点亮程序完全版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机C语言L E D灯点亮程序完全版(总6页)
本页仅作为文档封面,使用时可以删除
This document is for reference only-rar21year.March
1例子1第二个灯亮
#include<>
void main()
{
P1=0xfd;
}
#include<>
Sbit D1=P1^0;
Void main()
{
D1=0
}
注意:稍微改程序时需重新hex化
例子2第一个灯亮
#include<> include<> //52单片机头文件
sbit led1=P1^0; //单片机管脚位声明
void main() //主函数
{
unsigned int i; //定义一个int型变量
while(1)
{
i=50000; //变量赋初值为50000
led1=0; //点亮灯
while(i--); //延时
i=50000;
led1=1; //熄灭灯
while(i--);
}
}
3例子1 3 5 7灯同时亮
#include<> //52单片机头文件
sbit led1=P1^0; //单片机管脚位声明
sbit led3=P1^2; //单片机管脚位声明
sbit led5=P1^4; //单片机管脚位声明
sbit led7=P1^6; //单片机管脚位声明
void main() //主函数
{
led1=0; //将单片机口清零
led3=0; //将单片机口清零
led5=0; //将单片机口清零
led7=0; //将单片机口清零
while(1); //程序停止在这里,在后面会讲到为什么这样写。
}
例子2 1 3 5 7同时亮
#include<> //52单片机头文件
void main() //主函数
{
P1=0xaa; //将单片机P1口的8个口由高到低分别赋值为
while(1); //程序停止在这里,在后面会讲到为什么这样写。
}
例子3流水灯一个一个接着亮不循环
#include<> //52单片机头文件
void main() //主函数
{
unsigned int i; //定义一个int型变量
while(1)
{
i=50000; //变量赋初值为50000
P1=0xfe; //点亮第一个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xfd; //点亮第二个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xfb; //点亮第三个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xf7; //点亮第四个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xef; //点亮第五个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xdf; //点亮第六个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0xbf; //点亮第七个灯
while(i--); //延时
i=50000; //变量赋初值为50000
P1=0x7f; //点亮第八个灯
while(i--); //延时
}
}
例子4
#include<>
#include <>
#define uint unsigned int
#define uchar unsigned char
uchar temp,num,num1;
sbit beep=P2^3;
void delay(uint);
void main()
{
temp=0xfe;
while(1)
{
for(num1=0;num1<3;num1++)
{
for(num=0;num<8;num++)
{
P1=temp;
beep=0;
delay(100);
temp=_crol_(temp,1);
P1=0xff;
beep=1;
delay(100);
}
}
for(num1=0;num1<3;num1++)
{
for(num=0;num<8;num++)
{
P1=temp;
beep=0;
delay(100);
temp=_cror_(temp,1);
P1=0xff;
beep=1;
delay(100);
}
}
while(1);
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
4延时子程序
void delay()
{
uint x;
for(x=100;x>0;x--){};
}
For的嵌套
void delay()
{
uint x,y; %局部变量
for(x=100;x>0;x--) %小括号后不加分号
for(y=600;y>0;y--); %小括号后的分号表示该语句是上一条语句的,分号将该句与下句隔开(或者{for(y=600;y>0;y--);})#include<>
例子1#include<>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
void delay(); %注意分号不能少
void main()
{
while(1)
{
D1=0;
delay();
D1=1;
delay();
}
}
void delay()
{
uint x,y;
for(x=100;x>0;x--)
for(y=600;y>0;y--);
}
带参数的比不带参数的要方便
例子2无参和有参的对比#include<>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
//void delay();
void delay(uint);%带一个参数的,参数类型必须要写,参数可不写。
比如可以写成uint z。
也可以带多个参数
void main()
{
while(1)
{
D1=0;
delay(1200);%亮2秒
D1=1;
delay(1200);
}
}
/*
void delay()
{
uint x,y;
for(x=100;x>0;x--)
for(y=600;y>0;y--);
}*/
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}
例子3#include<>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
void delay(uint);
void main()
{
while(1)
{
D1=0;
delay(1200);
D1=1;
delay(1200);
}
}
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=20;y>0;y--);
}
5循环左移三位如(a5)-00101101(2d)。