ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:525.54KB ,
资源ID:24810139      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24810139.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(温度传感器实训报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

温度传感器实训报告.docx

1、温度传感器实训报告温度传感器实训报告实训报告课 程:信号检测与技术专 业:应用电子技术班 级:应电1131班小组成员:欧阳主、王雅志、朱知荣、周玙旋、周合昱指导老师:宋晓虹老师2013年 4 月 23 日一、实训目的了解18b20温度传感器的基本原理与应用2、实训过程1、电路实现功能:由电脑USB接口供电,也可外接6V16V的直流电源。通过温度传感器18B20作为温度传感器件,测出改实际温度,再由芯片为封装AT89C2051单片机进行数据处理,通过数码管显示温度值。温度显示(和控制)的范围为:-55C到125C之间,精度为1C,也就是显示整数。如果你设定报警的温度为20C,则当环境温度达到21

2、C时,报警发光二极管发光,同时继电器动作。如果你不需要对温度控制(报警),可以将报警温度值设置高些。如果控制的是某局部的温度,可将18B20用引线引出,但距离不宜过大,注意其引脚绝缘。.电路的构成该电路有电源、按键控制模块、信号处理、驱动模块、显示模块、检测。.电路原理图AN1vccJ3C1AN2AN3C5104+C4470UF1234USBJ130PJZC230PJDQV11N4148P1P2P310K12345678910C310UFIC1RSTP3.0(RXD)P3.1(TXD)XTAL2XTAL1P3.2(INT0)P3.3(INT1)P3.4(T0)P3.5(T1)GNDAT89C2

3、051VCC20P1.719P1.618P1.517P1.416P1.315P1.214P1.113P1.012P3.711VCCR7R8R9R10R11R12R13220*7P3.7D7D6D5D4D3D2D1LED2LED-38.8.8.IC3L7805OUT3IN8.LED1a1cfJ221Q18550LED3R52KIC2DS18B20R14470Q2Q3Q4VCCR64.7KP1P2R24.7KR3855085508550P34.7KR44.7KVCC.电路仿真图五、元件清单及功能介绍名称规格编号主要功能或作用按钮6X6X5AN1、AN2、AN3调节报警温度的值电容30PC1、C2单

4、片机时钟振荡电容10UFC3单片机复位电容470UFC4电源滤波电容104C5电源滤波单片机(20P座)AT89C2051IC1CPU温度传感器DS18B20IC2温度传感器稳压块L7805IC3电路工作于+5V接线座3P5.0J1外电路控制接线座接线座2P5.0J2外接电源接线USB电源插座USBJ3电脑供电插座晶体12MJZ单片机时钟振荡一位共阳数码管0.56LED1摄氏温度符号显示三位共阳数码管0.56LED2温度值显示发光二极管3MMLED3报警发光指示兼Q1偏置三极管8550Q1、Q2、Q3、Q4Q1:报警时驱动继电器;Q2Q3Q4:数码管驱动电阻10KR1单片机复位电阻220和47

5、0R7R13和R14数码管限流,其中R14=470电阻4.7KR2、R3、R4、R6三极管基极和温度传感器偏置电阻2KR5三极管Q1基极偏置二极管1N4148V1续流,保护Q1跳线X1、X2用元件引脚连继电器5V2AJDQ温度达到报警值时触点动作PCB板73MMX85MMUSB电源线连接电脑USB口6、程序:/*-温度控制器V1.5显示为三个共阳极LED温度传感器用单总线DS18B20CPU为2051,四个按键,分别为UP,DOWN,SET温度调节上限为125度,下限为-55度只能用于单只18B20-*/#include#include#defineKey_UP P3_0 /上调温度#defi

6、neKey_DOWN P3_1 /下调温度#defineKey_SET P1_7 /设定键(温度设定,长按开电源)#defineRelayOutPort P3_5 /继电器输出#defineLEDPort P1 /LED控制口#defineLEDOneC P3_2 /LEDDS1控制(百位)#defineLEDTwoC P3_3 /LEDDS2控制(十位)#defineLEDThreeC P3_4 /LEDDS3控制(个位)#defineTMPort P3_7 /DS1820DataPortunsigned char codeLEDDis=0xC0,0xF9,0xA4,0xB0,0x99,0x

7、92,0x82,0xF8,0x80,0x90,0xFF,0xBF; /0-9的LED笔划,0xFF为空,0xF7为负号staticunsignedcharbdataStateREG;/可位寻址的状态寄存器sbitDS1820ON=StateREG0; /DS1820是否存在sbitSetTF=StateREG1; /是否是在温度设置状态sbitKeySETDown=StateREG2; /是否已按过SET键标识sbitPowTF=StateREG3; /电源电源标识sbitKeyTF=StateREG4; /键盘是否允许/sbitKeySETDowning=StateREG5; /SET是否正

8、在按下staticunsignedcharbdataTLV_at_0x0029; /温度变量高低位staticunsignedcharbdataTHV_at_0x0028;staticsignedcharTMV; /转换后的温度值staticunsignedcharKeyV,TempKeyV; /键值staticsignedcharTMRomV_at_0x0027; /高温限制staticsignedcharTMSetV_at_0x0026; /温度设定值staticunsignedcharKSDNum; /SET键连按时的采集次数staticunsignedcharIntNum,IntNum

9、2,IntNum3; /中断发生次数,IntNum用于SET长按检测,IntNum2用于设定状态时LED闪烁staticsignedcharLED_One,LED_Two,LED_Three; /LED的显示位LED_One为十位,LED_Two为个位staticunsignedcharSign;/负号标识voidmain(void)voidInitDS1820(void); /定义函数voidROMDS1820(void);voidTMVDS1820(void);voidTMRDS1820(void);voidTMWDS1820(void);voidTMREDS1820(void);void

10、TMERDS1820(void);voidReadDS1820(void);voidWriteDS1820(void);voidDelay_510(void);voidDelay_110(void);voidDelay_10ms(void);voidDelay_4s(void);voidV2ToV(void);StateREG=0; /初始化变量SetTF=1;PowTF=1; /关电源THV=0;TLV=0;TMV=0;KeyV=0;TempKeyV=0;KSDNum=0;IntNum=0;IntNum2=0;IntNum3=0;LED_One=0;LED_Two =0;InitDS1820

11、();/初始化ROMDS1820();/跳过ROMTMERDS1820(); /E2PRAM中温度上限值调入RAMInitDS1820();/初始化ROMDS1820();/跳过ROMTMRDS1820();/读出温度指令ReadDS1820();/读出温度值和上限值TMSetV=TMRomV; /拷贝保存在DS18B20ROM里的上限值到TMSetVEA=1; /允许CPU中断ET0=1; /定时器0中断打开TMOD=0x1; /设定时器0为模式1,16位模式TH0=0xB1;TL0=0xDF; /设定时值为20000us(20ms)TR0=1; /开始定时while(1);/定时器0中断外

12、理中键扫描和显示voidKeyAndDis_Time0(void)interrupt1using2TH0=0xB1;TL0=0xDF; /设定时值为20000us(20ms)LEDPort=0xFF;if(!Key_UP)KeyV=1;if(!Key_DOWN)KeyV=2;if(!Key_SET)KeyV=3;/KeySETDowning=0; /清除if(KeyV!=0) /有键按下Delay_10ms(); /延时防抖 按下10ms再测if(!Key_UP)TempKeyV=1;if(!Key_DOWN)TempKeyV=2;if(!Key_SET)TempKeyV=3;if(KeyV=

13、TempKeyV) /两次值相等为确定接下了键if(KeyV=3) /按下SET键,如在SET状态就退出,否则进入/KeySETDowning=1;/表明SET正在按下PowTF=0; /电源标识开if(!KeyTF)if(SetTF)SetTF=0; /标识位标识退出设定InitDS1820();/初始化ROMDS1820();/跳过ROMTMWDS1820();/写温度上限指令WriteDS1820();/写温度上限到DS18B20ROMWriteDS1820();/写温度上限到DS18B20ROMWriteDS1820();/写温度上限到DS18B20ROMInitDS1820();/初

14、始化ROMDS1820();/跳过ROMTMREDS1820(); /温度上限值COPY回E2PRAMelseSetTF=1;if(!KeySETDown)/没有第一次按下SET时,KeySETDown标识置1KeySETDown=1;elseKSDNum=KSDNum+1; /前一秒内有按过SET则开始计数if(SetTF) /在SET状态下if(KeyV=1)&(!KeyTF)TMSetV=TMSetV+1; /上调温度if(KeyV=2)&(!KeyTF)TMSetV=TMSetV-1; /下调温度if(TMSetV=125)TMSetV=125;if(!KeyTF)&(IntNum3=

15、0)KeyTF=1;/当键盘处于可用时,锁定if(KeySETDown) /在2秒内按下了SET则计中断发生次数用于长按SET时计时用IntNum=IntNum+1;if(IntNum55) /中断发生了55次时(大约1.2秒)75为1.5秒左右IntNum=0;KeySETDown=0;if(KSDNum=55) /如一直长按了SET1.2秒左右RelayOutPort=1; /关闭继电器输出PowTF=1; /电源标识关LEDOneC=0;LEDTwoC=0;LEDThreeC=0;LEDPort=0xBF; /显示-Delay_4s(); /延时LEDOneC=1;LEDTwoC=1;

16、/关显示LEDThreeC=1;Delay_4s();IntNum=0;IntNum2=0;IntNum3=0;KSDNum=0;KeyV=0;TempKeyV=0; /清空变量准备下次键扫描if(!PowTF)InitDS1820();/初始化ROMDS1820(); /跳过ROMTMVDS1820(); /温度转换指令Delay_510();Delay_510(); /延时等待转换完成InitDS1820();/初始化ROMDS1820(); /跳过ROMTMRDS1820(); /读出温度指令ReadDS1820();/读出温度值V2ToV(); /转换显示值if(TMVTMSetV)

17、/根据采集到的温度值控制继电器RelayOutPort=0;elseRelayOutPort=1;if(SetTF)IntNum2=IntNum2+1;/用于闪烁计数if(IntNum250)IntNum2=0;if(KeyTF)IntNum3=IntNum3+1;/用于防止按键连按if(IntNum325)IntNum3=0;KeyTF=0;if(SetTF)&(IntNum24;THV=THV7; /取符号elseSign=TMV7;if(Sign)if(SetTF|!Key_SET)LED_One=(TMSetV-1)/100; /SET状态下显示设定值LED_Two=(TMSetV-1

18、)-LED_One*100)/10;LED_Three=(TMSetV-1)-LED_One*100-LED_Two*10;elseLED_One=(TMV)/100; /转换百位值LED_Two=(TMV)-LED_One*100)/10;LED_Three=(TMV)-LED_One*100-LED_Two*10;elseif(SetTF|!Key_SET)LED_One=(TMSetV)/100; /SET状态下显示设定值LED_Two=(TMSetV-LED_One*100)/10;LED_Three=TMSetV-LED_One*100-LED_Two*10;elseLED_One=

19、(TMV)/100; /转换百位值LED_Two=(TMV-LED_One*100)/10;LED_Three=TMV-LED_One*100-LED_Two*10;/转LED字段if(LED_One)/超过百时十位的处理LED_Two=LEDDisLED_Two;elseif(LED_Two=0)LED_Two=LEDDis10;elseLED_Two=LEDDisLED_Two;if(Sign)LED_One=LEDDis11;elseif(LED_One=0)LED_One=LEDDis10;elseLED_One=LEDDisLED_One;LED_Three=LEDDisLED_Th

20、ree;voidInitDS1820(void) /初始化DS1820TMPort=1; /拉高TMPort_nop_(); /保持一个周期TMPort=0; /拉低TMPortDelay_510(); /延时 DS1820复位时间要500us的低电平TMPort=1; /拉高TMPort_nop_(); /保持_nop_();_nop_();Delay_110(); /延时110us等待DS1820回应if(!TMPort) /回应信号为低电平DS1820ON=1;elseDS1820ON=0;Delay_110(); /延时Delay_110();TMPort=1; /拉高TMPortvo

21、idROMDS1820(void) /跳过ROM匹配#pragmaasmMOVA,#0CCHMOVR2,#8CLRCWR1:CLRP3_7MOVR3,#6DJNZR3,$RRCAMOVP3_7,CMOVR3,#23DJNZR3,$SETBP3_7NOPDJNZR2,WR1SETBP3_7#pragmaendasmvoidTMVDS1820(void) /温度转换指令#pragmaasmMOVA,#44HMOVR2,#8CLRCWR2:CLRP3_7MOVR3,#6DJNZR3,$RRCAMOVP3_7,CMOVR3,#23DJNZR3,$SETBP3_7NOPDJNZR2,WR2SETBP3_

22、7#pragmaendasmvoidTMRDS1820(void) /读出温度指令#pragmaasmMOVA,#0BEHMOVR2,#8CLRCWR3:CLRP3_7MOVR3,#6DJNZR3,$RRCAMOVP3_7,CMOVR3,#23DJNZR3,$SETBP3_7NOPDJNZR2,WR3SETBP3_7#pragmaendasmvoidTMWDS1820(void) /写入温度限制指令#pragmaasmMOVA,#04EHMOVR2,#8CLRCWR13:CLRP3_7MOVR3,#6DJNZR3,$RRCAMOVP3_7,CMOVR3,#23DJNZR3,$SETBP3_7N

23、OPDJNZR2,WR13SETBP3_7#pragmaendasmvoidTMREDS1820(void) /COPYRAMtoE2PRAM#pragmaasmMOVA,#48HMOVR2,#8CLRCWR33:CLRP3_7MOVR3,#6DJNZR3,$RRCAMOVP3_7,CMOVR3,#23DJNZR3,$SETBP3_7NOPDJNZR2,WR33SETBP3_7#pragmaendasmvoidTMERDS1820(void) /COPYE2PRAMtoRAM#pragmaasmMOVA,#0B8HMOVR2,#8CLRCWR43:CLRP3_7MOVR3,#6DJNZR3,$RRCAMOVP3_7,CMOVR3,#23DJNZR3,$SETBP3_7NOPDJNZR2,WR43SETBP3_7#pragmaendasmvoidWriteDS1820(void)/写入温度限制值#pragmaasmMOVA,26H /发出4EH写ROM指令后连发两个字节分别为上下限MOV

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1