导航:首页 > 操作系统 > 遥控灯单片机

遥控灯单片机

发布时间:2024-11-05 10:53:03

⑴ 用51单片机,怎么来控制1000个左右的LED灯呢

方法1:1000个左右的灯,需要10根地址线选通,51的IO管脚应该是没有问题。剩下的就是要用大量的译码器,把二进制信息转换为管脚信息。
估计你仅仅是控制亮和灭,如果是这样选通也就可以进行明暗的控制,否则输出的信息也要加进去,就是说需要加驱动电路。
方法2:用移位电路,比如HC595,在51中地址做为串行信号发出,转换为对应的地址线,然后在连接译码器,这样,51的管脚比较节省,但,编程的难度稍大。
你可以参考一下键盘译码器的电路,控制16个和控制1000个的原理是一样的。

⑵ 单片机控制led灯的创新点是什么

单片机控制led灯的创新点是,LED的阳极全部接到了正极(电源),当负极接到LED的阴极时就会发光,因为LED的阴极与单片机的P2口相接,如果你想点亮那一个LED就把单片机相应的引脚赋值为低电平。具体如下:1、LED基础知识
LED是发光二极管的一种,它具有单向导电的特点,在51开发板上使用的是贴片式发光二极管,正向导电电压在1.8-2.2v之间,工作时的电流在1-20mA。当电流在1-5mA之间变化时,肉眼可以观测到亮度的变化,但是当电流在5-20mA之间变化时,亮度变化不太明显。如果电流一直增大二极管可能会烧坏。其余LED知识就不再进行叙述,其中LED原理图如下图所示。
LED原理图

2、点亮第一个LED灯
由原理图可知,LED的阳极全部接到了正极(电源),当负极接到LED的阴极时才会发光,因为LED的阴极与单片机的P2口相接,如果你想点亮那一个LED就把单片机相应的引脚赋值为低电平,具体程序如下:

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

sbit led=P2^0; //将单片机的P2.0端口定义为led

void main()
{

while(1)
{
led=0;//P2.0端口设置为低电平
}
}
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
3、LED闪烁
如果想让LED进行闪烁就要涉及到延时,针对单片机进行延时的方法有很多,在此向大家推荐一种比较简单的程序助手—单片机小精灵,可以直接进行设置时间,并且生成相应的代码。
将P2^0引脚的LED进行间隔一秒闪烁的程序如下:

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h" //头文件

sbit led=P2^0; //将单片机的P2.0端口定义为led

void delay1s() //延时1s,误差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}

void main()//主程序
{

while(1)
{
led=0;//P2.0端口设置为低电平
delay1s();//调用延时函数
led=1;//P2.0端口设置为低电平
delay1s();
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
为了使程序更好的进行表达,使用16进制进行表述,程序如下:

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h" //头文件

void delay1s() //延时1s,误差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}

void main()//主程序
{

while(1)
{
P2=0xFE;//P2.0端口设置为低电平
delay1s();//调用延时函数
P2=0xFF;//P2.0端口设置为低电平
delay1s();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
上面是针对一个LED灯进行的设计,下面针对8个LED灯依次闪烁进行设计,具体程序如下:

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h" //头文件

void delay1s() //延时1s,误差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}

void main()//主程序
{

while(1)
{
P2=0xFE;//1111 1110
delay1s();//调用延时函数
P2=0xFD;//1111 1101
delay1s();
P2=0xFB;//1111 1011
delay1s();
P2=0xF7;//1111 0111
delay1s();
P2=0xEF;//1110 1111
delay1s();
P2=0xDF;//1101 1111
delay1s();
P2=0xBF;//1011 1111
delay1s();
P2=0x7F;//0111 1111
delay1s();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
4、LED左右移动
上面进行描述的是利用延时并对P2口引脚进行赋值设计LED灯的闪烁,这样程序较为繁杂,下面将利用“左移”和“右移”进行设计,crol(a,b),左循环,a是左移的值,b是左移的位数;cror(a,b),右循环,a是右移的值,b是右移的位数。包含在instrins.h库函数中。具体程序如下:

#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "intrins.h" //头文件,包含延时(_nop_ )和函数循环

typedef unsigned int u16;//声明新类型名
typedef unsigned char u8;//声明新类型名

#define led P2//宏定义

void delay1s() //延时1s,误差 0us
{
u8 a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}

void main()//主程序
{
u8 i;//定义i的类型
led=0xFE;
delay1s() ;
while(1)
{
for(i=0;i<7;i++)//左移
{
led=_crol_(led,1);
delay1s() ;
}
for(i=0;i<7;i++)//右移
{
led=_cror_(led,1);
delay1s() ;
}

}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
5、总结
以上程序均进行了实验验证,完全正确。针对LED灯的控制,可以和按键进行联合设计,实现更多的功能,后面会进行更新。对于没有单片机开发板的小伙伴可以利用proteus仿真软件进行设计。

⑶ 单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。

阅读全文

与遥控灯单片机相关的资料

热点内容
hadoop压缩命令 浏览:653
croe壳命令 浏览:75
抽干文件夹图片 浏览:948
android光感 浏览:964
php业务流 浏览:963
devc编译错了怎么办 浏览:300
编译系统都有哪些部分 浏览:707
数据库技术pdf 浏览:232
如何把网页部署到服务器上 浏览:634
php用户组 浏览:785
抚顺自动数控编程软件 浏览:747
如何判断是否可以通过编译 浏览:929
卫士通加密官网 浏览:55
程序员需要会盲打么 浏览:448
编译c无法识别unsighed 浏览:433
怎么给几年前的安卓机强行刷机 浏览:316
天方地圆制作算法 浏览:193
算法失效分析 浏览:760
gcc编译选项给gdb调试 浏览:591
ios和android前景好 浏览:66