已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
温度检测设计论文小组成员及任务分配:郝 鹏1403669077(编写论文)卓应广1403669017(编程)贾渊杰1403669080(查找资料,整理论文)民生学院测控技术与仪器l 第一章:前言温度检测系统可以通过DS18B20温度传感器对温度进行检测,并通过数码管显示,同时利用I/O口与单片机连接,实现温度采集,数据处理,数据调整,温度显示等功能。该系统的需求分析如下需求分析名称温度检测显示控制器目的对室内外温度进行检测并显示输入室内外温度输出八段共阳极数码管功能(1) 接受来自温度传感器DS18B20信号,进行A/D转换、滤波、放大并送入单片机(2) 对温度信号进行分析、运算和处理(3) 将处理得到的结果通过八段共阳极数码管显示性能测温范围-55+125,在-10+85范围内精确度为+-5l 第二章:总体设计DS18B20的测温原理用一个高温度系数的振荡器确定一个门周期,内部计数器在这个门周期内对一个低温度系数的振荡器的脉冲进行计数来得到温度值。计数器被预置到对应于-55的一个值。如果计数器在门周期结束前达到0,则温度寄存器(同样被预置到-55)的值增加,表明所测量的温度大于-55。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程。斜坡式累加器用来补偿感温振荡器的非线性,以期在测温时获得比较高的分辨力。这是通过改变计数器对温度每增加一度所需计数的值来实现的。因此,要想获得所需的分辨力,必须同时知道在给定温度下计数器得值和每一度的计数值。温度测量电路的方框图如图总体方案设计温度检测电路控制器采用IAP15F2K61S2(作89C52用)新片,温度传感器采用DS18B20,用三位LED共阳极数码管通过锁存器以串行输入并行输出形式连接单片机实现温度显示功能IAP15F2K61S2LED数码管显示锁存器时钟振荡DS18B20温度传感器硬件及软件设计的考虑由于单片机串口有限,因此通过锁存器实现串行输入并行输出节省串口,程序编写时应先调用led数码管所连接的寄存器,进而调用数码管。l 第三章:硬件电路设计:最小系统电路IAP15F2K61S2属于IAP15系类型号单片机,该系列单片机有3个16位可重转载普通定时器/计数器分别是定时器/计数器0,定时器/计数器1和定时器/计数器0,掉电唤醒专用定时器;5个外部中断INT0/INT1/;一组高速异步串行口;一组高速同步串行通信端口SPI;个数据指针DPTR;外部数据总线等功能。上图为单片机内部结构图单片机电源电路上图为单片机电源电路LED八段共阳极数码管显示电路为八段共阳极数码管节省串口通过锁存器实现串行输入,并行输出。同时为了灵活使用,与其他开发板不同八个数码管阳极没有接电源VCC而是通过锁存器连接单片机,单片机输出高电平实现八个数码管的共阳极连接。在使用时,应先通过P2口选择模块连接的锁存器,在通过P0口输出数据来控制数码管。DS18B20数字温度传感器电路DS18B20具有独特的单线接口仅需一个端口引脚与单片机P1.4进行通讯。该数字温度传感器无需另外接电源,可通过数据线供电供电范围3.0V5.5V。18B20传感器测温范围在-55度到125度,并在-10度到85度范围内精准度在+-5度图 1 是表示DS18B20 的方框图。64 位只读存储器储存器件的唯一片序列号。高速暂存器含有两个字节的温度寄存器,这两个寄存器用来存储温度传感器输出的数据。除此之外,高速暂存器提供一个直接的温度报警值寄存器(TH和TL),和一个字节的的配置寄存器。配置寄存器允许用户将温度的精度设定为9,10,11 或12 位。TH,TL 和配置寄存器是非易失性的可擦除程序寄存器(EEPROM),所以存储的数据在器件掉电时不会消失。DS18B20通过达拉斯公司独有的单总线协议依靠一个单线端口通讯。当全部器件经由一个3态端口或者漏极开路端口(DQ引脚在DS18B20上的情况下)与总线连接的时候,控制线需要连接一个弱上拉电阻。在这个总线系统中,微控制器(主器件)依靠每个器件独有的64位片序列号辨认总线上的器件和记录总线上的器件地址。由于每个装置有一个独特的片序列码,总线可以连接的器件数目事实上是无限的。单总线协议,包括指令的详细解释和“时序”见单总线系统节。DS18B20的另一个功能是可以在没有外部电源供电的情况下工作。当总线处于高电平状态,DQ与上拉电阻连接通过单总线对器件供电。同时处于高电平状态的总线信号对内部电容(Cpp)充电,在总线处于低电平状态时,该电容提供能量给器件。这种提供能量的形式被称为“寄生电源”。作为替代选择,DS18B20同样可以通过VDD引脚连接外部电源供电使用时应注意:SKIP ROM CCh (忽略ROM 指令)这条指令允许总线控制器不用提供64 位ROM 编码就使用功能指令。当只有一只从机在总线上时,无论如何,忽略ROM指令之后只能跟着发出一条读取暂存器指令BEh。READ SCRATCHPAD BEh (读暂存器指令)这条命令读取暂存器的内容。读取将从字节0 开始,一只进行下去,知道第9字节(字节8,CRC)读完,如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。CONVERT T 44h (温度转换指令)这条命令用以启动一次温度转换。温度转换指令被执行,产生的温度转换结果数据以2个字节的形式被存储在高速暂存器中,而后DS18B20保持等待状态。在温度转换期间(tconv),必须在10us(最多),内给单总线一个强上拉,见DS18B20 供电节。以上是该电路程序设计时所需用到的指令。电路参考来源:蓝桥杯内部学习资料l 第四章:软件程序设计温度检测程序初步的主要思路以框图形式表示。如下程序初始化ds18b20初始化读取ds18b20数据数据初步处理数据进一步处理得到温度温度显示该温度检测程序主要包括主程序、初始化程序、延时程序、显示程序、温度读取程序、写字节程子程序序、读字节子程序以及头文件定义位定义以及函数声明等部分。初始化程序主要包括系统初始化和温度传感器DS18B20初始化。程序初始化主要为关闭蜂鸣器,关闭LED灯,选中每个八段数码管并关闭。温度传感器DS18B20初始化为将IO口拉低再拉高使DS18B20准备好操作。void AllInit(void) P2=0xA0; P0=0x00; P2=0x80; P0=0xFF; P2=0xC0; P0=0xFF; P2=0xE0; P0=0xFF; void ds18b20_init()DQ=0;Delay500us(); DQ=1;Delay500us();延时程序有ms级延时程序和us级延时程序,因为延时程序使用较多,因此将其分位100us延时、500us延时和可输入ms延时。void Delay100us()unsigned char i, j; _nop_();_nop_();i = 2;j = 15;dowhile (-j); while (-i); void Delay500us()unsigned char i, j;_nop_();_nop_();i = 6;j = 93;dowhile (-j); while (-i);void delayms(int ms) int i,j;for(i=ms;i0;i-)for(j=845;j0;j-);温度读取程序主要为发送温度转换指令,发送读取暂存器指令,调用读字节子程序读取DS18B20发送的温度数据,并对数据进行初步转换uchar temget()uchar sum,low,high;ds18b20_init();write(0xCC);write(0x44);Delay500us();ds18b20_init();write(0xCC);write(0xBE);low=read();high=read();sum=high4);return sum;写字节子程序。写字节步骤为先将总线拉低,发送数据,之后再将总线拉高以准备下次数据传送。注:数据传送时应一位一位传送。void write(uchar dat) uchar i;for(i=0;i=1;读字节子程序。读字节步骤主要为线将总线拉低,按位读取数据,将数据总线拉高。再将所读取的位数据顺序移至高位。uchar read() uchar i,dat;for(i=0;i=1;DQ=1;if(DQ=1)dat=dat|0x80;Delay100us();return dat;显示程序。数码管显示要先调用数码管阳极所在锁存器以选中要一个数码管,再调用数码管阴极所在锁存器,之后对数据进行传送。注:因为每个数码管显示的数据不同,因此要对数码管进行逐个显示。void display1(void) P2=0xC0; P0=0x01; P2=0xE0; P0=tabyi;delayms(1);P2=0xC0; P0=0x02; P2=0xE0; P0=taber;delayms(1);P2=0xC0; P0=0x04; P2=0xE0; P0=tabsan;delayms(1);P2=0xC0; P0=0x08;P2=0xE0; P0=tabsi;delayms(1);void display2(void) P2=0xC0; P0=0x10; P2=0xE0; P0=tabwu; delayms(1);P2=0xC0; P0=0x20; P2=0xE0; P0=tabliu;delayms(1);P2=0xC0; P0=0x40; P2=0xE0; P0=tabqi;delayms(1);P2=0xC0; P0=0x80; P2=0xE0; P0=tabba;delayms(1);主程序。主程序功能为,对数码管进行初始化,调用初始化程序对单片机进行厨师换,串联温度读取程序并对读取的温度进行进一步处理,并调用显示程序对最后得到的温度进行显示。void main() uchar wendu;AllInit();yi=11;er=11;san=11;si=11;wu=11;liu=0;qi=0;ba=0;while(1) wendu=temget(); liu=wendu/100;qi=wendu%100/10;ba=wendu%10;display1();display2();头文件,位定义以及函数声明部分#define uchar unsigned char #define uint unsigned intsbit DQ=P14; Uchar code tab=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0x00;uchar yi,er,san,si,wu,liu,qi,ba;void AllInit(void);void delayms(int ms);void display1(void);void display2(void);uchar temget();uchar read();void write(uchar dat);void ds18b20_init();void Delay100us();void Delay500us(); l 第五章:总结与建议总结该程序可以很好的达到预期目的,运行速度较快测量精度较高,抗干扰性能较强。在程序设计初期读取DS18B20数据之前没有对DS18B20输入温度转换指令一级读取暂存器指令并且对DS18B20得到的数据没有舍弃低四位导致数据出错,在查阅DS18B20温度传感器使用指南后这个问题得到很好的解决方案。经验建议在程序设计前浏览各个芯片的芯片守则,可以有效的提高程序设计时的效率,并减少出错率。在程序设计时先列出方框图,再将子程序一一编写,最后将程序串联。 程序运行实物图:程序运行视频见文件夹l 附录一:图为CD107D开发板图中1为DS18B20数字温度传感器,2为LED八段共阳极数码管,3为IAP15F2K61S2单片机(做89c52用)材料清单如下图:仿真电路图;l 附录二:完整源代码(带注释)#include #include #define uchar unsigned char #define uint unsigned intsbit DQ=P14; /位定义:单总线引脚DQuchar code tab=0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0XBF,0XFF,0x00;/共阳极数码管显示对应的数组:0 1 2 3 4 5 6 7 8 9 . 全灭 全亮uchar yi,er,san,si,wu,liu,qi,ba;void AllInit(void);void delayms(int ms);void display1(void);void display2(void);uchar temget();uchar read();void write(uchar dat);void ds18b20_init();void Delay100us();void Delay500us();/函数声明部分void main() uchar wendu;AllInit();/对单片机进行上电初始化yi=11;er=11;san=11;si=11;wu=11;/关闭前五个数码管liu=0;qi=0;ba=0;/初始化后三个数码管,并使其显示0;while(1) wendu=temget(); /调用temget函数得到温度值liu=wendu/100;/对得到的温度值转化得到其百位数值qi=wendu%100/10;/对得到的温度值转化得到其十位数值ba=wendu%10;/对得到的温度值转化得到其个位数值display1();/调用display1函数显示前四个数码管display2();/调用display2函数显示前四个数码管uchar temget()/读取温度函数 uchar sum,low,high;ds18b20_init();/ds18b20初始化write(0xCC);/写入一个字节0xcc,作用是忽略ROM指令write(0x44);/写入一个字节0x44,作用是温度转换指令Delay500us();ds18b20_init();write(0xCC);write(0xBE);/写入一个字节0xBE,作用是读取暂存器指令low=read();/调用read函数获取LS BYTE位的值high=read();/调用read函数获取MS BYTE位的值sum=high4);/对获取得到的值进行转换,保留高四位,并移位到低四位,然后与上一次得到的高四位相加return sum;/函数返回最终得到温度结果uchar read()/读字节 uchar i,dat;for(i=0;i=1;/先右移一位DQ=1;/开始读取if(DQ=1)/对数据位进行判断为1dat=dat|0x80;/置1Delay100us();return dat;/返回读取的字节void write(uchar dat)/写字节uchar i;for(i=0;i=1;/右移一位void ds18b20_init()/DS18B20的初始化DQ=0;Delay500us();/复位:总线在低电平480us以上将被复位DQ=1;Delay500us();/上拉为高电平,说明已经准备好操作void Delay100us()/11.0592MHz 定时100usunsigned char i, j;_nop_();_nop_();i = 2;j = 15;dowhile (-j); while (-i);void Delay500us()/11.0592MHz 定时500usunsigned char i, j; _nop_();_nop_();i = 6;j = 93;dowhile (-j); while (-i);void display1(void) /前四个数码管的显示P2=0xC0; P0=0x01; /选中第1个数码管P2=0xE0; P0=tabyi;/控制第1个数码管的显示delayms(1);P2=0xC0; P0=0x02; /选中第2个数码管P2=0xE0; P0=taber;/控制第2个数码管的显示delayms(1);P2=0xC0; P0=0x04;/选中第3个数码管P2=0xE0; P0=t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成人瑜伽协议(2025年瑜伽课程评估)
- 2025年工业自动化电磁兼容测试协议
- 内分泌科2型糖尿病胰岛素治疗手册
- 水利工程竣工验收规范
- 自动化设备参数整定规范
- 导游文化试题及答案
- 2025综合考试真题及答案高一
- 陕师大教育技术学论文:MM教育方式与现代教育技术
- 高标准农田建设方案及具体实施计划
- 在XX名师揭牌仪式上的讲话
- 2025护理法律法规学习课件
- 物流管理大学职业规划
- 煤矿后勤管理人员的岗位职责
- 医院职业暴露培训课件
- 2025-2026新苏教版小学1一年级数学上册(全册)测试卷(附答案)
- 2025年跨境电商税务合规服务合同协议(2025年)
- 2025年版《义务教育信息科技技术新课程标准》试题与答案
- 人工挖方孔桩模(板)施工方案
- 无人机制造工厂建设施工方案
- 基于大语言模型的水文模型参数优化特性研究
- 疫苗接种进校园活动方案
评论
0/150
提交评论