




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的数字温度计设计方案1.1 数字式温度计的设计目的与要求要想基于AT89C51系列单片机的应用与开发,就要了解单片机的构造及原理,熟悉单片机最小系统及其应用。同时巩固和加强“单片机接口技术”课程的理论知识,掌握单片机系统一般的设计方法,并了解电子产品研制开发过程。在设计完成过程中,学会培养独立分析问题和解决问题的能力以及创新能力和创新思维。不断提高自身分析问题和解决问题的能力以及创新能力和创新思维。作为此次毕业设计的最终成果,本文对数字式温度计的设计要求如下:1、数字式温度计的基本范围在-50-110之间;2、数字式温度计的精度误差小于0.5;3、数字式温度计要用LED数码管直读显示;4、同时要具有支持扩展的相关功能;5、要具有任意设定数字式温度计温度上下限功能;6、超过温度计上下限,要具有报警功能。1.2 数字式温度计设计思路本次设计将以AT89C51单片机作为核心器件,组成一个具有多种拓展功能的数字式温度计。此次设计采用模块化编程方法,将各个功能细化,逐个完成,最终实现整个温度计功能。在最初的设计方案中,有两种方式可供选择:一种是可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路。另外一种则是考虑到用温度传感器。采用一只温度传感器DS18B20,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。以上两种方案第二种更为简单明了,避免了AD转换电路的复杂应用。因此本次设计采用了第二种方案。1.3 数字式温度计设计原理框图图1.1 数字式温度计设计原理框图1.4 数字式温度计工作过程简要分析当系统启动后,各模块电路开始工作,温度传感器随机提供一个温度值,生成的温度信号脉冲经过AT89C51单片机处理显示在LED数码显示管上。此时可以通过手动设置整个系统的上限温度、下限温度,也可以调整实时温度。当上限温度、下限温度以及实时温度调整完毕后,经过AT89C51的处理,当此时的实时温度达到或者超过上限与下限温度值时,报警模块启动对当前整个系统温度进行报警。若要重新整个过程,可以通过复位键进行系统复位,重新开始测定当前整个系统的温度。2数字式温度计的硬件电路2.1 数字式温度计的系统电路图2.1 数字式温度计主板电路图图2.1中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。按健复位电路是上电复位加手动复位,使用比较方便,在程序跑飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。2.2 AT89C51单片机 AT89C51单片机是一个集成电路芯片,它是由微处理器CPU、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。图2.2 AT89C51单片机这些都是通过片内单一总线连接而成。其基本结构依旧是微处理器CPU,加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式以实现不同的功能。2.3 数字式温度计数码显示电路本次设计采用的显示电路是4位共阴极LED数码管,从P0口输出段码。显示电路是使用的动态显示,这种显示最大的优点就是使用资源比较少,功耗低,但显示清晰度不如静态显示。图2.3 数字式温度计数码显示电路2.4 数字式温度计传感器DS18B20DS18B20是美国DALLAS公司生产的单总线数字温度传感器,它具有微型化、功耗低、高性能、抗干扰能力强、易于与微处理器方便接口等优点。图2.3 DS18B20数字温度传感器该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。传感器直接输出温度信号数字值。信号的传输采用两芯或者三芯电缆构成的单总线结构。一条单总线上可以挂接若干个数字温度传感器,每个传感器有唯一一个唯一的地址编码。微控制器通过对器件的寻址,就可以读取某一个传感器的温度值,从而简化了信号采集系统的电路结构。其内部结构框图如图2.4所示:图2.4 DS18B20内部结构图64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。下表表示温度和数字量的关系:表2-1 温度与数字量的关系温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90HDS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。2.5 时钟振荡电路与复位电路设计本次基于单片机数字式温度计的设计中,我采用了12M的晶振设计,这样有利于提高整个系统的性能。AT89C51的内部有反向放大器,在经过相应针脚的接入后,与反馈元件结合组成振荡器,所产生的时钟脉冲传递到各个部件,从而构成了内部振荡。电平复位是通过RST端经电阻和电源VCC接通而实现,本论文中通过手动按钮复位实现整个系统的复位功能。图2.5 数字式温度计时钟振荡电路与复位电路设计2.6 温度调整电路与报警电路的设计通过对AT89C51单片机P3口的拓展,接入按钮进行脉冲调整实现对温度的加减控制。P3.7口接入扬声器接收AT89C51的脉冲信号,通过蜂鸣声警示现系统实时温度的预警,黄色LED同时亮起起到警示作用。图2.6 数字式温度计温度调整电路与报警电路设计3数字式温度计软件程序设计3.1 数字式温度计的程序划分本文的数字式温度计程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序,显示数据刷新子、报警子程序、延时子程序等。3.2 数字式温度计的主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以实时刷新当前温度,更好的实现对温度的监控。图3.1 数字式温度计主程序流程框图程序:void main(void)uint i,z;InitTimer(); /初始化定时器EA=1; /全局中断开关TR0=1;ET0=1; /开启定时器0IT0=1; IT1=1;/check_wendu();for(z=0;z2)set_st=0; if(set_st=0) EX0=0; /关闭外部中断0 EX1=0; /关闭外部中断1 /check_wendu();i=ReadTemperature(); Disp_Temperature(i); Alarm(); /报警检测 else if(set_st=1) BEEP=1; /关闭蜂鸣器 EX0=1; /开启外部中断0 EX1=1; /开启外部中断1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(shangxian); else if(set_st=2) BEEP=1; /关闭蜂鸣器 EX0=1; /开启外部中断0 EX1=1; /开启外部中断1 if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st) Disp_alarm(xiaxian); 3.2 数字式温度计的读出温度子程序出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图3.2所示:图3.2 数字式温度计读出温度子程序流程框图程序:unsigned int ReadTemperature(void) unsigned char a=0; unsigned char b=0; unsigned int t=0;float tt=0; Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0x44); /启动温度转换 Init_DS18B20(); Delay_DS18B20(100); Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器 a=ReadOneChar(); /读低8位 b=ReadOneChar(); /读高8位 t=b; t0; i-) DQ = 0; DQ = dat&0x01; Delay_DS18B20(5);DQ = 1; dat=1; 3.从DS18B20读一个字节unsigned char ReadOneChar(void) unsigned char i=0; unsigned char dat = 0; for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; Delay_DS18B20(4); return(dat);3.4 数字式温度计的计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图3.4所示:图3.4 数字式温度计计算温度子程序流程框图程序:Disp_Temperature(uint k)uchari,tmph,tmpl,sign; k=ReadTemperature( );sign=(uchar)(k8)&0xf0);if(sign=0xf0)k=(k)+1;Sign_Port=0;fu=1;elseSign_Port=1,fu=0; tmpl=(uchar)(k&0x0f);tmph=(uchar)(k4)&0xff);tmpl=tmpl*0.625+0.5;tmpbuf3=tmpl/10;tmpbuf2=tmph%10;tmpbuf1=(tmph%100)/10;tmpbuf0=tmph/100;if(fu=1) if (tmpbuf1=0) tmpbuf1=11,tmpbuf0=10;else tmpbuf0=11; else if(tmpbuf0=0)tmpbuf0=10;if(tmpbuf1=0)tmpbuf1=10; for(i=0;i40;i+)Display();3.5 数字式温度计的显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序框图如图3.5所示:图3.5 数字式温度计显示数据刷新子程序流程框图程序:voidDisplay(void)uchari,j,temp=0xf7;for(i=0;i1;temp=temp|0x80;3.6 数字式温度计的报警子程序图3.6 数字式温度计报警子程序流程框图程序:1.显示报警温度子程序Disp_alarm(uchar baojing) P2 = 0xFF;P0 =tablebaojing%10; /显示个位P2 = 0xfe;Delay_DS18B20(500);P2 = 0xFF;P0 =tablebaojing%100/10; /显示十位P2 = 0xfd;Delay_DS18B20(500);P2 = 0xFF;P0 =tablebaojing/100; /显示百位P2 = 0xfb;Delay_DS18B20(500);P2 = 0xFF;if(set_st=1) P0=0x76;else if(set_st=2) P0=0x38; /上限H下限L标志 P2 = 0xf7;Delay_DS18B20(500);P2 = 0xFF; 2.报警子程序 Alarm()/if(x=5)beep_st=beep_st;x=0; m=ReadTemperature( ); m=m*0.625+0.5; m=m/10;if(m=shangxian)|(m=xiaxian)BEEP=1;else BEEP=0;3.7 数字式温度计的延时子程序void Delay_DS18B20(int num) while(num-) ;4思考与总结经过漫长的设计,我终于完成了的数字温度计的论文,并且达到设计要求。这次的毕业论文设计将这三年所学的单片机和C语言以及PROTEUS的理论知识用到具体的实践中去,深化了理论知识,同时也锻炼了动手实践能力,有了以前的练习为前提做起来也比较的顺利。不过在具体的实践的时候还是遇到了一些小的问题,比如数据类型的定义错误,字符的错误输入等等,这些虽然都是小问题,不过在具体实践过程中却浪费了不少时间,看来平时要多多的实践才是,除了要考虑问题周到还要多多注意一些细小的问题才是,做的熟练了问题也很容易的解决。通过本次的课程设计对PROTEUS的功能又多了些了解,同时也较为熟悉的掌握了C这门语言。在毕业设计中觉得应该注意程序的设计。虽然不是很难,但很多细小的问题需要认真的对待,稍有不注意问题就会在具体的应用程序调试过程中出现,这要求在实践的过程中除了要了塌实的理论知识还要细心,有耐心。当然在本次的设计过程中还出现了其他不少的问题,问题随着设计思想的深入而不断变化,不断的产生新问题,而在这过程中不断的解决问题,正是在这一过程中,加深了对原理的认识,完善了设计思想,使我们分析问题解决问题的能力得到进一步的加强。在毕业设计过程中,全面实践一个基于单片机的应用系统的开发过程,学习了很多有关的知识。这样的项目对学过的单片机,C语言程序设计,PROTEUS等课程是一个综合性很高的实践。一些以前没有学得很杂实的课程的内容,由于需要在实践中运用,刚开始也感到很头痛,但回过头再去看有关的教科书,经过一段时间的钻研,对与这些知识点的相关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松。另外还充分体会了从事单片机开发工作需要特别严谨认真的态度和作风,一点都马虎不得。每一个细微的细节都必须十分的注意,如果不认真思考决策,就会出现或大或小的错误,如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时要推倒很多前面做的工作重来。有时候,我们觉得写的程序非常的正确,但是就是编译通不过,在查找错误的过程中,面临着否认我们的过程,非常的痛苦,而且由于我们的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间还没有一点进展。这时候,一般是我们先通过书本,手册和资料找解决办法,虽然花的时间较多,但强迫独立的思考对学习提高帮助非常大。5 致谢 本文是在闫智武老师的悉心指导下完成的。从毕业设计题目的选择、到选到课题的研究和论证,再到本毕业设计的编写、修改,每一步都有闫老师的细心指导和认真的解析。在闫智武老师的指导下,我在各方面都有所提高,老师以严谨求实,一丝不苟的治学态度和勤勉的工作态度深深感染了我,给我巨大的启迪,鼓舞和鞭策,并成为我人生路上值得学习的榜样。使我的知识层次又有所提高。同时感谢所有教育过我的专业老师,你们传授的专业知识是我不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 日语考试题及答案
- 白卷考试题及答案
- 中级财务会计实务知到智慧树答案
- 精麻药品处方权及处方调剂权培训考核试题【附答案】
- 基层口腔科感控知识培训试题(附答案)
- 耳鼻喉科模拟考试题+答案
- 中小企业经营与管理知到智慧树答案
- 中学生物学新课标教材研究与教学设计知到智慧树答案
- 2025东莞租房合同模板(含水电费分摊协议)
- 2025版南海建筑工程质量检测与隐患排查专业服务合同
- 土地使用权法律风险尽职调查指南
- 2025年内容分发网络(CDN)行业当前市场规模及未来五到十年发展趋势报告
- 故宫博物馆院课件
- 2025年8月16日贵州省黔东南州事业单位遴选笔试真题及答案解析(专业水平测试)
- 2025-2026秋季学年第一学期学生国旗下演讲稿(20周):第一周 新程启航礼润心田-开学典礼
- 2025年教师招聘小学语文真题及答案
- 2025年突发疾病应急演练方案(脚本)
- 幼儿园保安人员培训记录
- 2025年北京市中考语文真题(含答案)
- 小学英语“教学评一体化”实施
- 超长混凝土结构温度应力分析
评论
0/150
提交评论