资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二层,第三层,第四层,第五层,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,/35,任务,2,报警产生器,1,/35,教学目标,理解中断的基本概念,;,理解单片机中断系统的结构和特点,;,掌握中断系统的处理过程和使用方法,;,掌握中断控制的程序设计方法,;,2,/35,制作一个单片机控制的报警产生器。,单片机的,P3.3,口线连接按钮开关,SB,进行控制,当开关按下时,产生外部,1,中断,蜂鸣器响报警信号:由,P3.5,口线输出,1KHz,和,500Hz,的音频信号驱动蜂鸣器作报警信号,要求,1KHz,信号响,100ms,,,500Hz,信号响,200ms,,交替进行。,1.,任务描述,3,/35,主要部分:,AT89S52,单片机,按键接口电路,、,音频报警电路,2.,报警器硬件电路原理图,4,/35,应用软件采用模块化设计方法。系统软件主要由,主程序,、,外部中断,1,子程序、,延时子程序,等模块组成,系统软件结构框图如下图所示。,外部中断,1,服务子程序,主程序,延时子程序,系统软件结构框图,3.,软件设计思想,5,/35,蜂鸣器主要分为,压电式蜂鸣器,和,电磁式蜂鸣器,两种类型。,压电式蜂鸣器,:主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。有的压电式蜂鸣器外壳上还装有发光二极管。多谐振荡器由晶体管或集成电路构成。当接通电源后(,1.515V,直流工作电压),多谐振荡器起振输出,1.52.5kHZ,的音频信号,阻抗匹配器推动压电蜂鸣片发声。压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。在陶瓷片的两面镀上银电极,经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。,4.,音频报警模块基本知识,_1,6,/35,电磁式蜂鸣器:,由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。,本项目中,选用无源电磁式蜂鸣器来实现报警发声。,4.,音频报警模块基本知识,_2,7,/35,当按键,SB,未按下时,,P3.3,口线,(INT1,,外部中断,1,请求输入端,),为高电平,;,当按键,SB,按下时,,P3.3,口线为低电平,;,单片机在相继的两个周期采样过程中,一个机器周期采样到该引脚为高电平,接着的下一个机器周期采样到该引脚为低电平时,则使外部中断,1,中断请求标志,IE1,置,1,,产生中断,。,改变单片机,P3.5,引脚输出波形的频率,就可以调整控制蜂鸣器音调,,产生各种不同音色、音调的声音。另外,改变,P3.5,输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。,5.,软件算法设计,_1,8,/35,在中断服务程序中,调用延时子程序并对,P3.5,引脚取反来实现特定频率的报警音频信号的产生。,报警音频信号产生的方法:,500Hz,信号的周期为,1/500Hz=2ms,,信号电平为每,2ms/2=1ms,取反,1,次,;1KHz,的信号周期为,1/1KHz=1ms,,信号电平每,1ms/2=500us,取反,1,次。,1ms,正好为,500us,的,2,倍,可以利用延时,500us,的延时子程序来实现延时,,1ms,正好调用,2,次延时子程序。,5.,软件算法设计,_2,9,/35,P3.3,口线用于控制按钮开关,SB;,P3.5,口线用于输出,1KHz,和,500Hz,的音频信号驱动蜂鸣器作报警信号,;,工作寄存器,R2,为计数次数。,6.,数据结构设计,10,35,主程序主要完成对外部中断,1,进行初始化,对相关的特殊功能寄存器进行初始化设置。堆栈指针初始化,栈底设置为,60H,。开放总中断,设置,EA,位。允许,/INT1,外部中断:设置,EX1,位。设置,IT1,位使外部中断源,/INT1,工作于边沿触发方式下。,7.,程序设计,_,主程序设计,11,35,堆栈指针初始化,开始,设置外部中断,1,的触发信号类型:,边缘触发方式,开放总中断,允许外部中断,1,中断,等待外部中断,1,主程序设计流程图,12,35,CPU,响应了外部中断,1,的中断请求后转至中断服务程序执行。其主要功能就是将,P3.5,的值取反、延时,再取反、再延时,;,从而实现,P3.5,口线交替输出,1KHz,和,500Hz,的音频信号驱动蜂鸣器报警。,7.,程序设计,_,中断服务程序设计,13,35,中断服务程序流程图,14,35,中断服务程序流程图(续),15,35,;*,;,项目名称:报警产生器,;,功能:利用外部中断,1,,产生,1KHz,和,500Hz,的音频报警信号,;*,ORG 0000H,AJMP MAIN,ORG 0013H,AJMP INT_1,;*,;,功能:主程序,;*,ORG 0100H,MAIN:MOV SP,#60H ;,堆栈指针初始化,SETB IT1 ;,边缘触发方式,SETB EA ;,打开中断总开关,SETB EX1 ;,外部中断,1,允许控制位,SJMP$;,等待外部,1,中,8.,汇编源程序清单,_1,16,35,;,*,;,功能:外部中断,1,服务子程序,;*,ORG 0200H,INT_1:MOV P3.5,#00H,START,:,MOV R2,,,#200,DV1,:,CPL P3.5 ;,输出,500Hz,音频信号,LCALL DELY500us,LCALL DELY500us,DJNZ R2,,,DV1,8.,汇编源程序清单,_2,17,35,MOV R2,,,#200,DV2,:,CPL P3.5 ;,输出,1KHz,的音频信号,LCALL DELY500us,DJNZ R2,,,DV2,RETI,;*,;,功能:延时子程序(延时,500us,),;*,DELY500us,:,MOV R7,,,#250,LOOP,:,NOP,DJNZ R7,,,LOOP,RET,END,8.,汇编源程序清单,_2,18,35,/*/,/,项目名称:报警产生器,功能:,/*/,#include /,包含头文件,#include,bit flag;,unsigned char count;,9.C,语言源程序,_1,19,35,/*/,/,功能:主程序,/*/,void main(void),SP=0 x60;/,堆栈指针初始化,IT1=1;/,边缘触发方式,EA=1;/,打开中断总开关,EX1=1;,/,初始化外部中断,1,标志位,While(1);/,等待外部,1,中断,9.C,语言源程序,_2,20,35,/*/,/,功能:延时子程序,/*/,void dely500(void),unsigned char i;,for(i=250;i0;i-),_nop_();,/*/,/,功能:外部中断,1,服务子程序,/,中断编号:,2,/*/,9.C,语言源程序,_3,21,35,void intersvr1(void)interrupt 2 using 1,P35=0;,P3_5=P3_5;,for(count=200;count0;count-),P3_5=P3_5;,dely500();,for(count=200;count0;count-),P3_5=P3_5;,dely500();,dely500();,9.C,语言源程序,_4,22,35,
展开阅读全文