基于STM32的智能家居系统设计

上传人:tia****g98 文档编号:107932825 上传时间:2022-06-15 格式:DOC 页数:65 大小:1.42MB
返回 下载 相关 举报
基于STM32的智能家居系统设计_第1页
第1页 / 共65页
基于STM32的智能家居系统设计_第2页
第2页 / 共65页
基于STM32的智能家居系统设计_第3页
第3页 / 共65页
点击查看更多>>
资源描述
本科毕业设计(论文)题目名称: 基于STM32的智能家居系统设计 学 院: 计算机科学技术学院 专业年级: 计算机科学与技术(工)12级 学生姓名: 张云朋 班级学号: 1 班 41号 指导教师: 范忠诚 2016 年 6 月 摘 要随着科技的不断发展进步和人们对家居生活要求的逐步变高,智能家居已经得到了人们的认可,而现如今一套完整的智能家居设备价格昂贵,一般的家庭难以承受其高昂的价格,针对此种现象,一款功能稳定全面,但成本低廉的智能家居产品会帮助人们在价格和功能之间找到一条满足人们愿望的出路。此款智能家居采用STM32处理器,技术成熟,程序移植方便,价格低廉。本款家居设备设计包括硬件设计和软件设计两个部分:硬件设计包含 :12864液晶电路、温度湿度传感器电路、烟雾浓度采集电路、ADC转换电路、报警电路、电源电路、光照采集电路和灯光控制部分电路,软件设计包含主程序、数据(温度、湿度,气体浓度,光照)检测及处理、和标准气体标定、ADC数据转换,当气体浓度超限时报警程序。经实验测试结果表明该智能家居设备有自动检测家庭环境指标并可以对采集信息进行及时稳妥的处理,精度高,检测范围广,稳定性好,显示简单,操作简便,抗干扰能力强等优良性能。关键词:ARM-M3;ADC;数据采集与处理;智能家居AbstractAlong with the continuous development of science and technology progress and peoples requirement for household life gradually become tall, intelligent household has gained the recognition of people, now a complete set of intelligent household equipment is expensive, the average family is difficult to afford the high prices, aiming at this phenomenon, a stable overall function, but low-cost intelligent household products can help people find a way out between price and functionality. This intelligent household USES STM32 processor, mature technology, application transplant convenience, low prices. This household equipment design including hardware design and software design of two parts: hardware design includes: 12864 LCD, reactive temperature, humidity sensor circuit, the concentration of the smoke collecting circuit, ADC conversion circuit, alarm circuit, power circuit, acquisition circuit and lighting lighting control circuit, software design includes the main program, data (temperature, humidity, gas concentration, light) detection and processing, and calibration standard gases, ADC data conversion, when gas concentration overrun alarm program. By the experimental test results show that the smart home devices have automatic detection family environment index and can be conducted to collect information to err on the side of the processed on time, high precision, detection range, good stability, display is simple, easy operation, strong anti-interference ability and other excellent properties.Key words: ARMv7-M; ADC; Data acquisition and processing; serial communication目 录摘 要IAbstractII第1章 绪 论11.1 选题背景11.2 课题意义11.3 国内外发展概况11.4 指导思想2第2章 开发工具与MCU简介32.1 STM32F10XX32.2 KEIL MDK5第3章 总体分析与设计73.1 方案分析73.1.1 整体系统方案分析73.1.2 数据采集方案设计83.1.3 数据存储方案分析83.1.4 显示方案分析103.2 功能设计10第4章 详细设计与实现124.1 界面设计124.2 原理图设计134.2.1 数据采集模块144.2.2 温湿度传感器模块154.2.3 烟雾传感模块164.2.4 液晶显示电路设计174.2.5 报警电路的设计194.2.6 时钟模块204.3 业务处理模块设计224.3.1 界面显示任务224.3.2 AD采样及数据处理234.3.3 烟雾传感器284.3.4 温湿度传感器304.4.5 灯光控制与光照检测32第5章 结果分析365.1 硬件设计的结果分析365.1.1 温湿度模块的分析365.1.2 光照模块的分析365.1.3 烟雾检测375.1.4 硬件综合测试375.2 软件设计的结果分析38结 论39致 谢40参考文献41附 录42第1章 绪 论 1.1 选题背景进入21世纪,人们的生活节奏越来越快,生活压力也越来越大,家成为人们最温馨的地方,人们对待自己最温暖舒适的家庭环境要求也随之在不断提高,如今的人们早八晚五的工作,上级的压力,父母长辈的压力,同事之间盲目的攀比等等,早已经将当代人压的喘难以呼吸,人们似乎已经注意到了家是自己的避风港,家居生活得到了人们的广泛关注,如今电子行业的发展速度飞涨,智能产品横飞,先进的科技与人们想要的智能家居生活擦出了美丽的火花-智能家居,时光荏苒,转眼间,智能家居从出现到现如今经历了几十年的漫长发展逐步走向成熟,安全,智能,方便的家居生活得到了广大普通百姓的认可,从企业到个人都无时无刻与它发生着亲密关系,人们已经清楚的看到,智能家居的发展已成必然,他的腾飞亦不可阻挡。1.2 课题意义众所周知智能家居应经崭露头角,近几年一直以良好高速的发展态势在前进,智能家居市场上也开始出现了很多新颖的设备来满足人们的生活需要,但从总体的状况来分析总结,仍有不尽善尽美的地方,最主要两点是标准不统一和权威产品的缺乏。伴随着科技的进步,经济的发展,人们的财富变多的同时,对自己的生活环境的要求水平也的随着变高,智能家居也越发变的受人青睐。家居智能化控制的开发和研究是未来国家经济发展的必然趋势。智能家居控制器可以为系统提供更智能更人性化生活模式,使住户的生活更加便捷,更高效,更能为家庭的日常活动,为快节奏的都是生活减小人们的压力,同时提供巨大方便。而且在现在这个重视健康环保的世界里,智能的为住户提供检测好空气的温度,湿度等检查空气成分让住户安心,放心可以满足人们的个性化需求。同时,智能家居控制器可以根据住户的要求调整方案,紧急事故处理,危机救护等急救控制,充分满足用户的需要。1.3 国内外发展概况智能家居在国内早已经不是一个新兴产业,处于一个导入期与成长期的临界点,大众市场的消费观念还未完全形成,但随着智能家居市场经营者推广的进一步实施,引导消费者的消费方向和新产品的使用等措施的应用,智能家居市场的的活跃只是时间的问题。如今智能家居至今在中国已经历了近13年的发展,从人们刚开始的梦想,到今天真真正正的走进我们的生活,经历了一个反复曲折路。在1994年-1999,渡过智能家居的第一阶段萌芽期/智能小区期,在2000年-2005年期间,迎来了自己的第二阶段开创期,在2006年,经过了5年的发展,智能家居正式进入第三阶段-徘徊期,现如今,我们正在经历他的第四个阶段-融合演变期,自进入2011年以后,产品需求市场明显增长,现阶段房产行业不好,智能家居的进入能否再添新动力受到大家的关注。智能家居的产品需求量增长说明智能家居行业进入了一个新的时间段,接下来的几年的时间里,智能家居一方面进入一个相对快速的发展阶段,另一方面协议与技术标准也开始慢慢走向统一,为标准化生产提供软条件的准备。而良好的势头也吸引了一批商人的加入,开发人员工资不断攀高,新的产品层出不穷,市场竞争越来越激烈。根据美国该行业权威公司PARKS的统计资料显示:1995年,美国一个家庭智能家居方面的花费大概在7000至9000美元之间。1995年美国家庭已使用先进家庭自动化设备的比率为0.33%,看来市场真正启动尚需时日。预计这五年内,家庭自动化的市场年平均增长率为8%.PARKS公司的资料亦显示:到2004年,家庭网络市场总额可达57亿美元,由此可知,智能家居无论在国内还是国外都有良好的发展前景,形势一片大好。1.4 指导思想 本系统开发基于C语言。使用Keil4集成开发环境,使用现已经技术成熟的器材,以保障系统正常安全使用、质量性能好、稳定。界面操作简单,功能全面,实用性强,人机交互友好,无需复杂操作就可以使用产品,易学易用。 第2章 开发工具与MCU简介2.1 STM32F10XXSTM32系列单片机是为高性能、低成本、低功耗的嵌入式应用专门设计的,十分适合现在的智能家居研发,款型多、功能完备,资料丰富,技术也相对成熟,下面我们就来系统的了解一下这款单片机。按内核架构分为不同产品。其中STM32F1系列有:STM32F103增强型系列STM32F101基本型系列STM32F105、STM32F107互联型系列增强型系列时钟频率为72MHz,再同品型的单片机中是性能最好的一款;普通型的时钟频率为36MHz,而如今普通产品的价格得到性能大幅提升产品,相信是很多用户的最佳选择。两个系列产品都内置闪存大小是相同的,还是32K到128K,不同的是SRAM的最大容量和外设接口的这两部分。当时钟频率72MHz时候,可以从闪存中直接运行程序,速度更快,STM32功耗为36mA,是32位单片机同类市场上功耗最低的产品。 图2-1 STM32F10XX功能框图内核:32位mcu处理器,频率为72MHz,采用单周期乘法,不容易受外部设备电流影响,稳定性更好。存储器:片上集成32-512KB的闪存。6-64KB的只读存储器。时钟、复位和电源管理:电源为3V供电。上电复位、掉电复位电路完善,自带可编程的电压探测器(现不常应用)。晶振为16MHz(频率可设置,可满足不同外部设备的驱动)。8MHz RC电路。40 kHz的RC振荡电路(可外接振荡电路,也可利用自身具有的振荡电路)。CPU时钟具有校准功能,由的32kHz的晶振单独完成。低功耗模式:3种低功耗模式:休眠,停止,待机模式。调试模式:串行调试接口和JTAG接口。DMA:12通道DMA控制器。支持的外设:定时器,ADC,DAC,SPI,IIC和UART。3个12位的us级的A/D转换器:A/D测量范围:0-3.6V。双采样和保持能力。D/A转换器的种类多,可以适合不同型号外设信息采集,非常全面。快速I/O端口:所有的端口都可以链接到个外部中断。排除模拟量的输入,所有的端口都可以接受5V以内的信号输入。定时器:4个16位定时器,每个定时器都配有4个IC/OC/PWM或者脉冲计数器。2个16位控制定时器:最多6个通道可用于PWM输出除此还有2个看门狗定时器,可供多个外设同时工作时应用。Systick定时器:24位倒计数器。2个16位基本定时器用于驱动DAC。拥有3个SPI接口,两个和IIS复用端口。一个2.0B的CAN接口,一个2.0USB接口含5个USART接收端口,13个通信接口,2个IIC接口,和一个SDIO接口。1、相较传统的嵌入式处理器多一个嵌入式ARM内核,使其兼容性更加强悍,不仅对编程软件还是与单片机相关的工具都是一次技术上的统一,与此同时提高了代码处理效率,运行,调试更加高效。2、嵌入式Flash存储器和RAM存储器:内置512KB的闪存,为数据的安全性提供了更好的保障,存储数据程序也更加方便,只读存储器与CPU的时钟速度相同,可进行高速读写操作,更加贴近产品驱动需要。3、可变静态存储器(FSMC):STM32的静态存储器拥有4个片选,且每一种片选模式还有四种模式选择,控制的更加细致,精确,多更控制更加方便,不需要再加繁杂的外设,代码都是从外部存储器执行,不占用没存,节省空间,提高运行速度,外部访问按照36MHz进行,速度更高,出错率更低。4、ARM的中断:可以处理43个中断通道,包含16个中断优先级,可以同时处理多个外部中断,对外设的处理精确度得到有效提高,更适合处理复杂多样的外设。紧密耦合的NVIC实现了低的中断处理延迟,直接向内核传递中断入口向量表地址,紧密耦合的NVIC内核接口,更加方便允许中断提前处理,对后到的更高优先级的中断进行处理,自动保存处理器状态,中断入口在中断退出时自动恢复,不需要指令控制,自动化程度更好,减小程序员的工作量。5、外部中断/事件控制器(EXTI):外部中断/事件控制器由19个产生中断请求检索组成。每条线都是经过独特配置用于选择触 发事件(模式:上升沿,下降沿,或者两者都可以),可以同时屏蔽多个,也可以只屏蔽一个,更有利于对外设的控制。有一个挂起寄存器用来检测中断请求。当外部线上出现长度超过内部时钟周期的脉冲时,EXTI便马上能检测到是由外部的信号在申请中断。6、时钟和启动:系统的时钟在系统在工作前,先需要时钟的设定,一种是利用内部8MHz的晶振作为CPU时钟源。另外可以选择一个外部的4-16MHz时钟源,STM32在时钟的检测十分严格,会实时监控当与控制器被禁止那么软件中断管理也会跟着被禁止。还可以在PLL时钟的中断管理设定时钟。多个预比较器可以用来配置AHB频率,包括高速APB2和低速APB1,高速APB最高的频率为72MHz,低速APB最高的频率为36MHz。7、Boot模式:Boot引脚有3种Boot模式选项可供选择:从Flash进入,从系统存储器导入,从SRAM进入。Boot导入代码存储在系统存储器,用于通过USART1对Flash存储器编程。8、电源供电方案:工作电压2.0V-3.6V,外部电源通过VDD引脚连接,用于I/O和内部调压器。VSSA和VDDA的电压范围都是2.0-3.6V,外部模拟电压用于ADC,复位模块,RC和PLL,在VDD范围之内,VSSA和VDDA必须相应连接到VSS和VDD才可以。VBAT的电压范围为1.8-3.6V,当VDD无效时为RTC,晶振和备份寄存器也可以为其提供电源,保证正常工作不受到影响。 2.2 KEIL MDKKeil MDK 的应用十分广泛,因其功能全面性能佳,界面简介友好,从其问世就迅速被广大程序工程师所熟知和使用,工程师的反馈-非常适合STM32的开发。Keil MDK,也称MDK-ARM,Realview MDK、I-MDK、uVision4等。MDK-ARM软件为基于Cortex-M、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境,一款软件多项应用,方便嵌入式工程师们在不同项目中多种程序的编写,不用多次熟悉开发工具,单凭这一点,早已在嵌入式工程师的心中占据巨大优势, MDK-ARM是一款专为微控制器应用而设计生产的,因其界面简洁清晰,不仅易学易用,而且功能强大,能够满足大多数的嵌入式应用,综合分析是嵌入式工程师的不二选择。MDK-ARM有四个可用版本。所有版本均提供一个完善的C / C+开发环境,实现多界面,多机型,多语言集于一身的高性价比产品,其中MDK-Professional还包含大量的中间库,方便调用且数据库全面。使用Keil 来开发嵌入式软件,大致有以下几个步骤:1. 创建一个project,选择芯片,并进行一些必要的配置信息2. 编写C 源文件3. 编译工作代码4. 修改源程序中的错误5. 下载程序调试uVision4 开发环境如下我们可以做到编辑,编译,项目管理等多个程序调试步骤,窗口设计合理,出错显示更加清晰,方便程序的调试。uVision4的特点:支持多系列单片机(Cortex-M、Cortex-R4、ARM7和ARM9);多语言(C/C+)的工具链,操作系统自带源码,封装模块化数据;不仅提供编译,调试,还具备仿真环境;网络套件提供多种协议应用;拥有标准的USB设备连接可能,与外设交互友好;不仅可以处理程序代码,还可以处理图形;程序每运行一次会有一次覆盖;符合国际公认的软件接口标准。ULINK USB-JTAG 界面适配器:ULINK USB-JTAG 是一个用于连接PC USB 口和开发板JTAG 口的小硬件适配器。通过JTAG你可以很方便的将你的程序下载到目标板上测试和验证程序运行的效果。ULINK 支持如下操作:1. 下载目标程序2. 检查存储器和寄存器3. 单步运行程序4. 插入多个中断点5. 实时运行程序6. 烧写FLASH 存储器第3章 总体分析与设计3.1 方案分析3.1.1 整体系统方案分析每个智能家居系统的设计者首先考虑到的问题就是MCU选型的问题。嵌入式设计中比较主流的两款单片机就属ARM与AVR/51最受大家的青睐,51是一款8位MCU的处理器,相较32位处理器的ARM在运算能力上有明显的不足,但32位的运算的指令也是非常复杂的,进行大量的数据运算,视频数据,能力虽然较8位机强很多,运算速度也高好多倍,但在各个中断,寄存器配置,时钟要求等等也更为严格,而且AVR的编程需要配置gcc或icc才能正常工作,有固定的工作的环境,和51单片机相比,很复杂,可以用来参考的文献资料也没有51多,ARM与51相比虽然采用指令集简化了很多,可以在每个时钟周期内执行一条命令,51需要12个时钟周期才能完成一条指令的工作,综合来分析51与STM32单片机都拥有各自的优势,如何选择就要从需求上加以分析。51单片机是每一嵌入式编程人员的入门课程,很基础,电路也相对简单,资料丰富,芯片很便宜,市面很常见,但一旦处理大量的数据,设计复杂运动控制,视频时,51就力不从心了,运算的速度和效率低也是51的一个致命的缺点,简单的总结下就是AVR的指令系统比较精简,总线和存储结构也与51单片机不同,速度比51快很多。其次,从性能的角度分析,ARM是32位处理器,频率高达百兆赫兹,速度和处理能力远远优于AVR和51,根据智能家居需要控制多个家用设备,传送视频图像等等因素考虑,为了满足该设备的设计要求,以上的51和AVR类的MCU产品功能上仍显不足。STM32FX 系列的MCU从功能上来说更具吸引力,尤其是STM32F103VCT6这款MCU,片内外设相当丰富,3 个12 位模数转换器、2 通道12 位D/A 转换器、12通道DMA 控制器、80个快速I/O 端口、8 个定时器、多达13 个通信界面。除了其丰富的片内外设,它的每个I/O口都对应着32位的配置寄存器,可以进行自由的配置,还具有锁存器和16位的复位寄存器和复位寄存器。每个I/O口都可以自由的编程,每个I/O口都可以由软件配置成多种模式。它的嵌入式中断矢量控制器,具有16个可编程优先级,60个可屏蔽中断通道,还具有延迟的异常和中断处理。STM32F103VCT6 优秀的特性决定了本设备产品设计的最终平台。在选定MCU 后,首先规划本设备的各个功能的实现。通过分析该设备在工业现场需要发挥的监控作用,初步将该设备的功能设计如下:AD 数据采集,串行通信,EEPROM 数据存储的读写,SD 卡数据存储的读写,NANDFLASH 数据存储的读写,时钟的读写设置。STM32F103VCT6的ADC转换器是一种12位精度的逐次逼近型的数字转换器。它有18个通道用来传递信息数据,可以测量16个外部信号和2个内部信号。本款产品没有全部使用所有的ADC,仅使用了其中的6条AD转换通道。在ADC 通过外部传感器将模拟信号转化为数字信号后,接收返回的数据存储在SD卡中或者EEPROM 中,供使用程序人员对数据进行分析和处理。时钟在不断电的情况下即可正常运行,可以为产品的液晶屏显示提供时间不需要外接设备提供时间。3.1.2 数据采集方案设计我们所常用的传感器信号一般都是模拟量,例如温度传感器,湿度传感器等为了数据的操作与处理方便,需要将其转换为数字量,所以需要使用到ADC 器件。紧接着就是AD方案的选择问题:其中一种是使用独立的ADC转换器,另一种使用MCU中自带的ADC 转换模块。而ADC的选择依据有如下几个关键的参数有分辨率,转换速率,模拟量输入端数,模拟量输入电压范围,数字量输出方式等等。我们以ADC0809为例简单说明下,0809的参数如下:1)8路输入通道,8位A/D转换器,即分辨率为8位。2)具有转换起停控制端。3)转换时间为100s。4)5V电源供电。5)模拟输入电压范围0-+5V,不需要校准和清零过程。6)工作温度在-40+85摄氏度。7)功耗低,约15mW。ADC0809属于中等速度的ADC转换器,价格也比较低,但分辨率较低。如果外接高速ADC 转换器,价格又过高,并不是最好的选择。然而,对于MCU自带的ADC模块,其工作性能并不差。该ADC属于逐次逼近型模拟数字转换器。它有18个信息采集返回通道,可测量16个外部信号和2个内部信号。在本次设计中我们将两种ADC的采集方法并用,下面会有详细的使用说明。3.1.3 数据存储方案分析在智能家居系统里,需要存储的数据并不是很多,温湿度信息的存储和登录密码存储即可。说到STM32的闪存用途,我们的第一反应是用来装程序代码的,实际上,STM32的片内FLASH不仅可以用来装程序数据代码,还用来装芯片配置、芯片ID等等。虽然智能家居系统里的数据存储只放在FLASH就可以了,但我们为了大家能够更好的了解,还是简谈下FLASH的有关问题: 1、FLASH分类根据用途进行分类,STM32片内的闪存分成两部分:主存储部分、信息块部分。 主存储块可以用于存储程序,我们写的代码,数据都会存储在这里。 信息块又分成两部分:系统存储器部分、选项字节部分。系统存储器存储是出厂时就被锁死的,用户不需要处理它,用来存储系统代码, 选项字节存储芯片的配置内容是对主存储块内容的一种保护。 2、FLASH的页面STM32的FLASH主存储块按页组织,有的产品每页1KB,有的产品每页2KB。页面典型的用途就是用于按页擦除FLASH。从这点来看,页面有点像通用FLASH的扇区。 3、STM32产品的分类STM32根据FLASH主存储块容量、页面的不同,系统存储器的不同,分为小容量、中容量、大容量、互联型,共四类产品。小容量产品的主存储存容量在1-32KB之间,系统占2KB,中容量产品主存储容量在64-128KB之间,每页占1KB大小;大容量产品主存储容量在256KB以上,系统占2KB,每页占2KB;互联网型产品主存容量最大为256KB以上,系统占18KB,每页占2KB。根据以下简单的规则进行区分,根据其主存储块容量来划分,STM32F105xx、STM32F107xx是互联型产品。几类单片机的不同之处就在于引导装载程序的不同,小中大容量产品的BootLoader占用空间很小,只能通过USART1进行在线编程,而互联型产品的BootLoader有18KB是小中型的9倍,从而编程的方式选择也就更加的多样化,例如USAT1、4、CAN等多种方式。 1、关于ISP与IAPISP即在系统编程,是指直接在目标电路板上对芯片进行编程,一般需要一个自举程序(BootLoader)来执行。ISP也有叫ICP(In Circuit Programming)、在电路编程、在线编程。 IAP(In Application Programming)在应用中编程,是指最终产品出厂后,由最终用户在使用中对用户程序部分进行编程,实现在线升级。IAP要求将程序分成两部分:引导程序、用户程序。引导程序总是不变的。IAP也有叫在程序中编程。 ISP与IAP的区别在于,ISP一般是对芯片整片重新编程,用的是芯片厂的自举程序。而IAP只是更新程序的一部分,用的是电器厂开发的IAP引导程序。综合来看,ISP受到的限制更多,而IAP由于是自己开发的程序,更换程序的时候更容易操作。 2、FPECFPEC(FLASH Program/Erase controller 闪存编程/擦除控制器),STM32通过FPEC来擦除和编程FLASH。FPEC使用7个寄存器来操作闪存:FPEC键寄存器(FLASH_KEYR) 写入键值解锁。选项字节键寄存器(FLASH_OPTKEYR) 写入键值解锁选项字节操作。闪存控制寄存器(FLASH_CR) 选择并启动闪存操作。闪存状态寄存器(FLASH_SR) 查询闪存操作状态。闪存地址寄存器(FLASH_AR) 存储闪存操作地址。选项字节寄存器(FLASH_OBR) 选项字节中主要数据的映象。写保护寄存器(FLASH_WRPR) 选项字节中写保护字节的映象。主存储块不仅可以全部擦除,重新写入,也可以对其中的一页或者几页进行删除,重新写入的操作。 建议使用以下步骤进行页擦除:1检查FLASH_SR寄存器的BSY位。保证没有其他正在进行的闪存操作。设置一段延时等待BSY位为0,才可继续操作。2设置FLASH_CR寄存器的PER位为1。3选择出所要擦除的页码地址,尽行擦出准备。4启动擦除操作。5当收到响应信号也就是寄存器BSY变为0。6做检查,如果EOP位为1,说明此次操作成功否则检查前几步操作是否得当。 7分析数据位,每次擦完后数据位都会被设置成数字1,若操作正确既可以得到全部为1的数据位,整片擦除的方法(与写入方式相反的操作)大体如下: 1检查BSY位,确认没有其他正在进行的操作。2设置寄存器的MER位为1。 3设置寄存器的STRT位为1。 4等待寄存器的BSY位变为0。5查询FLASH_SR寄存器的EOP位,EOP为1时。 6做验证。主存储块的编程:主存储模块的程序编写每一次只可以写16bit,当寄存器的PG位被设置为1时,在一个Flash地址写入一个16位将会进行一次编程;写入任何其他的数字或者数据,总线上都会产生错误信息,当发现读取闪存时会使CPU停止工作,有可能是FPEC设置错误产生的。 建议对主存储块使用如下过程进行编写程序:1检查寄存器的BSY位,确认所有的其他程序操作没有占用。2选择编程操作。3在指定的地址写入要编程的半字,切记不要输入其他的数字。 4设置一段延时,等待寄存器的BSY位变为0。5再一次查询寄存器的EOP位,若EOP为1表示此次操作是成功的。 3.1.4 显示方案分析在数据显示方面上,常用的实验器材有两种可供选择,12864液晶和1602液晶,12864 顾名思义像素是128乘以64,能显示32个汉字,如果型号不同,待的汉子库不同,能显示的数字和效果都会有所不同,功能相比1602强大很多,1602只能显示符号、数字和字母能显示32个字符,但寄存器不止32个,可以将内容滚动显示出来,显示字符的顺序也可以设置,从左往右或者相反都可以,因为其功能和显示效果简单,价格比12864少很多,在嵌入式使用方面,两者难度差不多,原理也相近,只要配置好指令、地址、数据即可。智能家居的在显示方面需要同时显示几行数据,而1602每一次显示的数据过少,相互比较而言12864是不错的选择。3.2 功能设计智能家居设备可以同时检测三个不同区域的气体浓度,三个地方温湿度情况,三个地域光照强度并且控制灯光,超过标准值时的报警功能,采用整屏显示模式。产品功能设计如图3-1所示。照明显示模块ADC0809采集模块I/O I/OI/O I/OT1 STM32T0 I/OT2 I/O烟雾传感器模块液晶显示12864模块温湿度传感器模块 光照强度信息采集模块 报警器 图3-1智能家居整体功能设计第4章 详细设计与实现4.1 界面设计1.温湿度显示界面 图4-1 温湿度显示界面2. 烟雾显示界面图4-2 烟雾显示界面 4.2 原理图设计显示供电中央处理器CPULED电路温湿度电路继电器电路烟感电路电源电路液晶电路控制控制数据图4-3 硬件系统原理本智能家居系统的设计分为温湿度数据采集模块、烟雾数据存采集模块、光照数据采集模块、灯光控制模块、报警模块和显示模块等6部分组成。每个模块的设计上均有其难点和特殊性,需要严格按照原理图设计规范来设计13,原理图设计要点如下所示:1. 各功能块布局要合理,整份原理图需要布局均衡,避免有些地方很挤,而有些地方很松。2.将温度信息采集模块、如温度采集模块、湿度数据采集,光照信息采集,报警部分各功能部分模块化,方便差错和修改程序。3在接插口时尽量将外设分布在四周,不要分布不均一面造成一侧的端口不够用。例如电源输入,输出负载接口等等。4对于一些像滑阻类似的可调元件,都应该标清楚方向以及物体说明,以免在实验中损坏器件。5外部的元器件在向主控电路接入的过程中,采取就近原则即可。6滤波器件应该就近排放,减少不必要的空间浪费。7重点的模块、信号和器件,应该用标签标注清楚,接线清楚,接口也要标注清楚,如果有条件可以用PCB画板技术。9将所需要的所有二极管统一放在一个表格中,进行标注作用,方便后续的错误检测与查找。10在写文档时,将重要的程序可以用黑体或者加粗。11用于特别表示的文字,或者标签,为了更好的区分可以不同的用不同的颜色区分,例如器件用红色,接口用黄色等等。12在标注元器件参数时,应该格外注重电阻的阻止,或者器件的工作电压,和工作条件,为查找故障提供方便条件。4.2.1 数据采集模块设备的数据采集,即ADC 数据转换模块,利用了MCU 自带的ADC 模块和外部设备ADC0809两种数据转换模式,将传感器的模拟信号转换为数字量存储起来。本设备设计的传感器为6路,所以需要MCU 的6个ADC 模拟量输入引脚,在综合考虑MCU 引脚使用情况后,决定使用PA0PA3,PB0,PB1 引脚作为模拟信号输入端。为简化下位机电路,没有将传感器模拟信号采集部分设计到下位机上14。电路设计图如图4-4所示:图4-4 AD输入端电路图各个模拟量输入端子全部直接连接到MCU 的ADC 模拟输入引脚上AD数据采集程序:void AD_data(uchar x)double i;int j;int ge,shi,bai;init();cs=1;cs=0;rd=1; while(x)x-;for(a=0;a13;a+) write_com(0x80+a);write_date(tablea);delay(5);delay(5);wr=1;wr=0;wr=1;delay(10);rd=0;delay(5);i=P1;i=i/255;i*=5;i*=100;j=(int)i;ge=j%10;put_str(4,ge);j-=ge;shi=j/10;shi=shi%10;write_date(shi);bai=j/100;put_str1(2,.);delay(5);put_str(1,bai);delay(5);rd=1;delay(5);write_com(0x80+0x40+4);delay(5);write_date(V);delay(5);4.2.2 温湿度传感器模块为了测量的准确性和多通道数据采集,这里选择3片dht11 连接到stm32芯片上,由芯片上的IO引脚作为3片dht11 的器件数据及时钟选择端口。电路图设计如图4-5所示:图4-5 温湿度设计电路图温湿度数据采集程序:u8 DHT11_Read_Bit(void) u8 retry=0;while(DHT11_DQ_IN&retry100)retry+;delay_us(1);retry=0;while(!DHT11_DQ_IN&retry100)retry+;delay_us(1);delay_us(40);if(DHT11_DQ_IN)return 1;else return 0; u8 DHT11_Read_Byte(void) u8 i,dat; dat=0;for (i=0;i8;i+) dat=1; dat|=DHT11_Read_Bit();return dat;u8 DHT11_Read_Data(u8 *temp,u8 *humi) u8 buf5;u8 i;DHT11_Rst();if(DHT11_Check()=0)for(i=0;i5;i+)bufi=DHT11_Read_Byte();if(buf0+buf1+buf2+buf3)=buf4)*humi=buf0;*temp=buf2;else return 1;return 0;4.2.3 烟雾传感模块传感器采用两种数据采集方法,一种是数字量DO的采集判断有无气体,一种是模拟量输出AO检测气体的浓度状态情况,以及判断该浓度对人体是否有害。详细电路设计如下图4-6所示:图4-6 烟雾传感电路设计图烟雾传感数据采集程序:u16 Get_Adc(u8 ch) ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC );return ADC_GetConversionValue(ADC1);u16 Get_Adc_Average(u8 ch,u8 times)u32 temp_val=0;u8 t;for(t=0;ttimes;t+)temp_val+=Get_Adc(ch);delay_ms(5);return temp_val/times; adcx=Get_Adc_Average(ADC_Channel_1,10);if(!adcx1)adcx1=adcx;longdu=(adcx-adcx1)*100/256;printf(rn您发送的消息为:浓度:%drnrn,longdu);4.2.4 液晶显示电路设计本系统液晶显示采用LCM12864液晶作为显示器。显示相关的提示信息和数据的输出。该液晶模块支持串行通信和并口通信。串行通信为单根数据线,通信速率低于并口通信,占用端口少。并口通信通信速率块但是占用端口多。为了节约IO口采用串行方式设计电路电路图设计如图4-7下:图4-7 液晶显示电路设计图液晶初始化程序:void SendByte(unsigned char dat)unsigned char i;CLK_L;for(i=0;i8;i+)if(dat&0x80) SID_H;else SID_L;CLK_L;delay(10);CLK_H;dat=dat1;CLK_L;void WriteCommandLCD(unsigned char dat,unsigned char tt) CS_H;delay(10);CLK_L;delay(10);SendByte(0xF8);/11111,00,0 RW=0,RS=0 同步标志 delay(10);SendByte(dat&0xF0);/高四位SendByte(dat&0x0F)4);/低四位delay_ms(1);CS_L;void WriteDataLCD(unsigned char dat)CS_H;delay(10)CLK_L;delay(10);SendByte(0xFA);/11111,01,0 RW=0,RS=1 delay(10);SendByte(dat&0xF0);/高四位 delay(10);SendByte(dat&0x0F)4);/低四位delay_ms(1);CS_L; void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) CS_H; if(Y4) Y=4; X &= 0x0F; switch(Y)case 1:X|=0X80;break;case 2:X|=0X90;break;case 3:X|=0X88;break;case 4:X|=0X98;break;WriteCommandLCD(X, 0); WriteDataLCD(DData); delay(100); CS_L;void SET_ADDR(unsigned char X, unsigned char Y) CS_H; if(Y4)Y=4; X &= 0x0F; switch(Y) case 1:X|=0X80;break;case 2:X|=0X90;break;case 3:X|=0X88;break;case 4:X|=0X98;break;WriteCommandLCD(X, 0); delay(100);CS_L;void SET_ADDR1(unsigned char X, unsigned char Y) CS_H; if(Y4)Y=4;X &= 0x0F; /限制X不能大于16,Y不能大于1 switch(Y)case 1:X|=0X80;break;case 2:X|=0X90;break;case 3:X|=0X88;break;case 4:X|=0X98;break;WriteCommandLCD(X, 0); delay(100); CS_L;void LCDInit(void) /LCM初始化 CS_H;delay_ms(100);CLK_L;WriteCommandLCD(0x30,1); /显示模式设置,开始要求每次检测忙信号WriteCommandLCD(0x02,1);WriteCommandLCD(0x06,1); / 显示光标移动设置WriteCommandLCD(0x0C,1); / 显示开及光标设置WriteCommandLCD(0x01,1); /显示清屏WriteCommandLCD(0x80,1); /显示清屏CS_L;void LCDClear(void) /清屏CS_H;CLK_L;WriteCommandLCD(0x01,1); /显示清屏WriteCommandLCD(0x34,1); / 显示光标移动设置WriteCommandLCD(0x30,1); / 显示开及光标设置CS_L;void Line_white()CS_H;WriteCommandLCD(0x16,1); WriteCommandLCD(0x17,1); CS_L;void SendCMD(unsigned char dat)CS_H;CLK_L;SendByte(0xF8);/11111,00,0 RW=0,RS=0 同步标志SendByte(dat&0xF0);/高四位SendByte(dat&0x0F)4);/低四位CS_L;delay_ms(1);void SendDat(unsigned char dat)CS_H;CLK_L;SendByte(0xFA);/11111,01,0 RW=0,RS=1SendByte(dat&0xF0);/高四位SendByte(dat&0x0F)4);/低四位CS_L; void initlcm(void)CS_L;delay_ms(100);SendCMD(0x30);SendCMD(0x0C);SendCMD(0x01);SendCMD(0x02);SendCMD(0x80);SendCMD(0x04);void display(unsigned char x_add,unsigned char *ptr)SendCMD(x_add);while(*ptr != 0)SendDat(*ptr);+ptr;void lcd_num(unsigned char *ptr,u8 size)while(size-)SendDat(*ptr);+ptr;4.2.5 报警电路的设计本系统主要以灯光提示为主。电路主要采用发光二极管以及保护电阻组成,达到对流过发光二极管进行限流保护。如图4-8所示:图4-8 灯光报警电路设计图4.2.6 时钟模块时钟模块利用了DALLAS 公司推出的涓流充电时钟芯片DS1302,另外设计了纽扣电池连接到DS1302 的VCC2 备用电源引脚上。对于该芯片的供电DALLAS 公司设计了如下约定:5V电为电源电压,还有自己的备份电源。当备份电源等于电源电压加上2V,由备份电源供电,备份电源小于电源电压时,有电源自己供电。这也就是系统掉电的情况下DS1302的时钟还不会出现差错的且恢复电时正常工作的原因。表4-1 DS1302有关的日历与时间的寄存器:读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81h80hCH秒00-5983h82h分00-5985h84h12/24010时时1-12/0-23AM/PM87h86h0010日日1-3189h88h00010月月1-128Bh8Ah00000周1-78Dh8Ch10年年00-998Fh8EhWP0000000- 这张表介绍了DS1302与时间日期有关的7个寄存器,我们需要做的就只是把相应的时间和日期写入到这几个寄存器中,然后不断的读取这几个寄存器里面的数值就能得到我们所需要的时间和日期。这几个寄存器介绍如下:1. 秒寄存器(81h、80h)的第7位是时钟暂停标志(CH)。初始值为1, DS1302此时处于低功耗状态,时钟振荡器处于停止状态;只有将秒寄存器的该位置改为0时,时钟才能开始运行。2. 小时寄存器(85h、84h)的第6位是DS1302的运行模式;分为12小时模式和24小时模式。当将其置高时,为12小时模式,反之为24小时模式。3. 控制寄存器(8Fh、8Eh),当将写保护位设置为1时,程序员是不能对任何一个寄存器其中的数值进行修改的,正常情况下,设置为0,其他的7位也都设置为0的第7位是写保护位(WP),将其它7位均置为0。,只有将WP设为0时才可以DS1302单字节读写
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!