找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7255|回复: 8
收起左侧

硬之城教你用51单片机制作一个门铃的方法

  [复制链接]
ID:218808 发表于 2017-7-11 14:38 | 显示全部楼层 |阅读模式

51单片机应用实例

当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。

电路原理图

2c3700038f63eb0c80dd.jpg

系统板上硬件连线

(1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;

(2. 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;

(3. 把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;

程序设计方法

(1. 我们用单片机实定时/计数器T0来产生700HZ和500HZ的频率,根据定时/计数器T0,我们取定时250us,因此,700HZ的频率要经过3次250us的定时,而500HZ的频率要经过4次250us的定时。

(2. 在设计过程,只有当按下SP1之后,才启动T0开始工作,当T0工作完毕,回到最初状态。

(3. “叮”和“咚”声音各占用0.5秒,因此定时/计数器T0要完成0.5秒的定时,对于以250us为基准定时2000次才可以。

C语言源程序

#include <AT89X51.H>

unsigned char t5hz;

unsigned char t7hz;

unsigned int tcnt;

bit stop;

bit flag;

void main(void)

{

unsigned char i,j;

TMOD=0x02;

TH0=0x06;

TL0=0x06;

ET0=1;

EA=1;

while(1)

{

if(P3_7==0)

{

for(i=10;i>0;i--)

for(j=248;j>0;j--);

if(P3_7==0)

{

t5hz=0;

t7hz=0;

tcnt=0;

flag=0;

stop=0;

TR0=1;

while(stop==0);

}

}

}

}

void t0(void) interrupt 1 using 0

{

tcnt++;

if(tcnt==2000)

{

tcnt=0;

if(flag==0)

{

flag=~flag;

}

else

{

stop=1;

TR0=0;

}

}

if(flag==0)

{

t7hz++;

if(t7hz==3)

{

t7hz=0;

P1_0=~P1_0;

}

}

else

{

t5hz++;

if(t5hz==4)

{

t5hz=0;

P1_0=~P1_0;

}

}

}


回复

使用道具 举报

ID:218576 发表于 2017-7-11 15:01 | 显示全部楼层
这个非常非常的好~
回复

使用道具 举报

ID:218580 发表于 2017-7-11 15:02 | 显示全部楼层
给力,送你一朵鲜花
回复

使用道具 举报

ID:218798 发表于 2017-7-11 15:03 | 显示全部楼层
我觉得说得很有道理的
回复

使用道具 举报

ID:218799 发表于 2017-7-11 15:06 | 显示全部楼层
很好很给力,期待更多
回复

使用道具 举报

ID:218800 发表于 2017-7-11 15:07 | 显示全部楼层
很好很给力,期待更多精彩
回复

使用道具 举报

ID:218801 发表于 2017-7-11 15:09 | 显示全部楼层
谢谢楼主的分享。。。
回复

使用道具 举报

ID:89286 发表于 2017-7-11 15:57 | 显示全部楼层
thanks for sharing
回复

使用道具 举报

ID:201936 发表于 2017-7-12 08:24 | 显示全部楼层
SP1开关另一端是接地吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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