《单片机原理及应用课程设计八路温度巡回检测系统.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计八路温度巡回检测系统.docx(38页珍藏版)》请在课桌文档上搜索。
1、单片机原理及应用课程设计八路温度巡回检测系统摘要:本文介绍一种采用STC公司的STC89C52RC单片机控制DS18B20数字温度传感器采集温度,最后在共阴极的1.ED灯上实时显示温度值的温度检测系统(由于实验及成本因素本文只做一路传输系统)。该系统从实际应用工程出发,重要对硬件电路设计、电子元件选择、系统应用软件设计等方面进行具体探讨和研究。系统具有性能稳定可靠、功耗低、成本低、测量准确、传输距离远、维护简朴等优点,系统设计在实际工作中具有一定的借鉴意义。关键词:温度检测;STC89C52RC;DS18B20第一节引言31.1 系统原理及基本框图31.2 设计任务3第二节硬件设计介绍42.1
2、 STC89C52RG42.2 DS18B2062.3 三极管901282.4 4共阴极数码管82. 5硬件部分电路图9第三节软件设计介绍142.1 程序流程图和实际图142.2 调试18WffP个人,C三*会21参考文献24附录25附1:电路图附2:元件清单附3:程序第一节引言随着计算机技术和传感器技术的飞速发展,在科研、生产和平常活动中,人们对温度、压力、流量等模拟物理量的测量规定越来越高。而这些物量中温度的应用是最为广泛的。如何将温度通过传感器变成电信号,再通过解决转换成计算机可以辨认的数字量,输入到计算机中,由计算机将采集到的数字量进行不同的解决,然后在显示器显示出来,并进行实时监控。
3、这已经为当前计算机测量与控制领域的一个重要研究方向。鉴于此,本文提出一种基于89C52和DS18B20的低成本、远距离传输的温度检测系统设计方案。1.1 系统原理及基本框图如图1.1所示,为系统的基本框图。图1.1系统基本方框图该系统由六部分组成:STC89C52RC核心单片机,温度采集电路,1.ED显示电路,报警警电路,复位电路,晶振等,其中温度采集重要由DS18B20组成,在短时间内把热力学温度信号数字,送入单片机,由单片机控制显示电路显示,并且判断是否达成设定温度,若达成设定温度,由单片机启动报警电路,报警。1.2 设计任务运用单片机与AD转换器设计一个八路温度巡回检测系统,对某粮库或冷
4、冻厂八点(八个冷冻室或八个粮仓)进行温度巡回检测。可以测量-3(+5(TC的温度范围,检测精度规定不大于1。采用数码管显示测量值;单片机和AD转换器型号自选(如单片机可选AT89S51或AT89C51等;AD转换器可选ADC0809或DC0804等)。(本文均基于一路温度检测系统设计)。第二节硬件设计介绍2.1STC89C52RC2.1.2 STC89C52RC介绍单片机自问世以来,以其极高的性价比受到人们的重视和关注,应用很广,发展不久。单片机的体积小,重量轻,抗干扰能力强,环境规定不高,价格低,可靠性强,灵活性好,开发较为容易。基于以上的优点,单片机已经广泛的应用在工业自动化控制,自动检测
5、,智能仪器仪表,机电一体化等各个方面,所以本系统采用单片机做为控制器。单片机中51/52系列最具有代表性。本设计核心采用了STC89C52RC单片机。STC89C51/52单片机系列是在MCS一51/52系列的基础上发展起来的,STC89C52RC完全兼容MCS-51系列单片机的所有功能,并且自身带有2K的内存储器,可以在编程器上实现闪烁式的电擦写达几万次以上,比以往惯用的803ICPU外加EPROM为核心的单片机系统在硬件上具有更加简朴方便等优点,其外形如图2.1所示。图2.1STC89C52RC芯片2.1.3 STC89C52引脚介绍STC89C52RC的引脚图如图2.2所示.T2P1.O
6、T2EXP1.1234567Pppppp.RSTRXDP3.OTXD?3.1INTOP3.2INT1P3.3TOP3.4T1P3.5%P3.6RDP3.7XTA1.2XTA1.lVSSi111111limA11VCCPO.O/ADOPO.1AD1PO.2AD2PO.3AD3PO.4AD4PO.5AD5PO.6AD6PO.7AD7EAA1.EPROGPSENP2.7A15P2.6A14P2.5A13P2.4A12?2.3/AUP2.2A10P2.1A9图2.2STC89C52引脚图单片机的引脚功能说明:电源引脚VCC(40脚):电源端,工作电压为5V。GND(20脚):接地端。时钟电路引脚XTA
7、1.I(19脚)和XTA1.2(18脚)复位RST(9脚).输入输出(I/O)引脚PO.O-PO.7(39脚-32脚):输入输出脚,称为PO口,是一个8位漏极开路型双向1/0口,内部不带上拉电阻。P1.0-P1.7(1脚-8脚):输入输出脚,称为Pl口,是一个带内部上拉电阻的8位双向I/O口。P2.0-P2.7(21脚一28脚):输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向1/0口,P3.0-P3.7(10脚一17脚7输入输出脚,称为P3口,是一个带内部上拉电阻的8位双向1/0oP3端口具有复用功能。表2.1P3口端口引脚与引用功能表P3引脚兼用功能P3.0串行通讯输入(RXD)P3
8、.1串行通讯输出(TXD)P3.2外部中断0(INTO)P3.3外部中断I(INTl)P3.4定期器0输入(TO)P3.5定期器1输入(TI)P3.6外部数据存储器写选通(WR)P3.7外部数据存储器读选通(RD)2.2DS18B202.2.1DS18B20性能DS18B20是Dallas公司推出的单线集成数字温度采集系统,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际规定通过简朴的编程实现912位的数字值读数方式。其实物如图2.3所示。I图2.3DS18B20DS18b20内部重要有三个数字部件:64位激光ROM、温度传感器、非易失性温度报警触发器TH和T1.oDS18
9、B20的性能特点如下: 独特的单线接口方式,DS18B20在与微解决器连接时仅需要条口线即可实现微解决器与DS18B20的双向通讯; 多个DS18B20可以并联在唯一的三线上,实现多点组网功能; 无需外部器件; 可通过数据线供电,电压范围:3.05.5V; 测温范围-55+125C,在-10+85时精度为0.5C 零待机功耗 温度以9或12位数字量读出; 用户可定义的非易失性温度报警设立; 具有非易失性上、下限报警设定的功能,用户可方便地通过编程修改上、下限的数值; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; 合用于DN1525,DN40DN250各种介质工业管道和狭
10、小空间设备测温。8PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。 数字量的转换精度及转换时间可通过简朴的编程来控制:9位精度的转换时间为93.75InS:10位精度的转换时间187.5ms:12位精度的转换时间750ms。2.2.2DS18B20引脚图本文用的DS18B20的常用封装为3脚,如图2.4所示。:DA1.1.ASDS18B20123GND1.JUUuccDQ图2.4DS18B20引脚图各脚功能描述如下:DQ:数字信号输入/输出端。GND:电源地端。VDD:外接供电电源输入端(在寄生电源接线时此脚应接地)。2.3三极管9012三极管的工作原理三极管是一种控制元件,重
11、要用来控制电流的大小,以共发射极接法为例(信号从基极输入,从集电极输出,发射极接地),当基极电压UB有一个微小的变化时,基极电流IB也会随之有一小的变化,受基极电流IB的控制,集电极电流IC会有一个很大的变化,基极电流IB越大,集电极电流IC也越大,反之,基极电流越小,集电极电流也越小,即基极电流控制集电极电流的变化。但是集电极电流的变化比基极电流的变化大得多,这就是三极管的放大作用。IC的变化量与IB变化量之比叫做三极管的放大倍数(=ICIB,表达变化量。),三极管的放大倍数一般在几十到几百倍。三极管在放大信号时,一方面要进入导通状态,即要先建立合适的静态工作点,也叫建立偏置,否则会放大失真
12、。9012是一种最常用的普通三极管。它是一种低电压,大电流,小信号的PNP型硅三极管: 集电极电流Ic:Max-500mA 集电极-基极电压VCbo:-40V 工作温度:-55to+150oC 和9013(NPN)相对 重要用途:o开关应用o射频放大2. 4共阴极数码管数码管由8个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字09、字符AF、H、1.、P、R、U、Y、符号“-”及小数点。数码管的外形结构如下图2.5所示。数码管又分为共阴极和共阳极两种结构。ll.ll.图2.5共阴极四位一体数码管共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接低电平(一
13、般接地),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,规定段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来拟定相应的限流电阻。使用时,既可以用半导体三极管驱动,也可以直接用TT1.与非门驱动。需要加限流电阻。数码管的工作电压一般为1.5至3伏,工作电流只需几到十几毫安。且寿命长,响应速度快。2.5硬件部分电路图2.5.1复位电路3j-3-CC在振荡器运营时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,52芯片便循环复位。复
14、位后POP3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR所有清零。当复位脚由高电平变为低电平时,芯片为RoM的000OH处开始运营程序。该芯片的复位脚为9脚,所以复位电路接STC89C52RC的9脚,具体电路如下图2.6所示。当采用的晶体频率是6MHZ时,可取C=22UF,R=IK;当采用的晶体频率为12MHZ时,可取C=IOUF,R=8.2Ko但是这都是最佳的组合,也可以有其它大小的电容电阻,只要符合电路规定就可以,如本文就采用22UF的电容和IOK的电阻,经实验也满足规定。RSTSvppPSD?A1.EPROGP3.0RxDP3.1TxDP32XTA1.lRMHZl0XTA1
15、.230pFC2-U图2.7时钟信号电路(品振)2.5.3一路传输电路在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才可以达成较高的测量精度。此外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,本文采用抗干扰能力强的新型数字温度传感器是解决这些问题的最有效方案,新型数字温度传感器DS18B20具有体积更小、精度更高、合用电压更宽、采用一线总线、可组网等优点,在实际应用中取得了良好的测温效果。DS18B20有三个引脚。VDD管脚接5V
16、电压给传感器供电。DQ管脚为数据线,与STC89C51RC的P1.O连接的同时,还要接一个4.7K的上拉电阻,并接到5V的电源上,使数据线在空闲状态下能自动上拉为高电平。GND管脚接地。具体电路如图2.8所示。之所以接PI,是由于Pl的驱动力最强,完全可以驱DS18B20的正常运营。P1.02P1.1/T2EXP1.2/ECIP1.3/CEX0P1.4/CEX1P1.5/CEX2P1.6/CEX3P1.7/CEX4图2.8一路传输电路2.5.41.ED显示电路显示电路采用静态显示,4位1.ED数码管。所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于比划段字形代码。这样单
17、片机只要把显示的字形代码发送到接口电路,就不用管它了,直到要显示显示新的数据时,再发送心的字形码,因此,使用这种方法,单片机中的CPlJ的开销小。本文的显示电路如图2.9所示。其中PO口作为7断码和小数点的选择,P2作为位码的选择,在断码和PO口之间还需加上IK的上拉电阻,以保证1.ED灯的正常显ZjOSTC89C52RCVCCIQXTA1.l史XTA1.2RSTEAATPPSE.A1.EPROGP30DP31TxDP32而OP33UT1P3.4TOP3.5/T1P36而P3.7TOPO.O/ADOP0.1/AD1PO.2/AD2PO.3/AD3P0.4/AD4PO.5/AD5PO.6AD5P
18、O.7/AD7PIOT2P1.1/T2EXP12/ECIPlICEXOP14/CEX1Pl5/CEX2P1.6.CEX3P1.7/CEX4P2.0/A8P2.1/A9P2.2/A10P2.3/AUP2.4/A12P7”Aia图2.91.ED显示电路2.5.5报警电路本文中当某一通道的温度测量值超过预先设定的上、下限报警值或系统运营出现故障时,系统发出声光报警以提醒用户注意。报警电路中光报警采用发光二极管,声报警采用蜂鸣器来设计,蜂鸣器电路中,9012晶体管起开关作用,P2.6输出低电平时,管脚输出电压通过IK限流电阻分压后,到达9012基极的电压为使得晶体管发射结正偏,集电结反偏,晶体管导通,
19、蜂鸣器上电而产生声响。发光二极管电路中,重要是限流电阻的设计,由于发光二极管工作电流是3mA-30mA,导通压降为1.8V;而单片机工作在5V电压时,I/O口输出低电平的最大灌入电流是16mA,输出的低电平是Vss+O.6V这样在限流电阻上的压降就是5T.8-0.6=2.6V,而电流要限定在8mA左右,所以电阻阻值为2.6V/8mA=325欧姆,在实际电路中选用330欧姆的电阻即能满足规定。具体电路如图图2.10报警电路2.5.6下载程序电路本文中将PC机上的程序拷贝到单片机中是通过如图2.11所示的,连接单片机的10和11脚串行接口到插件上,再和PC机之间进行通讯。A1.E限4321C-vc
20、h20P3.0RxEP3.1TxP3.2TCTP33困TP3.4T0P3.5T1P3.6WRP3.7KDVSS图2.11下载程序电路2. 5.7完整电路STCS9C52RCXTA1.lXrA1.2VCCPOOADOPOIADlP0.2AD2P05AD3IKRSTEA-VTPPSE;A1.EreOGP30RxDP31.WP32KT0P33lCTlP34r0P35T1.P36WRP37RDVSSPO.7.AD7PIoT2P11T2EXP1.2K1Pl.3CEXOP1.4CEX1P1.5CEX2PI6CEX3P1.7CEX4P2A,A8P2.VA9P2,2A!0P25A11K.4A12P25A13P
21、2A14P27A!53210;t-);scanO/4位1.ED扫描控制数据显示小数点显示位选chark;for(k=0;k0;i一)DQ=l;_nop_();_nop_();从高拉倒低DQ=O;_nop();_nop();_nop();_nop();/5usDQ=ValfcOxOl;最低位移出delay(6);/66usval=val2;右移1位DQ=I;delay(1);*DS18B20读1字节函数*/从总线上取1个字节ucharread_byte(void)uchari;ucharvalue=0;for(i=8;i0;i一)(DQ=1;_nop_O;_nop_O;value=l;DQ=0;
22、_nop_();_nop_();_nop_();_nop_();/4usDQ=l;_nop_();_nop_();_nop_();_nop_();/4usif(DQ)value0x80;delay(6);/66usDQ=I;return(value);/*读出温度函数*/read_temp()(ow_reset();delay(200);writebyte(Oxcc);write_byte(0x44);ow_reset();delay(1);write_byte(Oxcc);write_byte(Oxbe);temp_data0-read_byteO;总线复位发命令发转换命令发命令读温度值的低
23、字节tempdata1=read_byte();读温度值的高字节temp=temp_data1;temp6348)tem=65536-tem;n=l;display4=temxf;displayO=ditabdisplay4;display4=tem4;display3=display4100;display1-display4%100;display2=displayl/10;/温度值正负判断/负温度求补码,标志位置1/取小数部分的值/存入小数部分显示值/取中间八位,即整数部分的值/取百位数据暂存/取后两位数据暂存/取十位数据暂存displayl=displayl%10;/*符号位显示判断*
24、/if(!display3)display3=OxOa;最高位为O时不显不if(!display2)display2=OxOa;次高位为O时不显示if(n)display3=OxOb;负温度时最高位显示初始化端口开机显示Ooo0开机先转换一次/SkipROMmain()Disdata=Oxff;discan=Oxff;for(h=0;h4;h+)displayh=0;ow_reset();write_byte(Oxcc);write_byte(0x44);发转换命令for(h=0;h100;h+)开机显示OOO0scan();while(l)worktemp(read_temp();解决温度数据scan();显示温度值