




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
温度传感器实训报告实训报告课 程:信号检测与技术专 业:应用电子技术班 级:应电1131班小组成员:欧阳主、王雅志、朱知荣、周玙旋、周合昱指导老师:宋晓虹老师 2013年 4 月 23 日一、实训目的 了解18b20温度传感器的基本原理与应用2、 实训过程1、电路实现功能:由电脑USB接口供电,也可外接6V16V的直流电源。通过温度传感器18B20作为温度传感器件,测出改实际温度,再由芯片为封装AT89C2051 单片机进行数据处理,通过数码管显示温度值。温度显示(和控制)的范围为:-55C到125C之间,精度为1C,也就是显示整数。如果你设定报警的温度为20C,则当环境温度达到21C时,报警发光二极管发光,同时继电器动作。如果你不需要对温度控制(报警),可以将报警温度值设置高些。如果控制的是某局部的温度,可将18B20用引线引出,但距离不宜过大,注意其引脚绝缘。. 电路的构成该电路有电源、按键控制模块、信号处理、驱动模块、显示模块、检测。.电路原理图.电路仿真图五、元件清单及功能介绍名称规格编号主要功能或作用按钮6X6X5AN1、AN2、AN3调节报警温度的值电容30PC1、C2单片机时钟振荡电容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和470R7R13和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 #define Key_UP P3_0 /上调温度#define Key_DOWN P3_1 /下调温度#define Key_SET P1_7 /设定键(温度设定,长按开电源)#define RelayOutPort P3_5 /继电器输出#define LEDPort P1 /LED控制口#define LEDOneC P3_2 /LED DS1控制(百位)#define LEDTwoC P3_3 /LED DS2控制(十位)#define LEDThreeC P3_4 /LED DS3控制(个位)#define TMPortP3_7/DS1820 DataPortunsigned char code LEDDis=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF; /0-9的LED笔划,0xFF为空,0xF7为负号static unsigned char bdata StateREG;/可位寻址的状态寄存器sbit DS1820ON = StateREG0; /DS1820是否存在sbit SetTF = StateREG1; /是否是在温度设置状态sbit KeySETDown = StateREG2; /是否已按过SET键标识sbit PowTF = StateREG3; /电源电源标识sbit KeyTF = StateREG4;/键盘是否允许/sbit KeySETDowning = StateREG5;/SET是否正在按下static unsigned char bdata TLV _at_ 0x0029; /温度变量高低位static unsigned char bdata THV _at_ 0x0028;static signed char TMV; /转换后的温度值static unsigned char KeyV,TempKeyV; /键值static signed char TMRomV _at_ 0x0027; /高温限制static signed char TMSetV _at_ 0x0026; /温度设定值static unsigned char KSDNum; /SET键连按时的采集次数static unsigned char IntNum,IntNum2,IntNum3; /中断发生次数,IntNum用于SET长按检测,IntNum2用于设定状态时LED闪烁static signed char LED_One,LED_Two,LED_Three; /LED的显示位 LED_One为十位,LED_Two为个位static unsigned char Sign; /负号标识void main(void)void InitDS1820(void); /定义函数void ROMDS1820(void);void TMVDS1820(void);void TMRDS1820(void);void TMWDS1820(void);void TMREDS1820(void);void TMERDS1820(void);void ReadDS1820(void);void WriteDS1820(void);void Delay_510(void);void Delay_110(void);void Delay_10ms(void);void Delay_4s(void);void V2ToV(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(); /初始化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中断外理中键扫描和显示void KeyAndDis_Time0(void) interrupt 1 using 2 TH0=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 = TempKeyV) /两次值相等为确定接下了键 if (KeyV = 3) /按下SET键,如在SET状态就退出,否则进入 /KeySETDowning = 1; /表明SET正在按下 PowTF = 0; /电源标识开if (!KeyTF) if (SetTF) SetTF = 0; /标识位标识退出设定InitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMWDS1820(); /写温度上限指令WriteDS1820(); /写温度上限到DS18B20ROMWriteDS1820(); /写温度上限到DS18B20ROMWriteDS1820(); /写温度上限到DS18B20ROMInitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMREDS1820(); /温度上限值COPY回E2PRAM else SetTF = 1; if (!KeySETDown) /没有第一次按下SET时,KeySETDown标识置1 KeySETDown = 1; else KSDNum = 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 (IntNum 55) /中断发生了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; /关显示 LEDThreeC = 1; Delay_4s(); IntNum = 0; IntNum2 = 0; IntNum3 = 0; KSDNum = 0; KeyV = 0; TempKeyV = 0; /清空变量准备下次键扫描 if (!PowTF) InitDS1820();/初始化 ROMDS1820(); /跳过ROM TMVDS1820(); /温度转换指令 Delay_510(); Delay_510(); /延时等待转换完成 InitDS1820(); /初始化 ROMDS1820(); /跳过ROM TMRDS1820(); /读出温度指令 ReadDS1820(); /读出温度值 V2ToV(); /转换显示值 if (TMV TMSetV) /根据采集到的温度值控制继电器 RelayOutPort = 0; else RelayOutPort = 1; if (SetTF) IntNum2 = IntNum2 + 1; /用于闪烁计数 if (IntNum2 50 ) IntNum2 = 0;if (KeyTF) IntNum3 = IntNum3 + 1; /用于防止按键连按if (IntNum3 25) IntNum3 = 0;KeyTF = 0; if (SetTF) & (IntNum2 4; THV = THV 7; /取符号 else Sign = TMV 7;if (Sign) if (SetTF | !Key_SET) LED_One = (TMSetV-1) / 100; /SET状态下显示设定值 LED_Two = (TMSetV-1) - LED_One * 100)/10; LED_Three = (TMSetV-1) - LED_One * 100 - LED_Two * 10; else LED_One = (TMV) / 100;/转换百位值 LED_Two = (TMV) - LED_One * 100)/10; LED_Three = (TMV) - LED_One * 100 - LED_Two * 10;else if (SetTF | !Key_SET) LED_One = (TMSetV) / 100; /SET状态下显示设定值 LED_Two = (TMSetV - LED_One * 100)/10; LED_Three = TMSetV - LED_One * 100 - LED_Two * 10; else LED_One = (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_Three;void InitDS1820(void)/初始化DS1820TMPort = 1;/拉高TMPort_nop_(); /保持一个周期TMPort = 0;/拉低TMPort Delay_510(); /延时 DS1820复位时间要500us的低电平 TMPort = 1; /拉高TMPort_nop_(); /保持 _nop_();_nop_(); Delay_110(); /延时110us 等待DS1820回应 if (!TMPort) /回应信号为低电平 DS1820ON = 1; else DS1820ON = 0; Delay_110(); /延时 Delay_110(); TMPort = 1; /拉高TMPortvoid ROMDS1820(void) /跳过ROM匹配#pragma asm MOV A,#0CCH MOV R2,#8 CLR C WR1: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR1 SETB P3_7#pragma endasmvoid TMVDS1820(void) /温度转换指令#pragma asm MOV A,#44H MOV R2,#8 CLR C WR2: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR2 SETB P3_7#pragma endasmvoid TMRDS1820(void) /读出温度指令#pragma asm MOV A,#0BEH MOV R2,#8 CLR C WR3: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR3 SETB P3_7#pragma endasmvoid TMWDS1820(void) /写入温度限制指令#pragma asm MOV A,#04EH MOV R2,#8 CLR C WR13: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR13 SETB P3_7#pragma endasmvoid TMREDS1820(void)/COPY RAM to E2PRAM#pragma asm MOV A,#48H MOV R2,#8 CLR C WR33: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR33 SETB P3_7#pragma endasmvoid TMERDS1820(void)/COPY E2PRAM to RAM#pragma asm MOV A,#0B8H MOV R2,#8 CLR C WR43: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR43 SETB P3_7#pragma endasmvoid WriteDS1820(void)/写入温度限制值#pragma asmMOV A,26H/发出4EH写ROM指令后连发两个字节分别为上下限 MOV R2,#8 CLR C WR23: CLR P3_7 MOV R3,#6 DJNZ R3,$ RRC A MOV P3_7,C MOV R3,#23 DJNZ R3,$ SETB P3_7 NOP DJNZ R2,WR23 SETB P3_7 #pragma endasmvoid ReadDS1820(void) /读出温度值#pragma asm MOV R4,#3 ; 将温度高位和低位,高温限制位从DS18B20中读出 MOV R1,#29H ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H),高温限制位存入27H(TMRomV) R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 研学基地课程创新与学科发展方案
- 机床电工基础知识培训课件
- 柳州市初三数学试卷
- 茂名一模高考数学试卷
- 七上2024数学试卷
- 沛县初一上期中数学试卷
- 罗山县新罗高数学试卷
- 2025年小学美术教资试题及答案
- 2025年小学科学天气试题及答案
- 2025年小学生笔试题及答案
- 数学人教A版(2019)选择性必修第一册2.5.1 直线与圆的位置关系 教案
- 精选芭蕾舞男女演员之间的潜规则汇总
- 慢阻肺随访记录表格模板
- SF∕T 0124-2021 录像过程分析技术规范
- 四讲业主业主大会业主委员会PPT课件
- 永磁涡流传动器的应用示范及产业化20150706
- EPC项目—承包人建议书、承包人实施计划
- 被执行人财产申报表
- 赫章县地质灾害防治规划
- 复合活性羟基磷灰石陶瓷的研制及其生物相容性研究
- 《放射物理与防护》第四章
评论
0/150
提交评论