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

下载本文档

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

文档简介

单片机原理及系统课程设计报告单片机原理及系统课程设计评语:考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专 业:电气工程及其自动化 班 级: 电气1001班 姓 名: 学 号: 指导教师: 兰州交通大学自动化与电气工程学院2013 年 3 月 7 日摘 要 本文将介绍一种基于单片机控制的数字温度计。在硬件方面介绍单片机温度控制系统的设计, 对硬件原理图做简洁的描述。系统程序主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新子程序。软硬件分别调试完成以后,将程序下载入单片机中,电路板接上电源,电源指示灯亮,按下开关按钮,数码管显示当前温度。由于采用了智能温度传感器DS18B20,所以本文所介绍的数字温度计与传统的温度计相比它的转换速率极快,进行读、写操作非常简便。它具有数字化输出,可测量远距离的点温度。系统具有微型化、微功耗、测量精度高、功能强大等特点,加之DS18B20内部的差错检验,所以它的抗干扰能力强,性能可靠,结构简单。 关键词:单片机,数字控制,温度计,DS18B20Abstract This article introduces a microcomputer-based control of digital thermometers from the hardware description Temperature Control system design, hardware schematics and concise description. System program includes the main program, subroutine read temperature, the temperature conversion command subroutine, subroutines calculate the temperature, display data refresh routines. Debugging of hardware and software were completed, the program downloaded into the MCU, the circuit board connected to the power supply, power indicator light, press the switch button, digital display the current temperature. As a result of smart temperature sensor DS18B20,therefore, this article describes the traditional thermometer digital thermometer and the conversion rate compared to its fast, read, write with ease. It has a digital output, measurable distance of the point temperature. System has a micro, micro-power, high precision, powerful characteristics, combined with the internal error DS18B20 test, its anti-interference ability, reliable, simple in structure. Key words: Single-chip microcomputer, digital control, thermometer, DS18B201 引言1.1 目的设计 通过本次设计,熟悉单片机AT89C51和传感器DS18B20的应用,及单片机与外围电路的接法,加深对单片机以及传感器的认识,了解单片机在日常生活中的应用及其重要性。同时,通过查找资料,设计电路,使本次设计的数字温度计具有结构简单、成本低廉、精确度高、反应速度快、数字化显示和不易损坏等特点。1.2 设计要求本设计主要是应用51系列单片机设计一个数字温度计,该数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于要求测温比较准确的场所或科研实验室使用,该设计控制器使用单片机AT89C51,测温传感器使用DS18B20,其主要功能有: (1) 数字温度计测温范围:099;(2) 可以实现四位温度显示,温度值精确到小数点后一位;(3) 测温误差在正负0.5以内。1.3 设计方法 采用智能温度传感器DS18B20作为检测元件,测温范围为-55125,最高分辨率可达0.0625,DS18B20可以直接读出被测温度值,进行转换,就可以满足设计要求。2 总体设计方案 按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路、显示电路。数字温度计总体电路结构框图如图2-1所示。图2-1 原理图3 硬件设计3.1 系统芯片的选择 AT89C51作为温度测试系统设计的核心器件。该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS51的CMOS产品。不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS48单片机的体系结构和指令系统。单片机小系统的电路图如图3-1所示。以AT89C51单片机为核心,选用12M的晶振,这是最常用的选择,外接电容没有特别的要求,但是外接电容的大小会影响振荡器的频率高低、振荡器的稳定性和起振的快速性,因此我们选用30pf的电容作为起振电容。复位电路为按键低电平复位,当按键按下,RET端为高电平,当高电平持续4us的时间就可以使单片机复位。这里尤其要注意的是晶振和电容的位置,它们距离单片机引脚越短越好,因为太长可能无法使单片机起振。3.2 显示模块 1602液晶屏显示清晰且不会闪烁,在需要时还可以输出字符等内容,由于液晶屏是数字式的,因此和单片机系统的接口简单,操作方便。1602LCD液晶显示屏的功耗主要消耗在其内部的电极和驱动IC 上,因而耗电量比其他显示器要少得多,功耗较低。由于其内部集成有显示芯片,程序编写简单,适用于多方面的应用。如图3-2所示。3.3 温度检测模块 DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。它在实际应用中不需要外部任何元器件即可实现测温。如图3-3所示。图3-1 单片机小系统的电路图图3-2 显示模块图3-3 DS18B20数字温度传感器4 软件设计数字温度计主要是测温电路模拟环境温度,然后送于单片机,由单片机处理后送液晶显示器显示温度。整体原理流程图如图4-1所示。DSl8820的主要数据元件有:64位激光Lasered ROM,温度灵敏元件和非易失性温度告警触发器TH和TL。DSBl820可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。此外,还可外接5 V电源,给DSl8820供电。DSl8820的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。图4-2为读取数据流程图。5 系统仿真及其调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时,必须严格的保证读/写时序,否则将无法读取测量结果。本程序采用单片机C语言编写,用Keil C编译器编程调试。软件调试到数码管能显示温度值,而且在有温度变化时(例如改变传感器的温度值)显示温度能改变。用Proteus软件连接电路图,然后将程序导入Proteus中,最后开始仿真。结果如图5-1所示。6 总结 作为一名大三学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:proteus仿真、汇编语言、模拟和数字电路知识等。虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。图4-1 主程序流程图图4-2 温度传感器数据读取流程图图5-1 仿真电路图参考文献1 余永全.单片机在控制系统中的应用.北京:电子工业出版社,2003.2 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,1994.3 李华.MCS-51系统单片机实用接口技术.北京:北京航空航天大学出版社,1993.附 录程序#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; /DQ复位 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_18b20=0) /十位为0,则不显示十位write_lcd_com(0x80+0x40);write_lcd_date(0x30+shi_18b20

温馨提示

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

评论

0/150

提交评论