最默认的全图唤醒LED灯代码
单片机的LED唤醒,首先最麻烦的就是一个一个打,后面如果自己组织了许多的LED灯的话,这样是会累死的
#include <reg52.h> // 51头文件
/*sbit LED1 = P1^0; // 首先 LED1 这个变量等于 IO插口上的LED灯第一个,一共有八个开口,从0到7
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;
unsigned int i ;
//定义变量i,这个后面作为255等于进制65535,你可以把他理解成时间 , 这样的话就可以使它隔一段时间在运行了 ,这里其实是调整他的通电性 , 电压会被电阻限制,一般来说是5V, 超出或者超过就不会亮了
void main ()
{
P1 = 0 ;
i = 65535 ;
while(i--) ; //这里需要一个循环 减掉之后就进行运行下面语句
P1 = 0xff ; //二进制,就是全部关掉的意思 , 你可以把十六进制的这个数转为二进制,你就明白了
i = 65535 ;
while(i--) ; //再次循环,回上面,又重新运行,形成循环
}
*/
下面是LED灯IO开口的对应图

改进后 , 变成流水灯 + 加上蜂鸣器
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp ; //LED灯变量
sbit beep = P2^3; //激活蜂鸣器 它在P2里面
// 注意,蜂鸣器他的驱动硬件不是控制硬件,小心使用,有时候如果给它乱调整电压的变化,可能会让板子坏掉额
void dealy(uint z)
{
unsigned int x,y ;
for(x=z;x>0;x--)
for(y=144;y>0;y--);
}
void main()
{
temp = 0xfe;
P1 = temp ;
dealy(255);
while(1)
{
temp = _crol_(temp,1);
P1 = temp;
beep = beep;
dealy(255);
}
}
附上蜂鸣器的原理图
可以把它当作有EBC开口,通电之后就会出现了 , 我的设备是PNP型三极管构成的

网友评论