已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理与应用技术课程设计报告(论文)基于单片机控制的数字温度计专业班级: 应教121 姓名: 董镇玉 时 间: 2014.1.9 指导教师 : 宋长源 李晓娟 2015年 01 月 0 9 日单片机课程设计项目系列: 基于单片机控制的数字温度计一 设计要求(一)基本功能1. 测温范围-501102. 精度误差不大于0.13. led数码直读显示 (二)扩展功能1实现语音报数2可以任意设定温度的上下限报警功能二计划完成时间 三周1第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。2第二周完成软件的具体设计和硬件的制作。3第三周完成软件和硬件的联合调试。基于单片机控制的数字温度计应教121 董镇玉摘要:数字温度计在我们的日常生活中非常常见,广泛应用于我们的日常生活和工业生产。随着科技的发展,电子技术也日新月异,18b20芯片就是其中杰作之一。本设计是基于单片机控制的数字温度计,用18b20温度传感器来检测温度,用at89s52单片机来控制,最终通过数码管来显示温度。关键词:18b20 数码管 单总线1引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机at89s51,测温传感器使用ds18b20,用4位一体共阳极led数码管以串口传送数据,实现温度显示,能准确达到以上要求。2 总体设计方案2.1 设计思路 按照设计要求,要用数码管直读显示温度。可以通过单片机的io口然后通过编码来实现。至于获取温度可以有两种办法,传统的用热敏电阻通过a/d转换,还可以用最新的温度传感器芯片来实现。2.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行a/d转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到a/d转换电路,感温电路比较麻烦,误差也较大。2.1.2 方案二 进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器ds18b20,此传感器,可以很容易直接读取被测温度值,进行转换,而且精度较高,就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,精度也较高,故采用了方案二。2.2方案二的总体设计框图温度计电路设计总体设计方框图如图1所示,控制器采用单片机at89s51,温度传感器采用ds18b20,用3位led数码管以串口传送数据实现温度显示。 主 控 制 器led显 示温 度 传 感 器单片机复位时钟振荡报警点按键调整图1总体设计方框图3设计原理分析3.1温度传感器3.1.1 温度传感器介绍ds18b20温度传感器是dallas公司推出的数字化温度传感器,采用单总线协议,与处理器接口仅需一个io端口,无需任何外部元件,直接将环境温度转化为数字信号,以数字码方式串行输出,比较方便。实物如图2所示:ds18b20温度传感器特性1、适应电压范围宽,电压范围在3.05.5,可由数据线供电; 2、独特的单线接口方式,可节约处理器的io口资源;图2 18b20实物图3、使用中不需要外围元件,全部传感元件和转换电路集成在一个形如三极管的集成电路里,非常方便; 4、测温范围:-55c+125c;5、可编程分辨率为912位,对应的精度为0.5c、0.25c、0.125c和 0.0625c,精度比较高;6、负压特性,电源极性接反时,芯片不会因发热而烧坏,但无法正常工作。应用范围1、冷冻库、粮仓、电信电力机房 2、缸体、空调等设备等等64位rom的结构开始位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后位是前面56位的crc检验码,这也是多个ds18b20可以采用一线进行通信的原因。温度报警触发器和,可通过软件写入户报警上下限。ds18b20温度传感器的内部存储器还包括一个高速暂存和一个非易失性的可电擦除的eeram。高速暂存ram的结构为字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第和第字节和的拷贝,是易失的,每次上电复位时被刷新。第个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。ds18b20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图2所示。低位一直为,是工作模式位,用于设置ds18b20在工作模式还是在测试模式,ds18b20出厂时该位被设置为,用户要去改动,r1和0决定温度转换的精度位数,来设置分辨率。温度 lsb温度 msbth用户字节1tl用户字节2配置寄存器保留保留保留crc图3ds18b20字节定义高速暂存的第、字节保留未用,表现为全逻辑。第字节读出前面所有字节的crc码,可用来检验数据,从而保证通信数据的正确性。当ds18b20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第、字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625lsb形式表示。当符号位时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。3.1.2 工作原理涉及ds18b20内部的指令 cch跳过rom。直接向18b20发温度交换命令,适用于一个从机工作。44h温度转换。启动ds18b20进行温度转换。beh读暂存器。读内部ram中的温度数据。3.1.3 工作时序初始化1、先将数据线置高电平1 2、延时 3、数据线拉低 4、延时750us(范围是480960us)5、数据线拉高6、延时等待(1560us),如果初始化成功,则在1560us后ds18b20产生一 个低电平0,此时初始化成功。ds18b20写数据1、数据线先置低2、延时为15us3、采集期间延时45us,此时按照从低位到高位的顺序发送数据4、然后将数据线拉高5、重复上述几步,直到发送完整个字节6、最后将数据线拉高从ds18b20读数据1、首先将数据线拉低2、延时15us 3、采集期间延时45us4、上述过程重复,直到读取完一个字节 5、最后将数据线拉高3.2 ds18b20温度传感器与单片机的接口电路ds18b20可以采用电源供电方式,此时ds18b20的1脚接地,2脚作为信号线,3脚接电源.如图4所示单片机端口接单线总线,。当ds18b20处于写存储器操作和温度a/d转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。由于单线制只有一根线,因此发送接口必须是三态的。这里我用18b20的数据端接单片机的p32口,因为89s52单片机的p3口有内部上拉,所以这里我没有再加上拉电阻。图4度传感器与单片机的接口电路3.3 显示电路显示电路使用的一个四位一体的共阳极数码管,采用动态扫描。这种显示最大的优点就是使用口资源比较少。因为是共阳的数码管,这里段选端我用单片机的p0口连接,位选端用p1口。这样可以节省掉p0口上拉电阻,p1口处于电路更稳定的考虑,我用了上拉电阻。连接方式如图5所示。 图5单片机与数码管连接方式3.4设置温度上下限和报警电路 设置温度上下限我过四个独立按键来实现,报警电路通过三个发光二极管和蜂鸣器来实现。具体连接方式如图6所示。当温度正常不超过上下限时,绿色发光二级管亮。当超过上限温度时,红色发光二极管亮,并且蜂鸣器报警。当温度低于下限时,黄色发光二极管亮,并且蜂鸣器报警。用一个pnp型三极管来驱动蜂鸣器。三极管基极接单片机的p37口,平时输出高电平,当超过上下限时输出低电平,三极管导通,驱动蜂鸣器工作。四个按键可以用来调整温度的上下限,切换上下限调整和正常显示。图6报警电路3.5系统软件算法分析系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等,显示子程序,设置高低温子程序,报警子程序,显示程序。3.5.1主程序主程序的主要功能是负责调用各个子函数可以分块一次执行,保证电路正常工作。主程序里面先给单片机各个端口赋初值,然后执行芯片初始化程序,再读取温度并计算,最后送给数码管显示并和上下限温度比较来决定是否报警。显示函数里面最后加入一个延时函数,每一秒钟更新一次温度,以确保显示的是最新的温度。主程序流程图如图7所示。3.5.2 读出温度子程序读出温度子程序的主要功能是读出ram中的9字节,在读出时需进行crc校验,校验有错时不进行温度数据的改写。其程序流程图如图8示3.5.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示初始化调用显示子程序1s到?初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令nynyy发ds18b20复位命令发跳过rom命令发读取温度命令读取操作,crc校验9字节完?crc校验正?确?移入温度暂存器结束nny 图7主程序流程图 图8读温度流程图发ds18b20复位命令发跳过rom命令发温度转换开始命令 结束 图9 温度转换流程图3.5.4 计算温度子程序计算温度子程序将ram中读取值进行bcd码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。 开始温度零下?温度值取补码置“”标志计算小数位温度bcd值 计算整数位温度bcd值 结束置“+”标志ny图10计算温度流程图 3.5.5报警电路子程序得到温度通过18b20得到温度以后,因为需要保留一位小数,所以返回的温度值是其实际值得十倍。所以需要先除以十,得到的数再和设置的高低温度比较,相应的输出不同的电平。程序流程图如图11所示是否超过上下限ny不报警报警图11报警电路流程图4结束语 经过将近三周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但是还是很高兴的。在本次设计的过程中,我遇到了很多问题。板子刚做好的时候,通上电后什么都不显示,自己也很着急,弄了半天效果依旧。后来通过请教别的同学和测试,发现原来最小系统就没接好,又接好后只有两个数码管会工作。通过检修,原来是数码管装反了。经过这次实习,我发现了自己的许多不足,对单片机根本不够了解,不熟悉。通过这次动手调试,掌握了一定的调试电路的方法。在电路设计中,任何一个微小的问题都会带来大麻烦。以后做事一定要小心认真,可以为后期节省很多时间。从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获参考文献1李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19982李广弟.单片机基础.北京:北京航空航天大学出版社,19943阎石.数字电子技术基础(第三版). 北京:高等教育出版社,19895叶挺秀.应用电子学.杭州:浙江大学出版社,1994附录1原理图附录2仿真图 附录3 c源程序#include #include #define uint unsigned int#define uchar unsigned char#define dula p0 /段选#define wela p1 /位选sbit dq = p32; sbit k1 = p24; sbit k2 = p25; sbit k3 = p26; sbit k4 = p27; sbit led3 = p20; sbit led2 = p21;sbit led1 = p22; sbit buzzer = p37;void display(uint first,uint second,uint third,uint forth);void delay_ms(unsigned int timer);void showtem();void setlowtem();void sethightem();void initalarm();void alarm();void delay_us(uchar a);void init1820();void write1820(uchar a);unsigned char read1820(void);uchar gettemp();unsigned char idata flag;uchar show4 = 1,2,3,4;void delay_us(uchar a) while(-a);void init1820() dq = 1; _nop_(); dq = 0; /拉低数据线,准备reset onewire bus; delay_us(125); /延时510us,reset one-wire bus. delay_us(125); dq = 1; /提升数据线; delay_us(15); /延时35us; while(dq) /等待slave 器件ack 信号; _nop_(); delay_us(60); /延时125us; dq = 1; /提升数据线,准备数据传输;/*write*void write1820(uchar a) uchar i; for(i=0;i= 1; /*read*unsigned char read1820(void)unsigned char i;unsigned char tmp=0; dq = 1; _nop_(); /准备读; for(i=0;i= 1; /低位先发; dq = 0; /read init; _nop_(); /2ms; dq = 1; /必须写1,否则读出来的将是不预期的数据; delay_us(2); /延时9us; _nop_(); if(dq) /在12us处读取数据; tmp |= 0x80; delay_us(30); /延时55us; dq = 1; _nop_(); /恢复one wire bus; return tmp; /*uchar gettemp() unsigned int tp;float temp; init1820(); write1820(0xcc); / delay_ms(2); write1820(0x44); init1820(); write1820(0xcc); write1820(0xbe); show0=read1820(); show1=read1820(); init1820(); tp=show1*256+show0; flag = show1 7; /判断温度正负,正时flag = 0;负时flag = 1; if(flag = 0) temp=tp; tp =temp*0.0625*10+0.5; if(flag = 1) tp=tp-1; tp=tp; temp=tp; tp = temp*0.0625*10+0.5; return tp;extern unsigned char idata flag; /定义外部变量,温度正负标志uint hnum = 50,lnum = 10; /报警温度的高低值uint tem;/* 函 数:显示温度函数* 参 数:无* 返 回: 无*/void showtem() tem = gettemp(); /* 读取18b20温度*/ if(flag = 1) /显示负温度 display(tem%10,tem%100/10,(tem%1000)/100,16); if(flag = 0) /显示正温度 display(tem%10,tem%100/10,(tem%1000)/100,tem/1000);/* 函 数:设置低温温度报警值函数* 参 数:无* 返 回: 无*/void setlowtem() while(1) display(lnum*10)%10,lnum%10,(lnum%100)/10,18); if(k2 = 0) delay_ms(50); /按键消抖 if(k2 = 0) while(!k2); /等待按键释放 lnum+; if(k3 = 0) delay_ms(50); /按键消抖 if(k3 = 0) while(!k3); /等待按键释放 lnum-; if(k4 = 0) delay_ms(50); /按键消抖 if(k4 = 0) while(!k4); /等待按键释放 break; /* 函 数:设置高温温度报警值函数* 参 数:无* 返 回: 无*/void sethightem() if(k1 = 0) /按键消抖 delay_ms(10); if(k1 = 0) while(!k1); /等待按键释放 while(1) display(hnum*10)%10,hnum%10,(hnum%100)/10,17); if(k1 = 0) delay_ms(50); /按键消抖 if(k1 = 0) while(!k1); /等待按键释放 setlowtem(); /设置低温报警温度 break; if(k2 = 0) delay_ms(50); /按键消抖 if(k2 = 0) while(!k2); /等待按键释放 hnum+; if(k3 = 0) delay_ms(50); /按键消抖 if(k3 = 0) while(!k3); /等待按键释放 hnum-; if(k4 = 0) delay_ms(50); /按键消抖 if(k4 = 0) while(!k4); /等待按键释放 break; showtem();/* 函 数:led和蜂鸣器初始化* 参 数:无* 返 回: 无*/void initalarm() led1 = 0;led2 = 0;led3 = 0;buzzer = 1;void alarm() tem = gettemp(); tem=tem/10; if(tem hnum) led2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年菏泽辅警招聘考试题库及答案详解(各地真题)
- 2025年健康医疗保险合同范文
- 《知识产权法学(8)》2025-2025期末试题及答案
- 2025年绵阳辅警协警招聘考试备考题库附答案详解(考试直接用)
- 2025年阿克苏辅警协警招聘考试备考题库附答案详解(夺分金卷)
- 2025年西宁辅警招聘考试真题含答案详解(预热题)
- 2025年辖县辅警协警招聘考试备考题库有完整答案详解
- 2025年玉溪辅警招聘考试题库完整答案详解
- 2025年金华辅警协警招聘考试备考题库含答案详解(黄金题型)
- 2025年遂宁辅警协警招聘考试备考题库附答案详解(夺分金卷)
- 医院制剂研发课件模板
- 小学体育家长会课件
- 溃疡性结肠炎教学课件
- 植物盆栽线描课件
- 火场排烟培训课件
- 【艾瑞咨询】2024年中国健康管理行业研究报告494mb
- 培训机构周边安全管理制度
- 民航飞行员招飞心理测试题及答案
- 2025广东食品药品职业学院教师招聘考试试题及答案
- 校园周边环境的安全管理制度
- 统编版语文四年级上册 19 一只窝囊的大老虎 预习单( 有答案)
评论
0/150
提交评论