51单片机流水灯程序为什么会变成响声?因为安装了蜂鸣器,所以会出现这种现象。

2,或者你驱动电路有问题。可以看得出,你用的是有源蜂鸣器,CPU口是不能直接驱动的,需要用一个三极管完成吸收电流方式,或者输出电流方式驱动。 你检查一下驱动口有没有接上拉,部分单片机驱动能力不足,会出现一种“三态

哥们描述清楚一点 芯片刚刚上电会留存原来的程序 可能原来芯片里就有流水灯和蜂鸣器的程序

单片机按键蜂鸣器响5秒就停的原因如下:1、电路接触不良。重新接电路即可。2、电压达不到。改变硬件,使蜂鸣器在控制的IO口为低电平时响,并改动程序的相应部分。

//下面开始 goto B:A:while(1){;}//跑完一遍程序后执行死循环 B:led1=1;Delay1000ms();led1=0;led2=1;Delay1000ms();led2=0;led3=1;Delay1000ms();led3=0;//流水灯 ring=1;Delay1000ms();ring

单片机蜂鸣器响三下停止,流水灯亮?

void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b;//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--){ for (b=38;b>0;b--){ for (a=

单片机驱动LED灯的源程序:include //头文件。define uint unsigned int define uchar unsigned char sbit LED1=P1^7; //位定义。void delay_ms(uint);//mS级带参数延时函数。void main(){ while(1){ LE

利用单片机一个IO口检测光电传感器的电平变化,一个IO口控制LED灯报警,一个IO控制蜂鸣器报警(如果是有源蜂鸣器,可以和灯共用一个IO口)。比如,正常状态,单片机检测光电传感器那边电平为0。当遮蔽光线时,电平会变换为1,

把蜂鸣器响一次的程序封装成一个函数,然后根据灯光闪烁的情况判断,判断如果是第一个灯就运行一次蜂鸣器响的函数一次,如果是第二个灯就运行二次蜂鸣器响的函数,以此类推。

CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭

这个很简单的啊,比如你的光敏开关接在P1.0,LED和蜂鸣器接在P1.2上,那程序就这样写 if(P1^0 == 0){ P1^2 = 1;} else { P1^2 = 0;}

单片机,c语言编程实现:当遮住光敏开关时一个led灯亮同时蜂鸣器响,...

但大部分使用情况下,由于开发板一般尺寸较大和多余的功能,我们并不会使用 51 开发板。但使用一些如下图 51 单片机又需要相应的下载器和接口才能下载程序。比如 AT89S51 支持串口下载程序,但是用的是 SPI,MOSI,MISO 串口

sbit beep=p0^4;void main(){ beep=0;while(1);}试试这个怎样,单片机在执行完程序之后会回到初始状态,然后再重新执行程序,所以蜂鸣器就会反复的开和关,听起来声音会小很多;加个while(1)死循环,让程序一直保持

中断了,程序肯定还是在执行完中断还是继续的,你中断只执行beep=0后程序继续走呀,除非你用一个if去判断beep后把整个程序关闭

根据你的程序BZ默认值为0可以知道,你的想法是控制蜂鸣器的IO口是高电平时,蜂鸣器响。单片机在上电复位时IO口为高点平,蜂鸣器会响一声。有两个解决方法:一个是改变硬件,使蜂鸣器在控制的IO口为低电平时响,并改动程序

你的n定义为无符号整型,而且没定义上限,它会一直加到65535才溢出为0的,这无疑加大了单片机的工作量。虽然这是小程序感觉不出来,但是对你以后的写代码习惯影响很大。在使用蜂鸣器之前,先确定你的硬件是没问题的,否则你

哥们描述清楚一点 芯片刚刚上电会留存原来的程序 可能原来芯片里就有流水灯和蜂鸣器的程序

51单片机流水灯程序为什么会变成响声

1:设定一个变量i,可以从0到3循环的变化 2:检测一个经过消抖处理的按键,按一下,i+1 3:当i值为各个值时,执行相应的花样。流水灯参考程序 include include define uchar unsigned char uchar j,temp;void delay(un

每50ms中断,控制一个灯亮/灭一次,中断两次为100ms,闪一次,一秒钟闪10次,闪烁频率为10.仿真图如下图所示.用定时器定时的方法控制8个LED流水灯,使流水灯循环流动点亮,时间间隔为1秒.1设置IE和TMOD的值2编写程序 -

以此类推,定义八个。然后在主循环中:LED0=0;延时一段时间;LED0=1;就可以看到闪烁了。

CALL PRG2 ; 灭且静音 SJMP 0 ;--- PRG1:MOV P0, #0 ; 8个led灯亮 MOV R2, #200 LP1:CPL P1.0 ; 蜂鸣器响 DJNZ R6,DJNZ R7, $ - 2 DJNZ R2, LP1 MOV P0, #255 ; 8个led灯灭

求单片机设计8个led灯同时闪烁,并且led灯亮的时候控制蜂鸣器发生,led灯灭的时候关闭蜂鸣器的程序,谢谢

程序问题。你断开开关后,要吧蜂鸣器和LED使能关闭
#include //--定义你要使用的IO口--// #define GPIO_DIG P0 //--声明全局函数--// void Delay10ms(unsigned int c); //误差 0us //--定义全局变量--// //RAM,ROM unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; //0~F段码 //0:0011_1111 /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main(void) { unsigned char i = 0; while(1) { GPIO_DIG = ~DIG_CODE[i]; i++; if(i == 16) { i = 0; } Delay10ms(50); } } /******************************************************************************* * 函 数 名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a, b; //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--// for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } }
就拿三个灯来说吧 #include"reg52.h" #include"intrins.h" sbit led1=P2^0; sbit led2=P2^1; sbit led3=P2^2;//led灯 sbit ring=P2^3;//蜂鸣器 void Delay1000ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); _nop_(); i = 43; j = 6; k = 203; do { do { while (--k); } while (--j); } while (--i); } void main(){ led1=0;led2=0;led3=0;//初始化为零 //下面开始 goto B: A:while(1){;}//跑完一遍程序后执行死循环 B: led1=1;Delay1000ms();led1=0; led2=1;Delay1000ms();led2=0; led3=1;Delay1000ms();led3=0;//流水灯 ring=1;Delay1000ms();ring=0; ring=1;Delay1000ms();ring=0; ring=1;Delay1000ms();ring=0;//蜂鸣 goto A;//跳转到死循环执行 }
第一、延迟还没有写完全;第二、leday子函数无调用,而且你这个子函数我都看不懂你是写什么意思,按你的设计要求,这个函数也用不着啊;第三、你这个程序应该有语法错误吧,FOR语句既没大括号又没顿号