防盗报警器c语言程序,家用报警器——驱动程序最终版(全文完整版)

《家用报警器——驱动程序.doc》由会员分享,可免费在线阅读全文,更多与《家用报警器——驱动程序(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。

1、}挂电话程序如下:voidATH(void){ucharcodemode[]={x,x,x,XD};uinti;for(i=;ilt;i++){SBUF=mode[i];while(TI==);TI=;}}系统主程序设计系统的主程序就像一个人的心脏,没有它其它做得再好也无法实现。程序如下:voidmain(void){if((IR_IN==||YAN==||WEN==)amam(model==)){LCD_Clear();清显示,model=;model赋值,即将执行报警状态flag=;打电话标志位置“”,即将执行打电话函数,打电话if(IR_IN==){num=;num赋值LCD_Write_String(,,quotHONG:Onquot);暂显示系检测红外传感器报警Delay();}if(YAN==){num=;num赋值LCD_Write_String(,,quotYANWU:Onquot);暂显示系检测烟雾传感器报警Delay();}if(WEN==){num=;num赋值WEN=;重置超温标志位为“”LCD_Write_String(,,quotWEN:Onquot);暂显示系检测超温报警Delay();}}if(flag==)打电话标志位flag=时,执行打电话函数{LCD_Clear();清屏flag=;重置打电话标志位flag=LCD_Write_String(,,quotDaDianHuaquot);在液晶显示打电话状态LCD_Write_String(,,quotquot);在液晶显示打电话状态ATD();打电话函数Delay();延时Delay();延时}if(model==)当model=时,进入报警状态{LCD_Clear();清屏系统调试系统的调试电路板的实物做出来之后,系统调试是从理论到实际的第一个步骤。调试时应采取软硬件结合一起调试。()单片机无法开启,后检查是因为电路断路造成;()电源开关焊接错误,导致无法启动;()芯片P座金属片有弯曲,导致芯片不能完全接触,经努力查找发现并更换;()传感器太过于敏感,导致频繁报警。

2、,并且不厌其烦的帮我们调试和提出改进的建议,使我们的设计产品能够正常实现其报警功能。同时也要感谢帮我度过难关的搭档和同学,也正是因为有他们我才避免走了很多弯路,才能花更多的时间与报警器的设计中。从老师的爱岗敬业精神和为人处世的态度,不但让我学习到了一些专业知识,而且还学会了做人的道理。参考文献[]肖景和等集成电路应用精粹[M]人民邮电出版社,[]百度百科ATS中文资料[DBOL]htt:baikebaiducomviewhtm[]百度百科热释电红外传感器[DBOL]htt:baikebaiducomviewhtm[]李冰,姜波.BISS在热释电红外开关上的应用[J].应用科技,:.[]常旭东,洪丽,王志福基于GSM短消息的远程报警和控制系统江西科学,:[]杜树春基于Proteus和KeilC的单片机设计与仿真[M]电子工业出版社附录A原理图温度传感器复位电路电源电路晶振电路液晶显示电路蜂鸣器电路主控电路附录BPCB图附录C实物图附录D程序主程序includeincludeincludequotbhquotincludequothquotincludequotdelayhquotdefineucharunsignedchardefineuintunsignedintsbitIR_IN=P^;sbitYAN=P^;sbitRELAY=P^;sbitbee=P^;sbitkey=P^;sbitkey=P^;sbitkey=P^;sbitkey=P^;sbitrd=P^;inttemH=;bitReadTemFlag;bitflagbitWEN=;uchari=;ucharnum=;voidIni_UART(void){SCON=x;UART方式:位UART;REN=:允许接收PCON=x;SMOD=:波特率不加倍TMOD=x;T方式,用于UART波特率TH=xFD;TL=xFD;UART波特率设置:TR=;}voidDelay(void){uinti,j;for(i=;i;x)for(y=;ygt;y);}voidATD(void){ucharcodemo。

3、编,大致延时长度如下T=tx+uS*voidDelayUsx(unsignedchart){while(t);}*mS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是~这里使用晶振M,精确延时请使用汇编*voidDelayMs(unsignedchart){while(t){大致延时mSDelayUsx();DelayUsx();}}emode[]={x,x,x,XD};ATHcruinti;for(i=;ilt;i++){SBUF=mode[i];while(TI==);TI=;}}voidbell(){bee=;DelayMs();bee=;DelayMs();}*定时器初始化子程序*voidInit_Timer(void){TMOD|=x;使用模式,位定时器,使用quot|quot符号可以在使用多个定时器时不受影响TH=x;给定初值TL=x;EA=;总中断打开ET=;定时器中断打开TR=;定时器开关打开}*定时器中断子程序*voidTimer_isr(void)interrut{staticunsignedintnum;TH=();重新赋值msTL=()%;num++;if(num==){num=;ReadTemFlag=;读标志位置}}voiddislay(ucharadd,uchardate){LCD_Write_Com(add);LCD_Write_Data(x+date);LCD_Write_Data(x+date%);}*键盘扫描函数*voidkey(){rd=;if(key==){while(!key);temH++;if(temH==)temH=;dislay(xcc,temH);}if(key==){while(!key);temH;if(temH==)temH=;dislay(xcc,temH);}}*主函数*voidmain(void){inttem;floattemerature;chardislaytem[];ucharmodel=;RELAY=;IR_。

4、taPort=xFF;RS_CLR;RW_SET;EN_CLR;_no_();EN_SET;return(bit)(DataPortamx);}*写入命令函数*voidLCD_Write_Com(unsignedcharcom){while(LCD_Check_Busy());忙则等待RS_CLR;RW_CLR;EN_SET;DataPort=com;_no_();EN_CLR;}*写入数据函数*voidLCD_Write_Data(unsignedcharData){while(LCD_Check_Busy());忙则等待RS_SET;RW_CLR;EN_SET;DataPort=Data;_no_();EN_CLR;}*清屏函数*voidLCD_Clear(void){LCD_Write_Com(x);DelayMs();}*写入字符串函数*voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s){if(y==){LCD_Write_Com(x+x);表示第一行}else{LCD_Write_Com(xC+x);表示第二行}while(*s){LCD_Write_Data(*s);s++;}}*初始化函数*voidLCD_Init(void){LCD_Write_Com(x);*显示模式设置*DelayMs();LCD_Write_Com(x);DelayMs();LCD_Write_Com(x);DelayMs();LCD_Write_Com(x);LCD_Write_Com(x);*显示关闭*LCD_Write_Com(x);*显示清屏*LCD_Write_Com(x);*显示光标移动设置*DelayMs();LCD_Write_Com(xC);*显示开及光标设置*}*延时函数*includequotdelayhquot*uS延时函数,含有输入参数unsignedchart,无返回值unsignedchar是定义无符号字符变量,其值的范围是~这里使用晶振M,精确延时请使用。

5、很难测试,后调试灵敏度后有所改善;()延时函数没有声明,导致程序结果出错;()各传感器单独测试成功,但是三路传感器结合后温度报警器频繁出现误报;系统的测试结果测试结果如表所示表测试结果传感器类别测试设置温度℃环境温度℃是否有烟雾是否有可燃气体是否有人通过蜂鸣器和GSM模块是否报警温度传感器否是是是烟雾传感器是否是否是是热释电红外传感器否否是是数据分析经过反复测试,系统工作的温度在~+℃灵敏度比较高,温度传感器的精确度达到小数点后三位数。显示器也可以正常的工作,可以显示需要的数据。任一个传感器触发时蜂鸣器发出报警声响并拨打主人的电话,并且如果是温度传感器或者是烟雾传感器触发时还能控制继电器工作,进一步控制花洒,将隐患扼杀于摇篮中。能够实现基本的防盗防火功能。测试数据分析如下:()当环境温度低于设置温度时,温度传感器不触发,如果高于则触发;()当外界环境的可燃气体或者烟雾达到一定浓度时,烟雾传感器触发;()有人走在红外传感器前,触发。测试时遇到的一些问题分析:()红外传感器有时太过于敏感,使得红外传感器一直触发,测试使用都很不方便;导致误报率很高;()当传感器触发后,显示器的亮度明显下降,可能是因为电压不够;()电路元件有时不稳定,容易出错,需要复位;结论经过十六周的努力,基本上完成了课题的设计。在这段时间里,首先查找了很多关于单片机、C语音和GSM模块等的资料,掌握了单片机的基本工作原理和简单的C语言编程和GSM模块的基本信息。在这次设计中,我们分工明确,各自都较好的完成了自己负责的模块,完成了预期的计划,实现了设想的功能。我们设计的家用报警器,能够实现客厅防盗和厨房防火的功能,并且可以通过GSM模块拨打电话给户主。系统现在还存在一些小问题,如果还有时间的话,我们会将电源改成V,Hz的交流电转换成V的直流电,这样电源比较稳定,其次再好好调试程序,降低误报率。致谢这次毕业设计中,我们小组遇到了很多问题,就在我们焦头烂额的时候,我们的导师和同学给了我们很多宝贵的建议。在这里我要特别的感谢我的毕业设计指导老师罗忠亮老师,他在我最困难的时候给我了宝贵的建议和指。

6、e[]={x,x,x,x,x,x,x,x,x,x,x,x,x,x,xB,XD};ATD;回车ATDcruinti;for(i=;ilt;i++){SBUF=mode[i];while(TI==);TI=;}}voidATH(void){ucharcodarReadOneChar(void){unsignedchari=;unsignedchardat=;for(i=;igt;i){DQ=;给脉冲信号datgtgt=;DQ=;给脉冲信号if(DQ)dat|=x;DelayUsx();}return(dat);}*写入一个字节*voidWriteOneChar(unsignedchardat){unsignedchari=;for(i=;igt;i){DQ=;DQ=datamx;DelayUsx();DQ=;datgtgt=;}DelayUsx();}*读取温度*unsignedintReadTemerature(void){unsignedchara=;unsignedintb=;unsignedintt=;Init_DSB();WriteOneChar(xCC);跳过读序号列号的操作WriteOneChar(x);启动温度转换DelayMs();Init_DSB();WriteOneChar(xCC);跳过读序号列号的操作WriteOneChar(xBE);读取温度寄存器等(共可读个寄存器)前两个就是温度a=ReadOneChar();低位b=ReadOneChar();高位bltlt=;t=a+b;return(t);}*LCD液晶显示程序*includequothquotincludequotdelayhquotsbitRS=P^;定义端口sbitRW=P^;sbitEN=P^;defineRS_CLRRS=defineRS_SETRS=defineRW_CLRRW=defineRW_SETRW=defineEN_CLREN=defineEN_SETEN=defineDataPortP*判忙函数*bitLCD_Check_Busy(void){D。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值