温度采集报警系统的设计—课程设计

上传人:汽*** 文档编号:465968970 上传时间:2022-08-20 格式:DOC 页数:25 大小:231.50KB
返回 下载 相关 举报
温度采集报警系统的设计—课程设计_第1页
第1页 / 共25页
温度采集报警系统的设计—课程设计_第2页
第2页 / 共25页
温度采集报警系统的设计—课程设计_第3页
第3页 / 共25页
温度采集报警系统的设计—课程设计_第4页
第4页 / 共25页
温度采集报警系统的设计—课程设计_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《温度采集报警系统的设计—课程设计》由会员分享,可在线阅读,更多相关《温度采集报警系统的设计—课程设计(25页珍藏版)》请在金锄头文库上搜索。

1、 课 程 设 计 课程名称 单片机课程设计 题目名称 温度采集报警系统的设计 学生学院 物理科学与工程技术学院 专业班级 xx 学 号 1034301114 学生姓名 xx 2013年11 月12日目录一、设计任务与要求2二、方案设计与论证21、单片机的选取22、温度传感器的选取23、显示器的选取24、温度采集显示系统电路的总体设计框图3三、电路基本原理及单元电路设计3四、调试和仿真:7六、总结9七、附录10温度采集报警系统的设计温度采集报警系统的设计一、设计任务与要求1、可以显示被测的温度并存储2、可以设置报警温度3、到达报警温度时声光报警二、方案设计与论证1、单片机的选取本系统采用简答的5

2、1单片机为控制核心优点突出,它能够运行各种程序,综合考虑单片机的各部分资源,且因为我们学习的是51单片机,因此此次设计选用AT89C51单片机作为核心处理器。2、温度传感器的选取方案一:采用温度传感器AD590K。AD590K具有较高精度和重复性,良好的非线性保证0.1的测量精度。加上软件非线性补偿可以实现高精度测量。AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。送入8位A/D转换器,可以获得255级的精度,基本满足题目要求。方案二:采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取

3、测温数据,电路简单。基于以上分析和现有器件所限,温度采集模块选用方案二。DS18B20能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果3、显示器的选取显示系统是单片机控制系统的重要组成部分,主要用于显示各种参数的值,常用的显示器有CRT、LED、LCD等。方案一:采用LED数码管显示。颜色鲜艳,经济实惠,由于本设计显示的内容较多,过多地增加数码管显然不行

4、,进行轮流显示则控制复杂,占用较多的I/O资源,加上数码管需要较多连线,使得电路复杂,功耗较大。若采用Max7219驱动,可以减少占用的接口数目,但是数码管只能显示有限的数字和符号,不能直观地显示出本设计的内容。方案二:采用1604液晶显示。其内置128个5*7点ASCII字符集,可以直观地显示出较多内容,利用该模块灵活的接口方式和简单、方便的操作指令,可构成较好人机交互图形界面,使得显示内容丰富,易于人机交流,并且节约了I/O口资源。由于本设计要求用1604显示,在本设计中采用1604作为显示模块,不仅可以显示温度值,而且可以显示英文字符,比数码管具有明显的优越性,所以本系统采用方案二4、温

5、度采集显示系统电路的总体设计框图如图1:AT89C51电源电路复位及晶振电路键 盘温度采集电路显示电路报警电路图1:系统电路的总体设计框图三、电路基本原理及单元电路设计 本设计使系统可以检测099范围内的温度,考虑到测温精度,设置显示数值精确到1,并且设置温度的上下限,当温度值超过上下限温度时,报警电路中的蜂鸣器鸣响,报警灯闪。根据AT89C51的引脚特性,本设计中采用P2.0P2.2和P0口作为1604的驱动引脚,P1.0P1.3作为按键的输入,P1.4,P1.5分别作声光报警输出。P1.7负责与DS18B20 的IO连接。RST作为复位输入,当振荡器工作时,RST引脚出现2个机器周期以上高

6、电平使单片机复位。XTAL1振荡器反相放大器及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端。1、 总电路图如下图2示: 图2:电路总图2、 晶振电路 瓷片电容C1、C2是用来驱动晶振Y1的,因为晶振的大小是16M,所以选用20P的电容,如下图3示。图 3:晶振电路3、 复位电路 复位电路选用了1uF的电解电容和10K的电阻,如下图4示。图 4:复位电路4、 按键电路电路如下图5示:图 5:按键电路 按键SET用来设置,BACK键用于返回,INC键用于调整,每按一次加一,MOVE键用于移动。5、 显示电路显示采用16*4 字符LCD,如下图6示图 6:显示电路5、 蜂鸣器和发光二极

7、管如图7:图 7:声光报警电路三极管NPN采用9013是作为蜂鸣器的驱动的作用的,R6、R4作为限流电阻使用。6、 实现上述任务的控制器整体流程图如图8所示:图 8:整体流程图 四、调试和仿真:1、调试选划分系统的功能,按单元一个一个调试正确后,组成整个电路。2、仿真部分仿真图如下:图10,主界面未报警图11,主界面已报警图12,设置界面图13,设置成功界面图14,设置不成功界面六、总结这次课程设计是自己第一次设计一个系统,包括前期的方案选取,原理图的绘制,程序的编写和PROTUES仿真等等,使我对之前的理论知识有了较好的巩固,同时也提高了自己的动手能力,然而也发现自己在理论知识方面存在很多不

8、足,比如说,对单片机的中断控制系统的掌握还不够,和对LCD的菜单界面编程能力不足。今后,我将更加努力地学习,提高自己的专业水平。七、附录1.1602接口程序/*file name:1602.h*/#include#define uchar unsigned char#define uint unsigned int#define IO P0sbit RS=P20;sbit RW=P21;sbit E=P22;void check_busy(void);void write_cmd(uchar com);void write_data(uchar dat);void LCD_init(void)

9、;void write_str(uchar x ,uchar y,uchar *s);void lcd_test(void);void delay(uint); /1ms延时程序void delay(uint j)uchar i;for(;j0;j-) for(i=0;i100;i+);/查忙程序void check_busy(void)uchar dt;dodt=0xff;E=0;RS=0;RW=1;E=1;dt=IO;while(dt&0x80);E=0;/写控制指令void write_cmd(uchar com)check_busy();E=0;RS=0;RW=0;IO=com;E=1

10、;_nop_();E=0;delay(1);/写数据指令void write_data(uchar dat)check_busy();E=0;RS=1;RW=0;IO=dat;E=1;_nop_();E=0;delay(1);/数据指令/*uchar read_data(uchar address) uchar dat;write_cmd(address);check_busy();/IO=0xff;E=0;delay(20);RS=1;RW=1;delay(1);E=1;dat=IO;delay(5);_nop_();E=0;delay(2);return dat;*/液晶屏初始化void

11、LCD_init(void)write_cmd(0x38);/8位总线,双行显示,5X7的点阵字符write_cmd(0x0C);/开整体显示,光标关,无黑块write_cmd(0x06);/光标右移write_cmd(0x01);/清屏delay(1);void set_xy(uchar x,uchar y) if(x=0) x=0x80+y; if(x=1) x=0xc0+y; if(x=2) x=0x94+y; if(x=3) x=0xd4+y; write_cmd(x);void write_str(uchar x,uchar y,uchar*s)set_xy(x,y);while(*

12、s)write_data(*s);s+;2.DS18B20接口程序/* 文件名 : 温度采集DS18B20.h* 描述 : 该文件定义温度传感器件DS18B20相关函数。*/unsigned char ReadOneChar(void);void WriteOneChar(uchar dat);void ReadTemp(void);还回Temp5#ifndef DS18B20_H#define DS18B20_H#define uint unsigned int#define uchar unsigned charsbit DQ = P17; /温度传送数据IO口int temp_value; /温度值unsigned char Temp6; / 存放温度的各个位的值int temp_dot ; /温度小数部分 /*ds18b20延时子函数(晶振12MHz */ void delay_18B20(unsigned int i)while(i-);/*ds18b20初始化函数*/void Init_DS18B20(void) unsigned char x=0; DQ = 1; /DQ复位 delay_18B20(8); /稍做延时 DQ = 0; /单片

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号