基于51单片机课程设计报告院系:电子通信工程团组:电子设计大赛1组姓名:指导老师:目录一、摘要 (3)二、系统方案的设计 (3)三、硬件资源 (5)四、硬件总体电路搭建 (13)五、程序流程图 (14)六、设计感想 (14)七、参考文献 (16)附录 (17)附录 1 程序代码 (17)一、摘要本设计以STC89C51单片机为核心的温度控制系统的工作原理和设计方法。
温度信号由温度芯片DS18B20采集,并以数字信号的方式传送给单片机。
文中介绍了该控制系统的硬件部分,包括:温度检测电路、温度控制电路。
单片机通过对信号进行相应处理,从而实现温度控制的目的。
文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及按键处理程序、温度信号处理程序、led控制程序、超温报警程序。
关键词:STC89C51单片机 DS18B20温度芯片温度控制 ,LED报警提示.二、系统方案的设计1、设计要求基本功能:不加热时实时显示时间,并可手动设置时间;设定加热水温功能。
人工设定热水器烧水的温度,范围在20~70度之间,打开开关后,根据设定温度与水温确定是否加热,及何时停止加热,可实时显示温度;设定加热时间功能。
限定烧水时间,加热时间内超过温度上限或低于温度下限报警,并可实时显示温度。
2、系统设计的框架本课题设计的是一种以STC89C51单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。
该控制系统可以实时存储相关的温度数据并记录当前的时间。
其主要包括:电源模块、温度测量及调理电路、键盘、数码管显示、指示灯、报警、继电器及单片机最小系统。
图1 系统设计框架3 工作原理温度传感器 DS18B20 从设备环境的不同位置采集温度,单片机STC8951获取采集的温度值,经处理后得到当前环境中一个比较稳定的温度值,再根据当前设定的温度上下限值,通过加热和降温对当前温度进行调整。
当采集的温度经处理后超过设定温度的上限时,单片机通过三极管驱动继电器开启降温设备(压缩制冷器) ,当采集的温度经处理后低于设定温度的下时 , 单片机通过三极管驱动继电器开启升温设备 (加热器) ,这里采用通过LED1和LED2取代!!!当由于环境温度变化太剧烈或由于加热或降温设备出现故障,或者温度传感头出现故障导致在一段时间内不能将环境温度调整到规定的温度限内的时候,单片机通过三极管驱动扬声器发出警笛声,这里采用HLLED提示。
三、硬件资源1、器件选择:1.51单片机一块STC89c51STC8951是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash 只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及STC8951引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的STC8951可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC8951具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信,片内时钟振荡器。
此外,STC8951设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
由于系统控制方案简单 ,数据量也不大 ,考虑到电路的简单和成本等因素 ,因此在本设计中选用STC8951单片机作为主控芯片。
主控模块采用单片机最小系统是由于STC8951芯片内含有8 kB的E2PROM ,无需外扩存储器 ,电路简单可靠 ,其时钟频率为 0~24MHz ,并且价格低廉 ,批量价在 10元以内。
其单片机的外围引脚有40个,分别是:第20脚和40脚分别是电源,即GND和Vcc;第9脚是复位脚RST;第18脚是时钟XTAL2脚,片内振荡电路的输出端;第19脚是时钟XTAL1脚,片内振荡电路的输入端;第29脚:~PSEN脚,当访问外部程序存储器时,此引脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上;第30脚:ALE/~PROG,当访问外部数据存储器时,ALE(地址锁存)的输出用于锁存地址的低字节;第31脚:~EA/Vpp为程序存储器内外部选通信号;P0^0-P0^7.P1^0-P1^7.P2^0-P2^7.P3^0-P3^7.这32个引脚为数据的输出及输入引脚,即I/0口;单片机图如下:2、8位7段共阴数码管一个7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。
当发光二极管导通时,相应的一个点或一个笔画发光。
控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。
发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管,如图4.9所示。
共阴数码管共阴数码管的编码为:0x3F,0x0C,0x76,0x5E,0x4D,0x5B,0x7B,0x0E,0x7F,0x5F,0x6F,0x79,0x3 3,0x7C,0x73,0x630 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,A , B, C, D, E, F3、温度显示DS18B20一个DS18B20采用3脚TO-92封装或8脚的SOIC封装,如图1所示。
各引脚的功能:GND为电压地;DQ为单数据总线;V为电源电压;NC为空引脚。
图1DS18B20引脚图DS18B20的DQ单数据总线与单片机P3.7连接,GND电压地、V电源电压分别和电压地和5伏直流电源连接。
本文设计的系统主机只对一个DS18B20进行操作,因此不需要读取ROM编码以及匹配ROM 编码,只要跳过ROM命令,就可以进行如下温度转换和读取操作。
(1)CCH—跳过ROM,直接向DS18B20发送温度变换命令。
(2)44H—读暂存器。
读内部RAM中9字节的温度数据。
(3)BEH—写暂存器。
发出向内部RAM的第2、3字节写上、下限温度数据命令,紧跟该命令之后,再传送两字节数据。
DS18B20在出厂时默认配置为12位,其中最高位为符号位,即温度值共11位,单片机在读取数据时,一次会读两字节共16位,读完后将低11位的二进制数转换为十进制后再乘以0.0625变为所测的温度值。
另外,还需要判断温度的正负。
前5个数字为符号位,这5位同时变化,我们只需判断11位就可以了。
前5位为1时,读取的温度为负值,且测到的数值需要取反再加一再乘以0.0625才可以得到实际的温度值。
前5位为0时,读取的温度为正值,只要将测得的数值乘以0.0625即可得到实际温度值。
由于提前给DS18B20赋了上限、下限值,所以当温度超过上限或者不足下限时,会伴有LED灯闪烁和蜂鸣器响作为警报。
4、按键在按下键时,实际情况下,都会出现抖动。
其直观图如下:按键消抖一般采用硬件和软件消抖两种方法。
硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。
在微机系统中一般都采用软件延时的消抖方法,本文用的是软件延时的消抖方法。
5、74HC573锁存器高性能硅门 CMOS 器件SL74HC573 跟 LS/AL573 的管脚一样。
器件的输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和 LS/ALSTTL 输出兼容。
当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)相当于图上的Dx-Qx相通,I/0口可以进行数据交换。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
在这里我们是将LE接高电平,把锁存器当作驱动器,驱动数码管的显示;6、晶振其晶振的运用,在这地方我们用的是12MHz,主要用在单片机的最小系统中,参照单片机最小系统图示;7.电阻.电容.导线等(一)单片机最小系统电路在课题设计的温度控制系统设计中,控制核心是STC89C52单片机,该单片机为51系列增强型8位单片机,它有32个I/O口,片内含4K FLASH工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1μS。
使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图2所示:图2 单片机最小系统(二)温度传感器电路采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。
传感器输出信号进4.7K的上拉电阻直接接到单片机的P1.0引脚上。
DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。
该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上。
本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为20℃~70℃,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。
(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。
一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。
(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。
(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。
同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。
DS18B20温度传感器只有三根外引线:单线数据传输总线端口DQ ,外供电源线VDD,共用地线GND。
DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。
这种情况下,用单片机的一个I/O口来完成对DS18B20总线的上拉。