工业控制器原理及应用课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

工业控制器原理及应用课程设计报告一、课程设计题目温度上下限报警装置二、制作人员信息姓名学号分工贡献比例周国光2013080201003程序编写及仿真35%肖茂然2013080201015实体焊接35%余杰2013080201017文案编写与制作30%三、应用背景描述随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度器,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。本文通过采用蜂鸣器作为电声元件的温度报警器的设计,阐明了该装置进行设计与制作的具体过程及方法。这种温度报警器结构简单,可操作性强,应用广泛。工作时,温度测量范围为5—38ºC。当前环境温度若超过设定的高温临界温度,由单片机发出报警信号,从而防止带来的不必要的损失。造成高温火灾有:电气线路短路、过载、接触电阻过大等引发高温或火灾;静电产生高温或或火灾;雷电等强电侵入导致高温或火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。四、系统组成及原理框图温度计电路设计总体设计方框图如下图所示,控制器采用51单片机,温度传感器采用DS18B20,用4位LED数码管以串口传送数据实现温度显示。五、系统硬件设计该系统电路主要包括:单片机最小系统、DS18B20温度传感器系统、报警系统、LED显示模块电路及电源接口和数据下载接口等电路,如下图所示。图中有三个独立式按键可以分别调整温度计的上下限报警设置,图中蜂鸣器可以在被测温度不在上下限范围内时,发出报警鸣叫声音,同时LED数码管将没有被测温度值显示,这时可以调整报警上下限,从而测出被测的温度值。数码管显示单片机复位报警点按键DS18B20传感器蜂鸣器报警主控制器六、系统软件设计主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。系统开始运行时,温度传感器测量并计算温度值通过P1.0口传输进单片机里进行处理,经过处理后的数据再通过P0口传输到数码管进行显示。通过按键设置温度报警界限,当超过报警界限时单片机将相应的数据通过P1.1口传输进行声光报警。温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度。七、系统运行测试情况分析1、功能主要实现:实时温度测量及显示,超出温度范围声光报警,上下限温度可通过按键设定等功能。初始化调用温度模块程DS18B20存在是处理温度值转换BCD送AT89S52处理按键扫描模块显示模块,LED显示温度是否越限?开始是报警否否错误处理,显示本数字温度报警器是基于51单片机及温度传感器DS18B20来设计的,温度测量范围0到99.9摄氏度,精度为0.1摄氏度,可见测量温度的范围广,精度高的特点。可设置上下限报警温度,默认上限报警温度为38℃、默认下限报警温度为5℃(通过程序可以更改上下限值)。报警值可设置范围:最低上限报警值等于当前下限报警值,最高下限报警值等于当前上限报警值。将下限报警值调为0时为关闭下限报警功能。2、操作说明①开机:打开电源,机器进入初始化状态,此时数码管显示----;片刻即开始显示当前温度。②查看当前上下限温度范围:按下【S1】键(左边键),数码管闪烁显示Hxxx,H表示上限温度,再次按下【S1】键,数码管闪烁显示Lxxx,L表示下限温度。再按【S1】键时退出设置,数码管显示当前实时温度。③重新设定上下限温度范围:按下【S1】键一次,数码管闪烁显示Hxxx时,此时是设定上限温度,按【S3】键加温度,【S2】键减温度。再按下【S1】键一次,此时是设定下限温度,数码管闪烁显示Lxxx时,按【S3】键加温度,【S2】键减温度。再按下【S1】键一次,设置成功并退出设置。④报警:当检测到当前实时温度高于上限温度值,或者低于下限温度值,系统会自动发出报警,报警为红灯一直闪烁且蜂鸣器随着灯的频率响。除非重设上下限温度范围,否则报警一直持续。3、运行情况八、附录#includeAT89X52.h#defineuintunsignedint#defineucharunsignedchar//宏定义#defineSETP3_1//定义调整键#defineDECP3_2//定义减少键#defineADDP3_3//定义增加键#defineBEEPP3_6//定义蜂鸣器#defineALAMP1_2//定义灯光报警#defineDQP3_7//定义DS18B20总线I/Obitshanshuo_st;//闪烁间隔标志bitbeep_st;//蜂鸣器间隔标志sbitDIAN=P0^5;//小数点ucharx=0;//计数器signedcharm;//温度值全局变量ucharn;//温度值全局变量ucharset_st=0;//状态标志signedcharshangxian=38;//上限报警温度,默认值为38signedcharxiaxian=5;//下限报警温度,默认值为38//ucharcodeLEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};ucharcodeLEDData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B};//============================================================================================//====================================DS18B20=================================================//============================================================================================/*****延时子程序*****/voidDelay_DS18B20(intnum){while(num--);}/*****初始化DS18B20*****/voidInit_DS18B20(void){unsignedcharx=0;DQ=1;//DQ复位Delay_DS18B20(8);//稍做延时DQ=0;//单片机将DQ拉低Delay_DS18B20(80);//精确延时,大于480usDQ=1;//拉高总线Delay_DS18B20(14);x=DQ;//稍做延时后,如果x=0则初始化成功,x=1则初始化失败Delay_DS18B20(20);}/*****读一个字节*****/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;for(i=8;i0;i--){DQ=0;//给脉冲信号dat=1;DQ=1;//给脉冲信号if(DQ)dat|=0x80;Delay_DS18B20(4);}return(dat);}/*****写一个字节*****/voidWriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i0;i--){DQ=0;DQ=dat&0x01;Delay_DS18B20(5);DQ=1;dat=1;}}/*****读取温度*****/unsignedintReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0x44);//启动温度转换Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作WriteOneChar(0xBE);//读取温度寄存器a=ReadOneChar();//读低8位b=ReadOneChar();//读高8位t=b;t=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;//放大10倍输出并四舍五入return(t);}//=====================================================================================//=====================================================================================//=====================================================================================/*****延时子程序*****/voidDelay(uintnum){while(--num);}/*****初始化定时器0*****/voidInitTimer(void){TMOD=0x1;TH0=0x3c;TL0=0xb0;//50ms(晶振12M)}/*****读取温度*****/voidcheck_wendu(void){uinta,b,c;c=ReadTemperature()-5;//获取温度值并减去DS18B20的温漂误差a=c/100;//计算得到十位数字b=c/10-a*10;//计算得到个位数字m=c/10;//计算得到整数位n=c-a*100-b*10;//计算得到小数位if(m0){m=0;n=0;}//设置温度显示上限if(m99){m=99;n=9;}//设置温度显示上限}/*****显示开机初始化等待画面*****/voidDisp_init(void){P0=~0x80;//显示----P2=0x7F;Delay(200);P2=0xDF;Delay(200);P2=0xF7;Delay(200);P2=0xFD;Delay(200);P2=0xFF;//关闭显示}/*****显示温度子程序*****/voidDisp_Temperature(void)//显示温度{P0=~0x98;//显示CP2=0x7F;Delay(400);P0=~LEDData[n];//显示个位P2=0xDF;Delay(400);P0=~LEDData[m%10];//显示十位DIAN=0;//显示小数点P2=0xF7;Delay(400);P0=~LEDData[m/10];//显示百位P2=0xFD;Delay(400);P2=0xff;//关闭显示}/*****显示报警温度子程序*****/voidDisp_alarm(ucharbaojing){P0=~0x98;//显示CP2=0x7F;Delay(200);P0=~LEDData[baojing%10];//显示十位P2=0xDF;Delay(200);P0=~LEDData[baojing/10];//显示百位P2=0xF7;Delay(200);if(set_st==1)P0=~0xCE;elseif(set_st==2)P0=~0x1A;//上限H、下限L标示P2

1 / 12
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功