巡回检测报警系统控制设计

上传人:jiups****uk12 文档编号:90661401 上传时间:2019-06-14 格式:DOC 页数:22 大小:8.18MB
返回 下载 相关 举报
巡回检测报警系统控制设计_第1页
第1页 / 共22页
巡回检测报警系统控制设计_第2页
第2页 / 共22页
巡回检测报警系统控制设计_第3页
第3页 / 共22页
巡回检测报警系统控制设计_第4页
第4页 / 共22页
巡回检测报警系统控制设计_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《巡回检测报警系统控制设计》由会员分享,可在线阅读,更多相关《巡回检测报警系统控制设计(22页珍藏版)》请在金锄头文库上搜索。

1、 巡回检测报警控制系统设计序随着电子测量技术与计算机技术的发展,而对各种检测对象和大量的测试点,需要利用数据采集系统将多路被测量转换成数字量,在经过单片机或微型计算机进行数据处理,实现实时测控。在工业生产中,往往也需要对各种生产过程参数进行控制,而要进行控制的前提条件是必须对各参数进行数据采集。数据采集系统一般具有定时采样(A/D转换)、数据转换、参数显示、超限报警等功能。在本次课设中,将设计一个多路数据采集测控系统,采用单片机为核心器件,配合相应的外围电路、ADC0809模/数转换器、LED数码管及发光二极管等组成单片机数据采集系统。第一部分 系统设计要求一、设计的性质与目的该设计是在我们学

2、完单片机原理及应用和电子学相关课程的基础上,综合运用所学知识,进行单片机测控系统设计,进一步加强对所学知识的理解,使学生掌握单片机测控系统开发的方法、步骤,具备一定的设计能力、动手能力。二、设计任务和要求根据题目要求,设计一个单片机应用系统,完成相应的控制和显示功能。完成该单片机应用系统的硬件原理图,设计相应的控制软件,实现硬件及软件的调试。三、巡回检测报警控制系统设计要求设计一个多路数据采集测控系统,具有控制及显示功能:1、对多路模拟信号进行采集,将采集到的电压值通过LED显示出来。2、设置被测量的阈值,对被测量进行临控,当达到阈值时,启动报警(如指示灯)或启动相应的设备(如直流电机)。3、

3、键盘可以控制在LED上显示哪一路被测量的值。第二部分 系统设计一、设计思路根据题目要求,程序需要实现以下几个功能:1、可以通过LED显示电压值。2、可以通过键盘控制当前显示何路电压。3、对采集来的电压值进行阈值判断,在超出范围的情况下启动相应的报警程序。4、可以实时监控电压的变化。 有以上几种功能,可以知道程序中需要包括以下几个子程序及对应的功能:1、A/D转换子程序,对四路模拟电压作循环转换。2、阈值判断子程序,分别对四路电压进行对应的阈值判断。3、报警子程序,当输入电压超出阈值范围时调用此程序,使程序可以输出不同的报警信号。4、显示通道选择子程序,用于判断当前需要显示何路电压值。5、电压值

4、转换至显示用BCD码子程序,用于将A/D转换所得的电压值转换所得的电压值转换为对应BCD码,以使得LED显示的电压值更直观。6、显示子程序,用于将转换后的BCD码在LED上显示出来,同时显示所选择的通道数。根据程序设计思路,可知需要用到的器件除8051外,还需要用A/D转换器件AD0809,可编程键盘显示接口HD7279,小键盘,LED数码管,LED发光二极管,以及其它附属器件。各器件间需要进行I/O扩展及硬件的联接。二、硬件系统框图系统核心是89C51与ADC0809组成的数据采集系统,外部控制输入与显示主要是通过HD7279来与8051进行数据的输入与输出,HD7279相当于一个外部中断,

5、当有键按下时。HD7279向CPU提出中断,80C51响应中断,读入键盘数据,做出相应的控制反应。实现了键盘间接控制和向CPU输入信号的目的。同时也会输出显示指令,让HD7279控制各数码管,从而得到所要的显示。三、软件系统组成框图四、硬件原理图(连线图)注:P3.4接LED10作为高电平报灯,P3.5接LED9作为低电平报警灯。注:在实验之前,应将8单元的U7(7406)和U6(74LS245)芯片取下,因7279已经有直接驱动数码管的能力,如果另外放置驱动芯片,反而会影响数码管的显示效果。五、子程序设计与调试1、A/D转换子程序(带报警)IN0.相关知识模/数转换器ADC0809的认识虽然

6、单片机可以对各种数字数据做快速而精确的处理,但是人类在日常生活中所遇到的各种物理量(例如温度、亮度、质量)都是模拟的,因此若令单片机处理模拟信号,必须将模拟信号转换成数字信号再送入单片机。A/D转换器(analog to digital converter)的功能是将输入的模拟信号转换成数字信号输出。本次课设采用ADC0809.8位A/D转换器芯片ADC0809ADC0809是典型的8位8通道逐次逼近式A/D转换器,采用CMOS工艺制造。ADC0809芯片为28引脚双列直插式封装,其引脚排列见下图。(1)IN7IN0:模拟量输入通道。(2)ADDA、ADDB、ADDC:模拟通道地址线。(3)A

7、LE:地址锁存信号。(4)START:转换启动信号。(5)D7D0:数据输出线。(6)OE:输出允许信号。(7)CLK:时钟信号。ADC0809的内部逻辑结构如下图所示。 . 程序流程图.程序调试及说明 ADC0809是8位逐次逼近型A/D转换器,带8个模拟量输入通道,芯片内带通道地址译码锁存器,输出带三态数据锁存器,启动信号为脉冲启动方式,每一通道的转换大约100us。因此模拟量转化为数字量不能马上输出,转换过程要延时。如:delay(10)void delay(unsigned int t) unsigned int i; for(i=0;it;i+);结果说明:模拟电压值可以通过数字万用

8、表测出,然后与LED显示经转换后的值做比较,误差小于0.2伏即可。如果某一路电压超过4伏,则显示高报警(P3.4)如果某一路电压低于1伏,则显示低报警(P3.5)。2、键盘显示子程序相关知识. 电路原理图.程序结果说明初始显示为 0000087;按下“1”时,显示111111;按下“2”时,显示222222;按下“3”时,显示333333;按下“4”时,显示444444;按下“5”时,显示555555;按下“6”时,显示666666;按下“7”时,显示777777;按下“8”时,显示888888;按下“9”时,显示999999;按下“0”时,显示000000;.程序流程图五、总程序1、程序软件

9、流程图2、总程序调试及说明数码显示不能实时跟随模拟电压的变化,当电压改变时,需要重新运行程序才能显示变化后的电压值,解决办法是改变主函数中程序的运行方式,改为无条件的死循环。而锁程序的死循环必需嵌套在主函数中的无条件的死循环内,只有这样才能实现功能。程序运行结果说明如下:按下1时,显示1通道、A、-及其电压值;按下2时,显示2通道、b、-及其电压值;按下3时,显示3通道、C、-及其电压值;按下4时,显示4通道、d、-及其电压值;按下0时,锁程序;按下#时,解锁程序,并保持上一个按键状态;如果电压值超过4伏特,则LED10亮;如果电压值低于1伏特,则LED9亮;改变输入电压的值,电压显示能实时跟

10、踪输入电压的值而变化,并在LED上显示。第三部分 收获、体会及改进建议通过本次的单片机课程设计,使我们第一次把硬件与软件结合起来开发一个完整的系统,不但把书本上的理论知识与实际操作相结合,而且也提高了我们的动手能力,是一次非常好的宝贵的锻炼机会。本次课程设计,使我对单片机系统有了更深的了解,并能将所学到的知识用于实践,灵活应用单片机中断,包括定时器中断和外部中断。对A/D转换的应用ADC0809芯片,以及HD7279控制键盘的显示,基本掌握并熟悉。对于单片机学习的收获与体会具体如下:1.在程序设计之前,要对所用单片机的内部结构有一个系统的了解,知道该单片机片内有哪些资源及其能实现的功能。2.设

11、计程序采要有一个清晰的思路和一个完整的软件流程图.3.设计程序时,不能企图一次就将整个程序设计好,“由子程序到总程序,反复修改,不断改进是程序设计的必经之路. 采用子程序设计,可以使程序有条理,简洁清楚。4.要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,还应该直观,便于理解,同时也为资料的保存和交流提供了方便.5.在设计程序过程中会遇到很多问题,我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。建议如下:该系统是对四路模拟电压进行采样监控,如果要是硬件条件允许的条件下,可在此基础上扩展至八路模拟电压的采样监控;还可以加入变阈值电压的子程序及循环显示四路模拟电

12、压值的子程序;还有当高报警时,将数据锁存一定时间让人们知道便于采取防备措施;在显示上也可以采用hd61202液晶显示。第四部分 参考书目一、单片机的C语言应用程序设计 马忠梅、籍顺心、张凯、马岩编著 北京航空航天大学出版社二、单片机C语言编程与实例赵亮、侯国锐著 人民邮电出版社三、C程序设计谭浩强著 清华大学出版社附录:1、A/D转换子程序(带报警)IN0 第 22 页 共22 页 #include #include unsigned char chADData20;unsigned char ADC(unsigned char channel);void AD();void delay(un

13、signed int t);void init();sbit P3_4=P34;sbit P3_5=P35;unsigned int timecount=0;unsigned char xdata *pADAdrr;void time0int();main() init(); AD();void AD() int i; do for(i=0;i0xcc) P3_4=0; else P3_4=1;if(chADDatai0x33) P3_5=0;else P3_5=1; while(1);void init() TMOD=0x01; TH0=0x3C; TL0=0xB0; ET0=1;TR0=1; EA=1;void time0int() interrupt 1 using 1 TH0=0x3C; TL0=0xB0; timecount+;unsigned char ADC(unsigned char channel) unsigned char chADResult; pADAdrr=0x0800+channel; *pADAdrr=0;

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

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

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