报警系统设计综合设计.doc

上传人:精*** 文档编号:831215 上传时间:2023-09-06 格式:DOC 页数:16 大小:190.66KB
下载 相关 举报
报警系统设计综合设计.doc_第1页
第1页 / 共16页
报警系统设计综合设计.doc_第2页
第2页 / 共16页
报警系统设计综合设计.doc_第3页
第3页 / 共16页
报警系统设计综合设计.doc_第4页
第4页 / 共16页
报警系统设计综合设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、综合设计性实验预习报告实验项目: 报警系统设计 一 引言: 近年来随着计算机与控制技术的蓬勃发展与广泛应用,人们从中受益良多,生活中也随处可见电子产品,自动化,智能化成为发展趋势,而以单片机为核心的应用正在不断地走向深入,同时带动传统控制检测的日新月益。本设计论述了一种以STC89C51单片机为控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以设置温度上下限值,实现对环境温度测量并在超出范围的情况下发出警告。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括mega128单片机最小系统,测温电路、数码管显示电路以及报警电路等。系统程序主要包括主程序,读出温度子程序,计算

2、温度子程序、按键处理程序、数码管显示程序以及数据存储程序。二 实验目的:1、学生根据系统功能选择一个性价比较高的AVR单片机为控制芯片;2、学生独立设计硬件电路,在万能板上制作系统;3、学生独立完成软件设计并调试。三 实验原理:图1 DS18B20引脚图数字温度传感器DS18B20简介主要特性:(1)电压范围:3.05.5V;(2)单线接口方式,仅需要一条口线即可实现微处理器与DS18B20的双向通讯;(3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上;(4)温范围55125,在-10+85时精度为0.5;(5)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0

3、.125和0.0625;(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字; DS18B20温度测量值:DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。这是12位转化后得到的数据,前面5位是符号位,如果温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为01

4、91H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。DS18B20温度数据表配置寄存器该字节各位的意义如下:TMR1R011111低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)表4: 温度分辨率设置表R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750msDS18B20通讯协议:主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一

5、次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。用数码管显示信息时,由于每个数码管至少需要8 个I/O 口,如果需要多个数码管,则需要太多I/O 口,而单片机的I/O 口是有限的。在实际应用中,一般采用动态显示的方式解决此问题。动态显示原理:原则上同一时刻只有一位LED是点亮的,但只要扫描的频率足够高(一般大于25Hz),由于人眼的视觉暂留特性,直

6、观上感觉却是连续点亮的,这就是常说的动态扫描显示。动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,所以一般均取几个ms左右为宜。在编程时,需要输出段选和位选信号,位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替。例如需要显示数字“1234”时,先输出位选信号,选中第一个数码管,输出1 的段码,延时一段时间后选中第二个数码管,输出2 的段码,如此控制4个数码管显示。把上面的流程以一定的速度循环执行就可以显示出“1234”,由于交替的速度非常快

7、,人眼看到的就是连续的“1234”在动态显示程序中。本实验仪配置带4位动态扫描显示模块一个,如图4.2。为减少IO的使用,采用串入并出芯片74HC595来扩展了IO口,共占用4个IO来传输数据,另外4个IO口用来进行4个LED数码管的位选。图蜂鸣器电路图四 实验内容:系统采样温度并显示;当温度超过警戒值则报警;通过“设置”、“+”和“-”键修改温度警戒值或者直接通过按键输入设定温度门限值。五 重点问题:1、使用AVR单片机为控制芯片。2、使用一线温度传感器18B20采集温度。3、使用2位八段数码管显示当前温度值。4、使用3个按键修改警戒温度值。5、当温度超过警戒值时,蜂鸣器响,直至温度低于、等

8、于警戒值。通过本实验掌握单片机对模拟信号的采集和处理,掌握单片机串行数据传送技术和电路、软件设计方法,掌握LED数码管电路和软件设计方法,掌握按键和蜂鸣器的电路和软件设计方法。六 参考文献:AVR Mega128单片机原理与接口技术实验指导书-庞志广州大学原始数据记录表学生姓名 林桔桢 学号 1107400109 班别 电子111 专业 电子信息工程 学院 机械与电气工程学院 实验项目 报警系统设计 指导老师 郑晖 实验进行时间 2014 年 5 月 29 日 时至 时;实验地点 电子楼503 室温 湿度 天气 原始数据记录:/*DS18B20实验,动态LED数码管显示温度实验简介:1、DS1

9、8B20是一个单线温度传感器,直接输出数字温度信息。2、做一般的温度测量,它比较理想。3、程序具有-55125全范围显示功能。4、具有零下数值修正特性。实验要求:1、读出DS18B20的温度值,并将它显示在数码管上。实验说明:1、DS18B20与PF2接口连接。2、进行实验时需要将JP7端口的18B20短路块插上。3、默认内部1M晶振。实验原理:1、由于DS18B20时序比较复杂,在此不一一说明,用户要仔细看说明。2、将读出的数值经过数值转化后放到显示缓冲区即可。3、DS18B20低层驱动带有中断保护,不会受中断事件干扰。4、DS18B20有严格时序要求,相差几uS都会出错,请大家修改时注意。

10、知识点:1、对照手册学习驱动函数部分。2、留意一下数组转换部分。3、同时学习中断保护的作用意义,这是很必要的。4、零下温度显示对于DS18B20实战非常有意义。编写:AVR实验板 YX530程序版本:2.0WWW.YXAVR.COM*/#include #include #include ds1820.h#include led4.h/*延时函数函数说明:软件延时函数,此函数延时单位约为1mS。晶振频率:CPU内部1M晶振。带入参数:i无符号整型,变量范围:0-65535。返回参数:无*/void delay_ms(unsigned int i) unsigned int a;unsigned

11、 char b;for (a = 1; a i; a+) for (b = 1; b; b+) ;/*IO口初始化函数函数说明:IO口初始化函数,不用的IO口建议设置为输入带上拉。晶振频率:无关带入参数:无返回参数:无*/void io_init(void) DDRA = 0x00;/*方向输入*/PORTA = 0xFF;/*打开上拉*/DDRB = 0xC0;/*PB6 PB7输出*/PORTB = 0xFF;DDRC = 0x00;PORTC = 0xFF;DDRD = 0x00;PORTD = 0xFF;DDRE = 0x00;PORTE = 0xFF;DDRF = 0x00;PORT

12、F = 0xFF;DDRG = 0x00;PORTG = 0xFF;/*主函数实现系统的初始化操作。周期性读取温度。然后放入显示缓存区。上面两个任务之间完全独立运行,方便移植。*/void main(void) unsigned int i;unsigned int temp;io_init();delay_ms(200);ds1820_reset();/*复位D18B20*/led4_init();/*启动显示任务*/led4_buf4 = 2;/*小数点位置*/SEI();/*中断使能*/while (1) ds1820_start();/*启动一次转换*/delay_ms(500);/*

13、等待转换结束*/i = ds1820_read_temp();/*读取温度数值*/if (i = 4;led4_buf1 = (i % 10) + 0;i = i / 10;led4_buf2 = (i % 10) + 0;i = i / 10;led4_buf3 = (i % 10) + 0;else /*温度在零下*/i = i;temp = i & 0x000F;/*取出小数部分*/if (temp = 0x0F) /*零下度温数值+1*/temp = 0x0000;i += 1;else temp += 1;temp *= 625;led4_buf0 = (temp / 1000) +

14、 0;i = 4;led4_buf1 = (i % 10) + 0;i = i / 10;led4_buf2 = (i % 10) + 0;led4_buf3 = -;源程序实验结果:程序运行后,单片机不断读取温度传感器的实时温度值,并显示在数码显示管上。修改程序要求:设定门限值,使得温度上升到门限值温度时蜂鸣器鸣响。并可通过按键设置门限值。综合设计性实验实验报告实验名称:报警系统设计 摘要:随着传感器在生产生活中更加广泛的应用,一种新型的数字式温度传感器实现对温度的测试与控制得到了更快的开发。本文设计了一种基于单片机mega128的温度检测及报警系统。该系统将温度传感器DS18B20接到单片

15、机的一个端口上,单片机对温度传感器进行循环采集。将采集到的温度值与设定的上下限进行比较,当超出设定范围的上下限时,通过单片机控制的报警电路就会发出报警信号,从而实现了本次课程设计的要求。该系统设计简单、结构紧凑、体积小、重量轻、抗干扰能力较强、性价比高、扩展方便,在工农业等领域的温度检测中有广阔的应用前景。本次课程设计的测量范围为0-99,测量误差为2.一 引言: 近年来随着计算机与控制技术的蓬勃发展与广泛应用,人们从中受益良多,生活中也随处可见电子产品,自动化,智能化成为发展趋势,而以单片机为核心的应用正在不断地走向深入,同时带动传统控制检测的日新月益。本设计论述了一种以STC89C51单片

16、机为控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以设置温度上下限值,实现对环境温度测量并在超出范围的情况下发出警告。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括mega128单片机最小系统,测温电路、数码管显示电路以及报警电路等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、按键处理程序、数码管显示程序以及数据存储程序。 二 实验要求:1、使用AVR单片机为控制芯片。2、使用一线温度传感器18B20采集温度。3、使用2位八段数码管显示当前温度值。4、使用3个按键修改警戒温度值。5、当温度超过警戒值时,蜂鸣器响,直至温度低于、等于警戒值。三 实验仪器:

17、 计算机一台、mega128开发板,18b20等四 实验步骤: 显示温度 设置门限值 蜂鸣器设置五 数据处理及实验结果表示:程序运行后,单片机不断读取温度传感器的实时温度值,并显示在数码显示管上。六 实验结果分析: /*主函数*/void main(void) unsignedint dian=0,k3=0,jishu=0,baojin=20,jia=0,jian=0,shezhi=20;/k3为报警值unsigned char i = 0;unsigned int temp = 0,key=0;unsigned int adca_buf = 0, 0, 0, 0, 0, 0, 0, 0;/*

18、滤波缓冲区*/unsigned char beep_count = 0;unsigned char beep_flag = 0;io_init();led4_buf4 = 0x0A;/*小数点位置*/led4_init();SEI();/*中断使能*/while (1) key = get_key();switch (key) /按键分析case 0x00:if(jishu=0)dian=0;delay_ms(100);/*周期控制*/*A路*/temp = get_ad(0);/*ADC采样*/*数值插入*/for (i = 0; i 7; i +) adca_bufi + 1 = adca

19、_bufi;/*数值移动一位*/adca_buf0 = temp;/*取平均值*/temp = 0x0000;for (i = 0; i baojin)beep_count = 10;/蜂鸣器输出 /空过滤 if(jishu0)dian=1;led4_buf0 = shezhi% 10; /取个位值shezhi/=10; led4_buf1 =shezhi% 10; shezhi=shezhi*10;break;case 1: /功能键 jishu=jishu+1; if(jishu=1) /加报警值 jia=jia+1; if(jishu=2) /减报警值 jian=jian+1;jia=0

20、; if(jishu=3) /装入新报警值 baojin=shezhi;jishu=0;jian=0;break;case 2: if(jia=1) /加减健(个位) shezhi=shezhi+1;if(shezhi99)shezhi=99; if(jian=1) shezhi=shezhi-1;if(shezhi99)shezhi=99; if(jian=1) shezhi=shezhi-10;if(shezhi 0) if (beep_flag = 0) DDRB |= (1 PB5);/*设置蜂鸣器为输出*/TCCR1A = 0x40;/*CTC模式*/TCCR1B = 0x09;OC

21、R1A = 1000;beep_flag = 1;beep_count -;if (beep_count = 0) TCCR1A = 0x00;/*关闭定时器*/DDRB &= (1 PB5);/*方向关闭*/PORTB &= (1 PB5);/*电平关闭*/beep_flag = 0;/*蜂鸣器部分*/七 实验心得: 实验通过四个按键可以改变报警的值,其中按键一位功能键,通过不同变量的变化达到同一按键不同功能的效果,实验过程中由于使用例程上的显示程序,导致显示时输入数据格式不对导致输出显示乱码。通过修改数据的处理方式解决。 通过我这次实验,我的心得是差之毫厘,谬之千里。调试时要细心,一步一步调,出现错误才能知道错误大概的地方。八 参考文献:1、AVR Mega128单片机原理与接口技术实验指导书-庞志

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922