温度测量课程设计总结_第1页
温度测量课程设计总结_第2页
温度测量课程设计总结_第3页
温度测量课程设计总结_第4页
温度测量课程设计总结_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计报告数字温度计姓名:姚栋铭、吴朝阳、陈家宝学号:学3011120512301112191230111221专业班级:自动化122指导老师:郭振武所在学院:2021年6月9日摘要环境温度对工业、农业、商业和人们的日常生活都有很大的影响,而温度的测量也就成为人们生产生活中一项必不可少的工作.传统的测温仪测量费时,准确度也较低,数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示.随着单片机技术的不断开展,单片机在日用电子产品中的应用越来越广泛,温度传感器DS18B2QM有线性优良、性能稳定、灵敏度高、抗干扰水平强、使用方便等优点,广泛应用于冰箱、空

2、调器、粮仓等日常生活中温度的测量和限制.本设计所介绍的数字温度计使用单片机AT89S52测温传感器使用DS18B2Q用4位共阴极LED数码管以动态方式实现温度显示,分时轮流通电,从而大大简化了硬件线路,节省了I/O口.DS18B2Q&字温度传感器是单总线器件与51单片机组成的测温系统,具有线路简单、体积小等特点,而且在一根通信线上,可以挂接多个DS18B2Q因此可以构成多点温度测控系统.目录1概述-2-1.1 设计题目-2-1.2 设计目的-2-1.3 设计要求-2-1.4 设计任务-2-2系统总体方案及硬件设计-3-2.1 总体方案说明-3-2.2 总体方框图-3-2.3 系统各局部

3、硬件电路设计-3-3系统软件设计-8-3.1 主程序-8-3.2 主程序流程图错误!未定义书签.3.3 DS18B2Q的软件设计-8-5心得体会-11-参考文献-12-附1源程序代码-13-附2系统原理图-21-1概述1.1 设计题目数字温度计1.2 设计目的使用单片机AT89S52和温度传感器DS18B2C®现根本范围-50C-110c的测量,显示精度误差小于0.5C,用4位LED数码直接读出温度.1.3 设计要求1 .综合运用课程中所学到的理论知识完成一个设计课题2 .通过查阅手册和文献资料,培养分析和解决实际问题的水平3 .学会单片机电路的设计4 .学会撰写课程设计总结报告5

4、.培养严肃认真的工作作风1.4设计任务1 .掌握单片机AT89S52的根本结构及工作原理2 .了解温度传感器DS18B220勺工作原理3 .实现温度的测量4 .掌握单片机系统的分析和设计方法2系统总体方案及硬件设计2.1 总体方案说明该数字温度计由电源电路、晶振电路、复位电路、下载电路、单片机、数字显示电路、温度测量电路组成.可以实现根本范围-50C-110c的测量.当开关处于开的状态时才可实现上述功能,否那么不可实现.2.2 总体方框图2.3 系统各局部硬件电路设计D2.3.1 AT89S52单片机简介与最小系统设计AT89S52是一种低功耗、高性能CMOS前微限制器,具有8K在系统可编程F

5、lash存储器.AT89S52®用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容.片上Flash允许程序存储器在系统可编程,亦适于常规编程器.在单芯片上,AT89S52拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式限制应用系统提供高灵活、超有效的解决Zu02.3.2 复位电路设计MCS-52单片机通常采用上电自动复位、按钮电平复位、外部脉冲复位、上电+按钮电平复位、程序运行监视复位等方式.AT89S52需要外加复位电路,本设计采用按键+上电复位,上电复位是利用电容充电来实现的,即上电瞬间RST/Vpd端的电位与Vcc相

6、同,随着充电电流的减少,最后被嵌位在0V,采用10uF的C3和10K的R2可以保证加在引脚上的高电平持续2个机器周期,即使单片机有效地复位.按键可以随时使电路复位,当键按下时1K的R1和10K的R2串联分压使RST为高电平,即复位.图22.3.3 时钟晶振电路MCS-51内部有一个用于构成震荡器的高增益反向放大器,此放大器的输入端和输出端分别是XTAL1和XTAL2在XTAL1和XTALZlk接晶振可构成时钟电路.时钟电路在单片机系统中起着非常重要的作用,是保证系统正常工作的根底.晶振频率的大小决定了单片机系统工作的快慢.本次设计采用内部方式的外部时钟接法.为到达振荡周期是12MHz勺要求,这

7、里要采用12MHz勺晶振,电容C1、C2对频率有微调作用,故外接晶振时,C1和C2在本设计中选择30pF,振荡频率取12MHz晶振的两个引脚分别连到XTAL1和XTAL2g荡脉冲输入弓|脚.具体连接图如图3所示:C2TEXT::IIXII.CRYSTALuaJui30pF2.3.4 显示电路本次设计中采用共阴极数码管作为显示器.LED的驱动电路简单,使用方便,具有耗电少、本钱低廉、配置简单灵活、安装方便、耐振动、使用寿命长等优点.LED显示器与单片机的接口一般有动态显示与静态显示接口两种电路.1、静态显示方式:是指当显示器显示某一字符时,发光二极管的位选始终被选中.在这种显示方式下,每一个LE

8、四码管显示器都需要一个8位的输出口进行限制,显示稳定,提升了CPU勺工作效率.其缺乏之处是占用硬件资源较多,每个LED数码管需要独占8条输出线.随着显示器位数的增加,需要的I/O口线也将增加.2、动态显示方式:动态显示方式是指一位一位地轮流点亮每位显示器称为扫描,即每个数码管的位选被轮流选中,多个数码管公用一组段选,段选数据仅对位选选中的数码管有效.对于每一位显示器来说,每隔一段时间轮流点亮.显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关,由于扫描速度极快,显示效果与静态驱动相同.通过调整电流和时间参数,可以既保证亮度,又保证显示.本次设计中,由于单片机本身提供的I/O口有限,

9、本次设计采用动态显示,数码管采用的是共阴极接法.用AT89S52的P0口作段码输出时,驱动水平相当大,但由于输出极为漏极开路电路,驱动拉电流负载,引脚上应外接上拉电阻.因此,在本次设计中我们将数码管各段加上拉电阻后接单片机P0口.我们把P2口的输出信号直接接到数码管的位选端作为位选信号,低电平有效.图42.3.5 数字温度传感器DS18B20本次设计的硬件电路简单,关键的地方在DS18B20也是最复杂难懂的.由DALLA评导体公司生产的DS18B2M单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及限制仪器、测控系统和大型设备中.它具有体积

10、小,接口方便,传输距离远等特点.DS18B20勺性能特点: 采用单总线专用技术,既可通过用行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值9位二进制数,含符号位 测温范围为-55C-+125C,测量分辨率最小为0.0625C 内含64位经过激光修正的只读存储器ROM DS18B20ft使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内 适配各种单片机或系统机 测量结果直接输出数字温度信号,以“一线总线串行传送给CPU同时可传送CRCJ验码,具有极强的抗干扰纠错水平 用户可分别设定各路温度的上、下限 适应电压范围宽,3.05.5V,

11、在寄生电源方式下可由数据线供电DS18B20勺管脚排歹I如图5所示.引脚功能如表1所示厅P名称引脚功能描述12Vcc可选择的Vcc弓1脚.当工作于寄生电源时,此引脚必须接地.DQ数据输入/输出引脚.开漏单总线接口弓1脚.当被用着在寄生电源下,也可以向器件提供电源.3GND地信号.表1DS1820主要包括寄生电源、温度传感器、64位激光ROW线接口、存放中间数据的高速暂存器内含便笺式RAM,用于存储用户设定的温度上下限值的TH和TL触发器存储与限制逻辑、8位循环冗余校验码CRC发生器等七局部内部,其内部结构框图如图6所示.图6DS18B20内部结构64位ROM勺结构开始8位是产品类型的编号,接着

12、是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC佥验码.温度报警触发器TH和TL,可通过软件写入户报警上下限.DS18B20温度传感器与单片机的接口电路DS18B20T以采用两种方式供电,一种是采用电源供电方式,此时DS18B20勺1脚接地,2脚作为信号线,3脚接电源.另一种是寄生电源供电方式,单片机端口接单线总线,为保证在有效的DS18B20寸钟周期内提供足够的电流,可用一个MOSFE管来完成对总线的上拉.本实验采用第一种.DS18B20勺测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其

13、振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入.器件中还有一个计数门,当计数门翻开时,DS18B2CM对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55c所对应的一个基数分别置入减法计数器1、温度存放器中,计数器1和温度存放器被预置在-55C所对应的一个基数值.减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度存放器的累

14、加,此时温度存放器中的数值就是所测温度值.其输出用于修正减法计数器的预置值,只要计数器门仍关闭就重复上述过程,直到温度存放器值大致等于被测温度值.由于DS18B20勺单线通讯功能是分时完成的,它有严格的时隙概念,因此读写时序很重要.系统对DS18B20的各种操作按协议进行,操作协议为:初始化DS18B20g复位脉冲-写ROMft能指令-发存储器操作命令-处理数据.DS18B20有六条限制命令指令约定代码操作说明温度转换44H启动DS18B208行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的THTL字节复制暂存器48H把暂存器的THTL字节写至J?RAW重新调Pra

15、mB8H把?RAW的THTL字节写至ij暂存器THTL字节读电源供电方式B4H启动DS18B2函送电源供电方式的信号给上CPU3系统软件设计3.1主程序3.3DS18B20的软件设计DS18B2喘件要求采用严格的通信协议,以保证数据的完整性.该协议定义了几种信号类型:复位脉冲,应答脉冲时隙;写0,写1时隙;读0,读1时隙.与DS18B20勺通信,是通过操作时隙完成单总线上的数据传输.发送所有的命令和数据时,都是字节的低位在前,高位在后.DS18B20的初始化(1)先将数据线置高电平“1.(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0.(4)延时750微秒(该

16、时间的时间范围可以从480到960微秒).(5)数据线拉到高电平“1.(6)延时等待(如果初始化成功那么在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0.据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时限制).(7)假设CPU卖到了数据线上的低电平“0后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒.(8)将数据线再次拉高到高电平“1后结束.DS18B20初始化程序为:voidInit_DS18B20(void)(unsignedcharx=0;DQ=1;/DQ复位Delay_DS18B20

17、(8);/稍做延时DQ=0;/单片机将DQ拉低Delay_DS18B20(80);/精确延时,大于480usDQ=1;/拉高总线Delay_DS18B20(14);x=DQ;/稍做延时后,如果x=0那么初始化成功,x=1那么初始化失败Delay_DS18B20(20);DS18B20的写操作(1)数据线先置低电平“0.(2) 延时确定的时间为15微秒.(3)按从低位到高位的顺序发送字节(一次只发送一位).(4) 延时时间为45微秒.(5) 将数据线拉到高电平.(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止(7)最后将数据线拉高.DS18B20的写程序为voidWriteOneCh

18、ar(unsignedchardat)(unsignedchari=0;for(i=8;i>0;i-)(DQ=0;DQ=dat&0x01;Delay_DS18B20(5);DQ=1;dat>>=1;DS18B20的读操作(1)将数据线拉高“1.(2)延时2微秒.(3)将数据线拉低“0.(4)延时15微秒.(5)将数据线拉高“1.(6)延时15微秒.(7)读数据线的状态得到1个状态位,并进行数据处理.(8)延时30微秒.DS18B20的读程序为unsignedcharReadOneChar(void)(unsignedchari=0;unsignedchardat=0;

19、for(i=8;i>0;i-)(DQ=0;/给脉冲信号dat>>=1;DQ=1;/给脉冲信号if(DQ)dat|=0x80;Delay_DS18B20(4);return(dat);5心得体会课程设计是培养我们综合运用所学知识,发现、提出、分析和解决实际问题的水平.通过这次单片机课程设计,使我们对单片机的结构、根本工作原理、单片机应用系统开发有了进一步的了解,特别是在硬件设计和软件编程方面有了很大提升.温度计的硬件设计电路简单,但由于DS18B20软件设计复杂,需要搞清其工作原理,时序.在设计的过程中,通过请教老师和同学,上网或上图书馆查资料将这些问题解决.这样不仅稳固了以前

20、所学过的知识,加深了我对所学知识的理解,而且学到了很多在书本上未涉及的知识,锻炼了搜集有用信息的水平.软件编程过程中,由于采用C语言编程,而我们以前从未涉足,所以参考了别人的设计思路,琢磨研究弄懂后,又试着修改程序,在不满足要求时反复思考,究竟出错在哪里,经过不懈努力,找出错误所在,最终满足了要求.在编译仿真时对软件KeivuVision3.0和Proteus熟悉更多,发现了Proteus的很多优点,同时也发现它的缺乏之处,过于理想化,如果完全依赖,那么硬件有可能无法工作.在硬件设计过程中,需要考虑很多问题,例如元器件参数的选取,单片机的实际驱动水平.在实际电路的设计时,必须软硬件相结合,使布

21、局合理且软件设计的简单.本次设计由两人共同完成,也培养了我们的团队合作精神.总的来说,这次课程让我们收获很大参考文献1余发山主编.单片机原理及应用技术.徐州:中国矿业大学出版社.2003.122白泽生.用MCS-51单片机实现温度的检测J.现代电子技术.2005.103李玉梅编著.基于MCS-51系列单片机原理的应用设计.国防工业出版社4余小平、奚大顺编著.电子系统设计根底篇.北京:北京航空航天大学出版社,2007.35郭爱芳主编.传感器原理及应用.西安电子科技大学出版社.2007.56/7谭浩强著.C语言程序设计.清华大学出版社.2005.7附1源程序代码#include<AT89X5

22、2.h>#include"math.h"#include"DS18B20.h"#defineuintunsignedint#defineucharunsignedchar宏定义#defineONP#defineSETP3#defineDECP:#defineADDP#defineHBP3#defineLBP3#defineBEEPP3_bitshanshuo_st;bitbeep_st;sbitDIAN=P0A7;ucharx=0;ucharset_st=0;3_0定义限制显示的开关键_1/定义调整键3_2定义减少键3_3/定义增加键,_6定义超过

23、上限的报警灯_7/定义彳氐于卜限的报警灯_5定义蜂鸣器闪烁间隔标志蜂鸣器间隔标志小数点计数器状态标志ucharstate=0;开关状态标志signedcharm;温度值全局变量ucharn;温度值全局变量signedcharshangxian=33;/上限报警温度,默认值为33signedcharxiaxian=-5;/下限报警温度,默认值为-5ucharcodeLEDData尸0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/*延时子程序*/voidDelay(uintnum)while(-num);/*初始化定时器0*/void

24、InitTimer(void)TMOD=0x1;TH0=0x3c;TL0=0xb0;/50ms(晶振12M)/*定时器0中断效劳程序*/voidtimer0(void)interrupt1TH0=0x3c;TL0=0xb0;x+;/*外部中断0效劳程序*/voidint0(void)interrupt0EX0=0;关外部中断0if(DEC=0&&set_st=1)shangxian-;if(shangxian<xiaxian)shangxian=xiaxian;elseif(DEC=0&&set_st=2)xiaxian-;if(xiaxian<-5

25、0)xiaxian=-50;)/*外部中断1效劳程序*/voidintl(void)interrupt2(EX1=0;关外部中断1if(ADD=0&&set_st=1)(shangxian+;if(shangxian>110)shangxian=110;)elseif(ADD=0&&set_st=2)(xiaxian+;if(xiaxian>shangxian)xiaxian=shangxian;)/*读取温度*/voidcheck_wendu(void)(intc;c=ReadTemperature();/获取温度值m=c/10;/计算得到整数n=

26、abs(c)%10;/计算得到小数)/*显示开机初始化等待画面*/Disp_init()(P0=0x40;显示-P2=0xf7;Delay(200);P2=0xfb;Delay(200);P2=0xfd;Delay(200);P2=0xfe;Delay(200);P2=0xff;关闭显示)/*显示温度子程序*/Disp_Temperature()显示温度(P0=LEDDatan;显示个位P2=0xfe;Delay(300);P0=LEDDataabs(m)%10;显示十位DIAN=1;显示小数点P2=0xfd;Delay(300);P0=LEDDataabs(m)/10-abs(m)/100*

27、10;显示百位P2=0xfb;Delay(300);if(m<0)P0=0x40;elseif(m/100)P0=LEDDatam/100;elseP0=0x00;P2=0xf7;Delay(300);P2=0xff;关闭显示)/*显示报警温度子程序*/Disp_alarm(signedcharbaojing)if(baojing<0)P0=0x40;/显示-elseif(baojing/100)P0=LEDDatabaojing/100;elseP0=0x00;P2=0xf7;Delay(200);P0=LEDDataabs(baojing)/10-abs(baojing)/10

28、0*10;/显示百位P2=0xfb;Delay(200);P0=LEDDataabs(baojing)%10;/显示十位P2=0xfd;Delay(200);if(set_st=1)P0=0x76;P2=0xfe;Delay(200);显示上限H'elseif(set_st=2)P0=0x38;P2=0xfe;Delay(200);显示下限LP2=0xfe;Delay(200);P2=0xff;关闭显示/*报警子程序*/voidAlarm()(if(x>=10)beep_st=beep_st;x=0;if(m>=shangxian&&beep_st=1)HB

29、=0;BEEP=0;elseif(m<xiaxian&&beep_st=1)LB=0;BEEP=0;elseBEEP=1;HB=1;LB=1;/*主函数*/voidmain(void)uintz;InitTimer();初始化定时器EA=1;/全局中断开关TR0=1;ET0=1;/开启定时器0IT0=1;IT1=1;check_wendu();for(z=0;z<300;z+)Disp_init();while(1)if(ON=0)Delay(2000);dowhile(ON=0);state+;if(state>1)state=0;if(SET=0&

30、&state=1)Delay(2000);dowhile(SET=0);set_st+;x=0;shanshuo_st=1;if(set_st>2)set_st=0;if(set_st=0&&state=1)EX0=0;关闭外部中断0EX1=0;关闭外部中断1check_wendu();Disp_Temperature();Alarm();报警检测elseif(set_st=1&&state=1)BEEP=1;HB=1;LB=1;关闭蜂鸣器与灯EX0=1;开启外部中断0EX1=1;开启外部中断1if(x>=10)shanshuo_st=shanshuo_st;x=0;if(shanshuo_st)Disp_alarm(shangxian);elseif(set_st=2&&state=1)BEEP=1;HB=1;LB=1;关闭蜂鸣器与灯EX0=1;开启外部中断0EX1=1;开启外部中断1if(x>=10)shanshuo_st=shanshuo_st;x=0;if(shanshuo_st)Disp_alarm(xiaxian);/*END*/#include<AT89X52.h>#defineDQP3_4定义DS18B20总线I/O/*延时子程序*/voi

温馨提示

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

评论

0/150

提交评论