关于keil 51单片机编程

怎么让蜂鸣器发声的同时二极管闪烁,这样编不行,请大佬们帮帮忙,谢谢

首先,你要搞清楚,蜂鸣器是有源的,还是无源的。有源蜂鸣器,只要加5V电压就响了。而无源蜂鸣器需要加方波信号才响,才不停的加高电平和低电平。而且是加高电平和低电平都要调延时子程序,而你只调一次是不行的。
假如是无源蜂鸣器,单片机控制引脚输出的方波频率高,即延时短,而LED闪烁延时长。其实,不必写两次,分别输出D1=0; D1=1;这么写就行:
D1=!D1;
delay(500);
再说蜂鸣器与LED同时控制,用一个变量计数,假设用n,主循环程序的写法,
while(1)
{
for(n=100;n>0;n--)//调节n的初值大小,来调节LED闪烁快慢
{
D2=!D2;//蜂鸣器响
delay(1);
}
D1=!D1;
delay(500);//LED闪烁
}
}追问

emmmm我刚开始学。。能不能告诉我D1=!D1是啥意思,谢谢

emmmm我刚开始学。。能不能告诉我D1=!D1是啥意思,谢谢

emmmm我刚开始学。。能不能告诉我D1=!D1是啥意思,谢谢

追答

就是取原来的相反状态,原来是0,就变了1,原来是1,就变了0。所以,每次都取反,就变成0-1-0-1。。。。不断变化了。这是规范的写法。

追问

那为什么n能调节二极管闪烁的频率啊,没看懂。。。。。。。。

追答

n是蜂鸣器响次数,0-1变化一次的时间是固定的,那变化n次的时间,就与n大小有关,蜂鸣器变化n次,LED灯变化一次,那n的时间变了,LED灯亮灭的时间也变了,就是改变了闪烁的快慢,就是频率呀。你实际做一下,看效果就明白了。别只问,不去实际做呀。实践出真真知吗。

追问

好的,十分感谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-09
首先,你的代码中如果D1,D2是LED时,D1只能亮一次而不能连续闪烁,D2可以连续闪烁,不知道你的蜂鸣器连接在哪个I/O引脚上,另外欲使蜂鸣器发声,需要蜂鸣器的发声函数,你的代码中没有。
第2个回答  2018-10-09
电热水器安装一定要请专业安装人员安装电热水器
第3个回答  2018-10-09
就到家如嘟嘟嘟黄赌毒还发还发

51单片机如何创建工程
打开Keil软件,您将看到一个主界面。在文件菜单中,选择"NewProject",然后在弹出的对话框中点击"CreateNewProject",并指定项目保存的路径。接下来,输入项目名称,并从下拉菜单中选择适当的单片机型号。点击"OK",这样就可以创建一个新的工程。在创建工程的过程中,您需要指定一个文件夹来保存源代码、头...

用keil如何给51单片机烧写程序?
先在KEIL中编译生成HEX文件 (如果编译完了目录内没有找到HEX文件,在项目设置里,C51项中,勾上生成HEX文件选择)再用COM51来烧。(这个参照软件说,较简单。一般先载入HEX文件再点个AUTO就可以了)

如何使用keil 5 编写 51单片机 工程
1.先安装Keil C51并破解,再安装MDK5并破解。2.分别打开Keil C51和MDK5的安装目录。将Keil C51安装目录下的C51文件夹复制到MDK5的安装目录文件夹下。3.分别打开TOOLS.INI文件;将Keil C51下TOOLS.INI文件的内容复制,粘贴到MDK5下TOOLS.INI文件内容的最低端。4.注意查看并找到粘贴到MDK5下TOOLS.INI...

求大神在keil上帮写51单片机C语言程序
\/\/第一个实验:\/\/假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7\/\/假设K1按键在P2.3引脚#include<reg51.h>#include<intrins.h>sbit k1=P2^3;\/\/假设K1按键在P2.3引脚void main(){P0=0xfe;while(1){if(k1==0){while(k1==0);P0=_crol_(P0,1);}}}...

关于keil 51单片机编程
假如是无源蜂鸣器,单片机控制引脚输出的方波频率高,即延时短,而LED闪烁延时长。其实,不必写两次,分别输出D1=0; D1=1;这么写就行:D1=!D1;delay(500);再说蜂鸣器与LED同时控制,用一个变量计数,假设用n,主循环程序的写法,while(1){ for(n=100;n>0;n--)\/\/调节n的初值大小,来调节...

用keil编的51单片机C程序,不能实现其功能
include<reg51.h> \/\/sbit D=P0; \/\/sbit 是位定义。P0不必定义。void main(){while(1) \/\/ while(1); 这里加了分号,程序就在while(1)这里循环了,不会到括号里 { P0=0xfc; \/\/D=0xfc;} }

用keil调试51程序:MOV R1,#30H MOV A,20H MOV @R1,A END 用debug运行时...
程序有些漏洞,按照如下试试:ORG 0000H ;51单片机的第一条指令地址,不要遗漏.MOV R1, #30H MOV A, #20H ;注意:这里加上了井号,你原来,缺少井号.MOV @R1, A ;把数据写入30H单元.NOP ;加上几个空操作.NOP NOP ;在空操作期间,就可以查看30H单元.;用DEBUG再往...

如何用KeilC编写单片机程序?
1、首先在电脑桌面中,双击“Keil4”图标打开软件。2、点击上部菜单栏中的“工程”,在下拉菜单中选择“新建工程文件”。3、把工程文件保存到目标文件夹里去,工程文件命名可以随意写入一些数字。4、选择单片机类型,根据实际情况进行选择,例如“Atmel”中的“89C52”。5、点击“文件”,在“文件”的下拉...

51单片机,使用keil软件,4字节加法或减法子程序
程序如下:RESULT equ 30H ;和数的地址 ORG 0000H ;实验数据如下:MOV 20H, #22H ;加数1 MOV 21H, #33H MOV 22H, #44H MOV 23H, #0F3H MOV 24H, #12H ;加数2 MOV 25H, #34H MOV 26H, #56H MOV 27H, #78H MOV R0, #20H ;...

keil5添加51单片机工程怎么操作
keil5添加51单片机工程的方法步骤首先点击project-NewuVisionProject-选择路径-添加工程名称新建后弹出一个选择路径的界面,我们需要新建一个项目文件夹,这儿以LED文件夹为例,再设置工程名称,这里设置led为工程名称,注意不要添加后缀名,因为下面已有扩展名了,是.uvproj。设置好工程名后,点击保存保存后,...

相似回答