基于单片机的红外线报警器设计
一. 硬件电路
电路原理图如图1所示.可将该电路分为以下三个部分.
1 、电源电路
220V交流市电经变压器T降压 .桥式整流器D1整流. 电解电容C7滤波.三端稳压器78L05稳压,最后得到整机要求的+5V稳定直流电源.
2 、 单片机系统.
U1为AT89C2051单片机.C1.R0,R1和复位按钮RESET组成手动电平复位和上电自动复位电路; C2.C3以及晶振T1组成时钟电路iC4.C5为+5V电源滤波电容 .U2为CM0S6反相器CC4069 , 起驱动作用 .VD1 ~ VD6为红外发射管, 其负极端接与P1口.P1口设置为输出状态 ,当P1口为 .0时 ,VD1~VD6发红外光.VD7~VD12为红外接收管.当接收到红外光时导通,+5V电源通过VD7一VD12加到反相器 CC4069的输入端,经反相为低电平,这时P3_0~P3.5为低电平.发管和接收管分别安装在门和窗口的适当位置.当有人闯入时遮挡了红外线,接收管截止.反相器输入端为低电平 .这时U1的P3.0一P3.5为高电平.当在一定时间内检测到位于不位置的光束被遮挡时.则由P3.7口输出报警信号(高低电平间隔1S的脉冲信号).驱动声光报警电路.进声光报警.直至按复位按钮RESET或电源开关S1.由于红外收发管之间没有遮挡时为正常.有遮挡时为异常,则当 P 1口输出 o 0 H时. P 3口的正常状态数据为00H.
3、声光报警电路 .
555定时器U4.扬声器BY, 普通红色发光二极管VD13等组成声光报警电路 . 其中555定时器接成了一个低频多谐振荡器 .其控制电压输入端5脚与单片机 AT89C2051的P3.7脚相连,受P3.7脚输出的高低电平间隔1S的脉冲信号控制.当P3.7为高电平时控制电压Uco较高,阈值电压UT+(=Uco)和UT-(=1/2Uco) 也较高 ;当P3.7为低电平时UT+和UT-也较低.当UT+较高时,电容C9充、放电的电压幅度较大.因而振荡频率较低.反之,当UT+较低时,电容C9充、放电过程中电压变化幅度较小.充、放电过程完成得较快,故振荡频率较高.即当P3.7=1时.555输出脉冲的振荡频率较低;当P3.7=0时.555输出脉冲的振荡频率高. 该输出脉冲经过隔直电容C8加到扬声器上,扬声器将交替发出高、上位机的通信.液晶显示模块使用了12864的并行模式 ,数据端DB0-DB7与单片机的P2.0-P2.7相连,PSB控制12864工作在并行模式,电路中未接液晶的背光.RST复位端直接悬空.
通信协议
开始发送数据时,A1_89S52发出SS下降沿信号然后等待ZLG500在SDA线上的响应,若在50ms内未检测到此响应则退出本次传输(由SPI看门狗定时器实现) 将错误代码返回给主程序由主程序进行错误处理.若ZLG500正确响应则AT89S52可将命令和数据发送出去,然后AT89S52等待ZLG500发回的状态和响应数据.即等待SS线上的下降沿的产生, 此时的AT89S52用外部中断响应. 若在500ms内未检测到此信号则退出本次传输且向主程序报告错误代码(由SPI看门狗定时器实现) .若正确检测到SS信号则可接收状态和数据.SS为数据发送使能,若一方有数据要发送给另一方,则该方控制SS线为低.并在发送结束后将该线置高. 接收数据方不得 控制该线.双方必须遵守通信协议.不得同时控制该线.SDAT为数据线由数据发送端控制数接收端必须释放该线,该线在一次传输开始时还同时作为数据接收端的响应信号.SPI线上信号波形圈见图4 .
本系统主要由四个源程序实现分为三层. mface-3.asm为底层程序.定义最基本的函数且直接操作硬件zig500.C .12864.C为中层程序定义各种功能函数main .C为顶层程序直接调用底层和中层文件中的函数.其中zig500.C和m-face.asm由ZLG500模块的生产厂家提高低不同的两种叫声.同时P3.7脚输出的高低电平间隔1S的脉冲信号经电阻R8加到红色发光二极管VD13上.VD13将闪烁发光.达到声光同时报警的效果.
二.软件设计
我们的目标是,当检测到有人闯入时就由 P3713输出高低电平间隔1S的脉冲信号去驱动声光报警电路.产生声光报警. 这可通过使P3.7口每隔1S取反一次实现.而1S时间可通过让定时器T0(工作于定时方式1) 重复定时1OOms十次实现.用工作寄存器R1作循环计数器.初值为10(OAHo采用中断方式编程.整个软件由主程序和中断服务程序两部分构成.
1 、主程序.主要功能是对系统进行初始化和对系统进行监视看是否有人闯入.其程序流程图如图2所示.程序清单如下:
0RG O0O0H
AJMP MAIN ; 转向主程序
ORG O00BH : 定时器 T O中断八E l
LJMP BJ ; 转向中断服务程序
0RG O0 30H
MAI N: MOV SP , #50H ; 设置堆栈栈底
MOV R1.#OAH; 设置循环计数器初值
MOV P3, # OOH; 设置P3口为正常状态
MOV P1.#OOH; 使VD1-VD6发红外光
MOV TMOD. #01H; 设TO为定时方式 1
MOV TH0. # 3CH; 设置定时100ms初值
M0V TL O. # OBOH
SETB EA ; CPU开中断
SETB ETO ; 定时器0允许中断
JS: MOV A, P3 ; 监视是否有人闯入
CJNE A. #O OH. LP
由于设备生产厂家停产老机型,配件价高难购,导致我单位一台老型号数控塑钢门窗角缝清理机(简称清角机)闲置至今 .弃之可惜 ,留着无用.最近生产任务又比较紧.原定要购买一台新的清角机.但本着为单位减少资金投入的目的. 决定对闲置清角机进行低投入改装.
经过仔细查看、分析:原机由数控电路控制步进电机拖动清角机构运动.精确控制清角机构进给、升降量.可原机 控制电路部分已经损坏 ,还缺少一只步进电机.但机械部分完好.因此决定舍去原机电路和步进电机等部分不用,只保留原机机械部分.改用一只气缸来拖动清角机构运动.机械定位来控制进给量.由多只气缸协作完成物件加工的工作过程.
机械部分改装办法确定了.但又怎样去控制它们的运行呢?想到以前用P111-G可编程控制器改装过其它生产设备 .使用P111-G可编程控制器控制线路简洁、性价比高.编程简单、方便、快捷.决定选用P111-G可编程控制器来控制机械部分运行.改装方法构思好后.动手改装.先加装气缸、电磁阀、行程开关、限位装置等( 机械部分改 装后结构简图如上图) .再拆掉原机配电箱内所有电路并装入P111-G可编程控制器. 按拟定的线路配线接好相关
电路.一切就绪后 .重点转到对P111一G可编程控制器的编程上.下面介绍具体编程步骤:
AJ MP JS
LP . SETB TR0 ; 启动T0定时
100ms
S J MP$ ;等待定时100ms
完成
2 、中断服务程序.主要功能是判断定时1S是否完成.从而决定是否对P3.7Iq取反.其程序流程图如图3所示.程序清单如下:
ORG 0060H
BJ : PUSH Acc ; 现场保护
PUSH PSW
MOV TH0 . #3CH ; 重设定时初值
MOV TL0.B0H
DJ NZ R1.FH
MOV R1 . } }OAH
CPL P3.7
FH: POP PSW
POP Acc
RETl
END
; 1S未到返回
; 重设计数器初值
; P3.7口取反
: 恢复现场
: 中断返回
三.系统调试
1 、软件调试.
先在 Keilc51 环境中 进行软件调试. 再利用编程器将调试好 的程序固化到AT89C2051单片机中.
2 、硬件调试
(1)检查线路应焊接无误.(2) 电 源电路调试 .断开负载.用万用表测量78L05的3脚应有+5v电压.(3) 先不装入AT89C2051单片机.用短路线把U1插座的12脚接地.调整 VD1和VD7的安装位置和角度 ,测量U1插座的2脚电压 .当VD1和VD7之间无遮挡时2脚电压为0伏,有遮挡时为+5伏.用相同方法反复调整其他几对红外收发管的位置和角度. 使U1插座的3、6、7、8、9各脚的电压符合要求.(4)将固化好程序的AT89C2051插入电路中的U1插座上.接上电源即可工作.