单片机 实现报警检测

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查询方式就是CPU主动地监测中断源的状态并做出相应反应。其编程步骤如下:1 )关中断;2 )中断源的相关设置;3 )关中断查询及相关处理。
2种方式的特点是:在中断方式下,CPU除了响应中断之外的时间都用于执行主程序,中断源与CPU实现了并行工作。而在查询方式下,除初始化工作外,CPU完全用于处理中断标志的查询及中断标志有效后的处理,中断一直占用着CPU的时间,并没有处于并行工作状态。
{
TH0 =(65035/256); //定时0.5MS,即频率1KHZ
TL0 =(65035%256);
fb=~fb;
}
void T1_irq(void) interrupt 3 using 3
{
TH1 =(64535)/256; //定时1MS,即频率500HZ
TL1 =(64535)%256;
[1]孙燕莲,韩巍.文福安构建仿真实验系统关键技术的研究,实验技术与管理,2005
[2]马正强.单片机虚拟实验室的建立,单片机与嵌人式系统应用,2005.
[3]代启化.基于P t o t e u s的电路设计与仿真,自动化技术,2006.
[4]降学礼.基于P t o t e u s软件的单片机实验室建设,单片机与嵌入式系统应用,2005.
2.2
在P1.0处接入示波器,第一个题目,合上开关SW1,在报警的同时,观测P1.0输出信号的波形,如图3-2所示
图2-2仿真结果1
从仿真结果可以看出来,P1.0处的输出是由两种不同频率的方波构成的,一个是500HZ,一个是1KHZ,从而使得扬声器发出交替音调报警声音。
第二个题目,合上开关SW2,在报警的同时,观测P1.0输出信号的波形,如图3-3所示
对外部中断的控制主要有:1 )外部中断的开放或禁止;2 )触发电平方式;3 )优先级别的选择。这些控制机构分别位于IE、TCON和IP等3个专用寄存器中。
合理编写程序是实现对中断控制的最基本方法,外部中断标志的编程方式有中断方式和查询方式。
中断方式是指CPU在接收到外部中断请求时,暂时停止主程序的执行,转去处理相关的服务程序,之后再返回继续运行原程序。中断方式下的编程一般有如下步骤:1 )开中断;2 )设置中断优先级;3 )中断源的相关控制;4 )编写中断服务程序。
1 51
1.1 51
1.1.1
8XX51单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷谐振器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡方式如图1-1所示。图中,电容器C1、C2起稳定振荡频率、快速起振的作用。电容值一般为5-30pF。内部振荡方式所得到的时钟信号比较稳定,实用电路中使用较多。
[5]夏继强,沈德金.单片机实验与实践教程,北京:北京航空航天大学出版社,2001.
CPL A
SJMP BEG
D500:MOV R7,#250
DJNZ R7,$
RET
END
3.2
#include <reg52.h>
sbit fb=P1^0;
sbit sw=P1^7;
#define uint unsigned int;
uint i,w;
void T0_irq(void) interrupt 1 using 1
fb=~fb;
}
void delay(unsigned int w)//延时1MS
{
uint i;
while (w--)
for(i=0;i<125;i++);
}
void main()
{
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);
TRBaidu Nhomakorabea=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
#include < reg51.h >
#include <intrins.h>
#define uint unsigned int;
sbit fb=P1^0;
sbit cx=P3^2;
uint flag,i,w;
void delay(unsigned int w)//延时1MS
{
uint i=0;
图1-3复位电路
1.2
再分析题目,第一个小题中,两个不同频率的驱动信号可分别由两个16位的定时器产生,驱动的外围电路可以是蜂鸣器,扬声器等发音器件;第二个小题中,可由外部中断引脚接一个开关,从而产生外部中断。
80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器:
①中断请求:定时和外中断控制寄存器TCON;
机器周期:1个机器周期由6个状态周期即12个振荡周期组成,是计算机执行一种基本操作的时间单位。
指令周期:执行一条指令所需的时间,一个指令周期由1-4个机器周期组成,依据指令不同而不同。
以上4种时序单位中,振荡周期和机器周期是单片机内计算其他时间(如波特率、定时器的定时时间等)的基本时序单位。
1.1.3
常用的上电且开关复位电路如图1-3所示。上电后,由于电容充电,使RST持续一段时间高电平。当单片机已经在运行之中时,按下复位键也能使RST持续一段时间高电平,从而实现上电且开关复位的操作。通常选择C=10-30uF,R=10kΩ。
如果上述电路复位不仅要使单片机复位,而且还要使单片机的一些外围芯片也同时复位,那么上述电阻电容参考值应适当调整少许。
if(cx==1)
{
fb=0;
TR0=0;
}
}
}
此程序主要用到了外部中断0。在使用前应对外部中断的触发方式进行设定,有下降沿和低电平两种触发形式。然后打开总中断,打开外部中断即可。设计程序需要注意的地方是:类似于键盘的消抖,外部中断的产生与撤销也要进行延时消抖,体现在中断函数里的delay。
本次课程设计用Protues软件仿真及keil软件来实现报警信号的检测与告警提示。通过这次设计,掌握了简单报警器的工作原理及工作过程,学会了使用keil软件来在单片机中加载入程序,并学会通过keil软件来检验汇编程序的正确性,对以后的学习和工作都起到了一定的作用,加强了动手能力和学业技能。在实习的过程中检验了以前学的通信系统的知识掌握度,使我更加熟悉了汇编语言的编写。设计是我们将来必需的技能,这次设计恰恰给我们提供了一个应用自己所学知识的机会,在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。
while (w--)
for(i=0;i<125;i++);
}
void T0_irq(void) interrupt 1 using 1
{
TH0 =(65035/256); //定时0.5MS,即频率1KHZ
TL0 =(65035%256);
fb=~fb;
}
void counter0(void) interrupt 0
图1-1内部震荡方式
外部振荡方式是把已有的时钟信号引入单片机内。这种方式适宜用来使单片机的时钟与外部信号保持一致。外部振荡方式如图1-2所示。
图1-2外部振荡方式
1.1.2
振荡周期:晶振的振荡周期,又称时钟周期,为最小的时序单位。
状态周期:振荡频率经过单片机内的二分频器分频后提供给片内CPU的时钟周期。因此,一个状态周期包含2个振荡周期。
串行控制寄存器SCON;
②中断允许控制寄存器IE;
③中断优先级控制寄存器IP。
80C51外部中断源有2种触方式,即电平触发和脉冲触发。当外部中断源为电平触发时,低电平有效。CPU采样到 引脚为低电平时,就认为是外中断0的一个有效的中断请求信号。当外部中断源以脉冲方式触时,负脉冲有效。CPU在一个机器周期采样到 引脚为高电平,在接下来的一个机器周期采样到 引脚是低电平,即出现了下降沿的跳变时,就认为是外中断0的一个有效的中断请求信号。因为2次检测的间隔时间都至少维持一个机器周期,从而保证CPU能够检测到电平的跳变。
复位操作完成单片机内电路的初始化,使单片机从一种确定的状态开始运行。
当8XX51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。
根据应用的要求,复位操作通常有两种基本形式:上电复位、开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。
图2-3仿真结果2
由结果可以看到,输出的是1KHZ的方波,扬声器发出持续的一个音调的报警。
3
3.1
ORG 0000H
CLR A
BEG:SETB P1.7
JB P1.7,$
MOV R2,#200
DV:CPL P1.0
CJNE A,#0FFH,N1
ACALL D500
N1:ACALL D500
DJNZ R2,DV
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的输出,从而发出报警信号。
{
EX0=0;
delay(5);
EX0=1;
TMOD = 0x01;
TH0 =(65035/256);//定时0.5S,即频率
TL0 =(65035%256);
ET0 = 1;
TR0=1;
flag=1;
}
void main()
{
IT0=1; //下降沿触发
EX0=1;
EA = 1;
while(1)
{
相关文档
最新文档