51单片机怎么让它闪灯的同时播放声音(用C语言)

让灯循环闪烁的同时播放一段简单的音乐(蜂鸣器)播放音乐的时间要比闪灯的单次循环时间长,我用do while不行,它只执行其中一个do while,求方法。

你可以用一个定时器和for无限循环,定时器就设定为音乐的时间,循环内部可以让蜂鸣器和灯的闪烁快速切换进行(类似于LED动态显示),定时结束了以后进入灯的闪烁中断完成余下的动作。。。这个可以实现,我以前做过类似的
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-28
好像不可以吧。。。因为让它闪灯的代码要占用CPU,而程序从上往下执行的话,总是会过了闪烁灯的那段代码。。- - 所以。。怎么能让它们同时执行。。。追问

我看过视频,他的可以一边响一边流水灯,总不可能用两个单片机吧

追答

那这样子怎么样? 用2个中断,在主函数中同时促发外部中断0和外部中断1,并且主函数中加上死循环 for( ; ; ) { ; } 那么2个中断服务子函数就分别些闪烁灯和播放音乐的程序

本回答被提问者采纳
第2个回答  2012-07-28
配合定时器工作呀 肯定可以实现的追问

能具体说一下么?是用定时器,执行流水灯代码的时候每隔一段时间执行一次响铃的代码?那样响铃的时候灯不就停了么?新手不懂。

第3个回答  2017-10-21
试试定时器;

C51单片机有警报声又可以闪灯的程序怎么写?
ALARMSND=!ALARMSND; \/\/按键切换报警 if(ALARMSND==1)TR0=1; \/\/如果报警声响,则启动定时器,开始闪烁 else TR0=0; \/\/不响则关闪烁 } } } }

求51单片机蜂鸣器播放音乐的教程 C语言
这是我学校电子设计时做的,可以弹琴,也有几首歌在里面。。你应该看得懂#include <reg52.h> #define uchar unsigned char define uint unsigned int define ulong unsigned long sbit BEEP=P2^0; \/\/喇叭输出脚uchar th0_f; \/\/在中断中装载的T0的值高8位 uchar tl0_f; \/\/在中断中装载的T0...

51单片机控制喇叭的程序(c语言)
0x18, 0x30, 0x1C , 0x10, \/\/格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,0x20, 0x40, 0x1C , 0x10,0x18, 0x10, 0x20 , 0x10,0x1C, 0x10, 0x18 , 0x40,0x1C, 0x20, 0x20 , 0x20,0x1C, 0x20, 0x18 , 0x20,0x20, 0x80, 0xFF , 0x20,0x30, 0x1C, 0x...

求89C51单片机播放音乐的C语言代码!
include <reg51.h> include <intrins.h> sbitSPK = P2^7;unsigned char frq;unsigned int flag;void delayms(unsigned char ms);void main(){ TMOD = 0x01;frq = 0x00;TH0 = 0x00;TL0 = 0xff;TR0 = 1;IE = 0x82;flag=0;while(1){ switch(flag){case 0:frq++;break; \/\/flag...

哪位好心人给我一个51单片机C语言让蜂鸣器唱生日歌的程序啊,谢谢...
\/\/此程序在硬件上调试通过 \/\/本程序的单片机晶振采用11.0592M include <reg51.h> sbit speaker=P1^2;unsigned char timer0h,timer0l,time;\/\/生日歌 code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, ...

求问,51单片机实现蜂鸣器播放音乐,并用按键控制音量大小,C语言怎么实现...
既然单独按键控制音量能实现,播放中应该也可以实现,只要巧妙利用中断或在节拍间隙读键也可以,只要安排得当就会播放调节两不误。

51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决?
KEY1) \/\/检测到按键按下 { LED = ~LED; \/*LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*\/ delay(500); \/*此处延迟,保...

怎么用C语言编程51单片机实现两盏LED同时闪烁,端口不限
那你把两盏led灯并联,用一个口联接就行了,例如用P2口的1脚 include<reg51.h> delay(){ int x,i;for(x=100;x>0;x--)for(i=50;i>0;i--);} void main(){ while(1){ P1^1=0;delay();p1^1=1;} }

求一个用C语言编写的51单片机音乐程序代码。
sbit speaker=P2^2;unsigned char timer0h,timer0l,time;\/\/生日歌 code unsigned char sszymmh[]={5,1,1, 5,1,1, 6,1,2, 5,1,2, 1,2,2, 7,1,4,5,1,1, 5,1,1, 6,1,2, 5,1,2, 2,2,2, 1,2,4,5,1,1, 5,1,1, 5,2,2, 3,2,2, 1,2,2, 7,1,2,...

请教c51单片机,c语言编程,关于控制LED灯闪烁频率?
同时开放了定时器中断,并将定时器中断优先级设置为1(即高优先级)。在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该在循环...

相似回答