传感器课程设计1.doc_第1页
传感器课程设计1.doc_第2页
传感器课程设计1.doc_第3页
传感器课程设计1.doc_第4页
传感器课程设计1.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

课程设计(大作业)报告课程名称:传感器原理及应用 设计题目: 利用DS18B20采集温度 摘要利用DS18B20采集温度,本次传感器原理及应用课程设计,就是用KL25芯片实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。本次采用DS18B20数字温度传感器来实现温度计的设计。显示传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是温度传感DS18B20的数据采集过程。本文主要是运用DS18B20来完成实验,KL25微秒级延时,编写程序代码并进行修改,程序代码主要0是低电平,1是高电平,每次读要复位,读设置为输入,写设置为输出。关键词: DS18B20传感器、KL25微妙延时、数据采集。目录课程设计(大作业)报告1一、 题目分析1二、 基本理论1三、 总体设计及分析11、 总体内容12、 仿真图及原理图23、 工作原理34、 串口测试结果4四、 实验器材51、器件52、DS18B20的特点5五、 程序代码及分析5六、 总结9七、 参考文献10昆明学院信息技术学院课程设计(大作业)报告课程设计(大作业)报告一、 题目分析利用DS18B20采集温度,本次传感器原理及应用课程设计,就是用KL25芯片实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。本次采用DS18B20数字温度传感器来实现温度计的设计。利用DS18B20采集温度,显示传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是温度传感器DS18B20的数据采集过程。温度传感器DS18B20的数据采集,把程序代码烧到KL25芯片,连接面包板上的电路,与芯片相连接,通过串口采集,显示十进制,把环境温度采集到串口上显示出来。KL25芯片自身就有温度传感器,可以通过引脚配置,采集传感器监测到的温度,但是此时监测到的温度并不能用摄氏度进行显示,得到的数据只是原始数据,无法与真实的温度联系在一起,因此我们需要采用回归的方法,将采集到的数据转换为我们所广泛认知的摄氏温度,从而显示在PC界面中。二、 基本理论对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成,每完成一次都需要复位。DS18B20的写时序,对于DS18B20的写时序仍然分为写0时序和写1时序两个过程,对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单线。初始化端口A的1号引脚,定义为输出一个高电平,设置A端口的1号引脚状态为低,进行复位,发送读数据。三、 总体设计及分析1、 总体内容 DS18B20有三只引脚:DQ数字信号输入/输出端,和VDD电源输入端,GND接地。提及到温度的检测,我们首先会考虑传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试也复杂,制作成本高。因此,本数字温度计设计采用智能温度传感器DS18B20作为检测元件,测温范围为-55C至+125C,最大分辨率可达0.0625C。DS18B20可以直接读出被测量的温度值,而采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。通过KL25芯片,面包板,温度传感器DS18B20,导线等将电路连接起来,温度传感器DS18B20采集到的温度通过PC机界面显示出来。2、 仿真图及原理图图1 DS18B20仿真图DS18B20有三只引脚:DQ数字信号输入/输出端,和VDD电源输入端,GND接地。图2 DS18B20的读写时序图(1) DS18B20写逻辑的步骤:写逻辑0,单片机拉低电平大约10-15us,单片机持续拉低电平大约20-45us的时间,释放总线;写逻辑1,单片机拉低电平大约10-15us,单片机拉高电平大约20-45us的时间,释放总线。(2) DS18B20读逻辑的步骤:读逻辑0,在读取的时候单片机拉低电平大约1us,单片机释放总线,然后读取总线电平,这时候DS18B20会拉低电平,读取电平过后,延迟大约40-45微妙;读逻辑1,在读取的时候单片机拉低电平大约1us,单片机释放总线,然后读取总线电平,这时候DS18B20会拉高电平,读取电平过后,延迟大约40-45微妙。DS18B20的写时序,对于DS18B20的写时序仍然分为写0时序和写1时序两个过程,对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单线。3、 工作原理我们使用单点,单线总线上仅有一个DS18B20存在,不需要刻意读取ROM里面的序列号来,然后在匹配DS18B20而是更直接的跳过ROM指令,然后直接执行DS18B20功能指令。DS18B20复位,在,某种意义上就是一次访问DS18B20的开始,也就是开始信号。ROM指令,就是访问,搜索匹配,DS18B20的64位序列号的动作。使能Systick定时器(即向控制及状态寄存器的第0位写1),开始延时。监控控制及状态寄存器的16位,如该位为1,失能Systick定时器(即向控制及状态寄存器的第0位写0),完成延时。DS18B20的写时序,对于DS18B20的写时序仍然分为写0时序和写1时序两个过程,对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单线。初始化端口A的1号引脚,定义为输出一个高电平,设置A端口的1号引脚状态为低,进行复位,发送读数据。4、 串口测试结果图3 串口测试图PC机界面显示:步骤一、将芯片串口引脚与电脑连接,给芯片通电,然后选择串口,波特率后按打开串口按钮。步骤二、按下采集温度按钮之后开始采集芯片温度。步骤三、显示十进制温度4、 实验器材1、器件:传感器DS18B20、电阻、面包板、KL25芯片、若干导线。2、DS18B20的特点:DS18B20是单线数字温度传感器,它的体积更小,适用电压更宽,更经济。DS18B20的性能特点如下:(1) 独特的单线接口仅需要一个端口引脚进行通信;(2) 多个DS18B20可以并联在惟一的三线上,实现多点组网功能;(3) 无须外部器件;(4) 可通过数据线供电,电压范围为3.0-5.5;(5) 零待机功耗;(6) 温度以9或12位数字;(7) 用户可定义报警设置。5、 程序代码及分析main.c#include includes.h /包含总头文件int main(void)unsigned int i=0;unsigned int t=0;unsigned int e=0;DISABLE_INTERRUPTS;uart_init(UART_1,BUSCLK, 9600);Uart_enable_re_i(UART_1);/enable_pit_int();ENABLE_INTERRUPTS; /主循环开始for(;) /一个死循环 i=getTmpValue(); /获取温度函数调用 t=i/10; /表示整数 e=i%10;/表示小数 / i=(float)t+0.1*e; uart_send1(UART_1,t); uart_send1(UART_1,e);/sprintf(UART_1,%d.%d t,t,e);/主循环end_for/主循环结束=return 0;ds18b20.c#include ds18b20.h#include delay.hvoid DS18B20_Rset()/复位 gpio_init(PORTA|(1), OUT, High);/初始化端口A的1号引脚,定义为输出一个高电平 gpio_set(PORTA|(1),Low); /设置A端口的1号引脚的状态为低 Delay_750us(); /延时750us gpio_set(PORTA|(1),High); /设置A端口的1号引脚的状态为高 Delay_15us(); /延时15us unsigned char readBit()/读取一个位 unsigned char b; gpio_init(PORTA|(1), OUT, High);/初始化端口A的1号引脚定义为输出一个高电平 gpio_set(PORTA|(1),Low); /设置A端口的1号引脚的状态为低 Delay_2us(); /延时2us gpio_set(PORTA|(1),High); /设置A端口的1号引脚的状态为高 gpio_init(PORTA|(1), IN, High);/初始化端口A的1号引脚,定义为输出一个高电平 Delay_12us(); /延时12s b = gpio_get(PORTA|(1); /获取A端口的1号引脚的状态赋值给b Delay_50us(); /延时50us return b; /返回获取的状态bunsigned char readByte()/读取一个字节 unsigned int i; unsigned char j, dat; dat = 0; for(i=0; i8; i+) j = readBit(); dat = (j 1); return dat;void writeByte(unsigned char dat)/写一个字节dat unsigned char j; unsigned char b; gpio_init(PORTA|(1), OUT, High); /初始化端口A的1号引脚,定义为输出一个高电平 for(j = 0; j = 1; /dat右移1位后赋给dat if(b) /如果b=1写入1,否则写0 gpio_set(PORTA|(1),Low); /设置A端口的1号引脚的状态为低 Delay_2us(); /延时2us gpio_set(PORTA|(1),High); /设置A端口的1号引脚的状态为高 Delay_60us(); /延时60us else gpio_set(PORTA|(1),Low); /设置A端口的1号引脚的状态为低 Delay_60us(); /延时60us gpio_set(PORTA|(1),High); /设置A端口的1号引脚的状态为高 Delay_2us(); /延时2us void sendChangeCmd() /开始温度转换 DS18B20_Rset(); /复位 Delay_ms(1); /延时1ms writeByte(0xcc); /跳过ROM,直接向 DS18B20发温度转换命令 writeByte(0x44); /启动DS18B20进行温度转换void sendReadCmd() DS18B20_Rset(); Delay_ms(1); writeByte(0xcc); /跳过ROM,直接向 DS18B20发温度转换命令 writeByte(0xbe); /读内部数据short getTmpValue() unsigned int tmpvalue; int value=0; unsigned char low, high; sendChangeCmd();/开始转换指令 Delay_ms(1000);/温度转换时间需要750ms以上 sendReadCmd(); /发送读数据 low = readByte(); high = readByte(); tmpvalue = high; tmpvalue = 8; /左移八位 tmpvalue |= low; value = (float)tmpvalue* 0.625; return value;ds18b20.h#ifndef SOURCE_DS18B20_H_#define SOURCE_DS18B20_H_#include includes.h /包含总头文件#include gpio.h#define High 1#define Low 0#define OUT 1#define IN 0void DS18B20_Rset();/复位unsigned char readBit();/读取一个位unsigned char readByte();/读取一个字节void writeByte(unsigned char dat);/写一个字节datvoid sendChangeCmd(); /开始温度转换void sendReadCmd();short getTmpValue();void Delay_50us();#endif /* 08_SOURCE_DS18B20_H_ */初始化端口A的1号引脚,定义为输出一个高电平,设置A端口的1号引脚状态为低,初始化端口A的1号引脚,定义状态为低,赋值后进行复位,跳过ROM直接向DS18B20发送转换命令,读内部数据,

温馨提示

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

评论

0/150

提交评论