单片机 实现报警检测.docx

上传人:b****8 文档编号:9602975 上传时间:2023-02-05 格式:DOCX 页数:13 大小:194.98KB
下载 相关 举报
单片机 实现报警检测.docx_第1页
第1页 / 共13页
单片机 实现报警检测.docx_第2页
第2页 / 共13页
单片机 实现报警检测.docx_第3页
第3页 / 共13页
单片机 实现报警检测.docx_第4页
第4页 / 共13页
单片机 实现报警检测.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机 实现报警检测.docx

《单片机 实现报警检测.docx》由会员分享,可在线阅读,更多相关《单片机 实现报警检测.docx(13页珍藏版)》请在冰豆网上搜索。

单片机 实现报警检测.docx

单片机实现报警检测

151系列单片机简介及题目分析

1.151系列单片机简介

1.1.1时钟电路

8XX51单片机的时钟信号通常用两种电路形式得到:

内部振荡方式和外部振荡方式。

在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振器,就构成了内部振荡方式。

由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。

晶振通常选用6MHZ、12MHZ或24MHZ。

内部振荡方式如图1-1所示。

图中,电容器C1、C2起稳定振荡频率、快速起振的作用。

电容值一般为5-30pF。

内部振荡方式所得到的时钟信号比较稳定,实用电路中使用较多。

 

图1-1内部震荡方式

外部振荡方式是把已有的时钟信号引入单片机内。

这种方式适宜用来使单片机的时钟与外部信号保持一致。

外部振荡方式如图1-2所示。

 

图1-2外部振荡方式

1.1.2单片机的时序单位

振荡周期:

晶振的振荡周期,又称时钟周期,为最小的时序单位。

状态周期:

振荡频率经过单片机内的二分频器分频后提供给片内CPU的时钟周期。

因此,一个状态周期包含2个振荡周期。

机器周期:

1个机器周期由6个状态周期即12个振荡周期组成,是计算机执行一种基本操作的时间单位。

指令周期:

执行一条指令所需的时间,一个指令周期由1-4个机器周期组成,依据指令不同而不同。

以上4种时序单位中,振荡周期和机器周期是单片机内计算其他时间(如波特率、定时器的定时时间等)的基本时序单位。

1.1.3复位电路

复位操作完成单片机内电路的初始化,使单片机从一种确定的状态开始运行。

当8XX51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作。

如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。

因此要求单片机复位后能脱离复位状态。

根据应用的要求,复位操作通常有两种基本形式:

上电复位、开关复位。

上电复位要求接通电源后,自动实现复位操作。

开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。

常用的上电且开关复位电路如图1-3所示。

上电后,由于电容充电,使RST持续一段时间高电平。

当单片机已经在运行之中时,按下复位键也能使RST持续一段时间高电平,从而实现上电且开关复位的操作。

通常选择C=10-30uF,R=10kΩ。

如果上述电路复位不仅要使单片机复位,而且还要使单片机的一些外围芯片也同时复位,那么上述电阻电容参考值应适当调整少许。

图1-3复位电路

1.2题目分析及中断原理和引用

再分析题目,第一个小题中,两个不同频率的驱动信号可分别由两个16位的定时器产生,驱动的外围电路可以是蜂鸣器,扬声器等发音器件;第二个小题中,可由外部中断引脚接一个开关,从而产生外部中断。

80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器:

①中断请求:

定时和外中断控制寄存器TCON;

串行控制寄存器SCON;

②中断允许控制寄存器IE;

③中断优先级控制寄存器IP。

80C51外部中断源有2种触方式,即电平触发和脉冲触发。

当外部中断源为电平触发时,低电平有效。

CPU采样到

引脚为低电平时,就认为是外中断0的一个有效的中断请求信号。

当外部中断源以脉冲方式触时,负脉冲有效。

CPU在一个机器周期采样到

引脚为高电平,在接下来的一个机器周期采样到

引脚是低电平,即出现了下降沿的跳变时,就认为是外中断0的一个有效的中断请求信号。

因为2次检测的间隔时间都至少维持一个机器周期,从而保证CPU能够检测到电平的跳变。

对外部中断的控制主要有:

1)外部中断的开放或禁止;2)触发电平方式;3)优先级别的选择。

这些控制机构分别位于IE、TCON和IP等3个专用寄存器中。

合理编写程序是实现对中断控制的最基本方法,外部中断标志的编程方式有中断方式和查询方式。

中断方式是指CPU在接收到外部中断请求时,暂时停止主程序的执行,转去处理相关的服务程序,之后再返回继续运行原程序。

中断方式下的编程一般有如下步骤:

1)开中断;2)设置中断优先级;3)中断源的相关控制;4)编写中断服务程序。

查询方式就是CPU主动地监测中断源的状态并做出相应反应。

其编程步骤如下:

1)关中断;2)中断源的相关设置;3)关中断查询及相关处理。

2种方式的特点是:

在中断方式下,CPU除了响应中断之外的时间都用于执行主程序,中断源与CPU实现了并行工作。

而在查询方式下,除初始化工作外,CPU完全用于处理中断标志的查询及中断标志有效后的处理,中断一直占用着CPU的时间,并没有处于并行工作状态。

2系统电路图设计和仿真

2.1系统电路图

系统电路图如图2-1所示

图2-1系统电路

图中,核心芯片是proteus提供的89C51,在其基础上搭好最小系统,包括晶振电路,复位系统。

对于第一个小题,整个系统是这样的:

由P1.0引脚来控制扬声器的发声,而P1.0又要受到SW1开关的控制,即当开关合上时,P1.7会产生一个低电平信号,然后使得P1.0开始产生两种不同频率的方波来驱动扬声器,从而发出报警信号;当SW1断开时,将定时器关闭,同时给P1.0一个低电平,报警声随即消失。

对于第二个小题,只需通过P3.2引脚接入一个开关,然后设置为低电平下降沿触发,通过P3.2的信号来控制P1.0的输出,从而发出报警信号。

2.2系统仿真

在P1.0处接入示波器,第一个题目,合上开关SW1,在报警的同时,观测P1.0输出信号的波形,如图3-2所示

图2-2仿真结果1

从仿真结果可以看出来,P1.0处的输出是由两种不同频率的方波构成的,一个是500HZ,一个是1KHZ,从而使得扬声器发出交替音调报警声音。

第二个题目,合上开关SW2,在报警的同时,观测P1.0输出信号的波形,如图3-3所示

 

图2-3仿真结果2

由结果可以看到,输出的是1KHZ的方波,扬声器发出持续的一个音调的报警。

3相关程序及分析

3.1题目一汇编程序

ORG0000H

CLRA

BEG:

SETBP1.7

JBP1.7,$

MOVR2,#200

DV:

CPLP1.0

CJNEA,#0FFH,N1

ACALLD500

N1:

ACALLD500

DJNZR2,DV

CPLA

SJMPBEG

D500:

MOVR7,#250

DJNZR7,$

RET

END

3.2题目一C程序

#include

sbitfb=P1^0;

sbitsw=P1^7;

#defineuintunsignedint;

uinti,w;

voidT0_irq(void)interrupt1using1

{

TH0=(65035/256);//定时0.5MS,即频率1KHZ

TL0=(65035%256);

fb=~fb;

}

voidT1_irq(void)interrupt3using3

{

TH1=(64535)/256;//定时1MS,即频率500HZ

TL1=(64535)%256;

fb=~fb;

}

voiddelay(unsignedintw)//延时1MS

{

uinti;

while(w--)

for(i=0;i<125;i++);

}

voidmain()

{

TMOD=0x01;

TH0=(65035/256);//定时0.5MS,即频率1KHZ

TL0=(65035%256);

TH1=(64535-50000)/256;//定时1MS,即频率500HZ

TL1=(64535-50000)%256;

EA=1;

ET0=1;

ET1=1;

while(sw==0)

{

TR0=1;

delay(100);

TR0=0;

TR1=1;

delay(200);

TR1=0;

}

while(sw==1)

{

TR0=0;

TR1=0;

fb=1;

}

}

此程序主要用51的两个定时器,其中,T0用来产生频率为1KHZ的信号,T1用来产生频率为500HZ的信号。

定时器装初值的方法为:

以时钟频率为12M为例,那么一个机器周期大约为1us,对于16位的定时器,若从0开始计数,则计65535us时,会溢出产生中断。

所以假如要定时50ms,就应该装入初值为(65535-50000),从而使计数器计数50000us溢出,即为50ms。

3.3题目二C程序

#include

#include

#defineuintunsignedint;

sbitfb=P1^0;

sbitcx=P3^2;

uintflag,i,w;

voiddelay(unsignedintw)//延时1MS

{

uinti=0;

while(w--)

for(i=0;i<125;i++);

}

voidT0_irq(void)interrupt1using1

{

TH0=(65035/256);//定时0.5MS,即频率1KHZ

TL0=(65035%256);

fb=~fb;

}

voidcounter0(void)interrupt0

{

EX0=0;

delay(5);

EX0=1;

TMOD=0x01;

TH0=(65035/256);//定时0.5S,即频率

TL0=(65035%256);

ET0=1;

TR0=1;

flag=1;

}

voidmain()

{

IT0=1;//下降沿触发

EX0=1;

EA=1;

while

(1)

{

if(cx==1)

{

fb=0;

TR0=0;

}

}

}

此程序主要用到了外部中断0。

在使用前应对外部中断的触发方式进行设定,有下降沿和低电平两种触发形式。

然后打开总中断,打开外部中断即可。

设计程序需要注意的地方是:

类似于键盘的消抖,外部中断的产生与撤销也要进行延时消抖,体现在中断函数里的delay。

4心得体会

本次课程设计用Protues软件仿真及keil软件来实现报警信号的检测与告警提示。

通过这次设计,掌握了简单报警器的工作原理及工作过程,学会了使用keil软件来在单片机中加载入程序,并学会通过keil软件来检验汇编程序的正确性,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。

在实习的过程中检验了以前学的通信系统的知识掌握度,使我更加熟悉了汇编语言的编写。

设计是我们将来必需的技能,这次设计恰恰给我们提供了一个应用自己所学知识的机会,在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。

参考文献

[1]孙燕莲,韩巍.文福安构建仿真实验系统关键技术的研究,实验技术与管理,2005

[2]马正强.单片机虚拟实验室的建立,单片机与嵌人式系统应用,2005.

[3]代启化.基于Ptoteus的电路设计与仿真,自动化技术,2006.

[4]降学礼.基于Ptoteus软件的单片机实验室建设,单片机与嵌入式系统应用,2005.

[5]夏继强,沈德金.单片机实验与实践教程,北京:

北京航空航天大学出版社,2001.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1