毕业设计论文基于STM32和UCOSIII智能防盗报警器的设计

上传人:沈*** 文档编号:136992710 上传时间:2022-08-17 格式:DOC 页数:43 大小:3.64MB
收藏 版权申诉 举报 下载
毕业设计论文基于STM32和UCOSIII智能防盗报警器的设计_第1页
第1页 / 共43页
毕业设计论文基于STM32和UCOSIII智能防盗报警器的设计_第2页
第2页 / 共43页
毕业设计论文基于STM32和UCOSIII智能防盗报警器的设计_第3页
第3页 / 共43页
资源描述:

《毕业设计论文基于STM32和UCOSIII智能防盗报警器的设计》由会员分享,可在线阅读,更多相关《毕业设计论文基于STM32和UCOSIII智能防盗报警器的设计(43页珍藏版)》请在装配图网上搜索。

1、 2015届普通本科毕业论文(设计) 存档编号: 毕业论文(设计)题目: 基于STM32和UC/OS-III智能防盗报警器的设计 专 业: 电子信息工程 (嵌入式系统及应用方向) 院 系: 信息工程学院 年 级: 2011级 学 号: 11160128 姓 名: 张维 指导教师: 汪成义 职 称: 教授 湖北经济学院教务处 制目录摘 要3Abstract4一绪论5(一)前言5(二)文献综述5(三)论文设计任务与要求7二系统开发平台及相关技术8(一)开发环境Keil- MDK简介8(二)硬件平台STM32介绍8(三)嵌入式实时操作系统UC/OS-III 介绍9三系统总体方案设计11(一)系统功能

2、实现及总体框图11(二)系统硬件设计11(三)系统软件设计11四系统硬件电路详细设计13(一)MCU供电电路设计13(二)启动方式电路设计13(三)时钟源电路14(四)LCD显示接口模块14(五)HC-SR04超声测距模块15(六)声光报警电路16(七)SW-420震动传感器电路17(八)温湿度检测电路17五系统软件结构设计18(一)软件总体设计框图18(二)主函数分析19(三)Sensor_using 函数分析20(四)LCD_PutChar函数分析21(五)create_table函数解析22(六) DS18B20传感器函数分析25(七) clock.c函数分析31六系统测试及结果分析37

3、(一)红外声光测距传感器测试37(二)震动传感器测试37(三)声光报警电路测试及实物图38(四)数据库实现结果图38(五)实时时钟测试39(六)温湿度传感器测试及实物图39(七)总体报警功能测试40七总结41致谢42参考文献43 摘 要随着信息技术的飞速发展以及人们生活水平的大幅度提高,人们对住宅的需求已从追求简单的生存空间向着追求质量、功能、服务等多重需求过渡。而在近几年随着智能设备的普及和智能硬件的零成本化趋势,各种智能家居和智能系统相继进入普通人们的家庭,采用嵌入式技术的家庭智能防盗系统也应运而生。本系统基于目前流行的嵌入式平台,以ARM cortex-M3为核心的STM32作为硬件平台

4、,以嵌入式实时操作系统UC/OS-III作为系统软件平台。本系统主要包括红外声光震动探测电路、LCD控制电路、温湿度检测电路,声光报警电路及MCU控制电路等。红外声光震动探测电路作为MCU的输入,当距离和震动两个条件同时满足时,MCU会记录当前的时间并存入到数据库系统中,然后会通过声光报警电路给出相应的响应,最终也可以选择通过以太网和TCP/IP协议将获得的信号上传至电脑端从而实现联网的警报功能。以此达到报警的效果,满足人们日常生活对家庭环境的实时智能掌控和防盗报警功能的需要。关键词:UC/OS-III;STM32;传感器;数据库;防盗报警 AbstractWith the rapid dev

5、elopment of information technology and the increase of peoples living standard people demand for housing from the pursuit of simple living space to the pursuit of quality, function, service transition, such as multiple demand.In recent years with the popularity of smart devices and intelligent trend

6、 of zero cost of hardware, all kinds of smart home and family intelligent system one after another into the ordinary people, home intelligent anti-theft system using the embedded technology also arises at the historic momentBased on the current popular embedded platform, this system based on ARM arc

7、hitecture (M3 STM32 as hardware platform, the embedded real-time operating system UC/OS - III as system software platform.This system mainly includes the infrared light vibration detection circuit, LCD control circuit, temperature and humidity detection circuit, sound and light alarm circuit and MCU

8、 control circuit, etc.Infrared light vibration detection circuit as input of MCU, when the distance between two conditions and vibration to meet at the same time, MCU will record the current time and deposit to the database system, then by sound and light alarm circuit, the corresponding response is

9、 given, and finally can also choose to through the Ethernet and TCP/IP protocol will receive the signal will be uploaded to the computer so as to realize the alarm functions of networking.So as to achieve the effect of the alarm, satisfy the Peoples Daily life on the family environment of the need o

10、f real-time intelligent control and anti-theft alarm function.Keywords: UC/OS-III;STM32;sensor intelligent;control database;burglar alarm一绪论(一)前言随着第四次工业革命和信息化技术的高度发展,人们的生活节奏日益紧凑,在我们不断满足自己日益增长的物质文化需求的同时也更加注重自己的生活环境与生活质量,物联网和智能家居产业应运而生。物联网是利用局部网络或互联网等通信技术把传感器、控制器、机器、人员和物等通过新的方式联在一起,形成人与物、物与物相联,实现信息化、远

11、程管理控制和智能化的网络。物联网是互联网的延伸,它包括互联网及互联网上所有的资源,兼容互联网所有的应用,但物联网中所有的元素(所有的设备、资源及通信等)都是个性化和私有化。智能家居是基于现代的互联网和物联网技术实现家居智能控制的体现。智能家居通过使用现代主流的嵌入式平台技术,将普通家居产品通过蓝牙,ZigBee,WiFi或者以太网等方式将正在运行的家居状态通过互联网发送到数据端,给用户提供一个全方位掌控的操作平台,实现家庭环境的智能掌控的功能的配套化产品。智能家居不仅融合了普通家居产品的功能,更重要的是加入了物联网的云平台,不仅仅是用户,甚至是家居的厂家也可以随时了解产品的运行信息,从而对于产

12、品的售后也有了保障。(二)文献综述为了完成本次毕业设计,我通过学校图书馆和网络资源查阅了大量的有关智能家居的安防控制系统设计方面的中外文献,这些文献为我本次毕业设计提供了很多帮助,以下这些文献就是我在本次毕业论文书写过程中所用到的参考文献,现将其列举如下:文献1安全防范系统(SPS,security & protection system)具体是指以社会公共安全的维护为目的,主要运用安全防范产品以及其他相关的安防配套产品所构成的防爆安全的检查,视频监控、安防入侵报警、出入口检测控制系统等;或由这些系统所组合构成的平台子系统或总系统,是以保护人身财产安全、信息与通讯安全,达到损失预防与犯罪预防目

13、的。文献2智能家庭一般通过在房屋周界、重点部位与住户室内安装安全防范装置,并由小区物业管理中心统一管理,来提高小区的安全防范水平。家庭的智能化安全防范系统。文献3针对单个用户的安防设计应注重用户的家庭习惯和实际环境要求。针对小型别墅等较低楼层而相对面积较大的安全防范应该注重安全边界的划定和探测设备的使用,如使用红外激光技术建立起一个边界的网络来,一旦有入侵者接触到安全网络便会触发安全报警,通过声光恐吓,逼退入侵者。并且通过网络将实时图像数据采集并传输到终端,安全人员和住户可以实时接收到第一手情报资料。而针对于普通家庭的安防而言,因普通家庭暴漏在外的相对空间面积较小,从而也可以使用低成本而更高效

14、益的智能系统。对于一般普通家庭而言,安防的重点是门窗,阳台的可以进入室内的仅有的几个通道,这时我们便可以将距离传感器和震动传感器并用的方式来实现功能。这样既能满足家庭的安防要求,也能尽可能地降低成本,实现了利益的最大化。而住户的家庭习惯也是一个必不可少的,不可忽视的实际因素。因为目前的安防所考虑的是一种相对理想的因素,针对于不同用户的不同习惯还没有完整的数据库来实体化,所以在单个家庭安防智能防盗系统设计之初,应该针对家庭每个成员的习惯来设计,尽可能考虑全面一些突发的因素。文献4目前的安防市场现状,主要是针对于“安全城市”所建立的城市视频监控网络,通过在城市的主要繁华街道和人流密集的场所,以及由

15、道路电子眼所组成的局部信息采集网络。目前这种半封闭的城市安全网络并不能实施主动防御的功能,只能在紧急安全情况发生以后给安全人员提供相关的视频信息,而针对于普通家庭住户的单个防盗系统更是产品匮乏。针对目前这种单个家庭的安防现状,市场急需低成本高性能的安全防范产品来满足中低端单个家庭的需求。文献5目前国内两家安防巨头大华股份和海康威视主要涉及的产品都是城市安防,几乎没有针对于中低端市场的安防产品,而一些小型的电子企业虽然也相继推出了一些中低端的产品,但很大一部分都是基于8位机51单片机的简易型,如电子密码锁和一些搭配传感器的简单防范的系统,虽然能够满足基本的防范要求,但是因为8位机几乎都是基于无操

16、作系统的裸机开发,不仅没有实时性,而且很难完成数据的实时上传,这样用户就不能实时了解和掌控自己家庭区域的安全现状。因此目前市场急需要既能够满足实时安全防范的要求,又能够实时上传数据让用户了解掌控安全状态的多功能型产品。文献6智能家庭防盗系统的主流设计参考方案为目前所使用的嵌入式系统平台。而针对单个住户而言,为了尽可能地降低固件成本,而又实现智能防盗和控制的功能,意法半导体 (STMicroelectronics)公司的STM32系列微控制器可以作为嵌入式系统的硬件平台,而基于ARM cortex-M 系列内核的Keil-MDK集成开发环境能够满足C语言强大的编译器要求,不仅能兼容C编译,也能同

17、时兼容汇编,C+等基本的嵌入式语言,并且易于上手和学习,是一款高效率的软件集成开发环境。针对目前家庭智能防盗系统设计的现状,人们更趋向于选择低成本,但能够满足基本防盗需求的中低端市场。所以为了尽可能使硬件成本的零趋势化,本系统采用意法半导体公司的STM32微控制器作为MCU,同时结合目前开源的UC/OS-III操作系统,大大降低系统的开发运维成本。而各种高集成度的传感器性能也可以达到目前的要求。因此本系统采用半集成的方式进行开发。(三)论文设计任务与要求本文主要任务是为普通家庭的安防提供一个可借鉴的参考性解决方案。由点及面,在解决智能防止入室盗窃的同时也为整个家庭的安防指明方向。本系统设置位置

18、为门窗等可以进入室内的通道边。当室内主人离开时系统自动开启,震动传感器实时监测和记录当前的门窗震动情况,红外超声测距传感器实时监测和记录当前的安全距离。通过LCD显示器显示出当前的实时时间,根据当前的实际情况来判断是否有人通过非正常手段进入室内,若有特殊情况发生,MCU控制器给出相应的信号,产生声光报警,震慑非法人员,并提交当前的状态信息到数据库保存。主要要求:1)完成实时时钟功能并通过LCD显示器显示。2)震动传感器可根据当前的震动情况来做出信号反应。3)红外超声测距传感器可实时监测当前的安全距离。4)每次提交到MCU的相关信息可以自动保存到系统数据库,并且可以查看和按条件查询。5)系统要求

19、使用嵌入式实时操作系统具有实时性。二系统开发平台及相关技术(一)开发环境Keil- MDK简介MDK-ARM软件为基于Cortex-M3、Cortex-R4、ARM7、ARM9处理器设备提供了一个完整的开发环境。 MDK-ARM专为微控制器应用而设计,不仅集成了51单片机的内核,而且简单易学,具有强大的功能,能够满足许多条件苛刻的嵌入式系统软件应用的开发。MDK-ARM有四个可用版本,分别是MDK-Lite、MDK-Basic、MDK-Standard、MDK-Professional。四个版本都提供一个功能完善和集成的C/C+编译开发环境,其中MDK-Professional还包含大量的中间

20、库。MDK功能特点: 支持Cortex-M3、Cortex-R4、ARM7和ARM9系列器件。 ARM C/C+编译链接和调试工具 确定的Keil RTX ,提供具有源码的小型操作系统 可供TCP/IP网络协议提供配件和堆栈 为USB设备提供标准的驱动设备 完整的图像化界面支持GUI ULINKpro可实时分析运行中的应用程序,且能记录Cortex-M指令的每一次执行 提供许多项目历程供参考学习 符合CMSIS 标准(二)硬件平台STM32介绍STM32系列产品基于超低功耗的 ARM Cortex-M3 处理器内核,采用专用优化的节能架构和低泄漏电流制造工艺。STM32采用的是32位微处理器的

21、指令集,具有强大的外设,GPIO,TPC,IIC等,灵活的软件外设为程序编译提供优秀的开发环境。STM主要性能特点:集成嵌入式Flash和SRAM存储器的ARM Cortex-M3内核,嵌入式Flash存储器和RAM存储器,可变静态存储器(FSMC),嵌套矢量中断控制器(NVIC),外部中断/事件控制器(EXTI),时钟和启动,Boot模式,电源供电方案,电源管理,电压调节,低功耗模式。STM32的主要架构优势:除新增的功能强化型外设接口外,STM32还提供了微控制器的标准接口,统一的标准接口使开发者在使用不同型号的STM32芯片开发时不必过多熟悉软件驱动和硬件架构,从而提高了开发的效率。新S

22、TM32的标准外设包括两个12位数模转换器、五个USART接口,两个12位1-Msample/s 模数转换器 (交错模式下2-Msample/s)、两个I2C接口,三个SPI端口和10个定时器。STM32还具有低电压和节能的优点,以72MHz时钟频率从闪存中取出并执行代码为例,最低仅仅消耗27mA的电流。(三)嵌入式实时操作系统UC/OS-III 介绍UC/OS-III由Micrium公司提供,UC/OS-III系统不仅是一个可裁剪的、可固化的内核,还是一个可移植,占先式多任务实时内核。UC/OS-III不仅也适用于多种微处理器,微控制器,同时也适用于DSP芯片。同时,该嵌入式实时操作系统源代

23、码开放、并且具有整洁性和一致性,代码的注释清楚详尽,非常适合应用于小型的嵌入式系统开发。严格地说UC/OS-III只是一个实时操作系统内核,它仅仅包含了任务管理,时间管理,任务调度,内存管理和任务间的异步通信和任务间的同步等基本功能。没有提供网络服务,输入输出,显示功能,文件系统等额外的服务。然而因为UC/OS-III提供了开源的条件,这些服务都可以由用户根据不同的硬件平台自主设计来完成和实现。UC/OS-III的设计是基于优先级的抢占性内核,并且具有实时性。不同的任务分别以不同的优先级存在于系统中,系统内核根据不同优先级来在各个任务之间切换,从而完成嵌入式实时性的要求。UC/OS系统的主要组

24、成: UC/OS-III可以大致分成核心部分、任务处理部分、时间处理部分、任务同步与通信部分,CPU的移植部分等5个部分。1) 核心部分(OSCore.c)OSCore.c函数是操作系统的核心处理函数,主要功能包括操作系统的初始化、操作系统的运行、所有中断进出的前导控制、时钟节拍的控制、任务调度算法和调度控制、事件的处理等多个部分。能够参与维持系统的基本工作功能的部分都在这里。2) 任务处理部分(OSTask.c)该部分中的内容均与与任务的各种操作密切相关的。包括任务的建立、任务的删除、任务的挂起、任务的恢复等等。因为UC/OS-III是以任务的形式为基本单位调度的,每个任务就是一个并行的线程

25、,所以这部分内容也非常重要。3) 时钟部分(OSTime.c)在UC/OS-III系统中timetick(时钟节拍)是最小的时钟单位。任务的延时和计数器的工作时钟等操作是在这里完成的。4) 任务同步和通信部分该为事件处理部分,包括信号量、互斥信号量,消息邮箱、邮箱队列、事件标志等许多部分;该部分主要用于临界资源的访问和任务间的互相通信联系。5) 与CPU的接口部分通常使用汇编来编写,也有的是汇编和C语言的嵌套实现,因为涉及到CPU的移植部分。CPU接口部分通常包括各种优先级级别任务,任务级别任务的底层实现,中断的处理和异常响应等等。UC/OS 系列从1992年出现发展至今,已经发布过多种功能和

26、性能各不相同的版本,而最新的UC/OS-III是以往版本的经验的总结,相对于UC/OS-II,UC/OS-III系统删除了许多冗余的功能,优化了系统资源,同时也添加了时间片轮询算法,提高了系统资源的利用率。UC/OS-III提供了更加高效和的功能和服务来满足不同处理器平台的硬件要求,从而能够不断适应陆续发布的不同处理器平台。特别的,UC/OS-III系统是为32位机设计应用的,但也能够在8位机和16位机上运行。三系统总体方案设计(一)系统功能实现及总体框图本系统在开启时实时时钟运行并通过LCD显示器显示当前时间,震动传感器和声光测距传感器同时工作,并且数据库得到创建。当震动传感器检测到有震动发

27、生,并且声光测距传感器所测得的距离不在安全距离之内的时候,MCU给出相应的GPIO信号,声光报警电路得到信号后产生声光报警,MCU读取当前的时间值并记录写入数据库。具体软件设计流程图为图3-1.1 震动 传感器STM32控制器 LCD 控制器 测距 传感器 实时 时钟 声光 报警 温湿度 传感器 数据库 系统 图 3-1.1软件设计图(二)系统硬件设计硬件设计部分主要包括:STM32 MCU控制器、LCD显示、传感器、报警模块等芯片的选择;主控芯片电路设计、数据采集电路设计,时钟电路,报警电路等功能模块电路设计。(三)系统软件设计软件采用模块化的C语言设计实现。嵌入式实时操作系统程序主要在OS

28、里面,实时时钟模块通过clock.c文件来实现,声光测距传感器和震动传感器的功能通过distance.c文件来实现,LCD显示器的功能通过lcd.c文件来实现,数据库的功能通过database.c文件来实现,声光报警功能在主函数main.c中来实现。启动通过bootloader加载启动之后进入主函数,首先初始化STM32系统时钟,然后是各个模块的初始化,完成之后建立几个用户线程分别运行各个模块的功能,从而开启工作模式。四系统硬件电路详细设计(一)MCU供电电路设计 图4-1.1MCU供电原理图AMS1117-3.3 输入+5V,提供3.3V 的固定电压输出,为了降低电磁干扰,C1-C5 为CP

29、U提供BANK 电源(VCC:P50、P75、P100、P28、P11 GND:P49、P74、P99、P27、P10)滤波。CPU 的模拟输入电源供电脚VDDA(P22)通过L1 22uH 的电感与+3.3V VDD 电压连接,CPU 的模拟地VSSA(P19)及VREF- (P20)通过R1 0 欧电阻与GND连接。VREF+(P21)采用VDDA(P22)电源基准。为RTC 的备份电源采用V1 3.3V 锂离子片状电池。(二)启动方式电路设计Boot1Boot0(P37,P94): x0: 内部程序存储区启动 01:系统存储区启动(为异步通信ISP 编程方式)在此将BOOT1 始终设置为

30、0, BOOT0 为可变的状态,在正常模式下将其置为0,在ISP编程时将其置为1。用JP1 跳线块设置,开路为ISP 模式,短路为正常运行模式。图4-2.1启动方式选择电路图(三)时钟源电路外部晶体/陶瓷谐振器(HSE)(P12、P13):B1:8MHz 晶体谐振器,C8,C9 谐振电容选择10P。系统的时钟经过PLL 模块将时钟提高到72MHz。低速外部时钟源(LSE)(P8、P9):B2: 32.768KHz 晶体谐振器。C10,C11 谐振电容选择10P。注意的是: 根据 ST 公司的推荐, B2 要采用电容负载为6P 的晶振,否则有可能会出现停振的现象。图4-3.1时钟源电路图(四)L

31、CD显示接口模块 LCD显示模块采用2.4” TFT320X240LCD(控制器ILI9325), 采用CPU 的FSMC 功能,LCD 片选CS 采用FSMC_NE1(P88),FSMC_A16(P58)作为LCD 的RS 选择,FSMC_nWE(P86)作为LCD 的/WR, FSMC_nOE(P85)作为LCD 的/RD, LCD 的RESET 脚用CPU 的PE1(P98)(LCD-RST),FSMC_D0-FSMC_D15 和LCD 的D1-D8 D10-D17 互相连接,电阻式触摸屏的检测接口采用SPI1 接口,片选为PB7-SPI1-CS3,由于LCD 背光灯使用恒流源PT410

32、1芯片控制,使用脉宽调制PWM波作为控制信号从而来控制背光的明暗, PWM 信号由PD13-LIGHT-PWM 来控制。PB6-7846-INT 用来接收触摸电路的中断触发和申请。LCD 寄存器地址为:0x6000 0000,LCD 数据区地址: 0x6002 0000图4-4.1 LCD接口电路(五)HC-SR04超声测距模块 图4-6.1 超声测距信号发送电路 图4-6.2 超声测距信号接收电路HC-SR04超声测距模块可提供2cm-400cm的非接触式距离的检测功能,最小的测距精度可达3mm,该模块主要包括超声波发生器,超声波接收器与超声波控制电路。基本工作原理:1)采用IO口TRIG触

33、发测距,提供少10us的高电平信号。2)模块触发后自动发送8个40KHz的方波信号,并自动检测是否有信号的返回。3)若有信号返回,会通过IO口ECHO输出一个高电平,输出的高电平所持续的 时间就是超声波信号从发射到返回使用的时间。测试距离=(高电平时间*声速)/2.超声波时序图: 图4-6.3 超声波时序图以上时许图表明只需要提供一个最少10us的方波脉冲作为触发信号,当触发信号发送后,该模块内部将自动发送8个40KHz周期方波电平并且检测回波信号。一旦接收并且检测到有回波信号便立即输出回响信号。输出的回响信号的高电平所持续的时间与所测的距离成正比。因此可以通过测量从发射信号到接收信号之间的时

34、间间隔,并用此时间间隔的时间可以计算得到距离。(六)声光报警电路 图4-7.1 声光报警电路工作原理:当串口IO输出高电平的时候二极管处于截止状态,发光二极管和蜂鸣器均不工作,当串口IO输出低电平时,发光二极管和蜂鸣器工作,产生声光报警的效果。(七)SW-420震动传感器电路 图4-8.1 震动传感器电路工作原理:通过10K电位器调节传感器的灵敏度输出,当目前处于静止状态没有震动情况发生时,传感器处于截止的状态,电压比较器LM393的同相输入端电压低于反相输入端电压,电压比较器输出低电平,开关指示灯亮,DO口=输出低电平。当有震动产生的时候,传感器处于导通状态,此时电压比较器LM393同相输入

35、端的电平高于反相输入端的电平,电压比较器输出高电平,开关指示灯不亮,DO口输出高电平。(八)温湿度检测电路温湿度传感器DHT11接口电路如图4-9.1 图4-9.1 DHT11接口电路 温湿度传感器通过如图所示电路与STM32的GPIO端口相连接,并且将对应的GPIO端口设定为浮空输入模式,通过每次MCU接收到的四字节数据来进行处理得出结果。五系统软件结构设计(一)软件总体设计框图开始创建震动线程创建测距线程创建显示线程系统初始化创建温湿线程创建数据线程创建时钟线程 图5-1.1 软件设计框图在系统通过bootloader第一阶段和第二阶段将内核从flash加载到RAM中完毕之后,PC便通过跳

36、转进入RAM中的0地址既主函数main的入口处,从主函数mian开始执行,既用户自己的用户程序。而进入主函数后首要任务便是对于STM32各种系统硬件资源的初始化,通过一些已经宏化的特殊功能寄存器记性操作来完成相关的功能,特别是对于时钟和中断的处理。当STM32硬件资源初始化完毕之后便是对UC/OS操作系统的初始化,对于各种系统资源的分配,任务堆栈和优先级的分配等等都是在这里完成地,只有系统初始化完成之后任务才能够访问系统资源,否则整个程序将会启动失败。当操作系统内核初始化完成之后便是各个任务线程的建立,这里主要用到OSTaskCreateExt 函数,关于函数的详细功能介绍一下会提到。OSTa

37、skCreateExt 函数完成对于LCD显示线程,红外声光测距线程,震动传感器线程,时钟线程,数据库线程和温湿度测量线程的创建。当各个线程任务得到创建并且分配到相应的系统资源之后,便可以启动UC/OS操作系统内核来运行和产生任务调度,从而完成整个系统的启动过程,整个过程中的主要函数及功能介绍如下。(二)主函数分析主函数主要完成系统相关硬件的初始化,创建用户线程和启动操作系统。主要代码如下:int main(void)CPU_INT08U os_err; /* 禁止所有中断 */ CPU_IntDis(); /* ucosII 初始化 */ OSInit(); /* 硬件平台初始化 */RCC

38、_Configuration();FSMC_LCD_Init();myGPIO_Configuration();myTIM_Configuration();FSMC_LCD_Init(); /FSMC总线配置 LCD_Init1();Delay(0xffff);LCD_Clear(0xffff);GUI_Text(10,32,Hello!,6,0x0000,0xffff);GUI_Text(20,64,My name is ZhangWei,19,0x0000,0xffff);/建立主任务, 优先级最高 建立这个任务另外一个用途是为了以后使用统计任务 os_err = OSTaskCreate

39、(void (*) (void *) App_TaskStart, (void *) 0,(OS_STK*) &App_TaskStartStkAPP_TASK_START_STK_SIZE - 1, (INT8U) APP_TASK_START_PRIO);/分配给任务的优先级 OSTimeSet(0); /ucosII的节拍计数器清0 节拍计数器是0-4294967295 OSStart(); /启动ucosII内核 return (0);其中函数CPU_IntDis() 的功能是禁止所有中断,防止在系统初始化硬件资源的同时触发中断从而导致初始化无法完成从而启动失败。OSInit()为U-

40、cos系统系统资源的初始化。OSTaskCreate()建立用户线程,OSStart()启动操作系统内核。(三)Sensor_using 函数分析Sensor_using函数原型为:float Sensor_using(void) float distance=0; u16 TIM=0;void delay_s(void); GPIO_SetBits(GPIOC,GPIO_Pin_7); delay_s(); GPIO_ResetBits(GPIOC,GPIO_Pin_7); TIM_Cmd(TIM3, ENABLE); while(GPIO_ReadInputDataBit(GPIOC,GP

41、IO_Pin_6)=0); TIM3-CNT=0; while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_6); TIM_Cmd(TIM3, DISABLE); TIM=TIM_GetCounter(TIM3); distance=(float)sqrt(TIM/20.0*17)*(TIM/20.0*17)-module_interval*module_interval/4.0)+12.0; /12.0 return(distance);开始设定GPIO的C7端口为数据发送端口,C6端口为数据的接受端口并相应初始化端口。首先GPIO C7端口发送10us的高电平

42、触发测距,然后开启定时器,记录接收到的高电平持续的时间,然后跟据这个时间值进行运算得到实际的距离值。(四)LCD_PutChar函数分析LCD_PutChar函数原型为:void LCD_PutChar(u16 x,u16 y,u8 c,u16 charColor,u16 bkColor) u16 i=0; u16 j=0; u8 tmp_char=0; for (i=0;i16;i+) tmp_char=ascii_8x16(c-0x20)*16)+i; for (j=0;j 7-j) & 0x01 = 0x01) LCD_SetPoint(x+j,y+i,charColor); / 字符颜

43、色 else LCD_SetPoint(x+j,y+i,bkColor); / 背景颜色 函数功能为在指定座标显示一个8x16点阵的ascii字符,入口参数:x为 行座标, y为列座标,charColor为字符的颜色,bkColor为字符背景颜色。(五)create_table函数解析create_table函数原型为:void create_table(char *tab_name)unsigned int i=0,m=0;/printf(creating the table load.n);while(*cmd_stri!=0&iLOAD= n*9; SysTick-VAL= 0; Sys

44、Tick-CTRL|= ENABLE; while(SysTick-VAL|!(SysTick-CTRL&(1CTRL=0X00000000; SysTick-VAL= 0; void delay_nms(u32 n)while(n-)delay_nus(1000); /全局变量定义区/*/ /uchar i;/ uchar U8FLAG,k;/ uchar U8count,U8temp;/ uchar U8T_data_H_temp,/ uchar U8comdata;/ uint ReceiveHighByte;/ uint ReceiveLowByte;/*Global definati

45、on for DHT11 end*/ void DHT11_PortIN(void)GPIO_InitTypeDef GPIO_InitStructure;/Configure pin as input GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /浮动输入GPIO_Init(GPIOB,&GPIO_InitStructure);void DHT11

46、_PortOUT(void)GPIO_InitTypeDef GPIO_InitStructure;/Configure pin as input GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 ;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /推挽输出GPIO_Init(GPIOB,&GPIO_InitStructure);unsigned char StartDHT11(void) /unsigned ch

47、ar flag; DHT11_PortOUT();GPIO_ResetBits(GPIOB,GPIO_Pin_12); / DHT11_Out = 0; /delay_ms(18); /触发开始,总线拉低要大于18msdelay_nms(18); GPIO_SetBits(GPIOB,GPIO_Pin_12); /DHT11_Out = 1;/释放总线 /delay_us(25); /wait 20-40uS 等待DHT11的低电平响应信号delay_nus(25); DHT11_PortIN();/改为输入 /delay_us(5); /if(!PINC.3) if(!GPIO_ReadIn

48、putDataBit(GPIOB,GPIO_Pin_12) /while(DHT11_In)/DHT11如果响应的话会拉低总线80us / while(!GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12);/低电平的响应信号,80us while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12);/紧接着是80us的高电平数据准备信号 /拉低后DHT11会拉高总线80us,接着会开始传数据 return 1; / / if(DHT11_In)/ / /while(!PINC.3) & flag +); /等待低电平80uS/ / w

49、hile(!DHT11_In) & flag +);/ /while(PINC.3) & flag +); /等待高电平80uS/ / while(DHT11_In) & flag +);/ return(1);/ return 0;void com(void)u8 i,tt;/Flag = 0;tt = 0;for(i = 0;i8;i+)sbuf 70了delay_nus(40);else /如果变低sbuf &= 0xfe;u8 ReadDHT11(void)u8 sum;if(StartDHT11()/判断是否已经响应com();tdata0=sbuf;com();tdata1=sbuf;com();tdata2=sbuf;

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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