无线报警器课程设计
- 格式:docx
- 大小:128.81 KB
- 文档页数:22
学号学校名字单片机原理及应用A课程设计设计说明书智能无线安防报警器设计起止日期:2014 年01 月06 日至2014 年01 月10 日学生姓名班级11级电气1班成绩指导教师(签字)控制与机械工程学院2014年01月11 日天津城建大学课程设计任务书2013 —2014 学年第1 学期学院专业班级课程设计名称:单片机原理及应用A课程设计设计题目:智能无线安防报警器设计完成期限:自2014 年 1 月 6 日至2014 年 1 月10 日共 1 周设计依据、要求及主要内容(可另加附页):一、课程设计的目的1、进一步熟悉和掌握单片机的结构及工作原理。
2、掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3、通过课程设计,掌握以单片机为核心的电路设计的基本方法和技术。
4、通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5、通过完成一个包括电路设计和程序开发的完整过程,了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
二、课程设计的基本要求1、认真认识设计的意义,掌握设计工作程序,学会使用工具书和技术参考资料,并培养科学的设计思想和良好的设计作风。
2、提高模型建立和设计能力,学会应用相关设计资料进行设计计算的方法。
3、提高独立分析、解决问题的能力,逐步增强实际应用训练。
4、课程设计的说明书要求简洁、通顺,计算正确,图纸表达内容完整、清楚、规范。
5、课程设计说明书封面格式要求见《天津城市建设学院课程设计教学工作规范》附表1。
三、课程设计具体要求1、要求每位同学独立完成设计任务。
2、原理图设计。
1)原理图设计要符合项目的工作原理,连线要正确。
2)图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。
3)原理图要完整,CPU,外围器件,扩器接口,输入/输出装置要一应俱全。
3、程序调计1)根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。
2)根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。
烟雾报警无限系统课程设计一、课程目标知识目标:1. 学生能理解烟雾报警无限系统的基本原理,掌握相关的物理和化学知识。
2. 学生能了解烟雾报警器的工作机制,包括传感器、信号处理和报警等环节。
3. 学生能掌握无限传输技术的基本原理,并了解其在烟雾报警系统中的应用。
技能目标:1. 学生具备设计简单烟雾报警无限系统的能力,能运用所学知识解决实际问题。
2. 学生能通过实验操作,学会使用相关工具和仪器,具备实际操作能力。
3. 学生能通过小组合作,培养团队协作和沟通能力,提高问题解决的效率。
情感态度价值观目标:1. 学生对科学研究和创新保持好奇心和热情,增强探索精神和动手实践能力。
2. 学生认识到烟雾报警系统在生活中的重要性,增强安全意识和责任感。
3. 学生通过课程学习,培养环保意识,关注空气质量问题,提高社会责任感。
课程性质:本课程为初中物理与化学的跨学科课程,注重理论联系实际,强调实践操作和团队合作。
学生特点:初中生具有较强的求知欲和好奇心,具备一定的物理和化学基础,喜欢动手实践和团队合作。
教学要求:教师需运用生动的案例、实验和互动,引导学生掌握课程内容,注重培养学生的动手能力和创新能力。
在教学过程中,关注学生的个体差异,鼓励每个学生积极参与,确保课程目标的实现。
通过课程评估,检验学生的学习成果,为后续教学提供参考。
二、教学内容1. 烟雾报警无限系统原理- 物理知识:介绍烟雾报警器中的物理原理,如光的散射、吸收等现象。
- 化学知识:分析烟雾成分,了解不同气体对传感器的影响。
2. 烟雾报警器工作流程- 传感器原理:讲解传感器如何检测烟雾,并转换成电信号。
- 信号处理:介绍信号放大、滤波和判断过程,让学生了解数据处理的基本方法。
3. 无限传输技术- 基本原理:阐述无线传输技术在烟雾报警系统中的应用,如Wi-Fi、蓝牙等。
- 技术特点:介绍无线传输的优势和局限,探讨其在实际应用中的问题。
4. 实践操作- 设计与制作:指导学生分组设计简单的烟雾报警无限系统,并进行实际操作。
第一章绪论单片机现在已越来越广泛地应用于智能仪表、工业控制、日常生活等很多领域,可以说单片机的应用已渗透到人类的生活、工作的每一个角落,这说明它和我们每个人的工作、生活密切相关,也说明我们每个人都有可能和有机会利用单片机去改造你身边的仪器、产品、工作与生活环境。
防盗报警系统是用物理方法或电子技术,自动探测发生在布防监测区域内的侵入行为,产生报警信号,并提示值班人员发生报警的区域部位,显示可能采取对策的系统。
防盗报警系统是预防抢劫、盗窃等意外事件的重要设施。
一旦发生突发事件,就能通过声光报警信号在安保控制中心准确显示出事地点,使于迅速采取应急措施。
防盗报警系统与出入口控制系统、闭路电视监控系统、访客对讲系统和电子巡更系统等一起构成了安全防范系统。
传统的有线防盗报警器都是检测到有盗情的时候只在本地发出警报声音,内部没有控制器,易被破坏失效,安装、扩展也不方便。
本文设计的无线防盗报警器利用单片机控制,功能强大,并且易于扩展。
本此设计的多无线防盗报警器包括数据解码电路、中央控制单元、数字显示单元、报警电路和电源电路等模块。
应用到AT89C2051、LM386、7805、变压器等器件。
整机接收频率315M,数据解码采用市面上用得较多的PT2272专用解码芯片,可靠性及稳定性较好。
数据处理的任务由单片机完成。
附加实现一些智能控制功能,赋予报警系统更强大和完整的功能,以满足人们对安全报警的需求。
第二章系统整体设计多路无线防盗报警器的组成:多路无线防盗报警器主要无线人体探测器、无线遥控手柄、无线接收电路、数据解码电路、中央控制单元、数字显示单元、报警电路和电源电路等部分组成。
其框图如下:图2-1 多路防盗报警器系统框图根据前面所述的各单元电路的设计情况,综合考虑后整机电路图设计如下:图2-2 整机电路图要求如下:1)设计一套防盗报警系统要求有一台主机,在收到警情信号后能发出报警声,同时能显示出出现警情的具体位置;人体探测器与主机间的信号传递采用无线的型式;可以人为操作遥控器对主机进行设防与撤防的操作;在同一区域范围内能有多套系统同时工作而相互间不影响。
无线报警系统课程设计一、课程目标知识目标:1. 学生能理解无线报警系统的基本概念、原理及其在现实生活中的应用。
2. 学生能掌握无线报警系统中传感器、微控制器、无线通信模块等关键组件的工作原理和功能。
3. 学生能了解无线报警系统的设计流程和关键技术。
技能目标:1. 学生具备运用所学知识分析无线报警系统问题的能力。
2. 学生能够设计并搭建简单的无线报警系统,进行实际操作和调试。
3. 学生能够运用编程语言对无线报警系统进行简单的程序编写和控制。
情感态度价值观目标:1. 培养学生对电子工程和科技创新的兴趣,激发学生主动探索和研究的热情。
2. 培养学生团队协作、沟通表达的能力,提高学生的自信心和责任感。
3. 增强学生安全意识,认识到无线报警系统在生活中的重要意义,培养学生的社会责任感。
课程性质:本课程属于电子技术实践课程,以项目式教学为主,结合理论教学和实际操作。
学生特点:六年级学生,具备一定的电子技术基础,具有较强的动手能力和好奇心。
教学要求:注重理论与实践相结合,关注学生个体差异,提高学生综合运用知识解决问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 无线报警系统的基本概念与原理- 介绍无线报警系统的定义、分类及应用场景。
- 分析无线报警系统的工作原理,包括传感器、微控制器、无线通信模块等组成部分。
2. 无线报警系统的关键组件- 详述传感器、微控制器、无线通信模块等关键组件的功能、原理及选用原则。
- 结合教材相关章节,对比不同类型组件的性能和适用范围。
3. 无线报警系统的设计流程- 解析无线报警系统的设计步骤,包括需求分析、方案设计、硬件选型、软件编程等。
- 指导学生参考教材相关案例,了解实际设计过程。
4. 无线报警系统的搭建与调试- 制定详细的搭建和调试计划,明确教学内容的安排和进度。
- 指导学生按照教材要求,动手搭建简单的无线报警系统,并进行实际操作和调试。
东北石油大学课程设计课程光电检测技术题目无线防盗报警器的设计院系************专业班级*******************学生姓名*******学生学号**************指导教师2007年 3 月 11 日2011年3 月10 日东北石油大学课程设计任务书课程光电检测技术题目无线防盗报警器的设计专业****************姓名**** 学号************* 主要内容:分析无线防盗报警器的感应式触发电路及音频放大电路等的特点,设计无线防盗报警器。
基本要求:1、分析无线防盗报警器的感应式触发电路及音频放大电路的特点。
2、设计报警器是当发生危险时自动发出报警。
3、进行调试安装。
4、完成课程设计总结报告。
主要参考资料:[1]肖景和编著,集成运算放大器应用精粹[M],北京:人民邮电出版社,2006.11.[2]陈振官等编著,光电子电路制作实例[M],北京:国防工业出版社,2006.4.[3]黄继昌等编著,使用报警电路[M],北京:人民邮电出版社,2005.2,144-145.完成期限2011年3月10日指导教师专业负责人2011年3 月10 日目录第1章概述 (3)1.1 无线防盗报警器的意义 (3)1.2 无线防盗报警器发展前景 (3)第2章基本原理与总体设计 (4)2.1 无线防盗报警器基本原理 (4)2.2 总体设计 (4)第3章具体设计 (6)3.1 感应式触发电路 (6)3.2 音效发生器 (7)3.3 音频放大电路 (7)3.4 无线发射电路及接收 (8)第4章电路的安装调试 (9)4.1 对实际购买元件进行测试 (9)4.2 电路的搭接 (9)4.3 调试 (10)第5章总结 (11)参考文献 (11)第1章概述无线防盗报警器主要由感应触发电路,音乐发生器,音频放大电路,无线发射电路及接受器组成。
通过感应触发电路的感应电极检测到盗情后触发音乐芯片开始工作,把音乐信号经放大后由高频振荡电路将信号发射出去,在不远处可以有FM调频收音机接收到报警信号。
专业课程设计报告题目智能无线报警系统院系自动化学院专业电子学班级 2班2015年9月目录1设计内容及要求随着电子信息技术和计算机网络技术的发展,实现家居信息化、网络化是当前智能家居系统发展的新趋势。
报警系统作为智能家居系统的一个重要组成部分,其性能的好坏直接关系到整个智能家居系统的优劣。
把无线网络技术应用到家居报警系统中,通过各种传感器实时采集家居的环境信息,通过无线的方式将信息传输给家居控制中心,能够弥补有线设备的缺陷,具有价廉、可靠性高、等优点1、系统的总体设计2.1原理框图2.2硬件设计选用51单片机做主控制系统,选用MQ-2燃气报警器做燃气检测子系统,选用SIM模块做短信报警子系统,选用红外检测系统做人员检测子系统。
STC89C51是采用8051核的ISP(In System Programming)在系统可编程芯片,最高工作时钟频率为80MHz,片内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,器件兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,具有在系统可编程(ISP)特性,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更快。
STC89C52RC系列单片机是单时钟/机器周期(1T)的兼容8051 内核单片机,是高速/ 低功耗的新一代8051 单片机,全新的流水线/精简指令集结构,内部集成MAX810 专用复位电路。
MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。
当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。
使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
人体红外感应开关的工作原理人体是一特定波长红外线的发射体,由红外传感器检测到这种红外线的变化并予以放大选频处理后,可以推动适当的负载,此乃人体红外自动开关。
电气无线报警器课程设计一、课程目标知识目标:1. 学生能够理解并掌握电气无线报警器的基本工作原理;2. 学生能够描述并分析电气无线报警器的主要组成部分及其功能;3. 学生能够运用所学的电子技术知识,解释电气无线报警器中的电路原理。
技能目标:1. 学生能够运用所学的知识,设计简单的电气无线报警器电路图;2. 学生能够通过实践操作,正确组装和调试电气无线报警器;3. 学生能够运用问题解决策略,对电气无线报警器进行故障排查和维修。
情感态度价值观目标:1. 培养学生对电子科技的兴趣和好奇心,激发他们主动探索新知识的精神;2. 培养学生团队协作意识,学会与他人共同解决问题,提高沟通与协作能力;3. 增强学生的安全意识,让他们明白电气设备在使用过程中应注意的安全事项。
课程性质:本课程为实践性较强的电子技术课程,旨在让学生在掌握基本电子知识的基础上,通过实际操作,提高动手实践能力和创新能力。
学生特点:学生具备一定的电子技术基础知识,对实际操作有浓厚兴趣,但可能缺乏系统性的实践经验和问题解决能力。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践和问题解决能力的培养。
在教学过程中,教师需关注学生的学习进度,及时调整教学策略,确保课程目标的达成。
通过本课程的学习,使学生能够具备设计、制作和调试电气无线报警器的能力。
二、教学内容1. 电气无线报警器原理及组成部分- 介绍报警器的工作原理,包括传感器、信号处理、无线发射和接收等;- 分析各组成部分的功能,如传感器检测环境变化,信号处理器对信号进行处理,无线模块实现信号的传输。
2. 电路设计与分析- 利用课本相关知识,设计简单的电气无线报警器电路图;- 分析电路中各元件的作用,如电阻、电容、二极管、三极管等;- 讲解电路图绘制方法,学会使用相关软件工具。
3. 实践操作与故障排查- 指导学生进行电气无线报警器的组装和调试;- 教授常见故障的排查方法,培养学生问题解决能力;- 安排实践操作环节,让学生动手实践,巩固所学知识。
报警器完整课程设计一、教学目标本节课的教学目标是让学生掌握报警器的基本原理、结构和功能,能够熟练地安装和调试报警器,并了解报警器在生活中的应用。
具体来说,知识目标包括:了解报警器的基本原理,掌握报警器的结构组成,理解报警器的工作原理;技能目标包括:能够独立完成报警器的安装和调试,能够分析并解决报警器使用过程中遇到的问题;情感态度价值观目标包括:培养学生对科学的兴趣和好奇心,培养学生动手实践的能力,提高学生对安全意识的重视。
二、教学内容本节课的教学内容主要包括报警器的基本原理、报警器的结构和报警器在生活中的应用。
首先,介绍报警器的基本原理,让学生了解报警器是如何工作的;然后,讲解报警器的结构组成,包括传感器、触发器、报警器电路等;最后,通过实际案例分析,让学生了解报警器在生活中的应用,如烟雾报警器、燃气报警器等。
三、教学方法为了实现本节课的教学目标,我们将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法。
首先,通过讲授法向学生传授报警器的基本原理和结构;然后,通过讨论法让学生交流讨论报警器的工作过程和应用场景;接着,通过案例分析法让学生分析实际案例中报警器的作用;最后,通过实验法让学生亲自动手操作,安装和调试报警器,提高学生的实践能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:教材《报警器原理与实用技术》、参考书《报警器设计与应用》、多媒体资料(包括报警器的图片、视频等)、实验设备(包括报警器、传感器等)。
这些教学资源将丰富学生的学习体验,帮助学生更好地理解和掌握报警器的相关知识。
五、教学评估本节课的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
评估方式包括平时表现、作业、考试等。
平时表现主要评估学生在课堂上的参与度、提问回答等情况,占总评的30%;作业主要包括课堂练习和课后作业,占总评的20%;考试分为期中考试和期末考试,占总评的50%。
智能无线报警系统课程设计一、课程目标知识目标:1. 学生能理解智能无线报警系统的基本原理,掌握相关的电子技术知识,如传感器工作原理、无线通信技术等。
2. 学生能描述智能无线报警系统的组成及其功能,了解其在安全防范领域的应用。
3. 学生能运用所学的电子技术知识,分析智能无线报警系统的优缺点,并提出改进措施。
技能目标:1. 学生能运用所学知识,设计并搭建一个简单的智能无线报警系统,提高动手实践能力。
2. 学生能通过团队合作,解决在搭建智能无线报警系统过程中遇到的问题,提升问题解决能力。
3. 学生能运用相关软件和工具,对智能无线报警系统进行调试和优化,提高系统性能。
情感态度价值观目标:1. 学生在课程学习过程中,培养对电子科技的兴趣和热情,激发创新意识。
2. 学生通过团队合作,培养良好的沟通与协作能力,增强团队精神。
3. 学生了解智能无线报警系统在安全防范领域的重要意义,增强社会责任感和安全意识。
本课程针对高年级学生,结合电子技术课程内容,以实用性和创新性为特点,旨在培养学生的知识应用能力、动手实践能力和团队合作精神。
通过课程学习,使学生能够将所学知识运用到实际项目中,提高学生的综合素质。
同时,课程注重培养学生的情感态度价值观,激发学生的创新意识和社会责任感。
课程目标具体、可衡量,为后续教学设计和评估提供明确依据。
二、教学内容本章节教学内容紧密围绕课程目标,结合电子技术课程教材,组织以下内容:1. 理论知识:- 传感器工作原理及其在报警系统中的应用- 无线通信技术原理及其在报警系统中的应用- 智能无线报警系统的组成、功能及分类2. 实践操作:- 设计并搭建简单的智能无线报警系统- 系统调试、优化及性能评估- 团队合作解决问题,提高系统性能教学大纲安排如下:第1周:传感器工作原理学习,了解其在报警系统中的应用。
第2周:学习无线通信技术原理,探讨其在报警系统中的应用。
第3周:学习智能无线报警系统的组成、功能及分类,分析实际案例。
课题名称:无线温度、湿度报警器目录1.引言 (3)2.方案设计 (4)2.1 设计方案总概 (4)2.2 设计思路 (5)3.单元电路设计 (5)3.1 PT100的连接及其运放电路工作原理 (5)3.2 HS1101与555的连接及其工作原理 (8)3.3 比较器393芯片的管脚图及其工作原理 (10)3.4 利用二极管制作的或门 (13)3.5 利用继电器起到报警的作用 (14)4.总电路原理图 (16)5.安装和调试 (18)6.电子元件清单 (19)7.课程设计总结 (21)8.参考文献 (21)1.引言随着社会的不断进步和科学技术、经济的不断发展,人类不断研究,不断创新纪录,人们生活水平得到很大的提高,对生活环境的要求在不断的提高,因而对家庭的温度以及湿度做出了新的要求。
对于农业和副业的要求,温度和湿度的要求更是必不可少的,例如蔬菜大棚要求棚内温度和湿度必须是在恒定范围内的,不然就会导致植物生长不利;还有对于饲养动物的室内,温度和湿度也是有一定要求的,不然对动物的生长也会造成不利,本设计就是为了满足安防的需要而设计的电子报警系统。
这几年随着改革开放的不断深入以及我国经济的迅猛发展,人民的生活水平有了很大的提高。
许多疾病是因为我们平时的生活环境所造成的,例如冬天的时候,如果室内温度过低会导致感冒、发烧,而夏天如果温度过高的话会导致中暑等等。
湿度也一样,对于干燥和潮湿的人们的身体健康都是不利的。
因此,越来越多的家庭对生活环境十分关心。
目前,对搞农业和副业的厂商来说,更是起着不可忽视的作用。
该报警器适用于家庭,也适用于中小企业事业单位。
其特点是灵敏、可靠,一旦环境的温度湿度不符合要求,可以立即报警;该触摸式报警器设计时,应充分考虑温度和湿度范围这一问题,使得系统的功能有着良好的扩展性,可以针对不同的场合,对系统进行改进。
报警时可以发出声音,提醒主人及时改善温度和湿度。
本文通过对此例的研究制作,学习该报警器的工作原理和使用方法,根据此报警器可制作出用于不同范围的报警装置,并且学习电路图和电路板的设计和制作,了解各个元件的类别、工作原理和使用方法。
单片机课程设计题目:无线报警器(双向通信)学校:湘潭大学班级:08电子信息工程一班学号:姓名:日期:2011年4月20日无线报警器设计一、设计目标:设计一个能够在接收到中断信号后能够产生声光报警信号,并通过无线模块发送到主机显示报警信号。
二、设计思路和方案:用两个按键模拟两个报警信号,当按键按下时,从机STC8954RD+接收到报警信号,利用中断处理函数实现声光报警显示,同时将报警信号通过NRF24L01无线模块发送给另一个单片机(主机)。
主机与PC 机相连,将NRF24L01无线模块接收到的数据通过串口将数据传送给PC 机,在PC 机显示报警信号,PC 机可以通过主机上面的NRF24L01无线模块发送信号给从机,实现控制(控制部分没有做,只是将PC 发送的数据显示)。
三、设计模块图:图1:基本模块图四、无线模块:nRF2401A 是Nordic 公司推出的工作于2.4 GHz ~2.5 GHz 的ISM(T 业、科学和医疗)频段的单片无线收发一体芯片。
芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,只需少量外围元件便可组成射频收发电路。
常用于无线鼠标和键盘、无线手持终端、无线频率识别、数字视频、遥控和汽车电子等方面。
(1)2.4Ghz 全球开放ISM 频段免许可证使用(2) 最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合(3)126 频道,满足多点通信和跳频通信需要(4) 内置硬件CRC 检错和点对多点通信地址控制(5) 低功耗1.9-3.6V 工作,待机模式下状态为22uA;掉电模式下为900nA(6) 内置2.4Ghz 天线,体积小巧15mmX22mm(7) 模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便(8) 内置专门稳压电路,使用各种电源包括DC/DC 开关电源均有很好的通信效果(9)1.27MM间距接口,贴片封装(10)工作与enhancedshockburst具有应答机制,极大的降低丢包率。
LCD显示模块五、从机软件模拟仿真图:图2:单片机图3:LCD显示模块图4:数码管显示模块图5:模拟报警信号、声光报警、电源指示模块图6:晶振、复位、上拉电阻模块图7:SPI接口仿真模块图8:SPI 仿真器处于监视状态下接收到的数据六、流程图:图9:从机程序流程图图10:主机程序流程图七、程序从机程序:#include <reg52.h> #include <intrins.h> #include "lcd.h" #include "2401.h"#define l_time 20 //低音持续时间 #define h_time 10 //高音持续时间sbit speak=P3^7; sbit led=P3^6;unsigned char count=0;unsigned char * txbuf="alarm";unsigned char rxbuf_data[16];unsigned char *rxbuf=rxbuf_data;//中断设置void int_init(){TMOD = 0x01;TCON = 0x15;IP = 0x02; //设置定时中断优先级高于外部中断,实现声音报警IE = 0x87;TH0 = 0xDC;TL0 = 0x00;}//频率设置函数void delay_hz(unsigned char x){unsigned char i,j;for(i=0; i<x; i++){for(j=0; j<30; j++);}}void Time0_Int() interrupt 1{TH0 = 0xDC;TL0 = 0x00;count++;}//外部中断0void int1() interrupt 0{P1=0x06;write_string(1,8,"INT1");txbuf="alarm1";settx_mode();//将无线模块设置为发射模式txpacket(txbuf);//写入数据wait_t();//等待发射write_string(1,1,"alarm1");for(pp=0;pp<=100;pp++){led=0;delay_hz(200);led=1;delay_hz(200);}//二极管闪烁setrx_mode();//设置为接收模式}//外部中断1void int2() interrupt 2{P1=0x5B;write_string(1,8,"INT2");txbuf="alarm2";write_string(1,1,"alarm2");settx_mode();txpacket(txbuf);wait_t();for(pp=0;pp<=15;pp++)//声音报警{while(1){speak = ~speak;delay_hz(10);if(count==l_time){count = 0;break;}}while(1){speak = ~speak;delay_hz(30);if(count==h_time){count = 0;break;}}}setrx_mode();}void main(){P1=0x00;//数码管初始化为8lcd_init();//初始化lcdinit_2401();//初始化nrf24l01int_init();//中断初始化setrx_mode();//设置为接收模式while(1){wait_r(rxbuf);//等待接收数据clear_line(2);//清lcdwrite_string(2,1,rxbuf);//lcd显示}}主机程序:#include <reg52.h>#include <intrins.h>#include "lcd.h"#include "2401.h"unsigned char count=0;unsigned char pp=0;unsigned char rxbuf[16];unsigned char txbuf_data[16];unsigned char *txbuf=txbuf_data;void main(void){P2=0xFF;P3=0xFF;lcd_init();init_2401();init_s();while(1){setrx_mode();wait_r(rxbuf);write_string(2,1,rxbuf);}}void int_s(void) interrupt 4{static int i = 0;uchar temp=0;EA = 0;if(RI == 1)//串口接收数据{temp=SBUF;write_data(1,1,temp);if(temp == '-'){*(txbuf++)='\0';settx_mode();txpacket(txbuf_data);wait_t();write_com(0x01);delay_x(5);write_string(2,1,txbuf_data);i=-1;txbuf=txbuf_data;setrx_mode();}else{*(txbuf++) = temp;if(i==15){i = -1;txbuf=txbuf_data;settx_mode();txpacket(txbuf_data);wait_t();write_array(2,1,txbuf,16);setrx_mode();}}RI = 0;i++;}EA = 1;}LCD模块头文件(lcd.h)#ifndef __LCD_H__#define __LCD_H__//lcdextern void delay_1ms();extern void delay_x(unsigned int x);extern bit busy_test(void);extern void write_com(unsigned char del);extern void write_byte(unsigned char del);extern void write_data(unsigned int hang,unsigned int lie,unsigned char del);extern void write_string(unsigned int hang,unsigned int lie,unsigned char *p);extern void write_array(unsigned int hang,unsigned int lie,unsigned char *p,unsigned char wide); extern void lcd_init();#endifLCD模块C程序:/*lcd显示程序*/#include<reg52.h>#include<intrins.h>/*端口定义*/sbit E=P2^7;sbit RW=P2^6;sbit RS=P2^5;sbit BF=P0^7;/*delay function*/void delay_1ms(){unsigned char i;for(i=0;i<114;i++);}void delay_x(unsigned int x){unsigned int i;for(i=0;i<x;i++)delay_1ms();}/*busy test function*/bit busy_test(void){bit result;RS=0;RW=1;E=1;_nop_();result=BF;E=0;return result;}/*write command function*/void write_com(unsigned char del){while(busy_test()==1);P0=del;RS=0;RW=0;E=1;_nop_();E=0;}/*write data function*/void write_byte(unsigned char del){while(busy_test()==1);P0=del;RS=1;RW=0;E=1;_nop_();E=0;}void write_data(unsigned int hang,unsigned int lie,unsigned char del) {unsigned int addr;if(hang==1)addr=lie+0x7f;if(hang==2)addr=lie+0xbf;write_com(addr);write_byte(del);}void write_string(unsigned int hang,unsigned int lie,unsigned char *p) {unsigned int addr;if(hang==1)addr=lie+0x7f;if(hang==2)addr=lie+0xbf;write_com(addr);while(*p!='\0'){write_byte(*p);p++;}}void write_array(unsigned int hang,unsigned int lie,unsigned char *p,unsigned char wide) {unsigned char addr;unsigned char i;if(hang==1)addr=lie+0x7f;if(hang==2)addr=lie+0xbf;write_com(addr);for(i=0;i<wide;i++){write_byte(*p);p++;}}void clear_line(unsigned int hang){unsigned char i;unsigned char addr;if(hang==1)addr=0x80;if(hang==2)addr=0xc0;write_com(addr);for(i=0;i<32;i++){write_byte(' ');}}/*led initalization*/void lcd_init(){delay_x(15);write_com(0x38);delay_x(5);write_com(0x38);delay_x(5);write_com(0x38);delay_x(5);write_com(0x0c);delay_x(5);write_com(0x06);delay_x(5);write_com(0x01);delay_x(5);}Nrf24l01无线模块头文件(2401.h)#ifndef __2401_H__#define __2401_H__typedef unsigned char uchar;typedef unsigned int uint;extern void init_s(void);extern void to_pc(uchar r_data,uchar flag);extern void delay_l(uint s);extern void delay_s(uchar n);extern uchar spi_rw(uchar uchar);extern uchar spi_read(uchar reg);extern uchar spi_rw_reg(uchar reg,uchar value);extern uchar spi_read_buf(uchar reg, uchar * pBuf, uchar uchars); extern uchar spi_write_buf(uchar reg, uchar * pBuf, uchar uchars); extern void setrx_mode(void);extern void settx_mode(void);extern void wait_t(void);extern void wait_r(uchar *txbuf);extern void txpacket(unsigned char * tx_buf);//extern void rxpacket(unsigned char* rx_buf);extern void init_2401(void);#endifNrf24l01无线模块C程序:#include <reg52.h>#include <intrins.h>typedef unsigned char uchar;typedef unsigned int uint;sbit MISO =P2^0;sbit MOSI =P2^1;sbit SCK =P2^2;sbit CE =P2^3;sbit CSN =P2^4;//sbit IRQ =P2^5;#define TX_ADR_WIDTH 5#define RX_ADR_WIDTH 5#define TX_PLOAD_WIDTH 16#define RX_PLOAD_WIDTH 16#define READ_REG 0x00 // 读寄存器指令#define WRITE_REG 0x20 // 写寄存器指令#define RD_RX_PLOAD 0x61 // 读取接收数据指令#define WR_TX_PLOAD 0xA0 // 写待发数据指令#define FLUSH_TX 0xE1 // 冲洗发送FIFO指令#define FLUSH_RX 0xE2 // 冲洗接收FIFO指令#define REUSE_TX_PL 0xE3 // 定义重复装载数据指令#define NOP 0xFF // 保留#define CONFIG 0x00 // 配置收发状态,CRC校验模式以及收发状态响应方式#define EN_AA 0x01 // 自动应答功能设置#define EN_RXADDR 0x02 // 可用信道设置#define SETUP_AW 0x03 // 收发地址宽度设置#define SETUP_RETR 0x04 // 自动重发功能设置#define RF_CH 0x05 // 工作频率设置#define RF_SETUP 0x06 // 发射速率、功耗功能设置#define STATUS 0x07 // 状态寄存器#define OBSERVE_TX 0x08 // 发送监测功能#define CD 0x09 // 地址检测#define RX_ADDR_P0 0x0A // 频道0接收数据地址#define RX_ADDR_P1 0x0B // 频道1接收数据地址#define RX_ADDR_P2 0x0C // 频道2接收数据地址#define RX_ADDR_P3 0x0D // 频道3接收数据地址#define RX_ADDR_P4 0x0E // 频道4接收数据地址#define RX_ADDR_P5 0x0F // 频道5接收数据地址#define TX_ADDR 0x10 // 发送地址寄存器#define RX_PW_P0 0x11 // 接收频道0接收数据长度#define RX_PW_P1 0x12 // 接收频道0接收数据长度#define RX_PW_P2 0x13 // 接收频道0接收数据长度#define RX_PW_P3 0x14 // 接收频道0接收数据长度#define RX_PW_P4 0x15 // 接收频道0接收数据长度#define RX_PW_P5 0x16 // 接收频道0接收数据长度#define FIFO_STATUS 0x17 // FIFO栈入栈出状态寄存器设置unsigned char const TX_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; unsigned char const RX_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};//unsigned char const TX1_ADDRESS[TX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01}; //unsigned char const RX1_ADDRESS[RX_ADR_WIDTH]= {0x34,0x43,0x10,0x10,0x01};uchar bdata sta; //状态标志sbit RX_DR =sta^6;sbit TX_DS =sta^5;sbit MAX_RT =sta^4;uchar send=0;uchar receive=0;//串口初始化void init_s( void ){ //波特率9600SCON = 0x50;TMOD = 0x20;TH1 = 0xFD;TL1 = 0xFD;PCON = 0x00;TR1 = 1;ES = 1;EA = 1;}//通过串口将接收到数据发送给PC端void to_pc(uchar r_data,uchar flag){SBUF = r_data;while( flag == 0 );flag = 0;}//长延时/*void delay_l(uint s){uint i;for(i=0; i<s; i++);for(i=0; i<s; i++);}*///短延时void delay_s(uchar n){for(;n>0;n--)_nop_();}//读写数据uchar spi_rw(uchar u_char){uchar bit_ctr;for(bit_ctr=0;bit_ctr<8;bit_ctr++){MOSI = (u_char & 0x80);//先输出高位u_char = (u_char << 1);SCK = 1;u_char |= MISO;SCK = 0;}return(u_char);}//读寄存器的内容,并使寄存器中的内容为0(可写寄存器)uchar spi_read(uchar reg){uchar reg_val;CSN = 0; // CSN为低电平,读写寄存器中的内容spi_rw(reg);reg_val = spi_rw(0);CSN = 1;return(reg_val);}//读寄存器中的内容,并修改寄存器中的内容uchar spi_rw_reg(uchar reg, uchar value){uchar status;CSN = 0;status = spi_rw(reg);spi_rw(value);CSN = 1;return(status);}//读多字节寄存器中的内容uchar spi_read_buf(uchar reg, uchar *pBuf, uchar u_chars) {uchar status,uchar_ctr;CSN = 0;status = spi_rw(reg);for(uchar_ctr=0;uchar_ctr<u_chars;uchar_ctr++)pBuf[uchar_ctr] = spi_rw(0);CSN = 1;return(status);}//写多字节寄存器中的内容uchar spi_write_buf(uchar reg, uchar *pBuf, uchar uchars) {uchar status,uchar_ctr;CSN = 0;status = spi_rw(reg);for(uchar_ctr=0; uchar_ctr<uchars; uchar_ctr++)spi_rw(*pBuf++);CSN = 1;return(status);}//设置为接收模式void setrx_mode(void){CE=0;spi_rw_reg(WRITE_REG + CONFIG, 0x4f);CE = 1;delay_s(130);//维持高电平一段时间}//设置为发送模式void settx_mode(void){CE=0;spi_rw_reg(WRITE_REG + CONFIG, 0x0e);}void wait_t(){CE=0;while(send==0){sta=spi_read(STATUS);if(TX_DS){send=1;spi_rw_reg(WRITE_REG+STATUS,0X70); // STATUS 复位}if(MAX_RT){spi_rw_reg(WRITE_REG+STATUS,0X70); // STATUS 复位CE=1; //置高CE,激发数据发送delay_s(10);}}send=0;}/*void txpacket(unsigned char * tx_buf){CE=0;spi_write_buf(WR_TX_PLOAD, tx_buf, TX_PLOAD_WIDTH); // 装载数据spi_rw_reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送CE=1;delay_s(10);//维持高电平超过10us}*/void txpacket(unsigned char * tx_buf){uchar uchar_ctr;CE=0;CSN = 0;spi_rw(WR_TX_PLOAD);for(uchar_ctr=0; uchar_ctr<TX_PLOAD_WIDTH; uchar_ctr++,tx_buf++){if(*tx_buf!='\0')spi_rw(*tx_buf);else break;}for(; uchar_ctr<TX_PLOAD_WIDTH; uchar_ctr++){spi_rw('\0');}CSN = 1;spi_rw_reg(WRITE_REG + CONFIG, 0x0e); // IRQ收发完成中断响应,16位CRC,主发送CE=1;delay_s(10);//维持高电平超过10us}/*void rxpacket(unsigned char* rx_buf){sta=spi_read(STATUS); // 读取状态寄存其来判断数据接收状况if(RX_DR) // 判断是否接收到数据{CE = 0; //退出发送接收模式spi_read_buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);receive =1; //读取数据完成标志spi_rw_reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清除中断标志}}*/void wait_r(uchar *rxbuf){while (receive==0){sta=spi_read(STATUS);if(RX_DR){CE = 0;spi_read_buf(RD_RX_PLOAD,rxbuf,TX_PLOAD_WIDTH);receive =1;spi_rw_reg(WRITE_REG+STATUS,sta);}}receive=0;}void init_2401(void){delay_s(100);CE=0; // 进入发送模式(BUF不为空),再进入待机模式,可读寄存器参数配置CSN=1; // SPI接口断开,不能传送数据SCK=0;spi_write_buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址spi_write_buf(WRITE_REG + RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收地址spi_rw_reg(WRITE_REG + EN_AA, 0x01); // 频道0自动ACK应答允许spi_rw_reg(WRITE_REG + EN_RXADDR, 0x01); // 允许接收地址只有频道0spi_rw_reg(WRITE_REG + SETUP_RETR,0x03); // 自动从发设置,若不设置,默认为3;spi_rw_reg(WRITE_REG + RF_CH, 0); // 设置信道工作为2.4GHZ,收发必须一致spi_rw_reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为3字节spi_rw_reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为2MHZ,发射功率为最大值0dBspi_rw_reg(WRITE_REG + CONFIG, 0x0e); // IRQ接收到产生中断响应,16位CRC,主发送}八、设计总结:本次设计实现了两个单片机之间进行半双工无线通信,将报警信号由从机传送给主机,同时也可以通过PC机写入数据然后通过主机将数据发送给从机,然后实现控制,对于控制这部分由于时间问题,没有深入写,但是只要能够将控制命令传送到从机,控制是很容易实现的。