⑴ 51单片机两个定时器中断写了个呼吸灯程序,怎么调试出来是小灯闪烁程序,新手求指教。
程序太乱,只用一个定时器就可以
如定时100us 中断一次 20次是2 ms 即周期是2 ms
中断一次计数变量a加一,并且与另一变量b(1到20)比较,如果a>b,则输出高电平,反之则输出低电平 a=20时清0
主程序中可不断改变b的值,先由大到 小 再由小到大,就是呼吸灯了
如延时200ms改变一次b的值 则呼吸周期大约是8秒
⑵ 51单片机设计呼吸灯
原发布者:呦_
小屁孩
基于单片机与PWM的
呼吸灯
设计实训指导教师:班级:设计人姓名:设计日期:设计地点:完成时间:摘要本设计是基于单片机的原理与接口设计,采用单片机I/O口,加以
C语言编程
实现LED渐亮再渐暗类似人的呼吸一样的效果。关键词
AT89C51
,PWM(
脉宽调制
)一、设计要求:呼吸灯就是让
LED灯
的闪烁像呼吸一样,时呼时吸,时亮时暗,利用LED的余辉和人眼的暂留效应,看上去和人的呼吸一样。二、
设计原理
:用C语言编程实现PWM(脉宽调制)输出驱动LED,逐渐增加PWM的
占空比
从而实现LED模拟
呼吸的过程
,即渐亮再渐暗再渐亮再渐暗……如此往复,再利用LED的余辉和人眼的暂留效应,看上去就和人的呼吸一样。三、整体方案设计8个LED按照顺序逐个实现呼吸效果。加以其他闪烁花样增加更炫彩的效果。四、实验元件及器材(1)元件:LED(
发光二极管
)8个1KΩ电阻8个
1nf
电容2个
晶振
1个
AT89C51芯片
1个(2)器件:
Atmega128
开发板
1块计算机1台5、硬件原理(1)
主电路
:8个LED分别连接AT89C51的P1口,使用共阳方式,并加以1kΩ的电阻接入电源。
⑶ 51单片机led呼吸灯代码
这位朋友你好,51单片机,如果他的呼吸灯代码,你可以参考他的使用说明书,也就是说他技术指导说明书上会有表达。
⑷ 怎么实现让51单片机一边执行呼吸灯,一边数码管动态显示,最好还要有按键控制周期,请问这些程序该如何
所谓的呼吸灯,是类似于流水灯吧,每点亮一次或流动一次是需要延时的,而数码管的动态显示也要调用一个显示子程序吗,调用一次显示子程序也是需要时间,就对调用显示子程序的次数计数,当计到n次后的时间,就是呼吸灯点亮一次的时间的话,就点亮一次好了。这个计数值n取多少合适,就得通过实际测试了。不妨先设个值,如40,然后实际运行程序,看这个时间合适不,不合适,再增加或减小这个数,这样,总会找一个适合的数了。
这个数找到后,其实改变这个数就是改变呼吸灯变化的速度,因此,在程序中需要改变呼吸灯变化的速度时,就通过按键来改变这个数n就可以实现了。
你这不过才是两个任务,如果单片机就只能完成一个任务,那还叫单片机吗?其实,能完成多少任务,就取决于你写的程序。写什么程序就完成什么任务。
⑸ 单片机制作呼吸灯的C语言程序怎样编写
#include<reg51.h>
sbit LED0=P0^0;
sbit wei=P1^1;
sbit an=P1^0;
sbit lcden=P1^7;
sbit dianzhen=P1^3;
sbit leden=P1^2;
void Delay(unsigned int t);
void main (void)
{
unsigned int CYCLE=600,PWM_LOW=0;//定义周期并赋值
lcden=0;
P0=0x00;
dianzhen=0;
P0=0xff;
wei=0;
an=0;
while (1) //主循环
{
LED0=1;
Delay(150000); //特意加延时,可以看到熄灭的过程
for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)
{
LED0=0;
Delay(PWM_LOW);
LED0=1;
Delay(CYCLE-PWM_LOW);
}
}
}
void Delay(unsigned int t)
{
while(t--);
}
⑹ 求助,51单片机用PWM的RGB呼吸灯程序怎么写
#include<reg52.h>
sbitLED0=P2^0;//译码器控制端,低有效
voidDelay(unsignedintt);//函数声明
voidmain(void)
{
unsignedintset=400,pwm=0;//定义周期并赋值
while(1)//主循环
{
LED0=0;
Delay(60000);//延时,可以看到熄灭的过程
for(pwm=1;pwm<set;pwm++){
LED0=1;//熄灭LED
Delay(pwm);//延时长度,600次循环中从1加至599
LED0=1;//点亮LED
Delay(set-pwm);//延时长度,600次循环中从599减至1
}
LED0=1;
for(pwm=set-1;pwm>0;pwm--){//与逐渐变亮相反的过程
LED0=1;
Delay(pwm);
LED0=0;
Delay(set-pwm);
}
//主循环中添加其他需要一直工作的程序
}
}
voidDelay(unsignedintt)
{
while(--t);
}
⑺ 51单片机用汇编语言如何设计8个轮流呼吸的呼吸灯
因为我不知道你这个板子的硬件,我就假设一下吧,你自己对照着看看,关键是流程
假设如下这八个灯依次接在P0口的八个口上,高电平为灯亮,低电平为灯灭,程序如下
ORG 0000H
AJMP START
START:MOV P0,#01H;()只有第一个灯亮
ACALL DELAY;延迟,不加延迟的话 你根本看不起清到底那个灯亮的
MOV P0,#02H;()只有第二个灯亮
ACALL DELAY
MOV P0,#04H;()只有第三个灯亮
ACALL DELAY
MOV P0,#08H;()只有第四个灯亮
ACALL DELAY
MOV P0,#10H;()只有第五个灯亮
ACALL DELAY
MOV P0,#20H;()只有第六个灯亮
ACALL DELAY
MOV P0,#40H;()只有第七个灯亮
ACALL DELAY
MOV P0,#80H;()只有第八个灯亮
ACALL DELAY
AJMP START;周而复始
DELAY: MOV R6,#40;延迟程序,晶振为3.57MHZ时大概是0.1S
0.1SL1: MOV R5,#246
0.1SL2: NOP
DJNZ R5,0.1SL2
DJNZ R6,0.1SL1
RET
END