单片机课程设计---基于单片机的数字温度计设计.docx_第1页
单片机课程设计---基于单片机的数字温度计设计.docx_第2页
单片机课程设计---基于单片机的数字温度计设计.docx_第3页
单片机课程设计---基于单片机的数字温度计设计.docx_第4页
单片机课程设计---基于单片机的数字温度计设计.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30) 答辩(10) 总成绩(100)专 业:电气工程及其自动化班 级: 电气1002班 姓 名: 学 号: 指导教师: 兰州交通大学自动化与电气工程学院2013 年 3 月7日基于单片机的数字温度计设计摘 要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于AT89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点。 DS18B20与AT80C52结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。关键词:单片机;数字控制;温度计;DS18B20;AT89C52AbstractAlong with the progress of The Times and development, microcontroller technology has spread to our life, work, scientific research, each domain, has become a more mature technology, this paper mainly introduces a temperature measurement system based on AT89C52 single chip microcomputer, described in detail using digital temperature sensor DS18B20 temperature measurement and control system in the development process, focusing on sensors under the single chip microcomputer hardware connection, software programming, and each module system process has carried on the detailed analysis of the circuit of each part are introduced one by one, also the system can easily realize temperature acquisition and display, it is quite convenient to use and has high precision, wide range, high sensitivity, small volume, low power consumption advantages. DS18B20 with AT80C52 realize the minimalist temperature detection system, the system structure is simple, strong anti-jamming capability, suitable for harsh environments on-site temperature measurement, have broad application prospects.Key words: single chip microcomputer,Digital control,The thermometer, DS18B20,AT89C521引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C52,测温传感器使用DS18B20。 1.1设计内容及性能指标本设计主要是介绍了单片机控制下的温度检测系统,详细介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:利用温度传感器(DS18B20)测量某一点环境温度测量范围为-5599,精度为0.5用1602LCD液晶显示屏进行实际温度值显示2设计方案及原理2.1设计方案本次课程设计是用89C52单片机CPU及接口电路设计一个数字时钟,其核心部件是89C52,时钟的显示采用1602LCD液晶显示屏,保证功能完善,工作可靠。1602LCD液晶显示屏的功耗主要消耗在其内部的电极和驱动IC 上,因而耗电量比其他显示器要少得多,功耗较低。由于其内部集成有显示芯片,程序编写简单,适用于多方面的应用。系统设计框图如图1所示。DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。显示电路单片机晶振电路 温度传感器电路 图1 系统方框图2.2系统原理DS18B20采用3脚PR35封装或8脚SOIC封装,64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。3硬件设计3.1硬件原理图根据题目要求设计的硬件原理图,如图2所示。 图2 硬件原理图3.2 LCD显示电路设计1602LCD液晶屏为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字。液晶1、2端为电源;3端为液晶对比度调节端。液晶4端为向液晶控制器写数据/写命令选择端,接单片机P2.0端口。液晶5端为读/写选择端,因为我们不需要从液晶中读取数据,只向其写入命令和数据,因此此端始终选择为写状态,即低电平接地。液晶6端为使能信号,是操作必须的信号,接单片机的P2.1口。3.3温度检测电路设计DS18B20是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DQ 为数据输入/输出引脚。GND为地信号。当工作于寄生电源时,此引脚必须接地。 在仿真软件中如图3所示。 图3 仿真中DS18B20DS18B20的测温原理,低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度,中的斜率累加器用于补偿和修正测温过程中的非线性输出,用于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。4软件设计实验主程序流程图,如图4所示。图4 主程序流程图5系统仿真及实际应用5.1 Proteus仿真图 根据硬件原理电路,用在Keil生成hex的可执行文件,Proteus中画图的仿真结果,如图5所示。 图5 Proteus仿真结果5.2实际应用温度是人们日常生活中常常需要测量和控制的一个物理量。传统的温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,而在某些特定的场合,器材设备对温度的要求极高,设计一种高精度的温度计就显得十分有意义。设计的高精度温度计有着线性优良、性能稳定、灵敏度高、使用方便、软硬件结构实现了模块化、电路简单等优点。六、总结历时一周的单片机课程设计结束了,此次课程设计中,我所做的是要用89C52单片机及其他部件完成一个电子时钟。可以实现电子钟的走时和校对;电子钟上电时开始走,通过用1602LCD液晶显示屏;通过对数字温度传感器DS18B20调整,对1602LCD液晶显示屏进行延迟控制。在完成设计的过程中,我遇到了一些问题,在用Keil uVision3调试程序时,软件提示说“代码”超过2k。这个问题困扰了我半天的时间。后来我直接编译、编译连接、全部重建、停止编译和对工程进行设置,生成了名为 c51.hex文件。之后在Proteus中画图仿真。通过这次单片机课程设计,我不仅将上学期所学的单片机知识应用到设计中,同时更进一步学习了89C52。更加熟悉了Keil和Proteus的使用。每次课程设计都会遇到一些问题,随着问题的解决自己又学到了更多的知识。参考文献1王思明.单片机原理及应用系统设计M.北京:科学出版社,2012.2李广弟.单片机基础M.北京:北京航空航天大学出版社,1994.3阎石.数字电子技术基础(第三版)M.北京:高等教育出版社,1989.附录源程序代码:#include /头文件#define uchar unsigned char #define uint unsigned intsbit rs=P20;sbit lcden=P21; /液晶使能端sbit DATA = P37; /DS18B20接入口uchar FLAG_DIS=0;uchar bai_18b20,shi_18b20,ge_18b20,num; /定义变量bit flag_Negative_number ;/负数标志uchar code table=tempreture: ; /提示语/*一毫秒定时*/void delay_ms(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*延时子函数*/void delay(uint num)while(num-) ;/*液晶写命令*/void write_lcd_com(uchar com)rs=0;lcden=0;P0=com;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶写数据*/void write_lcd_date(uchar date)rs=1;lcden=0;P0=date;delay_ms(1);lcden=1;delay_ms(1);lcden=0;/*液晶初始化程序*/void lcd_init()write_lcd_com(0x38);write_lcd_com(0x0c);write_lcd_com(0x06);write_lcd_com(0x01);/*DS18b20温度传感器函数*/void Init_DS18B20(void) /传感器初始化 uchar x=0; DATA = 1; delay(10); /稍做延时 DATA = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 DATA = 1; /拉高总线 delay(20); x=DATA; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);/*温度传感器读一个字节*/ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i0;i-) DATA = 0; / 给脉冲信号 dat=1; DATA = 1; / 给脉冲信号 if(DATA) dat|=0x80; delay(8); return(dat);/*温度传感器写一个字节*/void WriteOneChar(uchar dat) uchar i=0; for (i=8; i0; i-) DATA = 0; DATA = dat&0x01; delay(10); DATA = 1; dat=1; delay(8);/*读取温度传感器温度*/int ReadTemperature(void)uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0x44); /启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器)前两个就是温度a=ReadOneChar();/低位b=ReadOneChar();/高位t=b;t=8;t=t|a;if(b&0x80) t=t+1;flag_Negative_number = 1; else flag_Negative_number = 0; tt=t*0.0625;t= tt*10+0.5; return(t);/*液晶显示温度*/void dis_D18B20(void)int temp;temp=ReadTemperature();/读温度bai_18b20=temp%1000/100;/显示十位shi_18b20=temp%100/10;/显示个位ge_18b20=temp%10;/显示十分位if(flag_Negative_number) /负数if(bai_18b20=0) /十位为0,则不显示十位write_lcd_com(0x80+0x40);write_lcd_date(0x2D);write_lcd_date(0x30+shi_18b20);write_lcd_date(0x30+ge_18b20);write_lcd_date(0xDF);write_lcd_date(0x43);elsewrite_lcd_com(0x80+0x40);write_lcd_date(0x2D);write_lcd_date(0x30+bai_18b20);write_lcd_date(0x30+shi_18b20);write_lcd_date(0xDF);write_lcd_date(0x43);else /正数if(bai

温馨提示

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

评论

0/150

提交评论