用51单片机制作一个门铃
51单片机应用实例
当按下开关SP1,AT89S51单片机产生“叮咚”声从P1.0端口输出到LM386,经过放大之后送入喇叭。
电路原理图
系统板上硬件连线
(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;
}
}
}
基于51单片机的时钟电路应用
硬件:STC89C52RC一片(含基座),74HC595三片,74HC138一片,ULN2003A两片,74HC573一片,四位显示共阴极数码管两件,LED红色小灯27只,轻触按键三只,10K欧姆电阻14只,470欧姆电阻8只,104电容三只,外部晶振电路一组,另加电源接口(不含复位电路)
原理:使用定时器1,加中断程序,定时0.02秒,循环50次为一秒,然后按照时间的60进制依次累加,经函数处理,将时间分解成八位数码管显示的数据,并通过74HC595芯片将串行数据分为并行数据,并将其发送给74HC573芯片,经电阻限流,控制共阴极数码管显示每一位数据,通过74HC138芯片不断扫描八位数码管的阴极,使数据不断显示,利用人眼视觉暂留现象形成时钟显示的状态。
配有三个轻触按键,第一个按键接89C52芯片的外部中断引脚,可以实现时钟初始时间的依次设置,另外两个按键分别为加和减,配合使用。
当秒数据变成零的时候,意味着分钟数进位,将启动LED小灯显示程序。小灯共有27只,排成心形,并有并联结构,共需14个数据引脚产生驱动电压差,驱动芯片为ULN2003A芯片,配限流电阻,它的数据来自两颗74HC595芯片,当分钟越位时,将定义好的二进制数据经74HC595芯片解析发出,信号交给ULN2003A,通过改变设置好的二进制数组,可以改变小灯显示效果。
需要注意的是:一、启动设置时间的按键动用了外部中断引脚,当引脚为低电平时,立即响应中断程序,但轻触按键有抖动现象,虽加了电容,但实际效果并不好,这里主要用来熟悉外部中断命令的使用;二、未加复位电路,在自己制作的时候可以加上;三、74HC573芯片的使能引脚由单片机一个引脚控制,用于后期程序开发使用;四、图片中配有无源蜂鸣器,但本人模拟电路知识匮乏,未能实现“叮咚”响声的效果;五、本人是初学者,内部程序用的是最简单的语句,过于冗杂,请大家不吝赐教;六、经实验,时钟精度并不高,问题不知道出在哪里,很抱歉。
这篇文章用于学习交流,内部程序和电路不得用于商业用途。
单片机爱好者请加我微信:LL15511990773
以下为视频效果:
以下为电路板正面图:
电路板正面图
以下为电路板背面图,由于是洞洞板,用的漆包线连接,相貌丑陋,请不要计较:
电路板背面图(太丑,凑活看吧)
以下为电路原理图(不含晶振、复位电路,可自行补齐):
电路板原理图
以下为内部程序:
第一页
第二页
第三页
第四页
第五页
第六页
第七页
第八页
以下为LED小灯数据真值表,通过改变它,可以实现不同的显示效果(ULN2003A输入高电平,输出低电平信号,小灯共接高电平,但在编辑数据时,高电平小灯点亮,所以作共阴极处理即可):
谢谢!
相关问答
求柏达楼宇对讲说明书_土巴兔装修问答十六首和铉音乐选择适用于30数码10直按系统清晰度:黑白420TV线彩色12万像素。频率响应:300~3400HZ工作电压:DC12V音频输出最大不失真功率主...