标题:
单片机电子门铃proteus仿真+程序
[打印本页]
作者:
51黑bug
时间:
2016-6-24 00:04
标题:
单片机电子门铃proteus仿真+程序
基于51单片机的电子门铃proteus仿真,有图片,有仿真,有程序
0.png
(25.93 KB, 下载次数: 71)
下载附件
2016-6-24 00:03 上传
电子门铃的仿真原理图
下面是51单片机程序:
/********************************************************
*实例名称:电子门铃
*实例功能:当按下门铃按钮时,产生500hz和750hz的方波来驱动
喇叭,产生两种不同频率的交替来产生两种声音
*作者:kxm
*时间:09.06.12
********************************************************/
#include "doorBell.h"
uchar t5hz; //500hz频率计数
uchar t7hz; //750hz频率计数
uint tcnt; //定时器0中断计数
bit flag; //500hz和750hz状态标示
void timer0_init(void)
{
TMOD=0x02; //定时器0工作在方式2,八位定时器自动载入
TH0=0x06; //12MHZ晶振,中断周期250*10^(-6)秒
TL0=0x06;
ET0=1; //定时器0中断使能
TR0=0; //定时器0默认状态停止运行
}
void int0_init(void)
{
EX0 = 1; //外部中断0使能
IT0 = 1; //外部中断0跳变中断
}
void main()
{
timer0_init(); //定时器0初始化
int0_init(); //外部中断0初始化
flag=0;
t5hz=0x00;
t7hz=0x00;
tcnt=0x0000;
sei(); //开总中断
while(1)
{
if(TR0==0)
flag=0; //门铃响过后转换成500hz状态
}
}
void timer0_overflow(void) interrupt 1 //timer0溢出中断入口
{
tcnt++;
if(tcnt==2000) //500hz和750hz方波各维持0.5s
{
tcnt=0;
if(flag==0)
flag=~flag;
else
TR0=0;
}
if(flag==0) //输出750hz方波
{
t7hz++;
if(t7hz==3)
{
t7hz=0;
BELL_OUT=~BELL_OUT; //喇叭信号端口取反
}
}
else //输出500hz方波
{
t5hz++;
if(t5hz==4)
{
t5hz=0;
BELL_OUT=~BELL_OUT;
}
}
}
void int0(void) interrupt 0 //外部中断0中断入口,按键触发
{
TR0=1; //开启定时器0,实现方波的输出
}
复制代码
0.png
(68.12 KB, 下载次数: 83)
下载附件
2016-6-24 00:04 上传
门铃所有资料下载:
单片机电子门铃仿真程序.rar
(13.32 KB, 下载次数: 110)
2016-6-24 00:04 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
千万人头
时间:
2016-6-25 20:02
你好 为什麽接在8 和12 处 其他的行不行 R1是电阻吗 保护什麽的?
作者:
小张0507
时间:
2016-12-9 17:59
可疑的
作者:
小张0507
时间:
2016-12-9 18:00
不错的,这个程序
作者:
w969251573
时间:
2016-12-27 19:57
可以 先看看
作者:
TIANGEYIFANG
时间:
2017-5-20 22:17
好东西看了要顶哈哈哈哈哈哈
作者:
TIANGEYIFANG
时间:
2017-5-20 22:18
做创新应用设计,找到这个真是太好了。
作者:
TIANGEYIFANG
时间:
2017-5-20 22:18
好气啊,新手下载东西这么难的吗?
作者:
提拉米苏yean
时间:
2018-5-15 11:05
你好,麻烦你给我发一下电子门铃的总源程序,我复制的你帖子里边的,有些没有被定义不能用,压缩版的我打不开,谢谢!
作者:
于我啊
时间:
2020-4-30 08:29
可以,这得先留着
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1