登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 蜂鸣器及小门铃

[复制链接]
发表于 2022-1-12 21:34:20 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51单片机
学习安排: 学习蜂鸣器及门铃原理
开始时间: 2022-01-12
结束时间: 2022-01-12
1月12日


今天学习了蜂鸣器的相关知识并了解了DIY小门铃的原理
门铃原理如下
电路的核心在于集成块555和其他元件构成的多谐振荡器。按下按钮,振荡器振荡,振荡频率约700Hz,扬声器发出“叮”的声音。与此同时,电源通过二极管D1给C1充电。放开按钮时,C1便通过电阻R1放电,维持振荡。但由于S1的断开,电阻R2被串入电路,使振荡频率有所改变,大约为 500Hz左右,扬声器发出“咚”的声音。直到C1上电压放到不能维持555 振荡为止。

然后是自己码的蜂鸣器小程序
#include<reg52.h>

sbit BUZZ = P1^3;
unsigned char T0RH = 0;
unsigned char T0RL = 0;

void OpenBUZZ(unsigned int frequ);
void StopBUZZ();

void main()
{
unsigned int i;
TMOD = 0x01;
EA = 1;

while(1)
{
OpenBUZZ(4000);
for(i = 0;i<40000;i++);
StopBUZZ();
for(i = 0;i<40000;i++);
OpenBUZZ(1000);
for(i = 0;i<40000;i++);
StopBUZZ();
for(i = 0;i<40000;i++);
}
}

void OpenBUZZ(unsigned int frequ)
{
unsigned int reload;

reload = 65536-(32768000/12)/(frequ/2);
T0RH = (unsigned char)(reload>>8);
T0RL = (unsigned char)reload;
TH0 = 0xFF;
TL0 = 0xF1;
ET0 = 1;
TR0 = 1;
}

void StopBUZZ()
{
ET0 = 0;
TR0 = 0;
}

void interruptTimer0() interrupt 1
{
TH0 = T0RH;
TL0 = T0RL;
BUZZ = ~BUZZ;
}




好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表