关于51单片机定时器的程序,P1.5连接蜂鸣器(用C语言写)

关于51单片机定时器的程序,P1.5连接蜂鸣器(用C语言写),第1张

蜂鸣器发出两种不同的声调很容易,只要给蜂鸣器的控制信号发送不同频率的脉冲就可以实现了,以下以延时方式来做。#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语言控制按键蜂鸣器等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9277335.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存