课程设计报告
课题:基于单片机的声光报警系统的设计
学院: 信息工程学院
专业: 电子科学与技术
班级:
学号:
姓名:
指导老师:
序言
随着社会的发展,人们安防意识的提高,现代化的安防技术得到广泛的应用。为了防止非法的入侵和各类破坏活动,传统的防范手段已难以适应安全保卫工作的需要。为此,报警器的出现使得人们的安全得到大幅度的改善。而光电报警器就是其中的佼佼者,深受人们的青睐[1]。
单片机在一块小小芯片上集成了运算器、控制器、储存器、输入/输出接口五个部分,在电路设计中占有了极大的优势[2]。目前单片机正朝着高性能和多产品方向发展,它将向低功耗、小体积、大容量、高性能、低价格、高速化、高可靠方向进一步发展。基于单片机的报警器将成为引领报警系统的潮流。
随着超大规模数字集成电路、单片机技术的飞速发展,利用单片机及其它外围芯片实现防盗报警成为一种发展趋势。它具有探测效果好、易于装配、体积小、操作简单等优点,而且性能价格比也很高。对于人们日益关注的安全问题,报警器逐渐崭露头角,做出了很大的贡献。本文设计了一种基于单片机的光电报警系统,详细说明了报警系统的各个功能部件。并利用电路仿真软件Protus对系统电路进行了验证。
目录:
1. 课程要求.....................................1
2. 设计方案.....................................1
3. 元器件简介...................................1
3.1.AT89C52..................................2
3.2.ADC0809..................................3
3.3.74LS273..................................4
3.4.数码管...................................4
3.5.光敏电阻.................................5
4. 设计电路原理.................................6
4.1.单片机最小系统...........................6
4.2信号采集电路..............................7
4.3.数据显示电路.............................8
4.4.蜂鸣器报警电路...........................8
4.5.总仿真电路...............................9
5. 程序设计.....................................9
5.1.设计思路.................................9
5.2.程序代码.................................9
6. 调试仿真....................................11
7. 总结........................................11
8. 附录一......................................12
9. 附录二......................................13
10.附录三......................................14
1.课程要求
1)包括电信号转换成数字信号系统,数字显示系统,报警系统等;
2)测量系统的性能特点等;
3)利用光电传感器进行信号的采集及控制;
4)画出电路图及写出设计报告;
2.设计方案
利用ADC0809对光敏电阻的电压信号的采集来判断外界环境的变化,对于采集来的电压信号用数码管来进行显示,并在系统内部设置一个阈值,当采集光敏电阻的电压超过设定的阈值时候蜂鸣器开始报警。
流程框图:
3.元器件简介
3.1.AT89C52
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。
图一.PDIP封装的AT89C52引脚图
AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
3.2.ADC0809
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。多路开关可选通8个模允许8 路模拟量分时输入,共用A/D 转换器进行转换。三态输出锁存器用于锁存A/D 转换完的数字量,当OE 端为高电平时,才可以从三态输出锁存器取走转换完的数据。
图二. ADC0809管脚图
ADC0809 应用说明
(1). ADC0809 内部带有输出锁存器,可以与AT89S51,STM32等单片机直接相连。
(2). 初始化时,使ST 和OE信号全为低电平。
(3). 送要转换的哪一通道的地址到A,B,C 端口上。
(4). 在ST 端给出一个至少有100ns 宽的正脉冲信号。
(5). 是否转换完毕,我们根据EOC 信号来判断。
(6). 当EOC变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了。
3.3.74LS373
74LS373是带三态输出的8位锁存器,共有8个输入端D1—D8及8个输出端Q1—Q8。当三态端OE为有效低电平,74LS373的G端为输人选通端,使能端G为有效高电平时,输出跟随输入变化;当G=1时,锁存器处于透明工作状态,即锁存器的输出状态随数据端的变化而变化,即脚1=Di(I=1,2,…,8)。当G端由1变0时,数据被锁存起来,此时输出端Qi不再随输入端的变化而变化,而一直保持锁存前的值不变。G端(或STB端)可直接与单片机的锁存控制信号端ALE相连,在ALE的下降沿进行地址锁存。
只要根据“输入三态,输出锁存”的原则,选择74系列的TTL电路或MOS电路就能组成简单的扩展电路,如74LS244、74LS273、74LS373、74LS377等芯片都能组成输入、输出接口。
锁存器是一个很普通的时序电路。一般的,它在时钟上升沿或者下降沿来的时候锁存输入,然后产生输出,在其他的时候输出都不跟随输入变化,这就是所谓边沿触发的D触发器。当然也有电平触发的D触发器,具体使用哪种,得看你使用得总线配置。
通常用作单片机的地址锁存器的芯片有74LS373、8282、74LS273、74HC573等。
3.4.数码管
led数码管(LED Segment Displays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。位数有半位,1,2,3,4,5,6,8,10位等等。
图三. 数码管LED分布
按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
3.5.光敏电阻
光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低,亮电阻值可小至1KΩ以下。光敏电阻对光线十分敏感,其在无光照时,呈高阻状态,暗电阻一般可达1.5MΩ。光敏电阻的特殊性能,随着科技的发展将得到极其广泛应用。 [1]
光敏电阻器是利用半导体的光电导效应制成的一种电阻值随入射光的强弱而改变的电阻器,又称为光电导探测器;入射光强,电阻减小,入射光弱,电阻增大。还有另一种入射光弱,电阻减小,入射光强,电阻增大。
光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。
4.设计电路原理
4.1.单片机最小系统
单片机最小系统是指用最少的元件组成的单片机可以工作的系统。单片机最小系统特点:系统资源完全开放,配合其它模块板或自行搭建用户电路可实现任意实验功能。接口设计灵活,使用方便(适合创新实践活动)。单片机最小系统由单片机、时钟电路、复位电路构成。
图四. 单片机最小系统
1. 时钟电路
在设计时钟电路之前,让我们先了解下51 单片机上的时钟管脚:
XTAL1(19 脚) :芯片内部振荡电路输入端。
XTAL2(18 脚) :芯片内部振荡电路输出端。
XTAL1 和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图2中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2 ~ 12MHz 之间任选,甚至可以达到24MHz或者更高,但是频率越高功耗也就越大。在本实验套件中采用的11.0592M的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 ~ 40pF之间选择(本实验套件使用22pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30 ~ 50pF 之间。通常选取33pF 的陶瓷电容就可以了。
2. 复位电路
在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。
MCS-5l 系列单片机的复位引脚RST( 第9 管脚) 出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。
复位操作通常有两种基本形式:上电自动复位和开关复位。图2中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST管脚上保持10ms 以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。
4.2.信号采集电路
利用ADC0809对光敏电阻信号进行采集,并和设置的阈值进行比较。
图五. 信号采集电路
4.3.数据显示电路
利用4段数码管对采集的电压信号进行显示。
图六. 数码管显示
4.4.蜂鸣器报警电路
当采集的信号电压大于设置的阈值时候,蜂鸣器导通。
图七. 蜂鸣器报警电路
4.5.系统总电路
见附录一。
4.6.PCB仿真图
见附录二.
5程序设计
5.1.设计思路
ADC0809从通道一输入信号,经转换后的数值从P0口输入到单片机内与阈值进行比较,如果大于阈值则P3^0口输出低电平,蜂鸣器报警。数据通过P0口输出,通过74L273对数据进行锁存,P2^0-P2^4轮流输出低电平,对数码管进行位选,数码管进行数据显示。
5.2.程序代码
#include
#include
sbit A3=P2^0;
sbit A2=P2^1;
sbit A1=P2^2;
sbit dp=P0^7;
sbit EOC=P1^0;
sbit WWR=P3^6;
sbit RRD=P3^7;
sbit BUZZ=P3^0;
unsigned char getdata;
unsigned char code tab[]=
{
//0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90
};
void DelayMS(unsigned int x)
{
unsigned char t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void display(unsigned char adm)
{
int temp[3]={0,0,0};
int i;
unsigned char m=0x01;
long admx=adm;
admx=(admx*500)/256;
if(admx>300)
BUZZ = 0;
else
BUZZ = 1;
temp[0]=(admx/100)%10;
temp[1]=(admx/10)%10;
temp[2]=admx%10;
P2=m;
for(i=0;i<3;i++)
{
P0=tab[temp[i]];
if(i==0){
dp=0;
}else{
dp=1;
}
WWR=0;
WWR=1;
DelayMS(2);
m=_crol_(m,1);
P2=m;
}
}
void main()
{
while(1)
{
P2=0x00;
P0=0xff;
WWR=1;
RRD=1;
_nop_();
_nop_();
P0=P0&0xF8;
WWR=0; _nop_();
WWR=1; _nop_();
while(EOC==1);
_nop_();
while(EOC==0);
RRD=0;
getdata=P0;
RRD=1;
display(getdata);
}
}
6.调试仿真
见附录三。
7.总结
通过这次课程设计有很多收获,把所学到的知识得到了应用,对所学的知识有了更深的了解,有了新的体会。对于仿真软件protues掌握的更加熟悉,也发现了不少的问题,经过一系列的努力得以解决,充实了自己。
附录二:
图.PCB仿真图
附录三:
图. 调试仿真