《温度传感器实验总结.docx》由会员分享,可在线阅读,更多相关《温度传感器实验总结.docx(32页珍藏版)》请在第一文库网上搜索。
1、长沙民政职业技术学限温度传感器实训汇报实训报告课程:信号检测与技术专业:应用电子技术班级:应电1131班小组组员:欧阳主、王雅志、朱知荣、周朱旋、周合昱指导老师:宋晓虹老师2023年4月23日一、实训目的理解18b20温度传感器的基本原理与应用二、实训过程1、电路实现功能:由电脑USB接口供电,也可外接6V16V的直流电源。通过温度传感器18B20作为温度传感器件,测出改实际温度,再由芯片为DIP封装AT89C2051单片机进行数据处理,通过数码管显示温度值。温度显示(和控制)的范围为:-55OC到125C之间,精度为1C,也就是显示整数。假如你设定报警的温度为20葭,则当环境温度到达21。C
2、时,报警发光二极管发光,同步继电器动作。假如你不需要对温度控制(报警),可以将报警温度值设置高些。假如控制的是某局部的温度,可将18B20用引线引出,但距离不适宜过大,注意其引脚绝缘。2 .电路的构成该电路有电源、按键控制模块、信号处理、驱动模块、显示模块、检测。3 .电路原理图V1rIN4148卜-IO1F-OP3QRXD)W.iaXD)XA12XTA1IP3.211NTO)P331N)P3.4(TO)P33(1)GNDAT89C2O5)I4.电路仿真图X1cm4nRJXnrWJTNmW.N,T)A五、元件清单及功能简介名称规格编号重要功能或作用按钮6X6X5AN1、AN2、AN3调整报警温
3、度日勺值电容30PCkC2单片机时钟振荡电容IOUFC3单片机复位电容470UFC4电源滤波电容104C5电源滤波单片机(20P座)T89C2051IC1CPU温度传感器DS18B20IC2温度传感器稳压块17805IC3电路工作于+5V接线座3P5.0J1外电路控制接线座接线座2P5.0J2外接电源接线USB电源插座USBJ3电脑供电插座晶体12MJZ单片机时钟振荡一位共阳数码管0.561ED1摄氏温度符号显示三位共阳数码管0.561ED2温度值显示发光二极管3MM1ED3报警发光指示兼Q1偏置三极管8550Q1、Q2、Q3、Q4Q1:报警时驱动继电器;Q2Q3Q4:数码管驱动电阻IOKR1
4、单片机复位电阻220和470R7R13和R14数码管限流,其中R14=470电阻4.7KR2、R3、R4、R6三极管基极和温度传感器偏置电阻2KR5三极管Q1基极偏置二极管1N4148V1续流,保护QI跳线XkX2用元件引脚连继电器5V2AJDQ温度到达报警值时触点动作PCB板73MMX85MMUSB电源线连接电脑USB口6、程序:温度控制器V1.5显示为三个共阳极1ED温度传感器用单总线DS18B20CPU为2051,四个按键,分别为UP,DOWN,SET温度调整上限为125度,下限为55度只能用于单只18B20*/inc1ude#inc1ude#defineKey_UPP3_0上调温度#d
5、efineKey_DOWNP3_1下调温度#defineKey_SETP1_7设定键(温度设定,长按开电源)#defineRe1ayOutPortP3_5继电器输出#define1EDPortP1/1ED控制口#define1EDOneCP3_2/1EDDS1控制(百位)#define1EDTwoCP3_3/1EDDS2控制(十位)#define1EDThreeCP3_4/1EDDS3控制(个位)#defineTMPortP3_7/DS1820DataPortunsignedcharcode1EDDis=OxCO,0xF9,OxA4,OxBO,0x99,0x92,0x82,0xF8,0x80,
6、0x90,OxFF,OxBF);/0-9的1ED笔划,OxFF为空,0XF7为负号staticunsignedcharbdataStateREG;sbitDS1820ON=StateREGO;sbitSetTF=StateREG1;sbitKeySETDown=StateREG2;sbitPowTF=StateREG3;sbitKeyTF=StateREG4;可位寻址的状态寄存器/DS1820与否存在与否是在温度设置状态/与否己按过SET键标识电源电源标识键盘与否容许/sbitKeySETDowning=StateREG5;/SET与否正在按下staticunsignedcharbdataT1
7、V_at_0x0029;/温度变量高下位staticunsignedcharbdataTHV_at_0x0028;staticsignedcharTMV;转换后的温度值staticunsignedcharKeyV,TempKeyV;键值staticsignedcharTMRomV_at_0x0027;高温限制staticsignedcharTMSetV_at_0x0026;温度设定值staticunsignedcharKSDNum;/SET键连准时的!采集次数staticunsignedcharIntNum,IntNum2,IntNum3;中断发生次数,IntNum用于SET长按检测,1ntN
8、um2用于设定状态时1ED闪烁staticsignedchar1ED_One,1ED_Two,1ED_Three;/1ED的显示位1ED_One为十位,1ED.Two为个位staticunsignedcharSign;负号标识voidmain(void)(voidInitDS1820(void);定义函数voidROMDS1820(void);voidTMVDS1820(void);voidTMRDS1820(void);voidTMWDS1820(void);voidTMREDS1820(void);voidTMERDS1820(void);voidReadDS1820(void);void
9、WriteDS1820(void);voidDe1ay_510(void);voidDe1ay_110(void);voidDe1ay_10ms(void);voidDe1ay_4s(void);voidV2ToV(void);StateREG=0;初始化变量SetTF=1;PowTF=1;关电源THV=0;T1V=0;TMV=0;KeyV=0;TempKeyV=0;KSDNum=0;IntNum=0;IntNum2=0;IntNum3=0;1ED_One=0;1ED_Two=0;InitDSI820();/初始化ROMDS1820();/跳过ROMTMERDS1820();/E2PRAM中温
10、度上限值调入RAMInitDSI820();初始化ROMDS1820();跳过ROMTMRDS1820();读出温度指令ReadDSI820();读出温度值和上限值TMSetV=TMRomV;拷贝保留在DS18B20ROM里的上限值到TMSetVEA=1;容许CPU中断ETO=1;定期器。中断打开TMOD=Ox1;设定期器0为模式1,16位模式THO=OxB1;T1O=OxDF;设定期值为2023OUS(20ms)TRO=1;开始定期whi1e(1);定期器0中断外理中键扫描和显示voidKeyAndDis_TimeO(void)interrupt1using2(THO=OxB1;T1O=Ox
11、DF;设定期值为2023OUS(20ms)1EDPort=OxFF;if(!Key_UP)KeyV=1;if(!Key.DOWN)KeyV=2;if(!Key_SET)KeyV=3;/KeySETDowning=0;清除if(KeyV!=0)有键按下(De1ay_10ms();延时防抖按下IOms再测if(!Key_UP)TempKeyV=1;if(!Key_DOWN)TempKeyV=2;if(!Key_SET)TempKeyV=3;if(KeyV=TempKeyV)两次值相等为确定接下了键(if(KeyV=3)按下SET键,如在SET状态就退出,否则进入/KeySETDowning=1;/
12、表明SET正在按下PowTF=0;电源标识开if(!KeyTF)if(SetTF)(SetTF=0;标识位标识退出设定InitDSI820();初始化ROMDS1820();跳过ROMTMWDS1820();写温度上限指令WriteDS1820();写温度上限到DS18B20ROMWriteDSI820();写温度上限到DS18B20ROMWriteDSI820();写温度上限到DS18B20ROMInitDSI820();/初始化ROMDS1820();跳过ROMTMREDS1820();温度上限值COPY回E2PRAM)e1seSetTF=1;if(!KeySETDown)/没有第一次按下
13、SET时,KeySETDown标识置1KeySETDown=1;e1seKSDNum=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=0)KeyTF=1;当键盘处在可用时,锁定)if(KeySETDown)在2秒内按下了SET则计中断发生次数用于长按SET时计时用IntNum=IntNum+1;if(IntNum55)中断发生了55次时(大概1.2秒)75为1.5秒左右IntNum=O;KeySETDown=O;if(KSDNum=55)