XXXX学校电气工程系
电子课程设计报告设计题目:声光报警
专业:电力系统及其自动化技术
班级:电力102 班
学号:100313203
姓名:X X X
指导教师:X X X
题目:声光报警
一、设计目的
掌握单片机的通信,会用单片机通信的几种方式,同时学会矩阵键盘的应用,更进一步理解c51单片机的用途。
二、设计要求
在Proteus中画出原理图或使用实物,编制程序,实现以下功能:
1、理解报警器工作原理,不同频率声音的实现方案。
2、可设置报警声音的长短。
3、至少2种以上报警方案,每种方案至少由2种不同频率的声音合成。
发
光的强弱跟随报警声音的频率高低变化。
三、方案设计与论证
MCS-51单片机内部结构
8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
·中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
.数据存储器(RAM)
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
图1
·程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
·定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。
·并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。
·全双工串行口:
8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
·中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
·时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构
本系统是基于51系列单片机的简易安防声光报警系统,主要包括的硬件电路模块有:单片机最小系统、七段数码管显示模块、安防报警器(点触开关模拟)、声光报警。
1.单片机最小系统简介
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复
位电路。
结构图如右图所示: 各部分的功能介绍如下:
复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST 脚将会出现高电平,并且,这个高电平持续的时间由电路的RC 值来决定.典型的51单片机当RST 脚的高电平持续两个机器周期以上就将复位,
所以,适当组合RC 的取值就可以保证可靠的复位.
晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS 级时歇,方便定时操作) .其电路系统框图如下:
图1 系统原理框图
基于Porteus 的仿真图如下:
STC89C51 串口下载 复位电路 声光报警
红外报警输入 门禁报警输入
解除报警
数码管显示
四、keil程序清单
基于STC89C51单片机的功能特点,并根据系统的要求编写出基于keil C51的程序,首先单片机上电复位,并进行初始化包括寄存器和数码管,当发生报警事件时,单片机驱动声光报警装置并且在数码管上显示相应的报警信息,退出中断时,单片机检测报警解除按钮,当报警解除按钮被按下时单片机关闭声光报警并清除数码管上的报警信息,具体的程序流程如图4所示。
#include<reg51.h> sbit s1=P1^6;
sbit s2=P1^7;
sbit button=P2^7;
中断入口
显示报警信息声光报警
退出中断
上电复位EA=0
数码管初始化
INT0、INT1 均设为下降沿触发
EA = 1 P3.4 是否为0?
检测P3.4 解除报警信
是否终止
unsigned char t,a[]=
{0x06,0x5b};
void delay(int n)
{
unsigned char i;
while(n--)
for(i=0;i<120;i++);
}
/* void shuma(char b,char c) {
/* while(button)
{
a1=0;
P0=a[b];
delay(2);
a1=1;
a2=0;
P0=a[c];
delay(2);
a2=1;
}
} */
void main()
{
EX0=1;
EA=1;
if(button==1)
{t=10;s2=1;P0=a[0];} else
{t=1;s2=0;P0=a[1];} while(1);
}
void zhongduan()interrupt 1 {
while(1)
{
s1=0;
delay(t);
s1=1;
delay(t);
}
}
六、设计总结
在此次电路设计时发现了设计的问题,对于程序来说,一个很不起眼的失误就能导致整个程序不能运行,所以在做程序时候要了解其逻辑关系,理清时序,对单片机的原理及接口要有很清晰的认识,以免在编写程序时候出现不必要的错误。