让蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。#include#defineucharunsignedchar#defineuintunsignedintsbitSPK=P1^0;sbitK1=P1^7;//发声函数voidAlarm(uchart){uchari,j;for(i=0;i<200;i++){SPK=~SPK;for(j=0;j
#include<reg51h>
#define uint unsigned int
#define uchar unsigned char
sbit LED0=P1^0;
sbit Buzzer=P1^1;
void delay_ms(uint xms)//x是多少就是多少ms
{ uint y,z;
for(y=xms;y>0;y--)
for(z=110;z>0;z--);
}
void main()
{
P1=0x00;//这个值的设定参照你的开发板确定,也就是你的发光管与蜂鸣器是高电平工作还是低电平工作
while(1)
{
LED0=1;
Buzzer=1;
delay_ms(500);//延时05s
LED0=0;
Buzzer=0;
delay_ms(500);
}
}
unsigned char flag=1; //定义上升沿ready标志
while(1)
{
if(key1&&flag) // 默认key1下拉至GND,若产生上升沿,则响一次,同时清零标志
{
SPK=1;
delay();
SPK=0;
flag=0;
}
if(!key1) { flag=1;} //检测key1是否归零 准备第二次上升沿,是,则标志位置1
}
仅供参考
主程序面两行
while(!TI);
TI=0;
单片机收位机发送1234发位机程序没
SUBF=f;
行啊问题没发送等待while(!TI);
程序肯定死循环while(!TI);前行T1=1;意思T1
位机电脑吧电脑发送1234用发送串口调试助手格式发送十六进制字符用十六进制发送程序用
f
判断否则用字符发送ASCII码f
要根据ASCII码判断
没写过。基本原理应该是修改定时器的定时时间来完成的。实际发声频率是蜂鸣器本身频率及给定方波频率的和频和差频。需要调试实现。
铃声假设为“嘀铃铃铃”。能否找到2个频率点‘嘀’音和‘铃’音来模拟。
模拟音为DXLXLXLXLX。D音为频率D,时长dmS;X为静音,时长为xmS;L音为频率L,时长为lmS。
将D、X、L组合音做一个定时时间初值数组。每次中断后,翻转,计数,并重置下一初值。
贴上一个报警音程序,仅供参考。
#include <reg51h>
sbit SPK = P2^5;
unsigned char frq;
void delayms(unsigned char ms);
main()
{
TMOD = 0x01;
frq = 0x00;
TH0 = 0x00;
TL0 = 0xff;
TR0 = 1;
IE = 0x82;
while(1)
{
frq++;
delayms(1);
}
}
void timer0() interrupt 1 using 1
{
TH0 = 0xfe;
TL0 = frq;
SPK = ~SPK;
}
void delayms(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
用定时器来产生频率,如产生100Hz的声音。\x0d\思路:\x0d\100Hz即每秒变换200次,每次的时间就是1/200秒=0005秒=5毫秒。\x0d\计算定时器的初值:TH0 = 0x0EE; TL0 = 0x00;\x0d\ \x0d\#include \x0d\sbit BEEP=P0^0;//蜂鸣器引脚\x0d\void main(void)\x0d\{\x0d\//初始化定时器(晶振:110592MHz,12T)\x0d\ TMOD = 0x01;\x0d\ TH0 = 0x0EE;//5毫秒中断一次\x0d\ TL0 = 0x00;\x0d\ EA = 1;//开总中断\x0d\ ET0 = 1;;//开中断\x0d\ TR0 = 1;//启动定时器\x0d\ while(1);//死循环等蜂鸣器响。\x0d\}\x0d\void Timer0Interrupt(void) interrupt 1\x0d\{\x0d\ TH0 = 0x0EE;\x0d\ TL0 = 0x00;\x0d\ BEEP=!BEEP;//变换一次蜂鸣器\x0d\}
以上就是关于关于51单片机定时器的程序,P1.5连接蜂鸣器(用C语言写)全部的内容,包括:关于51单片机定时器的程序,P1.5连接蜂鸣器(用C语言写)、51单片机,0.5S灯闪一下蜂鸣器响一声的程序怎么写、51单片机C语言控制按键蜂鸣器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)