数字温度计课程设计报.doc_第1页
数字温度计课程设计报.doc_第2页
数字温度计课程设计报.doc_第3页
数字温度计课程设计报.doc_第4页
数字温度计课程设计报.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

目录一设计目的二设计要求三设计思路四系统的硬件构成及功能5.1主控制器5.2显示电路5.3温度传感器五系统整体硬件电路六程序图.七测量及其结果分析八设计心得体会九程序.一设计目的1.理解掌握MCS-51系列单片机的功能和实际应用。2.掌握仿真开发软件的使用。3.掌握数字式温度计电路的设计、组装与调试方法。二设计要求 1.以MCS-51系列单片机为核心器件,组成一个数字式温度计。2.采用数字式温度传感器为检测器件,进行温度检测,检测精度为0.53.温度显示采用4位LED数码管显示,三位整数,一位小数。4.具有键盘输入上下限功能,超过上下限温度时,进行声音报警。三设计思路1根据设计要求,选择AT89C52单片机为核心器件。2.温度检测器件采用DS18B20数字式温度传感器。与单片机的接口为P3.6引脚。3.键盘采用独立式按键,由三个按键组成,分别是:设置键(SET),加一建(+1),确认键(RET)。SET键(上下限温度设置键):当该键按下时,进入上下限温度设置功能。通过P3.1引脚接入。+1键(加一调整键):在输入上下限温度时,该键按下一次,被调整位加一。通过P3.2引脚接入。RET键(确认键):当该键按下时,指向下一个要调整的位。通过P3.3引脚接入。4.声音报警蜂鸣器通过P1.7引脚接入。 硬件电路设计总体框图为图4.1:单片机3位LED显示器LED显示器驱动电路按键输入电路时钟电路复位电路温度检测蜂鸣器电路 图4.1四、系统的硬件构成及功能1.主控制器 单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。很适合便携手持式产品的设计使用。 AT89S52在仿真软件中的图像为图5.1 图5.1 2.显示电路 显示电路采用四位共阳LED数码管,从P3口RXD,TXD串口输出段码。 LED数码管在仿真软件中如图5.2 图5.2 3.温度传感器 DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现位的数字值读数方式。DS18B20的性能特点如下: 独特的单线接口仅需一个端口引脚进行通讯 无需外部器件 可通过数据线供电 测温范围-55+125,以0.5递增。华氏器件-67+2570F,以0.90F 递增 温度以9 位数字量读出 温度数字量转换时间200ms(典型值) 用户可定义的非易失性温度报警设置 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 3.3.1所示,DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源;GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。其电路图如图5.3.1所示.。 在仿真软件中如图5.3.2所示 图5.3.2图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,完成温度测量.DS1820的测温分辨力为0.5,获得高分辨率:首先用DS1820提供的读暂存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。考虑到DS1820测量温度的整数部分以0.25、0.75为进位界限的关系,实际温度Ts可用下式计算: 五系统整体硬件电路在仿真软件Proteus上完成。其中LED数码管以动态扫描法实现温度显示,由四个PNP型晶体管Q2,Q3,Q4,Q5和八个电阻组成,基极与单片机的P1.0,P1.1,P1.2连接。DS18B20的数据I/O端与单片机P3.6引脚连接。外部晶振为12MHz。蜂鸣器通过Q1放大后与引脚P1.7相连。图中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。六程序设计图:七测量及其结果分析 1.实物焊接图: 在室温下,LED显示器示数如图8.2.2,为26.4摄氏度 图8.2.2用手盖住温度传感器后,LED显示器示数如图8.2.3,为29.7摄氏度。八设计心得体会本次课设对我来说是一次难得的经历,首先是第一次接触了仿真软件Protel,在使用时经历了很多次失败,因为这款软件与以前使用的各种软件有很多不同,使用时不停出错,接线时由于元件放置不合理而接的杂乱无章;输入源程序时还较为顺利,显示结果比较满意。其次是程序设计,我们在参考别人成功先例的基础上根据自己设计的需要编制程序,其中历经不少曲折,最后我的收获是,编程一定要细心,针对每一个细节,稍有疏忽,程序就不能正常工作。最后是单片机实践操作,由于我自己已买了一块开发板,所以硬件调试比较顺利,效果也不错,就是DS18B20温度传感器灵敏度不太高,示数变化不大。在这次的实践与学习中,尽管期间困难重重,但我还是从中学习了不少新的知识与技能和解决困难的方法,也终于体验到了经历困难到最终获得成功的那种无以言表的喜悦之情,总之,本次课设是我收获最多的一次,也希望自己在以后的各项研究活动中能坚持这种精神。九程序:#include #includeDS18B20.h #define uintunsigned int #define uchar unsigned char sbit SET=P31; sbit DEC=P32; sbit ADD=P33; sbit BEEP=P37; bit shanshuo_st; bit beep_st; sbit DIAN=P27; uchar x=0; signed char m; uchar n; uchar set_st=0; signed char shangxian=38; signed char xiaxian=15; uchar code LEDData=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void Delay(unsigned int num) while(-num); void lnitTimer(void) TMOD=0x01; TH0=0x4c; TL0=0x00; x+; void int0(void)interrupt 0 EX0=0; if(DEC=0&set_st=1) shangxian-; if(shangxianxiaxian)shangxian=xiaxian; else if(DEC=0&set_st=2) xiaxian-; if(xiaxian99)shangxian=99; else if(ADD=0&set_st=2) xiaxian+; if(xiaxianshangxian)xiaxian=shangxian; void check_wendu(void) unsigned int a,b,c;c=ReadTemperature()-5;a=c/100;b=c/10-a*10;m=c/10;n=c-a*100-b*10;if(m99)m=99;n=9;Disp_init() P2=0xbf; P1=0xfe; Delay(200); P2=0xbf; P1=0xfd; Delay(200); P2=0xbf; P1=0xfb; Delay(200); P2=0xbf; P1=0xf7; Delay(200); P1=0xff; Disp_Temperature() P2=0xc6;P1=0xf7;Delay(300);P2=LEDDatan;P1=0xfb;Delay(300);P2=LEDDatam%10;DIAN=0;P1=0xfd;Delay(300);P2=LEDDatam/10;P1=0xfe;Delay(300);P1=0xff; Disp_alarm(uchar baojing) P2=0xc6;P1=0xf7;Delay(200);P2=LEDDatabaojing%10;P1=0xfb;Delay(200);P2=LEDDatabaojing/10;P1=0xfd;Delay(200);if(set_st=1)P2=0x89;else if(set_st=2)P2=0xc7;P1=0xfe;Delay(200);P1=0xff; void ALarm() if(x=10)beep_st=beep_st;x=0; if(m=shangxian&beep_st=1)|(mxiaxian&beep_st=1)BEEP=0; else BEEP=1; void main(void) unsigned int z;InitTimer();EA=1;TR0=1;ET0=1;IT0=1;IT1=1;check_wendu();check_wendu();for(z=0;z2)set_st=0; Delay(2000); dowhile(SET=0); set_st+;x=0;shanshuo_st=1; if(set_st2)set_st=0; if(set_st=0) EX0=0; EX1=0; check_wendu(); Disp_Temperature(); Alarm(); else if(set_st=1) BEEP=1; EX0=1; EX1=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; EX1=1; if(x=10)shanshuo_st=shanshuo_st;x=0; if(shanshuo_st)Disp_alarm(shangxian); #includeDS18B20.h #include sbit DQ=P36; void Delay_DS18B20(int num) while(num-); void Init_DS18B20(void) unsigned char x=0; DQ=1; Delay_DS18B20(8); DQ=0; Delay_DS18B20(80); DQ=1; Delay_DS18B20(14); x=DQ; Delay_DS18B20(20); unsigned charReadOneChar(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);void WriteOneChar(unsigned char dat) unsigned char i=0;for(i=8;i0;i-) DQ=0; DQ=dat&0x01; Delay_DS18B20(5);DQ=1;dat=1; int ReadTemperature(void

温馨提示

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

评论

0/150

提交评论