




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、生产实习报告书报告名称基于单片机的温度控制系统设计姓 名学 号541007070138、541007070140、541007070141院、系、部 计算机与通信工程学院专 业信息工程10-01 指导教师2013年 9 月 1日 目录1.引言12.设计要求13.设计思路14.方案论证24.1方案一24.2方案二25.工作原理26.硬件设计26.1单片机模块26.2 数字温度传感器模块46.2.1 DS18B20性能46.2.2 DS18B20外形及引脚说明56.2.3 DS18B20接线原理图56.3按键模块66.4声光报警模块66.5数码管显示模块77.程序设计87.1主程序模块87.2 读
2、温度值模块87.2.1读温度值模块流程图:97.2.2 DS18B20写字节和读字节子程序流程图:107.3 中断模块107.4 温度设定、报警模块108.实物效果图129.实习总结14附录15基于单片机的温度控制系统设计1.引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。其中数字温控器就是一个典型的例子。数字温控器具有读数方便、测温范围广、测温精确、功能多样话等优点。其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用ST
3、C12C5A60S2单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示,并能任意设定报警温度的温度范围,实现声光报警。在我们的实习过程中,我们首先要根据原理图焊接一个STC12C5A60S2单片机的开发板,经测试准确无误后,编写程序实现上面所说的数字温度控制器。2.设计要求 1. 控制温箱温度2. 加热:电炉丝,这里改成发光二极管3. 冷却:自然or风冷4. 温度目标区间:-50-1005. 运行环境:常温6. 供电:+5v7. 控制精度:2 8. 温度可设定,如果下限超过上限,显示错误。9. 温度可显示10. 超温报警3.设计思路设
4、计一个单片机测控系统,一般可分为四个步骤:(1)需求分析,方案论证和总体设计需求分析:被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、系统功能、工作环境、显示、报警、打印要求等。方案论证:根据要求,设计出符合现场条件的软硬件方案,又要使系统简单、经济、可靠,这是进行方案论证与总体设计一贯坚持的原则。 (2)器件选择,电路设计制作,数据处理算法,软件的编制阶段。(3)系统调试与性能测定。(4)文件编制。文件包括:任务描述、设计的指导思想及设计方案论证、性能测定及现场试用报告与说明、使用指南、软件资料(流程图、子程序使用说明、地址分配、程序清单)、硬件资料(电原理图
5、、元件布置图及接线图、接插件引脚图、线路板图、注意事项)。文件不仅是设计工作的结果,而且是以后使用、维修以及进一步再设计的依据。因此,一定要精心编写,描述清楚,使数据及资料齐全。 4.方案论证4.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。4.2方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温
6、度转化成串行数字信号给单片机处理,即可实现温度显示。另外DS18B20具有3引脚的小体积封装,测温范围为-55+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。5.工作原理温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机 AT89S51 获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。当采集的温度经处理后超过设定温度的上限时,单片机
7、通过三极管驱动继电器开启降温设备 (压缩制冷器) ,并通过三极管驱动扬声器发出警笛声。当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) ,并通过三极管驱动扬声器发出警笛声。 6.硬件设计6.1单片机模块STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。1.增强型8051 CPU,1T,单时钟
8、/机器周期,指令代码完全兼容传统8051;2.工作电压:STC12C5A60S2系列工作电压:5.5V-3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V-2.2V(3V单片机);3.工作频率范围:0 - 35MHz,相当于普通8051的 0420MHz;4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节;5.片上集成1280字节RAM;6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,
9、每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55Ma;7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器 可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片;8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM);9. 看门狗;10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地);11.外部掉电检测电路:在P4.6口有一个低压门槛比较器,5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3%;12.时钟源:外部高精度晶体/时钟,内部R
10、/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟,常温下内部R/C振荡器频率为:5.0V单片机为:11MHz15.5MHz,3.3V单片机为:8MHz12MHz,精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准;13.共4个16位定时器 两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器 做串行通讯的波特率发生器 再加上2路PCA模块可再实现2个16位定时器;14. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T
11、1输出时钟;15.外部中断I/O口7路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的PCA模块, Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4, T1/P3.5, RxD/P3.0,CCP0/P1.3(也可通过寄存器设置到P4.2 ), CCP1/P1.4 (也可通过寄存器设置到P4.3);16. PWM(2路)/PCA(可编程计数器阵列,2路):也可用来当2路D/A使用也可用来再实现2个定时器也可用来再实现2个外部中断(上升沿中断/下降沿中断均可分别或同时支持);17.A/D转换, 10位精度ADC,共8路,转换速度可达250K
12、/S(每秒钟25万次)18.通用全双工异步串行口(UART),由于STC12系列是高速的8051,可再用定时器或PCA软件实现多串口;19. STC12C5A60S2系列有双串口,后缀有S2标志的才有双串口,RxD2/P1.2(可通过寄存器设置到P4.2),TxD2/P1.3(可通过寄存器设置到P4.3);20.工作温度范围:-40 - +85(工业级) / 0 - 75(商业级)21.封装:PDIP-40,LQFP-44,LQFP-48 I/O口不够时,可用2到3根普通I/O口线外接 74HC164/165/595(均可级联)来扩展I/O口, 还可用A/D做按键扫描来节省I/O口,或用双CP
13、U,三线通信,还多了串口。图6-1 STC12C5A60S2管脚图6.2 数字温度传感器模块6.2.1 DS18B20性能l 独特的单线接口仅需一个端口引脚进行通信l 简单的多点分布应用l 无需外部器件l 可通过数据线供电l 零待机功耗l 测温范围-55+125,以0.5递增l 可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625l 温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字l 应用包括温度控制、工业系统、消费品、温度计和任何热感测系统l 负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作6.2.2 DS1
14、8B20外形及引脚说明图6.2.2 DS18B20外形及引脚l GND:地l DQ:单线运用的数据输入/输出引脚l VD:可选的电源引脚6.2.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。图6.2.3 DS18B20接线原理图 6.3按键模块单片机应用系统中按键或键盘都是以开关状态来设置控制功能或输入数据。 键开关状态的可靠输入 :为了去抖动采用软件方法,它是在检测到有键按下时,执行一个10ms的延时程序后,再确认该键电平是否仍保持闭合状态电平,如保持闭合状态电平则确认为真正键按下状态,从而消除了抖动影响键盘共有3个按键,用于方
15、便设定温度。图6.3 DS18B20接线原理图INT1 , 转换,用于转换设置最高或最低温度限度值;INT2 增加,用于增加最高或最低温度限度值;TI 减少,用于减少最高或最低温度限度值6.4声光报警模块 当采集的温度经处理后超过规定温度范围时,蜂鸣器报警。当超过温度下限时,二极管报警。具体电路连接如图所示。 图6.4左图低温,二极管报警。右图超出范围,蜂鸣器报警。6.5数码管显示模块本部分电路主要使用七段数码管,单片机通过P0口将要显示的数据信号传送到数码管显示,另外通过P1口的某几位,通过741LS38译码器,将要显示的位送到片选信号。具体见实际连线图如图6-5。图6-5数码管连接图7.程
16、序设计7.1主程序模块主程序调用了4个子程序,分别是数码管显示程序、键盘扫描及按键处理程、温度值获取程序、延时程序。程序开始的时候先设置定时器0初始化,然后进行键盘扫描接着就判断按键是否被按下,按下就进行按键处理。然后获取温度值并经行处理(判断是否为负温度,以及进行分位),得到温度的十位、个位和十分位。并判断但前温度与所设置上下限温度关系,大于上限温度或小于下限温度则报警,否则继续向下执行,并开始循环。其中显示程序在中断中进行。7.2 读温度值模块对温度传感器送过来的数据进行读取,读温度值模块需要调用4个子程序,分别为:a) DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准
17、备好操作b) DS18B20写字节子程序:对DS18B20发出命令c) DS18B20读字节子程序:读取DS18B20存储器的数据d) 延时子程序:对DS18B20操作时的时序控制7.2.1读温度值模块流程图:7.2.2 DS18B20写字节和读字节子程序流程图:7.3 中断模块中断采用T0方式1,初始值定时为2ms。中断入口定时器重置初值计数值加1数码管显示程序中断返回7.4 温度设定、报警模块进入模块界面后,按选择上下限键,选择改变上限还是下限,按加减键分别上调和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,8.实物效果图温度处于设定范围,不做任何反应。设定温度下限度值为28
18、.5,当前温度为28.1,蜂鸣器报警,二极管报警。温度最高上限值为32,当前温度为33.6,蜂鸣器报警,二极管不报警。当设定温度下限超过上限时,显示ERRO,并声光报警。9.实习总结温度控制系统广泛应用于社会生活的各个领域 ,如家电、汽车、材料、电力电子等 ,常用的控制电路根据应用场合和所要求的性能指标有所不同 , 在工业企业中,如何提高温度控制对象的运行性能一直以来都是控制人员和现场技术人员努力解决的问题。本次实习是基于STC12C5A60S2单片机,采用数字温度传感器DS18B20,直接进行温度采集显示,报警的数字温度计设计。包括传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机
19、主板电路等组成。利用STC12C5A60S2单片机和数字温度传感器DS18B20设计的温度控制系统能够实现的温度范围是-55-100,其精度是0.1,可以在数码管上显示实时温度,并且可以实现温度上限和下限的设置,超出上下限后单片机系统发出报警。在实习的过程中,主要分三个部分进行,分别是硬件电路板的焊接、软件的编写、实习报告的总结。在这三个部分中,王康康主要负责硬件电路的焊接,王会民主要负责程序的编写,我(王乐乐)主要负责实习报告的总结。在这次实习中我们发现了很多问题,如,对元器件不熟悉,焊接元件不牢固,程序编写无从下手,不熟练,程序编写层次不太清晰,合作存在问题等。但是这些问题在我们的共同努力
20、下,摸索下最终解决。通过这次生产实习我们加深了对元器件的认识,提高了程序编写能力,学会了通过自己去查找资料,更学会了合作。 在这样的磕磕碰碰中我们完成了本次生产实习任务,虽然仍存在着这样那样的问题,但是我们的收获无疑是巨大的。这次生产实习将对我们今后的学习工作产生巨大的影响。附录1.主程序/*- 名称:DS18b20数码管显示 论坛: 编写:shifang 日期:2009.5 修改:无 内容:显示格式 符号 xxx.x C 可以显示负温度-*/#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include 18b20.h#include sbit gaowe
21、njingdeng=P27;/高于温度设定上限,做出反应sbit zuidizuigaojian=P32;/选择上限还是下限sbit zengjia=P33;/温度增加按键sbit jianshao=P34;/ 温度减少按键sbit baojing=P36;/ 报警标志sbit LAIDI=P35;/拉低电平,为了使数码管显示unsigned int temp0=1;/作为一个设定上限还是下限的标志位。unsigned int temp1=2;unsigned int temp2=8;unsigned int temp3=0;/设定温度下限初值28.0摄氏度unsigned int temp4
22、=3;unsigned int temp5=2;unsigned int temp6=0;/设定温度上限初值38.0摄氏度unsigned int temp7=0;unsigned int temp8=0;unsigned int temp9=0;/设定三个中间变量,来比较环境温度和设定温度之间的关系extern DelayMsUs2x(unsigned char t);extern DelayMs(unsigned char t);/引用外部延时函数。#define DataPort P0 /定义段数据端口 程序中遇到DataPort 则用P0 替换#define SegPort P1 /定
23、义位数据端口,用以点亮数码相应数码管。unsigned char code dofly_DuanMa=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0xff;/ 显示段码值01234567unsigned char code dofly_WeiMa=0xff,0xef,0xdf,0xcf,0xf0,0xe0,0xd0,0xc0;/分别对应相应的数码管点亮,即位码unsigned char TempData8; /存储显示值的全局变量void Keys_Scan();/键盘扫描函数声明void Display(void);/数码管显
24、示函数声明void Init_Timer0(void);/定时器初始化函数声明/*- 主函数-*/void main (void) unsigned int TempL,TempH; inttemp ;Init_Timer0(); /定时器初始化while (1) /主循环 LAIDI=0;/拉低74LS138电平 Keys_Scan();/键盘扫描函数if(temp0%2=1)TempData0=0x38; TempData1=dofly_DuanMatemp1; TempData2=dofly_DuanMatemp2|0x80; TempData3=dofly_DuanMatemp3;/把
25、设定的初值转化为相应的段码 else if (temp0%2=0) TempData0=0x76;/判断按键设定上限还是下限 TempData1=dofly_DuanMatemp4; TempData2=dofly_DuanMatemp5|0x80; TempData3=dofly_DuanMatemp6;/把设定的初值转化为相应的段码 if( (temp1*100+temp2*10+temp3)=(temp4*100+temp5*10+temp6) TempData0=0x79; TempData1=0x70; TempData2=0x70; TempData3=0x3f;/如果在调节过程中
26、,温度下限超过上限,显示ERRO temp=ReadTemperature();/转换温度 if(temp&0x8000) TempData4=0x40;/负号标志 temp=temp; / 取反加1 temp +=1; else TempData4=0; TempH=temp4; TempL=temp&0x0F; TempL=TempL*625/1000;/小数近似处理 TempData5=dofly_DuanMa(TempH%100)/10; /十位温度 TempData6=dofly_DuanMa(TempH%100)%10|0x80; /个位温度,带小数点 TempData7=dofl
27、y_DuanMaTempL; temp7=temp1*100+temp2*10+temp3; temp8=TempH*10+TempL; temp9=temp4*100+temp5*10+temp6; if(temp9=temp8)&(temp8=temp7)baojing=1; gaowenjingdeng=0; else if(temp8=8) i=0;/*- 定时器初始化子程序-*/void Init_Timer0(void) TMOD |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 TH0=(65536-2000)/256; /重新赋值 2ms
28、TL0=(65536-2000)%256; EA=1; /总中断打开 ET0=1; /定时器中断打开 TR0=1; /定时器开关打开/*- 定时器中断子程序-*/void Timer0_isr(void) interrupt 1 TH0=(65536-2000)/256; /重新赋值 2ms TL0=(65536-2000)%256; Display(); / 调用显示函数 void Keys_Scan() if(zuidizuigaojian=0)/检测是否有按键按下 DelayMs(10); /软件去抖动if(zuidizuigaojian=0)/再次检测按键是否按下dengdai1:if
29、(zuidizuigaojian=0)goto dengdai1;/等待释放按键elsetemp0=temp0+1;goto fanhui; /如果是此键按下,就不可能是下面按键按下if(zengjia=0) DelayMs(10);if(zengjia=0)dengdai2:if(zengjia=0)goto dengdai2;elseif(temp0%2=1)/对下限增加 if(temp39)temp3=temp3+1;goto fanhui; elsetemp3=0; if(temp29)temp2=temp2+1;goto fanhui; else temp2=0; if (temp1
30、9) temp1=temp1+1; goto fanhui; else /对上限增加 if(temp69)temp6=temp6+1;goto fanhui; elsetemp6=0; if(temp59)temp5=temp5+1;goto fanhui; else temp5=0; if (temp40)temp3=temp3-1;goto fanhui; elsetemp3=9; if(temp20)temp2=temp2-1;goto fanhui; else temp2=9; if (temp10) temp1=temp1-1; goto fanhui; else if(temp60
31、)temp6=temp6-1;goto fanhui; elsetemp6=9; if(temp50)temp5=temp5-1;goto fanhui; else temp5=9; if (temp40) temp4=temp4-1; goto fanhui; fanhui:;2.读温度值程序/*- 名称:18B20温度传感器 网站: 编写:shifang 日期:2009.5 修改:无 内容:18B20单线温度检测的应用样例程序-*/#includedelay.h#include18b20.h#define NOP() _nop_() /* 定义空指令 */*- 18b20初始化-*/bit
32、 Init_DS18B20(void) bit dat=0; DQ = 1; /DQ复位_nop_();_nop_(); /稍做延时 DQ = 0; /单片机将DQ拉低TempDelay(800); /精确延时 大于 480us 小于960usDQ = 1; /拉高总线TempDelay(50); /1560us 后 接收60-240us的存在脉冲 dat=DQ; /如果x=0则初始化成功, x=1则初始化失败 TempDelay(230); while(!dat)dat=DQ; return dat;/*- 读取一个字节-*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锰矿矿石矿化特征与勘探方法考核试卷
- 港口物流绩效评估考核试卷
- 金属丝绳在高温环境中的应用与特性考核试卷
- 胶合板在运动器材制造中的应用考核试卷
- 口腔科引流管护理
- 生活不合理设计与系统化改善
- 儿科心血管疾病诊疗与管理
- 小儿发热疾病防治要点解析
- Sodium-deuteroxide-D-99-5-basicity-30-Sodium-hydroxide-d-D-99-5-basicity-30-生命科学试剂-MCE
- Arcitumomab-生命科学试剂-MCE
- 初一英语阅读理解100篇七年级上册英语阅读理解及答案
- 2024年湖南省初中学业水平考试地理试卷含答案
- 急性肺栓塞的急救护理
- GB/T 32124-2024磷石膏的处理处置规范
- 奶茶供货合作协议书范文范本
- 明清家具完整版本
- GB/T 15822.2-2024无损检测磁粉检测第2部分:检测介质
- 2024年河南省现场流行病学调查职业技能竞赛理论考试题库-中(多选题部分)
- 学术诚信讲座
- 2024新人教版七年级上册英语单词表衡水体字帖
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
评论
0/150
提交评论