基于CAN总线的智能家居控制毕业论文.doc

基于CAN总线的智能家居控制毕业论文.doc

ID:207316

大小:2.29 MB

页数:60页

时间:2017-07-03

上传者:U-268
基于CAN总线的智能家居控制毕业论文.doc_第1页
基于CAN总线的智能家居控制毕业论文.doc_第2页
基于CAN总线的智能家居控制毕业论文.doc_第3页
基于CAN总线的智能家居控制毕业论文.doc_第4页
基于CAN总线的智能家居控制毕业论文.doc_第5页
资源描述:

《基于CAN总线的智能家居控制毕业论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

基于CAN总线的智能家居控制毕业论文目录引言11课题研究内容21.1课题背景21.2课题意义22系统设计概述32.1设计任务32.2系统设计原理32.3系统设计方案32.4系统可行性分析43CAN总线概述63.1CAN总线简介63.2CAN总线帧类型63.2.1数据帧63.2.2远程帧73.2.3错误帧83.2.4过载帧83.3CAN报文过滤83.4CAN错误处理83.4.1错误检测83.4.2错误标定94硬件电路设计104.1单片机最小系统104.1.1单片机STC89C52RC104.1.2最小系统电路114.2CAN总线模块124.2.1CAN控制器SJA1000124.2.2CAN收发器TJA1050174.2.3CAN模块电路174.3串口通信184.3.1电平转换芯片MAX23218 4.3.2串口通信电路194.4温湿度检测模块194.4.1温度传感器DS18B20194.4.2湿度传感器DHT11194.4.3温湿度检测电路204.5烟雾检测模块204.6红外人体感应模块214.7液晶显示模块214.8报警电路224.9按键电路225系统软件设计235.1软件整体设计235.2CAN通信程序设计245.3RS-232通信程序设计265.4LCD1602液晶显示程序设计275.5按键设定值程序设计295.6温度采集程序设计295.7湿度采集程序设计315.8应用软件平台简介335.8.1KeilC51335.8.2VisualBasic6.0346系统调试376.1硬件电路调试376.2系统联调377总结和展望41谢辞42参考文献43附录44 第57页共57页引言科技的进步,带来经济飞速发展的同时,也给人们的生活带来无限的惊奇。不断更新的生活方式,使得越来越多的人追求对生活的舒适度和享受度。智能家居作为新生力量呼之欲出,自然地走进我们的生活,随之,引领新一代的数字家庭生活。通过分析现有的智能家居解决方案,智能家居包括四个基本的功能模块:家庭对外通信模块、家庭网关模块、家庭安全防范模块、家庭设备自动控制模块。本课题提取家庭安全防范模块研究,设计基于CAN总线的智能家居控制系统。安全防范就是保障人们在生产、生活和一切社会活动中人身生命、财产和生产、生活设施不受侵犯,防止侵害行为的总称。智能家居在满足人们舒适、方便生活的同时,也要求为家庭提供安全防范方面的保障。它包含的内容有防止入侵、盗窃、破坏、爆炸等,它的原则是“以防为主,打防并举”,安全防范工作贯彻“人防、技防、物防”相结合的方针政策。因此,智能家居将家庭安全防范模块定义为其四个基本要素之一。课题将安全防范的内容分为两部分,分别是家庭内部环境安全、家庭对外非法入侵预防,这两方面都体现出现代技术在智能家居中的应用。在本课题中,由于条件限制,并没有对家庭安防模块进行实验,对于家庭内部环境安全,采用传感器检测室内的温湿度和烟雾浓度。对于家庭对外非法入侵预防,采用人体移动红外检测。本课题采用CAN总线设计智能家居组网系统,可以设计多路CAN智能节点,构成分布式控制系统,实现同时对多个居室的环境状况进行监控。CAN总线的数据通信具有突出的可靠性、实时性和灵活性,通信介质可以是双绞线、同轴电缆或光导纤维。因此,CAN总线在智能家居系统中得到广泛应用。 第57页共57页1课题研究内容1.1课题背景二十一世纪是信息技术高速发展的时代,社会的信息化唤起了人们对住宅智能化及家居智能化的要求,智能住宅己成为中国房地产市场的主流。计算机行业和家电行业、电信行业、安防监控行业的互相渗透、互相融合,使信息时代的未来家居生活逐步成为现实。建设部要求根据不同消费者的需要,推动家居数字化、建筑智能化,可见中国智能家居市场潜力巨大。智能家居安防系统是集信息技术、网络技术、传感技术、无线电技术、模糊控制技术等多种技术为一体的综合应用。智能家居安防系统具有使用方便、安装简单、准确及时的特点,非常适合居家安全防范措施的实施,它可以检测居室内的煤气的泄漏情况、是否有火灾发生、是否发生水管爆裂、是否有小偷入室盗窃等危险的情况,并自动采取一定措施尽量把损失降到最小值,还以一定的无线方式去通知居室主人,让主人可以采取一定的措施去处理这种不好事件,这样就可以自动地与人为地去采取措施,去做到最好的安防。因此,随着人们生活水平的不断提高,白天离家去上班的人越来越多,这系统也会越来越受到青睬,加上目前智能安防系统的设计领域还很不完善,可以借以开发的无线网络条件也越来越成熟,把这方面的设计产品化,将会有很广阔的市场。1.2课题意义目前国内越来越多智能化的商品已经进入到人们的生活,特别是在商品房小区里,人们都知道“安全第一”,所以家居安防的第一要义就是要保证家居的安全,给家居主人一些已经发生了的危险情况的损失降到最低的程度。据预测,今后几年智能家居市场会进入一个行业整合阶段,最终可能会出现一些规模较大、品牌影响较好的智能家居生产厂家。从产品角度来讲,以后的智能家居产品会朝着实用化、傻瓜化(操作简单)、模块化的方向发展,所谓模块化就是产品开发商把智能家居产品做成模块化的,可以根据用户的实际需求任意搭配。这样不仅可满足不同层次用户的需要,也可以省去不必要的端口模块的费用浪费。目前国内已在经济发达地区如北京、深圳、广州、上海等地建立了一批智能住宅小区,而且正快速地向其他地区辐射,建设部已将智能化住宅小区列为国家重点发展方向。预计未来5到10年可以形成相当规模的市场容量。届时,智能住宅的发展还将带动信息家电、物业管理等相关行业的发展。所以,智能家居的发展前景非常地好,且技术的研究还有很大的空间。 第57页共57页2系统设计概述2.1设计任务设计多路CAN总线节点检测室内温度湿度,火情盗情等参数,发至PC机记录和监控,并有报警功能,PC机可查询当前记录和历史记录。系统主要由三部分组成:上位监控计算机、CAN-RS232总线协议转换器和CAN总线智能节点。设计的具体内容:(1)设计CAN-RS232总线协议转换器,把CAN报文储存并通过串口转发给上位监控计算机。(2)设计CAN总线智能节点,包括四个部分:单片机及其外围电路、CAN总线模块、数据传输模块和传感器检测模块(负责对环境参数的检测)。(3)系统软件设计,包括上位机监控软件设计、CAN-RS232协议转换程序设计、CAN总线通信程序设计、数据采集程序设计以及其它控制程序。2.2系统设计原理首先,整个网络系统通过CAN总线连接起来。CAN智能节点通过各传感器模块主动巡回检测家居的当前环境状况,把采集到的数据通过CAN总线发至CAN-RS232协议转换器,再通过串口把数据发送到上位机,上位机负责对采集到的数据进行保存、显示和管理。当检测到的环境信息意味着居家有危险时,下位机和上位机同时发出报警信号。考虑到季节的变化,温湿度的报警上下限可以在CAN-RS232协议转换器节点通过按键和LCD1602设定,然后发送至各个CAN智能节点。2.3系统设计方案上位监控计算机CAN-RS232总线协议转换器CAN智能节点1CAN智能节点2RS232CAN总线图2.1系统整体结构图 第57页共57页该系统结构由上位监控计算机、CAN-RS232总线协议转换器和CAN智能节点等三部分构成。总线两端各有加一个120欧的电阻,对匹配总线阻抗起着相当重要的作用,将大大提高数据通信的抗干扰能力。上位监控计算机及监控软件组成该系统的监控层,主要负责对系统数据的接收与管理、控制命令的发送以及各单元环境参数实时显示。单片机LED指示LCD1602按键电路CAN控制器SJA1000CAN收发器TJA1050电平转换MAX232RS232CAN总线图2.2CAN-RS232协议转换器结构图LED指示模块用于指示这个模块的运行情况,便于管理和调试。按键和LCD1602用于设定温湿度的上下限并显示,设定之后通过CAN总线发送到各个智能节点。单片机温湿度检测模块红外检测模块烟雾检测模块CAN总线模块报警电路CAN总线图2.3CAN智能节点结构图单片机通过各传感器采集环境信息,按CAN规范规定的格式将其写入CAN控制器的发送缓冲区,并启动发送命令,把数据发送到CAN总线上。对于接收过程,CAN总线上自动接收数据,并经过滤后存人CAN接收缓冲区,向单片机发出中断请求,此时单片机可从CAN接收缓冲区读取要接收的数据。2.4系统可行性分析 第57页共57页CAN总线通信是本系统需要解决的关键问题,考虑到整个系统的可靠性,并结合考虑成本,决定采用CAN总线模块,此模块主要包括CAN总线控制器SJA1000和CAN总线收发器TJA1050。经过测试,CAN模块工作稳定可靠。在传感器的选择上以方便使用、功率低、准确性高、实用性强为出发点去考虑,采用以下传感器:DS18B20、DHT11、红外人体感应模块、烟雾传感器MQ-2。其他的器件均采用经济常用的LCD1602、蜂鸣器等。 第57页共57页3CAN总线概述3.1CAN总线简介控制器局域网CAN为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1Mbit/s。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。根据ISO/OSI参考模型,CAN总线由数据链路层和物理层组成,功能由CAN控制器来实现。数据链路层包括逻辑链路控制LLC子层和介质访问控制MAC子层,逻辑链路控制子层(LLC)的作用范围如下:为远程数据请求以及数据传输提供服务;确定由实际要使用的LLC子层接收哪一个报文;为恢复管理和过载通知提供手段。MAC子层的作用主要是传送规则,包括控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文,什么时候开始接收报文,均在MAC子层里确定。位定时的一些普通功能也可以看作是MAC子层的一部分。理所当然,MAC子层的修改是受到限制的。物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。同一网络的物理层对于所有的节点当然是相同的。尽管如此,在选择物理层方面还是很自由的,物理通信介质可以是双绞线、同轴电缆或光导纤维。总线可以有两个互补的逻辑值之一:“显性”或“隐性”。在“显性”和“隐性”位同时传送期间,总线值将是“显性”。例如,在实现线与时,“显性”代表一个逻辑“0”,“隐性”代表逻辑“1”。3.2CAN总线帧类型CAN总线有两种不同的帧格式,不同之处为识别符的长度不同:具有11位识别符的帧称之为标准帧,含有29位识别符的帧为扩展帧。本课题使用扩展帧进行通信,因此,只对扩展帧进行介绍。CAN报文传输由以下4个不同的帧类型所表示和控制:数据帧:数据帧将数据从发送器传输到接收器。远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。错误帧:任何单元检测到总线错误就发出错误帧。过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。3.2.1数据帧数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。帧起始:帧起始(SOF)标志数据帧和远程帧的起始,仅由一个“显性”位组成。只在总线空闲时才允许任何节点开始发送(信号)。仲裁场:扩展格式里,仲裁场包括29位识别符、SRR位、IDE 第57页共57页位、RTR位。其识别符由ID-28...ID-0,包含两个部分:11位基本ID、18位扩展ID。基本ID按ID-28到ID-18的顺序发送。它相当于标准识别符的格式。基本ID定义扩展帧的基本优先权。扩展ID包括18位。它按ID-17到ID-0顺序发送。图3.1CAN数据帧仲裁场结构图RTR的全称为“远程发送请求位(RemoteTransmissionRequestBIT)”。RTR位在数据帧里必须为“显性”,在远程帧里必须为“隐性SRR的全称是“替代远程请求位(SubstituteRemoteRequestBIT)”。SRR是一隐性位。它在扩展格式的标准帧RTR位位置,因此代替标准帧的RTR位。因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的。IDE的全称是“识别符扩展位(IdentifierExtensionBit)”,标准格式里的IDE位为“显性”,而扩展格式里的IDE位为“隐性”。控制场:数据长度代码指示数据场里的字节数量。数据长度代码为4个位,所以数据场的字节数可以是0~8个字节。数据场:数据场由数据帧里的发送数据组成。它可以为0~8个字节,每字节包含8个位,首先发送MSB。CRC场:CRC场包括CRC序列(CRCSEQUENCE),其后是CRC界定符(CRCDELIMITER)。应答场:应答场长度为2个位,包含应答间隙(ACKSLOT)和应答界定符(ACKDELIMITER)。在ACK场(应答场)里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACKSLOT)期间(发送ACK信号)向发送器发送一“显性”位以示应答。帧结尾:每一个数据帧和远程帧均由一标志序列定界。这个标志序列由7个“隐性”的位组成。3.2.2远程帧通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0...8 第57页共57页的任何数值)。此数值是相应于数据帧的数据长度代码。3.2.3错误帧错误帧由两个不同的场组成。第一个场用是不同站提供的错误标志(ERRORFLAG)的叠加。第二个场是错误界定符。错误标志有两种形式的错误标志:主动错误标志和被动错误标志。错误界定符包括8个“隐性”的位。3.2.4过载帧过载帧包括两个位场:过载标志和过载界定符。过载标志由6个“显性”的位组成,过载界定符包括8个“隐性”的位。有种过载的情况,这三种情况都会引发过载标志的传送:⑴接收器的内部情况(此接收器对于下一数据帧或远程帧需要有一延时)。⑵在间歇的第一和第二字节检测到一个“显性”位。⑶如果CAN节点在错误界定符或过载界定符的第8位(最后一位)采样到一个显性位,节点会发送一个过载帧(不是错误帧)。错误计数器不会增加。3.3CAN报文过滤报文滤波取决于整个识别符。允许在报文滤波中将任何的识别符位设置为“不考虑”的可选屏蔽寄存器,可以选择多组的识别符,使之被映射到隶属的接收缓冲器里。如果使用屏蔽寄存器,它的每一个位必须是可编程的,即,他们能够被允许或禁止报文滤波。屏蔽寄存器的长度可以包含整个识别符,也可以包含部分的识别符。3.4CAN错误处理3.4.1错误检测有以下5种不同的错误类型(这5种错误不会相互排斥)⑴位错误(BitError)单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATIONFIELD)的填充位流期间或应答间隙(ACKSLOT)发送一“隐性”位的情况是例外的——此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。⑵填充错误(StruffError)如果在使用位填充法进行编码的信息中,出现了第6个连续相同的位电平时,将检测到一个填充错误。⑶CRC错误(CRCError)CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。⑷形式错误(FormError) 第57页共57页当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误。(备注:接收器的帧末尾最后一位期间的显性位不被当作帧错误)⑸应答错误(AcknowledgmentError)只要在应答间隙(ACKSLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误。3.4.2错误标定检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。 第57页共57页4硬件电路设计4.1单片机最小系统4.1.1单片机STC89C52RCCAN智能节点和CAN-RS232采用STC89C52RC单片机作为主控芯片。它是一款兼容51内核的增强型8位机,片上资源丰富,抗干扰能力突出。STC89C52有如下特点:40个引脚,8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。图4.1单片机STC89C52引脚图图4.1为STC89C52RC单片机的引脚图,在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚;XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端;XTAL2(18脚)接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮; 第57页共57页RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源;P0口(39脚至32脚):是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载;P1口(1脚至8脚):是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不锁存,故不是真正的双向I/O口。P1口能驱动(吸收或输出电流)4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它接收低8位地址;P2口(21脚至28脚):是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。在对EPROM编程和程序验证期间,它接收高8位地址。P2可以驱动(吸收或输出电流)4个LS型的TTL负载;P3口(10脚至17脚):是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。P3能驱动(吸收或输出电流)4个LS型的TTL负载。P3各口线的第二功能定义:P3.010RXD(串行输入口);P3.111TXD(串行输出口);P3.212INT0(外部中断0);P3.313INT1(外部中断1);P3.414T0(器0外部输入);P3.515T1(定时器1外部输入);P3.616WR(外部数据存储器写脉冲);P3.717RD(外部数据存储器读脉冲)。4.1.2最小系统电路图4.2单片机最小系统图 第57页共57页单片机最小系统电路很简单,包括部分外围电路:复位电路和晶振电路。在复位电路上电的瞬间,RC电路充电,由于电容的电压不能突变,所以RST引脚出现高电平。RST引脚出现的高电平将会随着对电容的充电过程而逐渐回落,为保证正确复位,RST引脚出现的高电平需要持续两个机器周期以上的时间。因此,需要合理选择复位电路的电阻和电容,通常取10K和10uf。4.2CAN总线模块4.2.1CAN控制器SJA1000⑴SJA1000概述SJA1000是一种独立控制器用于移动目标和一般工业环境中的区域网络控制(CAN),它是PHILIPS半导体PCA82C200CAN控制器(BasicCAN)的替代产品,而且它增加一种新的工模式PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。SJA1000部分功能模块说明如下:①接口管理逻辑(IML):接口管理逻辑解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器提供中断信息和状态信息。②发送缓冲器(TXB):发送缓冲器是CPU和BSP(位流处理器)之间的接口,能够存储发送到CAN网络上的完整信息。缓冲器长13个字节,由CPU写入,BSP读出。③接收缓冲器(RXB,RXFIFO):接收缓冲器是验收滤波器和CPU之间的接口,用来储存从CAN总线上接收和接收的信息。接收缓冲器(RXB,13个字节)作为接收FIFO(RXFIFO,长64字节)的一个窗口,可被CPU访问。④验收滤波器(ACF):验收滤波器把它其中的数据和接收的识别码的内容相比较,以决定是否接收信息。⑵SJA1000引脚定义AD0-AD7:多路地址/数据总线。ALE/AS:ALE输入信号(Intel模式),AS输入信号(Motorola模式)。/CS:片选输入,低电平允许访问SJA1000。(/RD)/E:微控制器的/RD信号(Intel模式)或E使能信号(Motorola模式)。/WR:微控制器的/WR信号(Intel模式),或RD/(/WR)信号(Motorola模式)。CLKOUT:SJA1000产生的提供给微控制器的时钟输出信号,时钟信号来源于内部振荡器且通过编程驱动时钟控制寄存器的时钟关闭位,可禁止该引脚。Vss1:接地。XTAL1:输入到振荡器放大电路,外部振荡信号由此输入。XTAL2:振荡放大电路输出,使用外部振荡信号时左开路输出。MODE:模式选择输入,1=Intel模式,0=Motorola模式。VDD3:输出驱动的5V电压源。TX0:从CAN输出驱动器0输出到物理线路上。 第57页共57页TX1:从CAN输出驱动器1输出到物理线路上。Vss3:输出驱动器接地。/INT:中断输出用于中断微控制器,/INT在内部中断寄存器各位都被置位时低电平有效,/INT是开漏输出,且与系统中的其它/INT是线或的,此引脚上的低电平可以把IC从睡眠模式中激活。/RST:复位输入用于复位CAN接口(低电平有效),把/RST引脚通过电容连到VSS通过电阻连到VDD可自动上电复位。VDD2:输入比较器的5V电压源。RX0,RX1:从物理的CAN总线输入到SJA1000的输入比较器,支配(控制)电平将会唤醒SJA1000的睡眠模式;如果RX1比RX0的电平高,就读支配(控制)电平,反之读弱势电平;如果时钟分频寄存器的CBP位被置位,就旁路CAN输入比较器以减少内部延时(此时连有外部收发电路),这种情况下只有RX0是激活的;弱势电平被认为是高而支配电平被认为是低。VSS2:输入比较器的接地端。VDD1:逻辑电路的5V电压源。图4.3SJA1000引脚图⑶SJA1000寄存器(PeliCAN模式)CAN控制寄存器的内部寄存器对CPU来说是以外部寄存器形式存在而作片内内存使用。因为CAN控制器可以工作于不同模式(工作/复位),所以必须区分不同的内部地址定义。从CAN地址32起所有的内部RAM(80字节)被映象为CPU的接口。①模式寄存器(MOD):模式寄存器的内容是用来改变CAN控制器的行为的。CPU把控制寄存器作为读/写寄存器,可以设置这些位,保留位读值为逻辑0。模式寄存器的地址为“0”,其各位功能如下:MOD.7-MOD.5:保留;MOD.4(SM):睡眠模式,“1”进入睡眠模式,“0”从睡眠模式唤醒;MOD.3(AFM):验收滤波器模式,“1”单滤波模式,“0”双滤波模式;MOD.2(STM):自检测模式,“1”进入自检测模式,“0”正常模式;MOD.1(LOM):只听模式,“1”进入只听模式,“0”正常模式; 第57页共57页MOD.0(RM):复位模式,“1”进入复位模式,“0”退出复位模式,进入正常模式;②命令寄存器(CMR):CAN地址“1”。命令位初始化CAN控制器传输层的一个动作。这个寄存器是只写的,所有位的读出值都是逻辑0。因处理的需要,两条命令之间至少有一个内部时钟周期。内部时钟周期的频率是外部振荡器的一半。表4.1SAJ1000命令寄存器(CMR)各位功能说明③状态寄存器(SR):CAN地址“2”。状态寄存器反映CAN控制器的状态。状态寄存器对CPU来说是只读内存。表4.2SJA1000状态寄存器(SR)各位功能说明④中断寄存器(IR):CAN地址“3”。中断寄存器允许中断源的识别。当这个寄存器的一位或多位被置位时,CAN中断将反映到CPU。CPU读此寄存器的时候除了接收中断外的所有位都被复位,中断寄存器对CUP来说是只读存储器。表4.3SJA1000中断寄存器(IR)位功能说明 第57页共57页⑤中断使能寄存器(IER):CAN地址“4”。这个寄存器能使不同类型的中断源对CPU有效,这个寄存器对CPU来说是可读/写存储器。表4.4SJA1000中断使能寄存器(IER)位功能说明⑥发送缓冲器(TX):CAN地址“16-28”。发送缓冲器被分为描述符区和数据区,描述符区的第一个字节是帧信息字节(帧信息)。它说明了帧格式(SFF或EFF)、远程或数据帧和数据长度。SFF有两个字节的识别码,EFF有四个字节的识别码。数据区最多长8个数据字节发送缓冲器长13个字节。表4.5SJA1000发送缓冲器列表(扩展帧)⑦接收缓冲器(RX):CAN地址“16-28”。接收缓冲器的列表与前面一节讲述的发送缓冲器很相似,接收缓冲器是RXFIFO的可访问部分。每条信息分为描述符和数据区。 第57页共57页图4.4SJA1000接收缓冲器信息存储示意图⑧验收滤波器:在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,CAN控制器才允许将已接收信息存入RXFIFO。验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存(AMRn)定义要接收的信息的位模式在验收代码寄存器中定义相应的验收屏蔽寄存器允许定义某些位为“不影响”(即可为任意值)。有两种不同的过滤模式可在模式寄存器中选择MOD.3AFM。单滤波器模式(AFM位是1),双滤波器模式(AFM位是0),本设计使用双滤波模式。双滤波模式配置可以定义两个短滤波器。一条接收的信息要和两个滤波器比较来决定是否放入接收缓冲器中,至少有一个滤波器发出接受信号,接收的信息才有效。滤波器字节和信息字节之间位的对应关系取决于当前接收的帧格式。⑨总线时序寄存器0、1(BTR0、BTR1):CAN地址6,7。总线定时寄存器0定义波特率预设值(BRP)和同步跳转宽度(SJW)的值,总线定时寄存器1定义每个位周期的长度采样点的位置和在每个采样点的采样数目。复位模式有效时这两个寄存器是可以被访问(读/写)的。如果选择的是PeliCAN模式此寄存器在工作模式中是只读的。表4.6SJA1000总线时序寄存器0(BTR0)位功能说明表4.7SJA1000总线时序寄存器1(BTR1)位功能说明⑩输出控制寄存器(OCR):CAN地址8。输出控制寄存器实现由软件控制不同输出驱动配置的建立。在复位模式中此寄存器可被读/写访问。在PeliCAN模式的工作模式中这个寄存器是只读的,在BasicCAN模式中总是FFH。表4.8SJA1000输出寄存器(OCR)位功能说明表4.9输出寄存器(OCR)OCMODE位的说明 第57页共57页4.2.2CAN收发器TJA1050TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口。TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。TJA1050有如下特征:与“ISO11898”标准完全兼容;速度高(最高可达1M波特);低电磁辐射(EME);具带有宽输入范围的差动接收器,可抗电磁干扰(EMI);没有上电的节点不会对总线造成干扰;发送数据(TXD)控制超时功能;发送禁能时的静音模式;在暂态时自动对总线引脚进行保护;输入级与3.3V装置兼容;热保护;对电源和地的防短路功能;可以连接至少110个节点。图4.5TJA1050引脚图表4.10TJA1050引脚说明4.2.3CAN模块电路STC89C52TJA1050图4.6CAN模块电路接口图 第57页共57页电路主要由四部分构成:微控制器STC89C52、独立CAN通信控制器SJA1000、CAN总线收发器TJA1050和高速光电耦合器6N137。微处理器STC89C52负责SJA1000的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。SJA1000的AD0~AD7连接到STC89C52的P0口。CS连接到单片机的P2.0,P2.0为0的CPU片外存储器地址可选中SJA1000,CPU通过这些地址可对SJA1000执行相应的读写操作。SJA1000的RD、WR、ALE分别与STC89C52的对应引脚相连,INT接STC89C52的INT0。为增强CAN总线节点的抗干扰能力,SJA1000的TX0和RX0并不是直接与TJA1050的TXD和RXD相连,而是通过高速光耦6N137后与TJA1050相连,这样就很好地实现了总线上各CAN节点间的电气隔离。4.3串口通信4.3.1电平转换芯片MAX232MAX232芯片是专门为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。该器件包含2个驱动器2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。MAX232芯片引脚图如下所示:图4.7MAX232引脚图引脚介绍: 第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。  第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。  TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。  第三部分是供电。15脚GND、16脚VCC(+5v)。 第57页共57页4.3.2串口通信电路MAX232外围需要4个电解电容C1、C2、C3、C4,是内部电源转换所需电容。其取值均为1μF/25V。宜选用钽电容并且应尽量靠近芯片。C5为0.1μF的去耦电容。图4.8RS-232串口通信电路原理图4.4温湿度检测模块本检测模块主要通过对家居内的温度湿度检测来判为是否有漏水或发生火灾的危险,温度传感器用DS18B20,湿度传感器采用DHT11。4.4.1温度传感器DS18B20DS18B20输出引脚需外接1个4.7K的上拉电阻,使转换后的数据能够更好地传送到单片机。该器件测得的温度值是以16位带符号位扩展的二进制补码形式读出,数据是通过单总线接口以串行的方式读出。图4.9DS18B20应用电路4.4.2湿度传感器DHT11DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。其典型应该电路如图4.10,在第二脚外接1个5K的上接电阻。 第57页共57页图4.10DHT11应用电路4.4.3温湿度检测电路图4.11温湿度检测电路4.5烟雾检测模块本设计使用MQ-2烟雾传感器模块检测居室内的烟雾状况,以分析是否发生火情。MQ-2烟雾传感器模块工作电压为5V,TTL电平输出,可以和单片机I/O口直接连接。当检测到你烟雾浓度大于设定值时,输出低电平。MQ-2烟雾传感器模块如下:图4.12MQ-2烟雾传感器模块电路图图4.13MQ-2模块与单片机接口电路 第57页共57页4.6红外人体感应模块BISS0001是一款传感信号处理集成电路。配以热释电红外传感器和少量外接元器件构成被动式的热释电红外开关。用于安全区域的自动灯光、照明和报警系统。图4.14BISS0001传感器应用电路本设计使用红外人体感应模块来检测室外入侵状况,当人进入其感应范围时,输出高电平;当人离开感应范围时,则自动延时关闭高电平,输出低电平。图4.15红外人体感应模块与单片机接口电路4.7液晶显示模块工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线。实物图与引脚图分别如图4.16所示。图4.16LCD1602实物图与引脚图 第57页共57页LCD1602引脚说明:VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中模块的引脚说明如下表4.10所示。表4.10LCD1602引脚说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2DataI/O2VDD电源正极10D3DataI/O3VL显示偏压信号11D4DataI/O4RS数据/命令选择端12D5DataI/O5RW读写使能端13D6DataI/O6E使能信号14D7DataI/O4.8报警电路本设计采用普通三极管9012和蜂鸣器组成报警电路,如图4.17所示。图4.17报警电路4.9按键电路设计中,使用按键加LCD1602来设计各个节点的温湿度上限和下限,设计四个按键。图4.18按键电路 第57页共57页5系统软件设计5.1软件整体设计CAN-RS232协议转换器通过CAN总线接收检测节点的数据信息,并通过串口发送到上位机,CAN-RS232协议转换器还负责设定检测节点的温湿度的上限和下限。开始系统初始化开中断按键扫描SET键按下?按键设定值EXT键按下?CAN发送设定值CAN接收标志RX_flag=1?串口发送数据结束YYNYNN 第57页共57页图5.1CAN-RS232协议转换器程序流程图CAN检测节点的主要包括:CAN通信程序,环境参数检测程序。其程序流程图如图5.2所示。开始系统初始化开中断检测环境参数需要报警?报警CAN发送数据CAN接收中断?改变温湿度上下限结束NNYY图5.2CAN检测节点总程序流程图 第57页共57页5.2CAN通信程序设计CAN总线通信是通过CAN控制器SJA1000来实现的,在CAN收发数据之前必须对SJA1000进行初始化。由于SJA1000与微处理器的接口是以外部存储器的方式,在编写CAN通信程序之前必须确定SJA1000的基地址和复位引脚。本设计复位引脚接单片机的P2.0,基地址为0x8000。设计中,以查询的方式通过CAN发送数据,中断的方式接收数据。需要发送数据的时候,先根据SJA1000的状态寄存器,判断是否可以发送数据,如果可以,将数据写入发送缓冲区,然后使能发送请求。当有接收缓冲区有数据时,将会置位接收中断标志位,在接收中断服务程序中,即可读出接收缓冲区的内容。SJA1000初始化过程如图5.3所示。开始SJA1000硬件复位设置通信波特率SJA1000进入复位模式配置时钟分频寄存器配置模式寄存器配置验收代码/屏蔽寄存器配置总线时序寄存器配置输出寄存器退出复位模式结束 第57页共57页图5.3SJA1000初始化流程图CAN发送数据过程如图5.4所示,发送数据之前,必须正确初始化SJA1000。开始读状态寄存器可以发送?将数据写入发送缓冲区使能发送请求结束NY图5.4CAN发送数据流程图CAN接收数据过程如图5.5,接收数据之前,必须正确初始化SJA1000。进入接收中断读取接收缓冲区内容置位接收标志清空接收缓冲区退出接收中断 第57页共57页图5.5CAN接收数据流程图5.3RS-232通信程序设计RS-232串口异步通信过程中,字符是按帧格式进行传送的,异步通信的帧格式如表5.1所示。表5.1异步通信的帧格式在使用串口收发数据之前,需要对串口通信相关的各个寄存器进行初始化(设置工作模式等等),设置合适的通信波特率,并开串口中断。串口发送数据的过程,把数据写入SBUF,则启动发送。在发送结束后,发送中断标志位TI被置位,要发送下一帧数据,必须对TI软件清零。串口接收数据过程,一般通过中断接收数据,当接收缓冲器SBUF中的数据时,接收中断标志位RI被置位,在串口中断服务中,读出SBUF中的内容,RI同样需要软件清零。5.4LCD1602液晶显示程序设计1602液晶的基本的操作分为以下四种:状态字读操作:输入RS=低、RW=高、EP=高;输出:DB0~7读出为状态字;数据读出操作:输入RS=高、RW=高、EP=高;输出:DB0~7读出为数据;指令写入操作:输入RS=低、RW=低、EP=上升沿;输出:无;数据写入操作:输入RS=高、RW=低、EP=上升沿;输出:无。读操作的时序图如图5.6。 第57页共57页图5.6LCD1602读操作时序图写操作的时序图如图5.7。图5.7LCD1602写时序图LCD1602初始化过程如图5.8所示。写指令Ox38设置显示模式延时5ms左右写指令Ox38设置显示模式延时5ms左右写指令Ox38设置显示模式写指令Ox08关显示写指令Ox01显示清屏写指令Ox06显示光标移动设置写指令Ox0C显示开及光标设置 第57页共57页图5.8LCD1602初始化程序流程图5.5按键设定值程序设计设计中,使用4个进行设定温湿度的上限值和下限值,分别为SET、ADD、EXT和PAGE。第一次按下SET键时,进入按键设置模式,在设置模式中,SET键用于移动LCD1602的显示光标。ADD键用于对所在光标位置进行加1,范围为0~9。EXT键用于退出按键设置模式。PAGE键用于切换显示温度上下限和湿度上下限。开始按键扫描SET键按下?进入按键设置模式扫描按键SET键按下ADD键按下EXT键按下结束YN退出设置模式加1处理移动光标图5.9按键设定值程序流程图 第57页共57页5.6温度采集程序设计DS18B20需要严格的单总线协议以确保数据的完整性。协议包括集中单总线信号类型:复位脉冲、存在脉冲、写0、写1、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。在初始化期间,总线控制器拉低总线并保持480us,以发出一个复位脉冲,然后释放总线,进入接收状态。单总线由5K上拉电阻拉高到高电平。当DS18B20检测到I/O引脚的上升沿后,等待15-60us,然后发出一个由60-240us低电平信号构成的存在脉冲。图5.10DS18B20初始化时序 第57页共57页图5.11DS18B20读/写时序DS18B20温度采集程序流程图如图5.12所示。开始复位读数据写数据读取温度值返回温度值结束 第57页共57页图5.12DS18B20温度采集程序流程图5.7湿度采集程序设计DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。DHT11为单线双向串行接口,DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。图5.13DHT11通讯过程数字0信号表示方法如图5.14所示。 第57页共57页图5.14DHT11数字0表示方法数字1信号表示方法如图5.15所示。图5.15DHT11数字1表示方法湿度采集程序设计流程图如图5.16所示。开始写命令初始化读湿度值写数据结束图5.16湿度采集程序设计流程图 第57页共57页5.8应用软件平台简介5.8.1KeilC51KeilC51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计。程序编译、调试的基本过程如下:(1)建立一个新的工程文件NewProject。(2)保存文件,选择保存路径,输入工程文件的名字。(3)选择设计使用的单片机的型号。(4)建立一个新的源程序文件。(5)在弹出的程序文本框中输入设计的程序,然后以后缀扩展名为.C保存。(6)回到编辑界面后,用右键单击SoureceGroup1,在弹出的快捷菜单中选择AddFilestoGroup’SoureceGroup1’选项,选择设计编译文件。(7)然后对目标进行一些设置,在OptionsforTarget’Target1’中进行相应参数的设置。(8)编译程序,选择【Project】/【Rebuildalltargetfiles】选项,开始编译程序。(9)编译完毕后,选择【Debug】/【Start/StopDebugSession】选项,进入仿真环境。在调试程序过程中,如果定义的全局变量与数组过多,会导致代码存储区和RAM不够容纳代码空间的现象,出现数据代码区溢出等问题。针对这种现象,提出两个解决方法,对于全局数组一般在定义声明为idata,尽量使用内部变量和子函数。5.8.2VisualBasic6.0VisualBasic6.0(以下简称VB) 是一种功能强大、简单易学的程序设计语言。它不但保留了原先Basic语言的全部功能,而且还增加了面向对象程序设计功能。它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据采集和通信,而上位机通常以基于图形界面的Windows核心为操作平台,为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。单片机和PC的通信是通过单片机和PC串口之间的硬件连接实现的。(1)MSComm控件介绍 第57页共57页MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。本文的两个例子均采用该方式。另一种为查询方式,在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。在程序空闲时间较多时可以采用该方式。 利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法: Commport:设置或返回串口号。 Settings:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口状态。 InputMode:设置或返回接收数据的类型。 Inputlen:设置或返回一次从接收缓冲区中读取字节数。 InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。 InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。 Input:从接收缓冲区中读数据并清空缓冲区,该属性设计时无效,运行时只读。 OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。 OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。 Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串口生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。控件通信步骤:①加入通信部件,也就是MSComm对象;②设置通信端口号码,即Commport属性;③设置通信协议,即HandShaking属性;④设置传输速度等参数,即Settings属性;⑤设置其他参数,若必要时在加上其他的属性设置;⑥打开通信端口,即PortOpen属性设成True;⑦送出字符串或读入字符串,使用Input及Output属性; 第57页共57页⑧使用完MSComm通信对象后,将通信端口关闭。即PortOpen属性设置成False。(2)VB数据库访问控件上位机需要实现数据的保存,数据记录查询等功能,这就需要数据库技术。VisualBasic提供有很多访问数据库的方法,但最方便常用的方法是ADO数据库访问技术。本设计就是基于ADO模型,使用数据库访问控件ADOData和DataGrid实现对数据库的访问。①ADOData控件ADOData控件是使用ADO技术访问数据库的具体实现。用户可以使用ADOData控件快速地创建一个到数据库的连接。ADOData控件使用Recordset对象支持对存储在数据库中的数据进行访问,并允许将指针从一个记录移动到另一个记录,显示和操纵记录数据。许多其他的数据库操作控件都需要ADOData控件提供数据源。ADOData控件可以执行大部分数据库访问操作,但是它并不能够显示数据库中数据的内容。ADOData控件通常需要与其他控件结合作用。这些与ADOData控件结合使用的控件,可以称之为“数据觉察控件”。常用的数据觉察控件包括DataList控件、DataCombo控件和DataGrid控件。当ADOData控件中的当前记录发生变化时,数据觉察控件的内容也会随之发生变化。ADOData控件的常用属性及说明如下:BOF:如果当前记录位于Recordset对象的第一个记录之前,则BOF等于true,否则BOF等于false。ConnectionString:指定连接字符串,用于建立到数据源的连接。EOF:如果当前记录位于Recordset对象的最后一个记录之后,则EOF等于true,否则EOF等于false。Mode:指定对数据源的访问权限。AdModeUnknown是默认值,表明权限尚未设置或无法确定;AdModeRead表明权限为只读;AdModeWrite表明权限为只写;AdModeReadWrite表明权限为读/写;AdModeShareDenyRead防止其他用户使用读权限打开连接;AdModeShareDenyWrite防止其他用户使用写权限打开连接;AdModeShareExclusive防止其他用户打开连接;AdModeShareDenyNone防止其他用户使用任何权限打开连接。Recordset:通过SELECT语句返回的查询结果保存在Recordset属性中。RecordSource:设置一个数据记录源,可以是表、视图或SELECT语句等。查询结果保存在Recordset属性中。②DataGrid控件DataGrid控件以表格的形式显示结果集中的数据,它同样需要ADOData控件提供数据源。DataGrid控件的常用属性如下: 第57页共57页AllowAddNew:当AllowAddNew等于True时,允许向与DataGrid控件连接的Recordset对象中添加新记录,否则不允许添加新记录。AllowDelete:当AllowDelete等于True时,允许从与DataGrid控件连接的Recordset对象中删除记录,否则不允许删除记录。AllowUpdate:当AllowUpdate等于True时,允许修改与DataGrid控件连接的Recordset对象中的记录,否则不允许修改记录。DataSource:指定DataGrid控件绑定的数据源。6系统调试6.1硬件电路调试在完成电路板制作之后,不要急于接上电源测试,这样可以防止线路错误的时候上电对核心部件和芯片造成损坏。第一步目测电路板。粗略检查有没有因为腐蚀不好造成短接或者“线断”的现象,对发现有短接或者有短接危险的地方,可以用刻刀刮掉由于腐蚀不好遗留下的铜。最后,再一次确认电路原理与其它模块的接口是否正确。在这一个步骤中,发现单片机系统板和CAN模块接口不对应,第一块电路板只能作费。这说明在画电路原理图的时候一定要加倍认真细心,保证原理图和外接模块的接口电路正确。第二步 第57页共57页万用表检测。因为在线路间间距较小的时候即使有短接也没发现,所以需要借助万用表。先将万用表置于蜂鸣挡位,用两个表笔分别接在那些挨得比较近的电路线看看是否有短路。如果发出蜂鸣声则说明有短路状况,没有蜂鸣警报声则表明正常。接着检查电源线和地线之间是否有短路现象。焊接好元器件后先观察本没有相连的焊点上的焊锡连接在一起,最后用万用表检测一些接点,查看他们的通断状态是否符合要求的状态。第三步加电源检测。在通过前面两步检查之后,给电路板接上5V电源,看电源指示灯是否亮。用万用表检测单片机电源和其它各个I/O端口的电压是否和理论值相符,检查晶振是不是正常工作。这一步,还要检查其它元器件和芯片的各个端口的电压值是否正确。第四步分模块检测。首先,检查单片机的复位电路是不是正常工作。其次,检查电路板的串口下载能不能正常下载程序,随意找一个可执行文件,先断开电路板电源,配置好STC_ISP_V4.83STC单片机下载软件,下载程序,给单片机上电,实现冷启动。检测单片机I/O口,编写一个简单的驱动LED亮的小程序,下载到单片机,看看LED是不是像预想一样的亮。对于CAN节点,还要检测蜂鸣器电路是否正常工作,同样,编写一个蜂鸣器驱动程序,下载到单片机,看看蜂鸣器能否正常发声。在这个步骤中,就发现蜂鸣器电路的三极管接错,导致不能正常驱动蜂鸣器发声,最后,改正之后,蜂鸣器电路正常工作。6.2系统联调硬件可以说是一个系统的躯壳,软件就是系统的中枢,软件是一个系统的核心控制部分。在硬件电路调试之后,要确认电路的各个模块都能正常工作,必须对硬件和软件结合进行联合调试,本设计采用分模块来调试。系统软件包括上位机监控软件设计和下位机程序设计。上位机用户界面主要包括系统主界面和CAN节点数据查询界面以及其它协调系统工作的界面。系统主界面实现数据的实时显示和报警指示。CAN节点数据查询界面可以实现条件查询,删除/清空历史数据,导出打印历史数据,数据实时曲线显示。上位监控计算机CAN-RS232协议转换器CAN总线模块CAN总线模块CAN总线模块CAN节智能点1CAN节智能点2环境信息采集环境信息采集RS232CAN总线 第57页共57页图6.1系统整体原理框图第一步LCD1602显示检测。以前使用过的能正确工作的LCD1602驱动程序,修改相应的相应端口之后,下载到单片机,看LCD1602能不能正常显示。开始可能没有显示内容,调整电位器,直到有显示为止。如果仍然不能正常显示,说明程序可能不正确,比如控制端口和硬件不对应,经过一步一步修改程序,最后液晶正常显示。第二步按键设定值检测。先编写一个简单的按键检测程序,如铵下某个按键,LCD显示某个数字。把这个程序下载到单片机,顺序按下4个按键,发现LCD没有显示相应的数字,检查程序又找不到错误。再检查硬件电路,原来4个按键的引脚全部接错,按键一直处于导通的状态,使用跳线,修正按键电路。然后,不断修改,调试设定值程序,直到LCD能正确显示设定值。第三步检测传感器模块。首先检测烟雾传感器模块和红外人体感应模块,由于是TTL电平输出,单片机I/O可以直接读取烟雾传感器模块的输出电平,低电平有效。适当修改延迟,可以减少干扰。其次,检测温湿度传感器部分,把读取到的温度值和湿度值,通过串口发到PC机,用串口助手查看相关数据是否正确。这里,发现一个延迟的问题,因为单片机的工作速度不一样,有1T和12T的区别,所以当正确的程序却读取不到温湿度的数据时,可能就是延时不正确,修改一下延迟函数,就能解决问题。第四步CAN通信程序检测。CAN通信可以说是整个系统的关键,首先是单个CAN节点的自收发检测,由于在硬件上放置有通信指示灯,所以这部分测试起来相对还是挺顺利的。如果通信指示灯不闪烁,可能是对SJA1000初始化不正确,认真检查程序,保证对SJA1000正确初始化。然后,测试节点间的对发,两个CAN节点或者CAN-RS232协议转换器,其中一个节点下载发送子程序,另一个节点下载接收子程序,上电工作,如果两个节点的CAN通信指示灯都闪烁,说明正常通信,还可以在接收节点通过串口把接收到的数据发送到PC机,用串口助手看是不是发送节点所发送的数据。最后,在每个节点里,都加上接收程序和发送程序,通过配置不同标识符(ID),可以设置在总线发生冲突时,节点占有总线的优先权。通过配置SJA1000的验收代码/屏蔽寄存器,可以定点发送数据。 第57页共57页第四步VB串口通信调试。上位机先不作其它的数据处理,先实现接收下位机通过串口发送来的数据,并在文本框中显示出来。观察数据是不是正确,就可以知道串口通信是否正常。第五步系统整合调试。把各个模块程序整合到一个工程里面,生成.exe可执行文件,下载到各个节点(包括CAN-RS232协议转换器),数据通过串口发送到上位机,观察上位机运行画面的结果,修改下位机节点程序,比如调整CAN通信的延迟函数,使数据传输更加可靠,整个系统更加稳定地工作。图6.2上位机主界面运行结果 第57页共57页图6.3CAN节点数据查询界面运行结果7总结和展望本设计在实现课题的基本要求的基础上,作出一些功能扩展,设计最终实现的功能如下:(1)设计两个CAN节点检测居室内的环境状况,可检测温湿度、火情和盗情;(2)检测到的环境数据可以通过CAN-RS232上传到上位机,上位机负责数据处理,实现数据显示,历史数据查询(可按条件查询),实时温湿度曲线,数据报表打印,数据删除等功能;(3)报警功能。分为上位机报警和CAN节点本地报警,当检测到环境状况,需要发出报警时,CAN节点可以发出声音报警,同时,上位机界面相应的指示灯红色亮,显示报警; 第57页共57页(4)由于季节的不同,温湿度的报警限值应该是可设置的。本设计在CAN-RS232协议转换器,通过按键和LCD1602设定温湿度的报警限值。本设计实现智能家居安防方面的基本功能,只要加以一些改进就可以应用到实际的生活当中,具有广阔的应用前景。这里给出一套本系统的改进方案:(1)住宅内部采用被动红外探测器、可燃气体探测器、温/湿度传感器;(2)住宅外部可选择窗磁、门磁开关、红外探测器、玻璃破碎探测器、双鉴探测器等;(3)住宅内外部的探测装置与报警控制器通过无线方式相连;(4)报警控制器与中心控制器通过有线方式相连。(5)实现远程报警,远程控制。当家居有险情的时候,可以通过GSM/GPRS/以太网等网络系统远程通知主人或向有关部门报警。谢辞经过一段时间的努力,毕业设计得以顺利完成。在设计过程中,我学到许多在书本上学不到的东西,并且通过自己的努力,解决许多技术上的难题,使我的实际操作能力得到提高。同时,每当我遇到难题的时候,每当我感到困惑的时候,每当我就要泄气的时候,总会有老师、同学和朋友在我身边,给我悉心的指导,给我实用的建议,给我最有动力的鼓励。你们的付出,对我来说,是莫大的帮助。你们,让我感受到学习的快乐,让我感受到友谊的珍贵,所有这些,都将是我一生中宝贵的财富。在此,对于所有帮助过我的人,一并致谢!我还要特别感谢李平老师,本次毕业设计从选题到功能实现,每一次碰到困难的时候,都得到您耐心的讲解,您让我更加有信心。 第57页共57页大学的生活,很快就要划上一个句号。回想四年时光,有过成功的欣喜,同时不得不承认曾经错过许多机会,浪费许多时间。过去的得与失,都将是自己给以后工作和生活的宝贵经验,我相信,只要朝着自己的目标,抓住机会,总会走到属于自己的成功乐园。参考文献[1]饶运涛,邹继军,王进宏,郑勇芸.现场总线CAN原理与应用技术(第二版)[M].北京:北京航空航天大学出版社,2007.[2]谢卫华.基于单片机的家庭智能防火防盗系统[D].哈尔滨:东北林业大学,2010.[3]李金刚,刘永鸿.基于AT89C51型单片机的CAN总线智能节点设计[J].国外电子元器件,2006,(8):26-29.[4]李江全,张丽,岑红蕾.VisualBasic串口通信与测控应用技术实战详解[M].北京:人民邮电出版社,2007.[5]李晓虹,刘克福.基于单片机和CAN总线的智能家居控制系统[J].智能建筑与城市信息,2010,(1):56-59.[6]赵雨斌,苗满香,陈宇.基于CAN总线的楼宇智能监控报警系统研究与设计[J]. 第57页共57页核电子学与探测技术,2008,(5):657-661.[7]赵杰,刘伟静,孙慧佳,李楠.CAN总线/RS232接口的设计[J].国外电子元器件,2008,(6):52-54.[8]邹继军,饶运涛.基于SJA1000的CAN总线系统智能节点设计[J].单片机与嵌入式系统应用,2001,(12):26-31.[9]张朝昆,施丽娜.VisualBasic数据库开发基础与应用[M].北京:人民邮电出版社,2005.[10]马淑华,王凤文,张美金.单片机原理与接口技术(第2版)[M].北京:北京邮电大学出版社,2005.[11]ChunjieYang,JiYan.“ThedesignofdistributedcontrolsystembasedOnCANBus,”Electronic&MechanicalEengineeringandInformationTechnology,vol.8,pp.3956-3958,2011.附录附录Ⅰ:硬件电路PCBCAN-RS232协议转换器PCB: 第57页共57页CAN智能节点PCB:附录Ⅱ:作品实物图 第57页共57页附录Ⅲ:部分源程序//**************************************************************************//文件名:Sja1000.c//功能描述:包含对SJA1000进行操作的函数//**************************************************************************/***************************************************************************SJA1000与MCU硬件连接:AD0AD1AD2AD3AD4AD5AD6AD7P00P01P02P03P04P05P06P07CSCCANP20INTCANINT1P33RSNOCONNECTRSTCANP34ALEALEWRP36RDP37/**************************************************************************/#include#include 第57页共57页sbitRSTCAN=P3^4;//=1复位externunsignedcharSend_CAN_Filter[8];//声明外部数组//**************************************************************************//SJA1000与单片机的接口是以外部存储器的方式,因为STC单片机有内部扩展//AUX-RAM,//如果地址选为0x00,会跟片内地址冲突,导致读写不正确。//**************************************************************************#defineSJA_CS_addr0x8000//定义sja1000的片行选基地址unsignedcharxdata*SJA_base_addr=SJA_CS_addr;/*---------------------------------------------------------------------**函数原型:voiddelayus(unsignedintt)**功能描述:延时函数**参数说明:t延时时间us**返回值:无**全局变量:**调用模块:**作 者:**日 期:/*---------------------------------------------------------------------*/voiddelayus(unsignedintt){unsignedinti,j;for(i=0;i#include//----------------------------------------------////----------------IO口定义区---------------////----------------------------------------------//sbitdhtdat=P1^3;//DHT11的数据线接到单片机的P1.3sbitDQ=P1^2;//DS18B20的数据口位P1.6//----------------------------------------------////----------------定义区--------------------////----------------------------------------------//unsignedchartemp,FLAG;unsignedcharcomdata;externunsignedcharTemp_H;//18B20存放温度值的高字节externunsignedcharTemp_L;//18B20存放温度值的低字节externunsignedcharT_data_H,T_data_L,RH_data_H,RH_data_L,checkdata;//已在另一个文件中声明,外部声明ucharT_data_H_temp,T_data_L_temp,RH_data_H_temp,RH_data_L_temp,checkdata_temp;/*---------------------------------------------------------------------**函数原型:voidDelay(unsignedintj)**功能描述:延时函数**参数说明:t延时时间*0.1ms**返回值:无**全局变量:**调用模块:**作 者:**日 期:/*---------------------------------------------------------------------*/ 第57页共57页voidDelay(unsignedintt){unsignedchari;for(;t>0;t--){for(i=0;i<27;i++);}}/*---------------------------------------------------------------------**函数原型:voidDelay_10us(void)**功能描述:延时函数10us**参数说明:无**返回值:无**全局变量:**调用模块:**作 者:**日 期:/*---------------------------------------------------------------------*/voidDelay_10us(void){unsignedchari;i--;i--;i--;i--;i--;i--;}/*---------------------------------------------------------------------**函数原型:voidCOM(void)**功能描述:判断DHT11数据线上是“1”或“0”**参数说明:无**返回值:无**全局变量:**调用模块:**作 者:**日 期:/*---------------------------------------------------------------------*/ 第57页共57页voidCOM(void){unsignedchari;for(i=0;i<8;i++){FLAG=2;while((!dhtdat)&&FLAG++);Delay_10us();Delay_10us();Delay_10us();temp=0;if(dhtdat)temp=1;FLAG=2;while((dhtdat)&&FLAG++);//超时则跳出for循环if(FLAG==1)break;//判断数据位是0还是1//如果高电平高过预定0高电平值则数据位为1comdata<<=1;comdata|=temp;//0}}/*---------------------------------------------------------------------**函数原型:voidreaddht11(void)**功能描述:读DHT11数据,温度、湿度各16位,8位整数8位小数**参数说明:无**返回值:无**全局变量:T_data_H温度的高8位,整数部分T_data_L温度的低8位小数部分RH_data_H湿度的高8位整数部分RH_data_L湿度的低8位小数部分checkdata校验和**调用模块:voidDelay(unsignedintj)voidDelay_10us(void)voidCOM(void)**作 者:**日 期:/*---------------------------------------------------------------------*/ 第57页共57页voidreaddht11(void){//主机拉低18msdhtdat=0;Delay(180);dhtdat=1;//总线由上拉电阻拉高主机延时20usDelay_10us();Delay_10us();Delay_10us();Delay_10us();//主机设为输入判断从机响应信号dhtdat=1;//判断从机是否有低电平响应信号如不响应则跳出,响应则向下运行if(!dhtdat)//T!{FLAG=2;//判断从机是否发出80us的低电平响应信号是否结束while((!dhtdat)&&FLAG++);FLAG=2;//判断从机是否发出80us的高电平,如发出则进入数据接收状态while((dhtdat)&&FLAG++);//数据接收状态COM();RH_data_H_temp=comdata;COM();RH_data_L_temp=comdata;COM();T_data_H_temp=comdata;COM();T_data_L_temp=comdata;COM();checkdata_temp=comdata;dhtdat=1;//数据校验temp=(T_data_H_temp+T_data_L_temp+RH_data_H_temp+RH_data_L_temp);if(temp==checkdata_temp){ 第57页共57页RH_data_H=RH_data_H_temp;RH_data_L=RH_data_L_temp;T_data_H=T_data_H_temp;T_data_L=T_data_L_temp;checkdata=checkdata_temp;}}}/****************************************延时X*10微秒(STC89C52RC@12M)**************************************/voidDelayX0us(unsignedcharn){while(n--){_nop_();_nop_();}}/****************************************复位DS18B20,并检测设备是否存在**************************************/voidDS18B20_Reset(){CY=1;while(CY){DQ=0;//送出低电平复位信号DelayX0us(48);//延时至少480usDQ=1;//释放数据线DelayX0us(6);//等待60usCY=DQ;//检测存在脉冲DelayX0us(42);//等待设备释放数据线}} 第57页共57页/****************************************从DS18B20读1字节数据**************************************/unsignedcharDS18B20_ReadByte(){unsignedchari;unsignedchardat=0;for(i=0;i<8;i++)//8位计数器{dat>>=1;DQ=0;//开始时间片_nop_();//延时等待_nop_();DQ=1;//准备接收_nop_();//接收延时_nop_();if(DQ)dat|=0x80;//读取数据DelayX0us(6);//等待时间片结束}returndat;}/****************************************向DS18B20写1字节数据**************************************/voidDS18B20_WriteByte(unsignedchardat){chari;for(i=0;i<8;i++)//8位计数器{DQ=0;//开始时间片_nop_();//延时等待_nop_();dat>>=1;//送出数据 第57页共57页DQ=CY;DelayX0us(6);//等待时间片结束DQ=1;//恢复数据线}}/*******************************************************从DS18B20读取温度值函数******************************************************/voidread18b20(void){unsignedcharTPL,TPH;DS18B20_Reset();//设备复位DS18B20_WriteByte(0xCC);//跳过ROM命令DS18B20_WriteByte(0x44);//开始转换命令//while(!DQ);//等待转换完成DS18B20_Reset();//设备复位DS18B20_WriteByte(0xCC);//跳过ROM命令DS18B20_WriteByte(0xBE);//读暂存存储器命令TPL=DS18B20_ReadByte();//读温度低字节,低4位为小数部分TPH=DS18B20_ReadByte();//读温度高字节,高5位为符号位Temp_H=((TPL&0xF0)>>4)|((TPH&0x07)<<4);Temp_L=0x00;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭