基于CAN总线的智能家居控制(毕业设计)

更新时间:2024-05-15 10:48:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编号:

毕业设计(论文)说明书

课 题: 基于CAN总线的智能家居控制

学 院: 电子工程与自动化学院

专 业: 自动化 学生姓名: 学 号: 指导教师单位: 姓

名:

职 称:

题目类型: 理论研究 实验研究 √ 工程设计 工程技术研究 软件开发

2012年 5 月 10 日

摘 要

进入二十一世纪以来,借助计算机和互联网技术的发展,信息家电已经越来越多的出现在人们的生活之中,伴随着科学技术的进步,家居智能化正以前所未有的速度走进寻常百姓之家。以单片机为核心结合计算机构成的智能家居产品具有体积小、功能强、应用面广,使用灵活、价格便宜、工作可靠等优点。

本文设计基于CAN总线的智能家居控制系统,研究其硬件电路设计、软件程序设计和CAN总线的智能家居领域的应用。该控制系统从结构上来划分,可以分为两个层次,分别为上位机监控和下位机各节点控制。上位机监控主要由监控计算机PC机和CAN-RS232总线协议转换器构成,下位机由单片机和CAN总线智能节点数据采集模块构成,完成对家居的环境状况进行实时监控。

系统设计两路CAN总线节点,采用温度传感器DS18B20、湿度传感器DHT11、烟雾传感器MQ-2、BIS0001人体红外传感器,巡回检测室内温度湿度,火情盗情等环境信息。并通过CAN-RS232协议转换将数据发至PC机记录和监控,PC机可查询当前记录和历史记录,上位机和CAN节点分别设有报警功能,可以通过按键设定报警上限和下限。系统硬件包括主控芯片STC89C52RC,CAN总线通信模块,串行通信接口电路,烟雾浓度检测模块,人体移动红外检测模块,温湿度检测电路,液晶显示电路等。系统软件设计包括VB上位机监控程序,CAN-RS232总线协议转换程序,CAN总线智能节点通信程序,按键设定值程序,液晶显示程序等。

关键词:智能家居;CAN总线;传感器;Visual Basic

Abstract

Since the beginning of the 21st century, with the development of computer and Internet technology, information appliances have been more and more in people's life, along with advances in science and technology, the intelligent home is at an unprecedented rate into the homes of ordinary people at home. Small size, wide range of applications, the use of flexible, cheap, reliable and advantages of microcontroller as the core, combined with computer composed of smart home products.

The design is based on the CAN bus smart home control systems, to study the hardware circuit design, software programming, and CAN bus application in the field of smart home. The control system up from a structural division can be divided into two levels, respectively, for each node of the PC monitoring and machine control. PC monitoring of monitoring computer PC, CAN-RS232 bus protocol converter, the next crew of data acquisition module of the microcontroller and the CAN bus intelligent node to complete the real-time monitoring of the state of the environment of the home.

System designs two CAN bus node, using temperature sensor DS18B20, humidity sensor DHT11, smog sensor MQ-2, BIS0001 infrared sensor, to detect circuitly indoor temperature and humidity, fire Pirates of the situation and other environmental information. Recording and monitoring of the data sent to the PC, the PC machine can check the records and history, the host computer and the CAN nodes are equipped with an alarm function, alarm upper and lower limits can be set through the button and the CAN-RS232 protocol conversion. The system hardware consists of the master chip STC89C52RC,CAN bus communication module, serial communications interface circuits, smoke concentration detection module, infrared detection module of human motion, temperature and humidity detection circuit, LCD circuits, etc.. System software design, including VB PC monitoring program, the CAN-RS232 bus protocol conversion process, the intelligent node of the CAN bus communication program button to set the value of the program, LCD program.

Keywords: Smart Home; the CAN bus; sensor; Visual Basic

目 录

引言 ............................................................................................................................................................. 1 1 课题研究内容 ................................................................................................................................ 2

1.1 课题背景 ............................................................................................................................................ 2 1.2 课题意义 ............................................................................................................................................ 2

2 系统设计概述 ................................................................................................................................ 3

2.1 设计任务 ............................................................................................................................................ 3 2.2 系统设计原理 ................................................................................................................................... 3 2.3 系统设计方案 ................................................................................................................................... 3 2.4 系统可行性分析 ............................................................................................................................... 4

3 CAN总线概述 ................................................................................................................................. 6

3.1 CAN总线简介 .................................................................................................................................... 6 3.2 CAN总线帧类型 ................................................................................................................................ 6 3.2.1 数据帧 ............................................................................................................................................ 6 3.2.2 远程帧 ............................................................................................................................................ 7 3.2.3 错误帧 ............................................................................................................................................ 8 3.2.4 过载帧 ............................................................................................................................................ 8 3.3 CAN报文过滤 .................................................................................................................................... 8 3.4 CAN错误处理 .................................................................................................................................... 8 3.4.1 错误检测 ........................................................................................................................................ 8 3.4.2 错误标定 ........................................................................................................................................ 9

4 硬件电路设计 .............................................................................................................................. 10

4.1 单片机最小系统 ............................................................................................................................. 10 4.1.1 单片机STC89C52RC................................................................................................................... 10 4.1.2 最小系统电路 ............................................................................................................................. 11 4.2 CAN总线模块 .................................................................................................................................. 12 4.2.1 CAN控制器SJA1000 ................................................................................................................. 12 4.2.2 CAN收发器TJA1050 ................................................................................................................. 17 4.2.3 CAN模块电路 .............................................................................................................................. 17 4.3 串口通信 .......................................................................................................................................... 18 4.3.1 电平转换芯片MAX232 .............................................................................................................. 18 4.3.2 串口通信电路 ............................................................................................................................. 18 4.4 温湿度检测模块 ............................................................................................................................. 19

4.4.1 温度传感器DS18B20 ................................................................................................................ 19 4.4.2 湿度传感器DHT11 ..................................................................................................................... 19 4.4.3 温湿度检测电路 ........................................................................................................................ 20 4.5 烟雾检测模块 ................................................................................................................................. 20 4.6 红外人体感应模块 ........................................................................................................................ 20 4.7 液晶显示模块 ................................................................................................................................. 21 4.8 报警电路 .......................................................................................................................................... 22 4.9 按键电路 .......................................................................................................................................... 22

5 系统软件设计 .............................................................................................................................. 23

5.1 软件整体设计 ................................................................................................................................. 23 5.2 CAN通信程序设计 ......................................................................................................................... 24 5.3 RS-232通信程序设计................................................................................................................... 27 5.4 LCD1602液晶显示程序设计 ....................................................................................................... 27 5.5 按键设定值程序设计 .................................................................................................................... 29 5.6 温度采集程序设计 ........................................................................................................................ 29 5.7 湿度采集程序设计 ........................................................................................................................ 31 5.8 应用软件平台简介 ........................................................................................................................ 33 5.8.1 Keil C51 ...................................................................................................................................... 33 5.8.2 Visual Basic 6.0 .................................................................................................................... 34

6 系统调试 ........................................................................................................................................ 37

6.1 硬件电路调试 ................................................................................................................................. 37 6.2 系统联调 .......................................................................................................................................... 37

7 总结和展望 ................................................................................................................................... 41 谢 辞 ...................................................................................................................................................... 42 参考文献 ................................................................................................................................................ 43 附 录 ...................................................................................................................................................... 44

第 1 页 共 57 页

引言

科技的进步,带来经济飞速发展的同时,也给人们的生活带来无限的惊奇。不断更新的生活方式,使得越来越多的人追求对生活的舒适度和享受度。智能家居作为新生力量呼之欲出,自然地走进我们的生活,随之,引领新一代的数字家庭生活。通过分析现有的智能家居解决方案,智能家居包括四个基本的功能模块:家庭对外通信模块、家庭网关模块、家庭安全防范模块、家庭设备自动控制模块。

本课题提取家庭安全防范模块研究,设计基于CAN总线的智能家居控制系统。安全防范就是保障人们在生产、生活和一切社会活动中人身生命、财产和生产、生活设施不受侵犯,防止侵害行为的总称。智能家居在满足人们舒适、方便生活的同时,也要求为家庭提供安全防范方面的保障。它包含的内容有防止入侵、盗窃、破坏、爆炸等,它的原则是“以防为主,打防并举”,安全防范工作贯彻“人防、技防、物防”相结合的方针政策。因此,智能家居将家庭安全防范模块定义为其四个基本要素之一。课题将安全防范的内容分为两部分,分别是家庭内部环境安全、家庭对外非法入侵预防,这两方面都体现出现代技术在智能家居中的应用。在本课题中,由于条件限制,并没有对家庭安防模块进行实验,对于家庭内部环境安全,采用传感器检测室内的温湿度和烟雾浓度。对于家庭对外非法入侵预防,采用人体移动红外检测。

本课题采用CAN总线设计智能家居组网系统,可以设计多路CAN智能节点,构成分布式控制系统,实现同时对多个居室的环境状况进行监控。CAN总线的数据通信具有突出的可靠性、实时性和灵活性,通信介质可以是双绞线、同轴电缆或光导纤维。因此,CAN总线在智能家居系统中得到广泛应用。

第 2 页 共 57 页

1 课题研究内容

1.1 课题背景

二十一世纪是信息技术高速发展的时代,社会的信息化唤起了人们对住宅智能化及家居智能化的要求,智能住宅己成为中国房地产市场的主流。计算机行业和家电行业、电信行业、安防监控行业的互相渗透、互相融合,使信息时代的未来家居生活逐步成为现实。建设部要求根据不同消费者的需要,推动家居数字化、建筑智能化,可见中国智能家居市场潜力巨大。

智能家居安防系统是集信息技术、网络技术、传感技术、无线电技术、模糊控制技术等多种技术为一体的综合应用。智能家居安防系统具有使用方便、安装简单、准确及时的特点,非常适合居家安全防范措施的实施,它可以检测居室内的煤气的泄漏情况、是否有火灾发生、是否发生水管爆裂、是否有小偷入室盗窃等危险的情况,并自动采取一定措施尽量把损失降到最小值,还以一定的无线方式去通知居室主人,让主人可以采取一定的措施去处理这种不好事件,这样就可以自动地与人为地去采取措施,去做到最好的安防。因此,随着人们生活水平的不断提高,白天离家去上班的人越来越多,这系统也会越来越受到青睬,加上目前智能安防系统的设计领域还很不完善,可以借以开发的无线网络条件也越来越成熟,把这方面的设计产品化,将会有很广阔的市场。 1.2 课题意义

目前国内越来越多智能化的商品已经进入到人们的生活,特别是在商品房小区里,人们都知道“安全第一”,所以家居安防的第一要义就是要保证家居的安全,给家居主人一些已经发生了的危险情况的损失降到最低的程度。

据预测,今后几年智能家居市场会进入一个行业整合阶段,最终可能会出现一些规模较大、品牌影响较好的智能家居生产厂家。从产品角度来讲,以后的智能家居产品会朝着实用化、傻瓜化(操作简单)、模块化的方向发展,所谓模块化就是产品开发商把智能家居产品做成模块化的,可以根据用户的实际需求任意搭配。这样不仅可满足不同层次用户的需要,也可以省去不必要的端口模块的费用浪费。

目前国内已在经济发达地区如北京、深圳、广州、上海等地建立了一批智能住宅小区,而且正快速地向其他地区辐射,建设部已将智能化住宅小区列为国家重点发展方向。预计未来5到10年可以形成相当规模的市场容量。届时,智能住宅的发展还将带动信息家电、物业管理等相关行业的发展。

所以,智能家居的发展前景非常地好,且技术的研究还有很大的空间。

第 3 页 共 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智能节点1 CAN智能节点2 120? 120? 上位监控计算机 RS232 CAN-RS232总线 协议转换器 CAN总线 图2.1 系统整体结构图

第 4 页 共 57 页

该系统结构由上位监控计算机、CAN-RS232总线协议转换器和CAN智能节点等三部分构成。总线两端各有加一个120欧的电阻,对匹配总线阻抗起着相当重要的作用,将大大提高数据通信的抗干扰能力。上位监控计算机及监控软件组成该系统的监控层,主要负责对系统数据的接收与管理、控制命令的发送以及各单元环境参数实时显示。

图2.2 C AN-RS232协议转换器结构图

LED指示模块用于指示这个模块的运行情况,便于管理和调试。按键和LCD1602用于设定温湿度的上下限并显示,设定之后通过CAN总线发送到各个智能节点。

图2.3 CAN智能节点结构图

LED指示 CAN控制器 SJA1000 单片机 电平转换 MAX232 CAN收发器 TJA1050 LCD1602 CAN总线

RS232 按键电路 温湿度检测模块 CAN总线模块 单片机 CAN总线

报警电路 红外检测模块 烟雾检测模块 单片机通过各传感器采集环境信息,按CAN规范规定的格式将其写入CAN控制器的发送缓冲区,并启动发送命令,把数据发送到CAN总线上。对于接收过程,CAN总线上自动接收数据,并经过滤后存人CAN接收缓冲区,向单片机发出中断请求,此时单片机可从CAN接收缓冲区读取要接收的数据。 2.4 系统可行性分析

CAN总线通信是本系统需要解决的关键问题,考虑到整个系统的可靠性,并结合考虑成本,决定采用CAN总线模块,此模块主要包括CAN总线控制器SJA1000和CAN

第 5 页 共 57 页

总线收发器TJA1050。经过测试,CAN模块工作稳定可靠。

在传感器的选择上以方便使用、功率低、准确性高、实用性强为出发点去考虑,采用以下传感器:DS18B20、DHT11、红外人体感应模块、烟雾传感器MQ-2。其他的器件均采用经济常用的LCD1602、蜂鸣器等。

第 6 页 共 57 页

3 CAN总线概述

3.1 CAN总线简介

控制器局域网 CAN 为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN 的应用范围很广,从高速的网络到低价位的多路接线都可以使用 CAN。在汽车电子行业里,使用 CAN 连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1 Mbit/s。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。

根据 ISO/OSI 参考模型,CAN总线由数据链路层和物理层组成,功能由CAN控制器来实现。数据链路层包括逻辑链路控制LLC子层和介质访问控制MAC子层,逻辑链路控制子层 (LLC)的作用范围如下:为远程数据请求以及数据传输提供服务;确定由实际要使用的LLC 子层接收哪一个报文;为恢复管理和过载通知提供手段。MAC子层的作用主要是传送规则,包括控制帧结构、执行仲裁、错误检测、出错标定、故障界定。总线上什么时候开始发送新报文,什么时候开始接收报文,均在MAC子层里确定。位定时的一些普通功能也可以看作是 MAC子层的一部分。理所当然,MAC子层的修改是受到限制的。物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。同一网络的物理层对于所有的节点当然是相同的。尽管如此,在选择物理层方面还是很自由的,物理通信介质可以是双绞线、同轴电缆或光导纤维。

总线可以有两个互补的逻辑值之一:“显性”或“隐性”。在“显性”和“隐性”位同时传送期间,总线值将是“显性”。例如,在实现线与时,“显性”代表一个逻辑“0”,“隐性”代表逻辑“1”。 3.2 CAN总线帧类型

CAN总线有两种不同的帧格式,不同之处为识别符的长度不同:具有11位识别符的帧称之为标准帧,含有29位识别符的帧为扩展帧。本课题使用扩展帧进行通信,因此,只对扩展帧进行介绍。

CAN报文传输由以下4个不同的帧类型所表示和控制: 数据帧:数据帧将数据从发送器传输到接收器。

远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。 错误帧:任何单元检测到总线错误就发出错误帧。

过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。 3.2.1 数据帧

数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0 。

帧起始:帧起始(SOF)标志数据帧和远程帧的起始,仅由一个“显性”位组成。只在总线空闲时才允许任何节点开始发送(信号)。

仲裁场:扩展格式里,仲裁场包括 29位识别符、SRR位、IDE 位、RTR位。其识别

第 7 页 共 57 页

符由 ID-28... ID-0,包含两个部分:11位基本ID、18位扩展ID。基本ID按 ID-28 到ID-18 的顺序发送。它相当于标准识别符的格式。基本 ID定义扩展帧的基本优先权。扩展ID包括18位。它按 ID-17 到ID-0 顺序发送。

图3.1 CAN数据帧仲裁场结构图

RTR的全称为“远程发送请求位(Remote Transmission Request BIT)”。RTR位在数据帧里必须为“显性”,在远程帧里必须为“隐性

SRR的全称是“替代远程请求位(Substitute Remote Request BIT)”。SRR是一隐性位。它在扩展格式的标准帧RTR位位置,因此代替标准帧的RTR位。 因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的。

IDE 的全称是“识别符扩展位(Identifier Extension Bit )”,标准格式里的IDE 位为“显性”,而扩展格式里的IDE 位为“隐性”。

控制场:数据长度代码指示数据场里的字节数量。数据长度代码为4 个位,所以数据场的字节数可以是0~8个字节。

数据场:数据场由数据帧里的发送数据组成。它可以为0 ~8 个字节,每字节包含8个位,首先发送 MSB。

CRC场:CRC场包括CRC序列(CRC SEQUENCE),其后是CRC界定符(CRC DELIMITER )。 应答场:应答场长度为2 个位,包含应答间隙(ACK SLOT )和应答界定符(ACK DELIMITER)。在ACK场(应答场)里,发送站发送两个“隐性”位。当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK SLOT )期间(发送 ACK信号)向发送器发送一“显性”位以示应答。

帧结尾:每一个数据帧和远程帧均由一标志序列定界。这个标志序列由7个“隐性”的位组成。 3.2.2 远程帧

通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧结尾。与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0...8 的任何数值)。此数值是相应于数据帧的数据长度代码。

第 8 页 共 57 页

3.2.3 错误帧

错误帧由两个不同的场组成。第一个场用是不同站提供的错误标志(ERROR FLAG)的叠加。第二个场是错误界定符。错误标志有两种形式的错误标志:主动错误标志和被动错误标志。错误界定符包括8个“隐性”的位。 3.2.4 过载帧

过载帧包括两个位场:过载标志和过载界定符。过载标志由6 个“显性”的位组成,过载界定符包括8 个“隐性”的位。有种过载的情况,这三种情况都会引发过载标志的传送:

? 接收器的内部情况(此接收器对于下一数据帧或远程帧需要有一延时)。 ? 在间歇的第一和第二字节检测到一个“显性”位。

? 如果CAN节点在错误界定符或过载界定符的第8 位(最后一位)采样到一个显

性位,节点会发送一个过载帧(不是错误帧)。错误计数器不会增加。

3.3 CAN报文过滤

报文滤波取决于整个识别符。允许在报文滤波中将任何的识别符位设置为“不考虑”的可选屏蔽寄存器,可以选择多组的识别符,使之被映射到隶属的接收缓冲器里。

如果使用屏蔽寄存器,它的每一个位必须是可编程的,即,他们能够被允许或禁止报文滤波。屏蔽寄存器的长度可以包含整个识别符,也可以包含部分的识别符。 3.4 CAN错误处理 3.4.1 错误检测

有以下5 种不同的错误类型(这5种错误不会相互排斥) ? 位错误(Bit Error )

单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATION FIELD )的填充位流期间或应答间隙(ACK SLOT )发送一“隐性”位的情况是例外的—— 此时,当监视到一“显性”位时,不会发出位错误。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误。

? 填充错误(Struff Error )

如果在使用位填充法进行编码的信息中,出现了第 6 个连续相同的位电平时,将检测到一个填充错误。

? CRC错误(CRC Error)

CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。

? 形式错误(Form Error )

当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误。(备注:

第 9 页 共 57 页

接收器的帧末尾最后一位期间的显性位不被当作帧错误)

? 应答错误(Acknowledgment Error)

只要在应答间隙(ACK SLOT )期间所监视的位不为“显性”,则发送器会检测到一个应答错误。 3.4.2 错误标定

检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。

只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。

第 10 页 共 57 页

4 硬件电路设计

4.1 单片机最小系统 4.1.1 单片机STC89C52RC

CAN智能节点和CAN-RS232采用STC89C52RC单片机作为主控芯片。它是一款兼容51内核的增强型8位机,片上资源丰富,抗干扰能力突出。

STC89C52有如下特点:40个引脚,8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,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,此引脚应悬浮;

第 11 页 共 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.0 10 RXD(串行输入口); P3.1 11 TXD(串行输出口);P3.2 12 INT0(外部中断0);P3.3 13 INT1(外部中断1);P3.4 14 T0(器0外部输入);P3.5 15 T1(定时器1外部输入);P3.6 16 WR(外部数据存储器写脉冲);P3.7 17 RD(外部数据存储器读脉冲)。 4.1.2 最小系统电路

图4.2 单片机最小系统图

第 12 页 共 57 页

单片机最小系统电路很简单,包括部分外围电路:复位电路和晶振电路。在复位电路上电的瞬间,RC电路充电,由于电容的电压不能突变,所以RST引脚出现高电平。RST引脚出现的高电平将会随着对电容的充电过程而逐渐回落,为保证正确复位,RST引脚出现的高电平需要持续两个机器周期以上的时间。因此,需要合理选择复位电路的电阻和电容,通常取10K和10uf。 4.2 CAN总线模块 4.2.1 CAN控制器SJA1000 ? SJA1000概述

SJA1000是一种独立控制器用于移动目标和一般工业环境中的区域网络控制(CAN),它是PHILIPS半导体PCA82C200 CAN控制器(BasicCAN)的替代产品,而且它增加一种新的工模式PeliCAN,这种模式支持具有很多新特性的CAN 2.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 输出到物理线路上。

第 13 页 共 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.3 SJA1000引脚图 ? 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”正常模式;

第 14 页 共 57 页

MOD.0(RM):复位模式,“1”进入复位模式,“0”退出复位模式,进入正常模式; ② 命令寄存器(CMR):CAN地址“1”。命令位初始化CAN控制器传输层的一个动作。这个寄存器是只写的,所有位的读出值都是逻辑0。因处理的需要,两条命令之间至少有一个内部时钟周期。内部时钟周期的频率是外部振荡器的一半。

表4.1 SAJ1000命令寄存器(CMR)各位功能说明

③ 状态寄存器(SR):CAN地址“2”。状态寄存器反映CAN控制器的状态。状态寄存器对CPU来说是只读内存。

表4.2 SJA1000状态寄存器(SR)各位功能说明

④ 中断寄存器(IR):CAN地址“3”。中断寄存器允许中断源的识别。当这个寄存器的一位或多位被置位时,CAN中断将反映到CPU 。CPU读此寄存器的时候除了接收中断外的所有位都被复位,中断寄存器对CUP来说是只读存储器。

表4.3 SJA1000中断寄存器(IR)位功能说明

⑤ 中断使能寄存器(IER):CAN地址“4”。这个寄存器能使不同类型的中断源对

第 15 页 共 57 页

CPU有效,这个寄存器对CPU来说是可读/ 写存储器。

表4.4 SJA1000中断使能寄存器(IER)位功能说明

⑥ 发送缓冲器(TX):CAN地址“16-28”。发送缓冲器被分为描述符区和数据区,描述符区的第一个字节是帧信息字节(帧信息)。它说明了帧格式(SFF或EFF)、远程或数据帧和数据长度。SFF有两个字节的识别码,EFF有四个字节的识别码。数据区最多长8个数据字节发送缓冲器长13个字节。

表4.5 SJA1000发送缓冲器列表(扩展帧)

⑦ 接收缓冲器(RX):CAN地址“16-28”。接收缓冲器的列表与前面一节讲述的发送缓冲器很相似,接收缓冲器是RXFIFO 的可访问部分。每条信息分为描述符和数据区。

图4.4 SJA1000接收缓冲器信息存储示意图

第 16 页 共 57 页

⑧ 验收滤波器:在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,CAN控制器才允许将已接收信息存入RXFIFO。验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存(AMRn)定义要接收的信息的位模式在验收代码寄存器中定义相应的验收屏蔽寄存器允许定义某些位为“不影响”(即可为任意值)。

有两种不同的过滤模式可在模式寄存器中选择MOD.3 AFM。单滤波器模式(AFM位是1),双滤波器模式(AFM位是0),本设计使用双滤波模式。

双滤波模式配置可以定义两个短滤波器。一条接收的信息要和两个滤波器比较来决定是否放入接收缓冲器中,至少有一个滤波器发出接受信号,接收的信息才有效。滤波器字节和信息字节之间位的对应关系取决于当前接收的帧格式。

⑨ 总线时序寄存器0、1(BTR0、BTR1):CAN地址6,7。总线定时寄存器0 定义波特率预设值(BRP)和同步跳转宽度(SJW )的值,总线定时寄存器1 定义每个位周期的长度采样点的位置和在每个采样点的采样数目。复位模式有效时这两个寄存器是可以被访问(读/写)的。如果选择的是PeliCAN模式此寄存器在工作模式中是只读的。

表4.6 SJA1000总线时序寄存器0(BTR0)位功能说明

表4.7 SJA1000总线时序寄存器1(BTR1)位功能说明

⑩ 输出控制寄存器(OCR):CAN地址8。输出控制寄存器实现由软件控制不同输出驱动配置的建立。在复位模式中此寄存器可被读/写访问。在PeliCAN 模式的工作模式中这个寄存器是只读的,在BasicCAN 模式中总是FFH。

表4.8 SJA1000输出寄存器(OCR)位功能说明

表4.9 输出寄存器(OCR)OCMODE位的说明

第 17 页 共 57 页

4.2.2 CAN收发器TJA1050

TJA1050是控制器区域网络(CAN)协议控制器和物理总线之间的接口。TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。TJA1050有如下特征:与“ISO 11898”标准完全兼容;速度高(最高可达1M波特);低电磁辐射(EME); 具带有宽输入范围的差动接收器,可抗电磁干扰(EMI);没有上电的节点不会对总线造成干扰;发送数据(TXD)控制超时功能;发送禁能时的静音模式;在暂态时自动对总线引脚进行保护;输入级与3.3V装置兼容;热保护;对电源和地的防短路功能;可以连接至少110个节点。

图4.5 TJA1050引脚图 表4.10 TJA1050引脚说明

4.2.3 CAN模块电路

STC89C52

TJA1050

图4.6 CAN模块电路接口图

电路主要由四部分构成: 微控制器STC89C52、独立CAN通信控制器SJA1000、 CAN

第 18 页 共 57 页

总线收发器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 电平转换芯片MAX232

MAX232芯片是专门为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。该器件包含2个驱动器2个接收器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接收器将TIA/EIA-232-F电平转换成5-V TTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。MAX232芯片引脚图如下所示:

图4.7 MAX232引脚图 引脚介绍:

第一部分是电荷泵电路。由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)。 4.3.2 串口通信电路

MAX232 外围需要4个电解电容C1 、C2 、C3 、C4 ,是内部电源转换所需电容。其

第 19 页 共 57 页

取值均为1μF/25V。宜选用钽电容并且应尽量靠近芯片。C5为0.1μF的去耦电容。

图4.8 RS-232串口通信电路原理图

4.4 温湿度检测模块

本检测模块主要通过对家居内的温度湿度检测来判为是否有漏水或发生火灾的危险,温度传感器用DS18B20,湿度传感器采用DHT11。 4.4.1 温度传感器DS18B20

DS18B20输出引脚需外接1个4.7K的上拉电阻,使转换后的数据能够更好地传送到单片机。该器件测得的温度值是以16位带符号位扩展的二进制补码形式读出,数据是通过单总线接口以串行的方式读出。

图4.9 DS18B20应用电路

4.4.2 湿度传感器DHT11

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。其典型应该电路如图4.10,在第二脚外接1个5K的上接电阻。

图4.10 DHT11应用电路

第 20 页 共 57 页

4.4.3 温湿度检测电路

图4.11 温湿度检测电路 4.5 烟雾检测模块

本设计使用MQ-2烟雾传感器模块检测居室内的烟雾状况,以分析是否发生火情。MQ-2烟雾传感器模块工作电压为5V,TTL电平输出,可以和单片机I/O口直接连接。当检测到你烟雾浓度大于设定值时,输出低电平。MQ-2烟雾传感器模块如下:

图4.12 MQ-2烟雾传感器模块电路图

图4.13 MQ-2模块与单片机接口电路

4.6 红外人体感应模块

BISS0001是一款传感信号处理集成电路。配以热释电红外传感器和少量外接元器件构成被动式的热释电红外开关。用于安全区域的自动灯光、照明和报警系统。

第 21 页 共 57 页

图4.14 BISS0001传感器应用电路

本设计使用红外人体感应模块来检测室外入侵状况,当人进入其感应范围时,输出高电平;当人离开感应范围时,则自动延时关闭高电平,输出低电平。

图4.15 红外人体感应模块与单片机接口电路 4.7 液晶显示模块

工业字符型液晶,能够同时显示 16x02 即 32 个字符。(16 列 2 行)1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD,多出来的 2 条线是背光电源线。实物图与引脚图分别如图4.16所示。

图4.16 LCD1602实物图与引脚图

LCD1602引脚说明:VCC(15 脚)和地线 GND(16 脚),其控制原理与 14 脚的 LCD 完全一样,其中模块的引脚说明如下表4.10所示。

第 22 页 共 57 页

表4.10 LCD1602引脚说明

编号 符号 1 2 3 4 5 6 VSS VDD VL RS RW E 引脚说明 电源地 电源正极 显示偏压信号 数据/命令选择端 读写使能端 使能信号 编号 符号 9 10 11 12 13 14 D2 D3 D4 D5 D6 D7 引脚说明 Data I/O Data I/O Data I/O Data I/O Data I/O Data I/O 4.8 报警电路

本设计采用普通三极管9012和蜂鸣器组成报警电路,如图4.17所示。

图4.17 报警电路

4.9 按键电路

设计中,使用按键加LCD1602来设计各个节点的温湿度上限和下限,设计四个按键。

图4.18 按键电路

第 23 页 共 57 页

5 系统软件设计

5.1 软件整体设计

CAN-RS232协议转换器通过CAN总线接收检测节点的数据信息,并通过串口发送到上位机,CAN-RS232协议转换器还负责设定检测节点的温湿度的上限和下限。

EXT键按下? Y CAN发送设定值

CAN接收标志 RX_flag = 1? Y

N N Y N 开始 系统初始化 开中断 按键扫描 SET键按下? 按键设定值

串口发送数据 结束 图5.1 CAN-RS232协议转换器程序流程图

第 24 页 共 57 页

CAN检测节点的主要包括:CAN通信程序,环境参数检测程序。其程序流程图如图5.2所示。

N 需要报警?

结束 CAN发送数据 Y Y CAN接收中断? N 开始 系统初始化 开中断 改变温湿度上下限 检测环境参数 报警 图5.2 CAN检测节点总程序流程图 5.2 CAN通信程序设计

CAN总线通信是通过CAN控制器SJA1000来实现的,在CAN收发数据之前必须对

第 25 页 共 57 页

SJA1000进行初始化。由于SJA1000与微处理器的接口是以外部存储器的方式,在编写CAN通信程序之前必须确定SJA1000的基地址和复位引脚。本设计复位引脚接单片机的P2.0,基地址为0x8000。设计中,以查询的方式通过CAN发送数据,中断的方式接收数据。需要发送数据的时候,先根据SJA1000的状态寄存器,判断是否可以发送数据,如果可以,将数据写入发送缓冲区,然后使能发送请求。当有接收缓冲区有数据时,将会置位接收中断标志位,在接收中断服务程序中,即可读出接收缓冲区的内容。

SJA1000初始化过程如图5.3所示。

结束 图5.3 SJA1000初始化流程图

开始 SJA1000硬件复位 SJA1000进入复位模式 设置通信波特率 配置时钟分频寄存器 配置模式寄存器 配置验收代码/屏蔽寄存器 配置总线时序寄存器 配置输出寄存器 退出复位模式

第 26 页 共 57 页

CAN发送数据过程如图5.4所示,发送数据之前,必须正确初始化SJA1000。

结束 图5.4 CAN发送数据流程图

CAN接收数据过程如图5.5,接收数据之前,必须正确初始化SJA1000。

退出接收中断 清空接收缓冲区 置位接收标志 读取接收缓冲区内容 进入接收中断 使能发送请求 将数据写入发送缓冲区 Y 可以发送? N 开始 读状态寄存器 图5.5 CAN接收数据流程图

第 27 页 共 57 页

5.3 RS-232通信程序设计

RS-232串口异步通信过程中,字符是按帧格式进行传送的,异步通信的帧格式如表5.1所示。

表5.1 异步通信的帧格式

在使用串口收发数据之前,需要对串口通信相关的各个寄存器进行初始化(设置工作模式等等),设置合适的通信波特率,并开串口中断。串口发送数据的过程,把数据写入SBUF,则启动发送。在发送结束后,发送中断标志位TI被置位,要发送下一帧数据,必须对TI软件清零。串口接收数据过程,一般通过中断接收数据,当接收缓冲器SBUF中的数据时,接收中断标志位RI被置位,在串口中断服务中,读出SBUF中的内容,RI同样需要软件清零。 5.4 LCD1602液晶显示程序设计

1602液晶的基本的操作分为以下四种:

状态字读操作:输入 RS=低、RW=高、EP=高; 输出:DB0~7读出为状态字; 数据读出操作:输入 RS=高、RW=高、EP=高; 输出:DB0~7读出为数据; 指令写入操作:输入 RS=低、RW=低、EP=上升沿; 输出:无; 数据写入操作:输入 RS=高、RW=低、EP=上升沿; 输出:无。 读操作的时序图如图5.6。

图5.6 LCD1602读操作时序图

第 28 页 共 57 页

写操作的时序图如图5.7。

图5.7 LCD1602写时序图

LCD1602初始化过程如图5.8所示。

图5.8 LCD1602初始化程序流程图

写指令Ox38设置显示模式 延时5ms左右 写指令Ox38设置显示模式 延时5ms左右 写指令Ox38设置显示模式 写指令Ox08关显示 写指令Ox01显示清屏 写指令Ox06显示光标移动设置 写指令Ox0C显示开及光标设置 第 29 页 共 57 页

5.5 按键设定值程序设计

设计中,使用4个进行设定温湿度的上限值和下限值,分别为SET、ADD、EXT和PAGE。第一次按下SET键时,进入按键设置模式,在设置模式中,SET键用于移动LCD1602的显示光标。ADD键用于对所在光标位置进行加1,范围为0~9。EXT键用于退出按键设置模式。PAGE键用于切换显示温度上下限和湿度上下限。

5.6 温度采集程序设计

DS18B20需要严格的单总线协议以确保数据的完整性。协议包括集中单总线信号类

开始 按键扫描 SET键按下? N Y 进入按键设置模式 扫描按键 SET键按下 ADD键按下 EXT键按下 移动光标 加1处理 退出设置模式 结束 图5.9 按键设定值程序流程图

第 30 页 共 57 页

型:复位脉冲、存在脉冲、写0、写1、读0和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。

在初始化期间,总线控制器拉低总线并保持480us,以发出一个复位脉冲,然后释放总线,进入接收状态。单总线由5K上拉电阻拉高到高电平。当DS18B20检测到I/O引脚的上升沿后,等待15-60us,然后发出一个由60-240us低电平信号构成的存在脉冲。

图5.10 DS18B20初始化时序

图5.11 DS18B20读/写时序

第 31 页 共 57 页

DS18B20温度采集程序流程图如图5.12所示。

图5.12 DS18B20温度采集程序流程图 5.7 湿度采集程序设计

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。

DHT11为单线双向串行接口,DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:

一次完整的数据传输为40bit,高位先出。 数据格式: 8bit湿度整数数据+8bit湿度小数数据

+8bi温度整数数据+8bit温度小数数据

+8bit校验和

数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。

开始 复位 读数据 写数据 读取温度值 返回温度值 结束 第 32 页 共 57 页

图5.13 DHT11通讯过程

数字0信号表示方法如图5.14所示。

图5.14 DHT11数字0表示方法

数字1信号表示方法如图5.15所示。

图5.15 DHT11数字1表示方法

第 33 页 共 57 页

湿度采集程序设计流程图如图5.16所示。

结束 图5.16湿度采集程序设计流程图

5.8 应用软件平台简介 5.8.1 Keil C51

Keil C51软件是众多单片机应用开发的优秀软件之一,它集编辑、编译、仿真于一体,支持汇编、PLM 语言和C 语言的程序设计。

程序编译、调试的基本过程如下:

(1) 建立一个新的工程文件New Project。

(2) 保存文件,选择保存路径,输入工程文件的名字。 (3) 选择设计使用的单片机的型号。 (4) 建立一个新的源程序文件。

(5) 在弹出的程序文本框中输入设计的程序,然后以后缀扩展名为.C保存。 (6) 回到编辑界面后,用右键单击Sourece Group 1,在弹出的快捷菜单中选择Add Files to Group’ Sourece Group 1’选项,选择设计编译文件。

(7) 然后对目标进行一些设置,在Options for Target’Target 1’中进行相应参数的设置。

(8) 编译程序,选择【Project】/【Rebuild all target files 】选项,开始编译程序。

(9) 编译完毕后,选择【Debug】/【Start/Stop Debug Session】 选项,进入仿真环境。

在调试程序过程中,如果定义的全局变量与数组过多,会导致代码存储区和RAM不够容纳代码空间的现象,出现数据代码区溢出等问题。针对这种现象,提出两个解决方

开始 写命令初始化 读湿度值 写数据 第 34 页 共 57 页

法,对于全局数组一般在定义声明为idata,尽量使用内部变量和子函数。 5.8.2 Visual Basic 6.0

Visual Basic 6.0(以下简称VB) 是一种功能强大、简单易学的程序设计语言。它不但保留了原先Basic语言的全部功能,而且还增加了面向对象程序设计功能。它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,而且利用ActiveX控件MSComm还能十分方便地开发出使用计算机串口的计算机通信程序。

目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据采集和通信,而上位机通常以基于图形界面的Windows核心为操作平台,为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。单片机和PC的通信是通过单片机和PC串口之间的硬件连接实现的。 (1) MSComm控件介绍

MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。本文的两个例子均采用该方式。另一种为查询方式,在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。在程序空闲时间较多时可以采用该方式。

利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。

以下是MSComm控件的常用属性和方法: Commport:设置或返回串口号。 Settings:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口状态。 InputMode:设置或返回接收数据的类型。 Inputlen:设置或返回一次从接收缓冲区中读取字节数。 InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。 InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。 Input: 从接收缓冲区中读数据并清空缓冲区,该属性设计时无效,运行时只读。 OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。 OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。 Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

第 35 页 共 57 页

CommEvent:这是一个非常重要的属性。该属性设计时无效,运行时只读。一旦串

口生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。

控件通信步骤:

① 加入通信部件,也就是MSComm对象; ② 设置通信端口号码,即Commport属性; ③ 设置通信协议,即HandShaking属性; ④ 设置传输速度等参数,即Settings属性; ⑤ 设置其他参数,若必要时在加上其他的属性设置; ⑥ 打开通信端口,即PortOpen属性设成True;

⑦ 送出字符串或读入字符串,使用Input及Output属性;

⑧ 使用完MSComm通信对象后,将通信端口关闭。即PortOpen属性设置成False。 (2) VB数据库访问控件

上位机需要实现数据的保存,数据记录查询等功能,这就需要数据库技术。Visual Basic提供有很多访问数据库的方法,但最方便常用的方法是ADO数据库访问技术。本设计就是基于ADO模型,使用数据库访问控件ADO Data和DataGrid实现对数据库的访问。

① ADO Data控件

ADO Data控件是使用ADO技术访问数据库的具体实现。用户可以使用ADO Data控件快速地创建一个到数据库的连接。ADO Data控件使用Recordset对象支持对存储在数据库中的数据进行访问,并允许将指针从一个记录移动到另一个记录,显示和操纵记录数据。许多其他的数据库操作控件都需要ADO Data控件提供数据源。

ADO Data控件可以执行大部分数据库访问操作,但是它并不能够显示数据库中数据的内容。ADO Data控件通常需要与其他控件结合作用。这些与ADO Data控件结合使用的控件,可以称之为“数据觉察控件”。常用的数据觉察控件包括Data List控件、DataCombo控件和DataGrid控件。当ADO Data控件中的当前记录发生变化时,数据觉察控件的内容也会随之发生变化。ADO Data控件的常用属性及说明如下:

BOF:如果当前记录位于Recordset对象的第一个记录之前,则BOF等于true,否则BOF

等于false。

ConnectionString:指定连接字符串,用于建立到数据源的连接。

EOF:如果当前记录位于Recordset对象的最后一个记录之后,则EOF等于true,否则

EOF等于false。

本文来源:https://www.bwwdw.com/article/c607.html

Top