毕业设计(论文)-基于STM32的车内多点温度检测系统.doc_第1页
毕业设计(论文)-基于STM32的车内多点温度检测系统.doc_第2页
毕业设计(论文)-基于STM32的车内多点温度检测系统.doc_第3页
毕业设计(论文)-基于STM32的车内多点温度检测系统.doc_第4页
毕业设计(论文)-基于STM32的车内多点温度检测系统.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

苏州大学本科生毕业设计(论文)基于单片机的汽车水温及车内温度多点检测全套设计加扣3012250582 苏州大学 应用技术学院 12电子(学号1216405042) 目录目录1第1章 绪论4第1.1节 研究背景4第1.2节 任务与目标4第2章 系统总体方案设计6第2.1节 处理器芯片选择6第2.2节 温度传感器方案选择6第2.3节 显示器件方案选择7第2.4节 语音合成模块方案选择7第3章 系统硬件设计9第3.1节 单片机最小系统设计9第3.2节 传感器电路设计10第3.3节 语音芯片电路设计12第3.4节 硬件总体电路设计13第4章 软件设计14第4.1节 主程序以及流程图14第4.2节 显示程序17第4.3节 传感器驱动程序22第4.4节 语音提示程序29第五章 系统调试与分析33第5.1节 硬件实物测试33第5.2节 测试数据分析33第六章 总结35参考文献36致 谢3635基于单片机的汽车水温及车内温度多点检测苏州大学 应用技术学院 12电子【摘要】随着时代的发展、社会的进步、科学技术的不断提高,对温度测量的范围要求不断增大,同时对温度测量的精度要求也不断提高。因此,对如何方便、精确、实时的测量温度的研究也成为一个重要的研究课题。本课题设计了一种基于STM32单片机的具有多路采集通道的高精度的数字温度检测系统。设计了包括温度信号处理,液晶显示,报警设置等在内的完整系统。本设计的CPU采用以STM32为主控芯片的单片机系统,主要由18B20温度传感器作为信号采集装置,对4路传感器进行数据采用并有OLED模块进行显示,采用语音合成模块,可每分钟进行一次温度数值的语音播报。【关键词】语音播报、STM32单片机、DS18B20、OLEDAbstract :With the development of the times, the progress of the society, the continuous improvement of science and technology, the range of temperature measurement is increasing, and the accuracy of temperature measurement is also improved. Therefore, it is an important research topic to study how to measure the temperature in a convenient, accurate and real-time. This paper designs a high precision digital temperature detecting system based on STM32 single chip microcomputer. Design a complete system including temperature signal processing, LCD display, alarm setting, etc. The design of the CPU used in the STM32 based single-chip microcomputer system, mainly by the 18B20 temperature sensor as a signal acquisition device, the data of the 4 sensors and the OLED module, the use of speech synthesis module, can be carried out every minute of a temperature data broadcast.Key words: Voice broadcast, STM32 microcontroller, DS18B20, OLED第1章 绪论第1.1节 研究背景从第一辆汽车诞生到现在已有一百多年的历史,随着社会和科学技术的发展,如今汽车已经走进了寻常百姓家,成为人们必备的交通工具之一;而且我国经济发展水平与汽车产业发展水平有着密切的关系,汽车产业是衡量我国经济发展水平的重要指标,汽车工业在我国已经占着举足轻重的地位。随着汽车电子技术和计算机控制技术的发展,各类汽车公司厂商都运用大量的电子技术和计算机技术,从而改善汽车经济性、安全性和舒适性,并且提高了汽车技术性能。然而汽车水温测量准确,对汽车发动机来说尤为重要。随着单芯片技术的迅速崛起和繁荣,其稳定,安全,高效,经济的优点十分突出,因此它的应用非常广泛,它具有一般电脑相似,强大的数据处理能力,通过采用一些科学的算法,可以得到强烈的数据处理能力。因此,在行业单片机应用,可以大大提高工业设备,数据处理能力和处理效率的情报,但不占用大量空间的微控制器。同时,在温度的寿命的温度起着重要的作用。不管你住在哪里,什么样的工作的所有的时间和交易名称的温度。自18世纪,工业革命,温度是否具有绝对的高手链接的产业化发展。在冶金,钢铁,石化,水泥,玻璃,制药业等,可以说,几乎80的工业部门不得不考虑温度的因素。第1.2节 任务与目标根据课题的要求,以及实际需要,我们通过分析相关信息,提出对本系统预期指标并加以总结。本课题设计的温度测采集系统,主要运用了集成温度传感器DS18B20作为敏感元件对物体进行温度测量。本文设计了一种基于ARM单片机的数据采集,温度传感器DS18B20完成将模拟信号(温度)转换成数字信号的功能,由ARM单片机控制从而实现对数据的采集。单片机系统将输出相应的逻辑电平,经驱动后控制输出电路通过OLED模块显示实时温度。并每1分钟可以语音播报一次温度值。本系统的实现目标:1. 实时巡检功能 本系统能够同时4点温度,检测温度范围-55125。根据实际需要,检测点数是可以扩展的。2. 高精度 应用12位分辨率,采用过采样和工频周期求均值技术,检测温度变化最小值达到0.0625。3. 传输距离远 使用RS-485串行总线进行传输,MAX485驱动芯片进行电平转换,传送距离大于1200m,抗干扰能力强。4. 可维护性 本系统的设计,可自动识别传感器的算坏,并作出相应的指示,提示使用者进行更换,同时,传感器的更换不用再次由专业人员修改程序,通过预留的ID读取端口,可以轻松地实现。5. 工作可靠 可以配合上位机工作,也可以独立工作的,分体独立组合设计,是用户使用起来更加方便,可适应各种工作环境。我们配备OLED显示模块来显示温度数据。6. 具有语音提示功能 每分钟可以语音播报一次4个传感器所测温度数值7. 显示系统具有一个可靠的直观的显示系统。第2章 系统总体方案设计第2.1节 处理器芯片选择2.1.1 方案选择方案一: 采用一台PC机来实现。它可在线编程,在线仿真,调试变得容易。而且人机交互友好。然而, PC的输出信号不能直接与DS18B20通信。通过RS232电平转换兼容的硬件合成线调试,比较繁琐。在某些情况下, PC机体积大,携带不方便安装,性能不稳定,对于一些项目很麻烦!方案二: 使用STM32微控制器。单片机软件编程自由度大,可实现各种各样的算术和逻辑控制算法的编程。而且体积小,硬件实现简单,易于安装。可单独用于多个DS18B20控制工作,还可以与PC机进行通讯。采用主从分布式思想,由一台上位机(PC微型计算机) ,下位机( SCM)的多点温度数据采集,组成两级分布式多点温度测量电路的检测系统,远程控制。此外,在工业控制上STM32具有广泛的应用范围,编程技术和电路的外围功能是很成熟。方案三: 采用工业控制机。它主要用于在工业过程的测量,控制和数据采集。虽然该机拥有一系列工业控制温度,湿度适宜大,防尘,防腐蚀,抗振动冲击也良好的电磁兼容性和抗干扰性和共模抑制。然而,为了适应工业领域的要求,工业控制机专门设计的高可靠性的电源装置和高功率双冷却风扇配置,单系统设计的复杂性的要求,所以这不是用于工业控制的机器。综上所述,采用方案二较为合理。第2.2节 温度传感器方案选择方案一:使用热敏电阻,热电偶等可满足40摄氏度至90摄氏度的测量范围,但是热敏电阻精度,可重复性,可靠性差,为1摄氏度信号的检测是不适用的。而且在温度测量系统,采用单片温度传感器,如AD590、LM35等,但这些芯片是模拟输出信号必须通过在A/D转换器可以被发送到计算机,这样就使得温度测量装置结构更复杂。此外,一条线该温度测量装置的只能挂传感器不能进行多点测量。即使能实现,也能使用复杂的算法,在一定程度上,也增加了软件实现的难度。方案二:在多点温度测量系统,温度测量的传统方法是模拟信号远程采样并AD转换,并且为了获得一个较高的温度测量精度,有必要采取措施,解决长期传输,交换引起的误差补偿多点测量放大器零点漂移。数字式温度芯片DS18B20温度测量全数字输出信号。易于MCU处理和控制,省去了许多外部电路的温度测量的传统方法。该芯片的物理和化学性质非常稳定,它可以被用作工业温度测量元件,该元件优选为线性的。当摄氏0-100度,最大线性偏差小于1摄氏度。DS18B20的数据传输的使用单一总线的最重要的特征之一,所述温度测量装置包括一个数字温度计DS1820和微控制器的STM32配置,从而直接输出温度的数字信号可以直接连接到计算机的。因此,温度测量系统的结构相对简单,体积并不大,而且由于STM32可以采集多组DSB1820,它可以很容易地实现多点测量。轻松实现一个传感器网络。采用DS18B20芯片来实现温度测量,也顺应了这一趋势。集成电路的部分功能被集成化,从而使整个电路更简洁,构建电路和设计电路快。此外,歧管的使用,有效地避免外界干扰,提高了测量电路的准确性。因此,使用集成的芯片将成为一种趋势电路开发。所以本方案选择次芯片也顺应了这一趋势。第2.3节 显示器件方案选择方案一:采用LCD12864液晶显示屏。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式。利用该模块灵活的接口方式很简单、操作指令方便,可以显示84行1616点阵的中文字,也可以显示图像,具有较低的功耗。虽然LCD12864液晶显示功能相对强大,但是显示的内容偏大造成了显示空间的浪费,而且该液晶的成本高。方案二:采用OLED显示模块,该模块是一个12864像素的单色线、字符、图形显示模块,使用SSDl303驱动OLED的矩阵,内部整合128 X64 = 8192单位的RAM,对应于OLEDl28 64像素,被划分为八个,每个页面被分成8行。通过SPI总线通信,每个RAM单元直接作为驱动信号的图形显示的数据。综上所述,综合考虑开发周期和成本,显示屏采用OLED显示模块。第2.4节 语音合成模块方案选择 方案一: 采用SC8065语音合成芯片,SC8065是一款单芯片CMOS一次性可编程语音芯片,该语音芯片采用最新的架构EPROM OTP(一次性可编程),具有输入PWM脚和两个I / O引脚,拥有准确性和抗干扰性,只有一组PWM输出的。 方案二:采用SYN6288语音合成模块,SYN6288 中文语音合成芯片是北京宇音天下科技有限公司于 2010 年初推出的一款性价比更高,效果更自然的一款中高端语音合成芯片。 SYN6288 通过异步串口接收待合成的文本,实现文本到声音( TTS )的转换。综上所述,综合考虑开发周期和成本,采用SYN6288语音合成模块。第3章 系统硬件设计第3.1节 单片机最小系统设计该STM32F103xx微控制器是ST公司生产并应用于此论文工作。决定使用微控制器STM32 F103在这次的项目,因为该微控制器STM32 F103有许多比较高级的特征其它微控制器。这是一个最好的类32位MCU,以控制最佳性能和连接在电子项目,则能够在DSP中执行(数字信号处理器)解决方案(高频性能),有以低功率应用节省功率系统,周围的速度增加了更好的性能等。 STM32F103xx微控制器系列包括ARM Cortex-M3的32位RISC的内核,高速嵌入式存储器(闪存高达128 KB的和静态随机存取存储器(SRAM)是多达20字节),I / O的(输入/输出)和外设它们通过连接两个APB(先进外设总线)总线一起合作。该STM32F103xx微控制器包括很多外设以及两个12位的ADC,一个先进的控制定时器,3个通用16位定时器,也是一个PWM(脉宽调制)定时器。它也由两个ICs(内部集成电路)和SPI(串行提供的外设接口),三个USART(通用同步/异步接收发送器),一个USB和一个CAN(控制器区域网络)作为通信接口系统。低密度微控制器具有较低闪存和RAM(随机存取存储器),少计时器和外设在比较其他两组。因此,Mediumdensity和高密度包括更高闪存,RAM的容量并且也有更多的附加外设。低密度系列包括16 KB至32 KB闪存和6 KB到10 KB RAM容量。它们由1CAN,1USB,1PWM定时器,1IC,1SPI和2模数转换器,2个USART,和216位的定时器。低密度的家庭之间的差异是关于它们的引脚包的数量。有三种引脚封装他们由36,48和64引脚。他们的闪存64 KB至128改进KB和RAM容量为20 KB。中密度家庭拥有更多的属性在比较低的密度家庭。该外围设备和它们的引出线的数目提高。他们有1CAN,1USB,1PWM定时器,2IC,2SPI,2ADC的,3个USART,和316位的定时器。他们也有三种引出线包包括48,64和100的引脚。高密度家庭完成超过其他人,有更多的外围设备。他们做向上这些外围设备,如1CAN,1USB,1PWM定时器,2ISs(SPI),2IC,3SPI,2的ADC,1数模转换器,5个USART,2基本定时器,416位定时器,1SDIO(安全数字输入输出),1FSMC(灵活的静态存储控制器)。对于这个项目的STM32F103xB微控制器(中等密度装置)被应用,它应该提到的是所有的STM32家庭的性能线是完全兼容。 STM32 最小系统电路外接 8MHZ 晶振,经内部 PLL 锁相环倍频之后得到 72MHZ供内部使用;启动项默认为低电平表示从内部 flash开始运行程序;并采用 RC 复位电路实现系统的上电复位。其原理图如下图3.1所示:图3.1 STM32F103C8T6最小系统图第3.2节 传感器电路设计 这里我们用到温度芯片DS18B20。DS18B20的数字温度计提供9位至12位摄氏温度测量和具有非易失性用户可编程报警功能上部和下部的触发点。DS18B20的通信,通过1-Wire总线根据定义仅需要一个数据线(和地面),用于与中央通信微处理器。它的工作温度范围为-55C至+ 125C,并精确到0.5C在-10C至+ 85C的范围内。在此外,DS18B20可以直接获得动力从数据线(“寄生功率”),消除需要一个外部电源。每个DS18B20都有一个唯一的64位序列码,它允许多个DS18B20s才能正常运行同样的1-Wire总线。因此,它是简单的使用一个微处理器控制多DS18B20s分布在一个大的面积。应用程序可以从中受益包括HVAC环境控制,温度监测系统内的建筑物,设备,或机械,过程监控和控制系统。 DS18B20的64位ROM存储设备的唯一序列码。暂存器中包含2个字节温度寄存器,用来存储来自温度传感器的数字输出。此外,暂存器提供对1个字节的上和下报警触发寄存器(TH和TL)和1字节的配置寄存器。配置寄存器允许用户设置temperatureto数字的分辨率转换到9,10,11,或12比特。该TH,TL和配置寄存器是非易失性(EEPROM),因此当设备断电他们将保留的数据。该DS18B20采用Maxim独特的1-Wire总线协议的使用实现总线通讯一个控制信号。控制线,需要一弱上拉电阻,因为所有的设备都连接到总线通过三态或开漏输出端口(在DS18B20的情况下,DQ引脚)。在此总线系统中,微处理器(主设备)识别并使用每个设备的唯一总线上的地址的设备64位的代码。因为每个设备都有一个唯一的代码,可以在一个总线寻址装置的数量几乎是无限的。 1-Wire总线协议,包括命令的详细说明和“时间段”,是覆盖在1-Wire总线系统一节。该DS18B20的另一个特点是,无需外接电源运行的能力。电源是通过DQ引脚通过1-Wire上拉电阻,而不是提供当总线高。高电平信号也收取内部电容(CPP),然后将电力提供给设备时,在总线低。导出从1-Wire总线功率的方法被称为“寄生功率。”作为一个替代方案中,DS18B20也可以通过在VDD上的外部电源供电。 该DS18B20的核心功能是它的直接到数字温度传感器。的决议温度传感器是用户可配置到9,10,11,或12比特,对应于0.5增量,0.25C,0.125C和0.0625C,分别。在上电时的默认分辨率为12位。该DS18B20权力在低功耗空闲状态。为了启动温度测量和A至D转换,主机必须发出转换T 44H命令。以下转换,所得到的热数据是存储在2字节温度寄存器在高速暂存存储器和DS18B20的返回到它的空闲州。如果DS18B20是由外部电源供电,主站可以发出“读时隙”转换T指令后的DS18B20将通过发送响应0而温度转换过程中和1时,转换完成。如果DS18B20是供电用寄生电源,该通知技术不能使用,因为公交车必须拉高通过在整个温度转换强上拉。对于寄生电源总线要求在详细的供电DS18B20的部分进行说明。DS18B20的输出温度数据校准为摄氏度;华氏应用,查找表或转换例程必须使用。的温度数据被存储为一个16位符号扩展在温度寄存器二补数(参见图2)。符号位(S)表示,如果温度的正或负:对于正数S = 0和对于负数S = 1。如果DS18B20配置为12位分辨率,在温度寄存器中的所有位都包含有效数据。对于11位分辨率,位0未定义。对于10位分辨率,位1和0是不确定的,并为9位分辨率比特2,1和0是不确定的。表1给出的数字输出数据和实施例相应的温度读数为12位分辨率的转换。 按DS18B20的供电方式,其应用电路结构可分为如下3种:寄生电源供电方式;寄生电源强上拉供电方式;外部电源供电方式。实际应用中,以外部电源供电方式为主。其应用原理图如下图3.2所示。图3.2第3.3节 语音芯片电路设计 SYN6288 中文语音合成芯片是北京宇音天下科技有限公司于 2010 年初推出的一款性价比更高,效果更自然的一款中高端语音合成芯片。 SYN6288 通过异步串口接收待合成的文本,实现文本到声音( TTS )的转换。功能特点: 支持 GB2312 、 GBK 、 BIG5 和 UNICODE 内码格式的文本; 清晰、自然、准确的中文语音合成效果;可合成任意的中文文本,支持英文字母的合成; 具有智能的文本分析处理算法,可正确识别数值、号码、时间日期及常用的度量衡符号; 具备很强的多音字处理和中文姓氏处理能力; 支持多种文本控制标记,提升文本处理的正确率; 每次合成的文本量最多可达 200 字节; 支持多种控制命令,包括:合成、停止、暂停合成、继续合成、改变波特率等; 支持休眠功能,在休眠状态下可降低功耗;支持多种方式查询芯片工作状态; 支持串行数据通讯接口,支持三种通讯波特率: 9600bps , 19200bps 、 38400bps ; 支持 16 级音量调整;播放文本的前景音量和播放背景音乐的背景音量可分开控制; 可通过发送控制标记调节词语语速,支持 6 级词语语速调整; 芯片内固化有多首和弦音乐、提示音效和针对某些行业领域的常见语音提示音; 内部集成 19 首声音提示音, 23 首和弦提示音, 15 首背景音乐; 最终产品提供 SSOP 贴片封装形式;体积业内最小; 芯片各项指标均满足室外严酷环境下的应用;SYN6288提供一组全双工的异步串行通讯(UART)接口,实现与微处理器或PC的数据传输。SYN6288利用TxD和RxD以及GND实现串口通信。其中GND作为地信号。SYN6288芯片支持UART接口通讯方式,通过UART接口接收上位机发送的命令和数据,允许发送数据的最大长度为206字节。本系统将主控芯片的PA9与SY6288的RXD引脚相连,其TXD则与主控芯片的PA10连接,实现UART通信。VCC接电源正,GND接电源地,SPEAKER的两个音频输出接口连接喇叭。如下图3.3所示:图3.3 语音芯片电路图第3.4节 硬件总体电路设计硬件总体电路设计如下图3.4所示:图3.4 硬件电路总设计电图第4章 软件设计第4.1节 主程序以及流程图程序首先初始化单片机内部时钟,初始化STM32串口USART1,再初始化外设,包括DS18B20温度传感器、语音合成模块以及OLED显示模块,同时开启定时器1,每计时到一分钟触发计时器中断,通过语音合成模块播报当前四个传感器的数据。其流程图如下图4.1所示:图4.1 主程序运行流程图具体程序如下所示:#include ds18b20.h#include usart.h#include oled.h#include delay.h#include syn6288.h#include tim.hint main()char Temp120,Temp220,Temp320,Temp420;USART1_Config();delay_init(72);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);Temp_ParameterInit();DS18B20_Init();OLED_Init();syn6288_Init();/语音模块初始化TIM_Init();syn6288_SpeakStr(欢迎使用多点温度检测系统,0);for(;)Read_AllTemperature();sprintf(char*)Temp1,T1:%d T2:%d,Temp_erger,Temp_erger);sprintf(char*)Temp2,T3:%d T4:%d,Temp_erger,Temp_erger);sprintf(char*)Temp3,1216405042);sprintf(char*)Temp4,WZX);/OLED_CLS();OLED_8x16Str(0,0,(unsigned char*)Temp1);OLED_8x16Str(0,2,(unsigned char*)Temp2);OLED_8x16Str(0,4,(unsigned char*)Temp3);OLED_8x16Str(0,6,(unsigned char*)Temp4);if(flag=1)flag=0;TIM_Cmd(TIM2, DISABLE);syn6288_SpeakStr(Temp_1,0);syn6288_SpeakStr(Temp_2,0);syn6288_SpeakStr(Temp_3,0);syn6288_SpeakStr(Temp_4,0);TIM_Cmd(TIM2, ENABLE);第4.2节 显示程序 OLED显示模块首先会进行初始化,先复位OLED模块,在设置需要显示字体的大小,再设置光标的位置,用来确定显示文字的位置,最后将需要显示的文字显示出来,其程序运行流程图如下所示:图4.2 OLED显示模块程序流程图实现函数及其功能: 1. void OLED_WrDat(unsigned char dat) - 向OLED写数据 2. void OLED_WrCmd(unsigned char cmd) - 向OLED写命令 3. void OLED_SetPos(unsigned char x, unsigned char y) - 设置起始点坐标 4. void OLED_Fill(unsigned char bmp_dat) - 全屏填充(0x00可以用于清屏,0xff可以用于全屏点亮) 5. void OLED_CLS(void) - 清屏 6. void OLED_Init(void) - OLED显示屏初始化 7. void OLED_6x8Str(unsigned char x, y,unsigned char ch) - 显示6x8的ASCII字符 8. void OLED_8x16Str(unsigned char x, y,unsigned char ch) - 显示8x16的ASCII字符 9.void OLED_16x16CN(unsigned char x, y, N) - 显示16x16中文汉字,汉字要先在取模软件中取模 10.void OLED_BMP(unsigned char x0, y0,x1, y1,unsigned char BMP) - 全屏显示128*64的BMP图片详细程序如下所示:#include OLED.h#include delay.h#include codetab.h#include stm32f10x_gpio.hvoid OLED_WrDat(unsigned char dat)/写数据unsigned char i;OLED_DC_Set();for(i=0;i8;i+)if(dat i) & 0x80)OLED_SDA_Set();elseOLED_SDA_Clr();OLED_SCL_Clr();OLED_SCL_Set();void OLED_WrCmd(unsigned char cmd)/写命令unsigned char i;OLED_DC_Clr();for(i=0;i8;i+) /发送一个八位数据if(cmd 4)|0x10);OLED_WrCmd(x&0x0f)|0x01);void OLED_Fill(unsigned char bmp_dat)/全屏填充unsigned char y,x;for(y=0;y8;y+)OLED_WrCmd(0xb0+y);OLED_WrCmd(0x01);OLED_WrCmd(0x10);for(x=0;x126)x=0;y+;OLED_SetPos(x,y);for(i=0;i120)x=0;y+;OLED_SetPos(x,y);for(i=0;i8;i+)OLED_WrDat(F8X16c*16+i);OLED_SetPos(x,y+1);for(i=0;i8;i+)OLED_WrDat(F8X16c*16+i+8);x+=8;j+;void OLED_16x16CN(unsigned char x, unsigned char y, unsigned char N)unsigned char wm=0;unsigned int adder=32*N;OLED_SetPos(x , y);for(wm = 0;wm 16;wm+)OLED_WrDat(F16x16adder);adder += 1;OLED_SetPos(x,y + 1);for(wm = 0;wm 16;wm+)OLED_WrDat(F16x16adder);adder += 1;void OLED_BMP(unsigned char x0, unsigned char y0, unsigned char x1, unsigned char y1, unsigned char BMP)unsigned int j=0;unsigned char x,y; if(y1%8=0)y=y1/8; elsey=y1/8+1;for(y=y0;yy1;y+)OLED_SetPos(x0,y); for(x=x0;xx1;x+)OLED_WrDat(BMPj+);第4.3节 传感器驱动程序 DS18B20的的存储器被组织成如下图所示的存储器由SRAM的暂存器非易失EEPROM存储器的高低报警触发寄存器(TH和TL)和配置寄存器。注意,如果DS18B20报警功能没有被使用时,TH和TL寄存器可以作为通用存储器。所有存储器命令中详细的描述DS18B20功能命令一节。字节0和暂存器的字节1包含LSB和温度寄存器的MSB,分别。这些字节只读。字节2和3提供访问TH和TL寄存器。字节4包含配置寄存器数据,对此进行了详细的配置寄存器部分中说明。字节5,6,和7被保留以供由设备内部使用,并且不能被重写。暂存器字节8为只读,并包含CRC码字节0暂存器7。DS18B20的使用产生了CRC代节中介绍的方法,该CRC校验码。数据是使用写暂存器4EH命令写入字节2,3,4暂存器;数据必须传送到DS18B20的开头字节2的至少显著位要验证数据诚信,暂存器可以读取(使用读暂存器BEH命令)之后的数据是书面。当读暂存器,数据传送通过1-Wire总线从最低显著字节0的位从暂存器转移的TH,TL和配置数据EEPROM,主机必须发出复制暂存器48小时命令。在EEPROM寄存器数据时,该设备掉电被保留;在上电时对EEPROM数据重新装入相应的暂存器位置。数据还可以从EEPROM重新加载暂存器随时使用召回E2 B8H命令。主机可以发出读时隙继召回E2命令和DS18B20将指示召回的状态通过发送0而召回正在进行中,1的时候记得完成。流程如下图4.3所示图4.3 DS18B20读取流程图具体程序如下所示:#include ds18b20.h#include delay.h#include usart.hTemp_Typedef Temp_dataMAXNUM;u8 ROM_IDMAXNUM8=0x28,0xff,0x1,0xcf,0x64,0x15,0x1,0x50,0x28,0xff,0x7f,0xd8,0x64,0x15,0x1,0x21,0x28,0xff,0x85,0xcd,0x64,0x15,0x1,0x83 ,0x28,0xff,0x9a,0xe3,0x64,0x15,0x1,0xf5;/*28 ff 1 cf 64 15 1 5028 ff 7f d8 64 15 1 2128 ff 85 cd 64 15 1 83 28 ff 9a e3 64 15 1 f5*/void GPIO_DQ_Out_Mode(void) GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DQ_GPIO_Pin; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; /开漏输出 GPIO_Init(DQ_GPIO ,&GPIO_InitStructure); void GPIO_DQ_Input_Mode(void)GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DQ_GPIO_Pin; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /浮空输入 GPIO_Init(DQ_GPIO ,&GPIO_InitStructure); void Tx_ResetPulse(void) GPIO_DQ_Out_Mode();DQ_Write_0(); /复位脉冲 delay_us(600); /至少保持480us DQ_Write_1(); /加速上升沿速度 delay_us(20);void Rx_PresencePulse(void) GPIO_DQ_Input_Mode();while( DQ_ReadBit(); /等待DS18b20应答 while( DQ_ReadBit() = 0); /DS18b20将总线拉低60240us ,然后总线由上拉电阻拉高 delay_us(300);GPIO_DQ_Out_Mode(); /接受完成,主机重新控制总线void Write_OneByte_ToDS18b20(unsigned char data) unsigned char i; GPIO_DQ_Out_Mode(); for(i=0;i= 1; void DS18B20_WriteBit(unsigned char data) GPIO_DQ_Out_Mode(); if(data&0x01) /低位在前 /写1 DQ_Write_0();/写时间空隙总是从总线的低电平开始 delay_us(8);/15us内拉高 DQ_Write_1();delay_us(80); /整个写1时隙不低于60us else /写0 DQ_Write_0();delay_us(110);/保持在60us到120us之间 DQ_Write_1(); delay_us(5); unsigned char Read_OneByte_FromDS18b20(void) unsigned char i ,data = 0; for(i=0;i= 1; DQ_Write_0(); delay_us(2); GPIO_DQ_Input_Mode(); delay_us(1); if(DQ_ReadBit() data |= 0x80 ; delay_us(70); /等待这一位数据完成传输 GPIO_DQ_Out_Mode(); return data; u8 DS18B20_Read2Bit(void)unsigned char i ,data = 0; for(i=0;i

温馨提示

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

评论

0/150

提交评论