单片机的多路温度采集控制系统设计_第1页
单片机的多路温度采集控制系统设计_第2页
单片机的多路温度采集控制系统设计_第3页
单片机的多路温度采集控制系统设计_第4页
单片机的多路温度采集控制系统设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科毕业设计(论文)基于 51 单片机的多路温度采集控制系统设计前言:随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。本次设计的目的在于学习基于 51 单片机的多路温度采集控制系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到 LED 进行显示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。我所采用的控制芯片为 AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。 关键词:温度 多路温度采集 驱动电路 本科毕业设计(论文)正文 :1、温度控制器电路设计本电路由 89C51 单片机温度传感器、模数转换器 ADC0809、窜入并出移位寄存器 74LS164、数码管、和 LED 显示电路等组成。由热敏电阻温度传感器测量环境温度,将其电压值送入 ADC0809 的IN0 通道进行模数转换,转换所得的数字量由数据端 D7-D0 输出到89C51 的 P0 口,经软件处理后将测量的温度值经单片机的 RXD 端窜行输出到 74LS164,经 74LS164 窜并转换后,输出到数码管的 7 个显示段,用数字形式显示出当前的温度值。89C51 的P2.0、P2.1、P2.2 分别接入 ADC0809 通道地址选择端 A、B、C,因此 ADC0809 的 IN0 通道的地址为 F0FFH。输出驱动控制信号由 p1.0输出,4 个 LED 为状态指示,其中,LED1 为输出驱动指示,LED2 为温度正常指示,LED3 为高于上限温度指示,LED4 为低于下限温度指示。当温度高于上限温度值时,有 p1.0 输出驱动信号,驱动外设电路工作,同时 LED1 亮、LED2 灭、LED3 亮、LED4 灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1 亮、LED2 亮、LED3灭、LED4 灭。温度继续下降,当温度降到下限温度值时,p1.0 信号停止输出,外设电路停止工作,同时 LED1 灭、LED2 灭、LED3 灭、LED4 亮。当外设电路停止工作后,温度开始上升,接着进行下一工作周期。2、 温度控制器程序设计本科毕业设计(论文)本软件系统有 1 个主程序,6 个子程序组成。6 个子程序为定时/计数器 0 中断服务程序、温度采集及模数转换子程序 ADCON、温度计算子程序 CALCU、驱动控制子程序 DRVCON、十进制转换子程序METRICCON 及数码管显示子程序 DISP。(1) 主程序主程序进行系统初始化操作,主要是进行定时/计数器的初始化。(2) 定时/计数器 0 中断服务程序应用定时计数器 0 中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给 89C51单片机,然后在调用温度计算子程序 CALCU,驱动控制子程序DRVCON,十进制转换子程序 MERTRICCON,温度数码显示子程序 DISP。(3) 温度采集及模数转换子程序 ADCON该子程序进行温度采样并将其转换为 8 位数字量传送给 89C51的 P0 口。采样得到的温度数据存放在片内 RAM 的 20H 单元中。(4) 温度计算子程序 CALCU根据热敏电阻的分度值和电路参数计算出出一张温度表,存放在 DATATAB 数据表中,由于篇幅关系,本程序只给出 0-49的温度数据。一个温度有两个字节组成,前一字节为温度值,后一字节本科毕业设计(论文)为该温度所对应的热敏电阻上的电压的数字量。根据采样值,通过查表及比较的方法计算出当前的温度值,并将其存入片内 RAM 的21H 单元。采用查表法计算温度值时为了克服热敏电阻的阻值温度特性曲线的非线性,提高测量精度。(5) 驱动控制子程序 DRVCON该子程序调节温度,当温度高于上限温度时(本程序设为 30), P1.0 输出驱动控制信号,驱动外设工作降温;当温度下降到下限温度时(本程序设为 25) ,P1.0 停止输出,温度上升,周而复始;工作状态有 LED1-LED4 指示。(6) 十进制转换子程序 METRICCON将存放于内部 RAM21H 单元的当前温度值得二进制数形式转换为十进制数(BCD 码)形式,以便输出显示,转换结果存放在片内RAM 的 32H 单元(百位) 、31H(十位) 、30H 单元(个位) 。(7) 数码显示子程序 DISP该子程序利用 89C51 串口的方式 0 串行移位寄存器工作方式,将片内 RAM 的 30H、31H、32H 单元的 BCD 码查表转换为七段码后由 RXD 端串行发出去,然后经 74LS164 串并转换,将七段值传送给数码管,以十进制形式显示出当前温度值。根据以上分析画出的部分程序设计流程图如图 1-0 至图 1-4 所示。本科毕业设计(论文)开始在 0000H 处放置一条长跳转指令LJMP MAIN 跳转到主程序在 0000H 处放置一条长跳转指令LJMP T0INT 跳转到 T0 中断服务程序图 1-0 部分程序设计流程图的设计框架本科毕业设计(论文)主程序计数寄存器 R1 赋初值 10TMOD 赋初值 01HT0 工作于定时方式 1 软启动堆栈指针 SP 赋初值 60HSETB TR0启动 T0 工作P1 口赋初值 FFH,所有指示灯全灭TH0 赋初值 3CH,TL0 赋初值 B0H,T0 定时 100msIE 赋初值 82H,T0 允许中断动态停机图 1-1 主程序流程图本科毕业设计(论文)T0 中断服务程序温度采样时间间隔到否T0 重装初值调用数码管显示子程序 DISP调用十进制转换子程序METRICCON调用驱动控制子程序DRVCON调用温度计算子程序CALCU调用温度采用及模数转换子程序 ADCON中断返回YN图 1-2 T0 中断服务程序流程图本科毕业设计(论文)温度采样及模数转换子程序将 ADC0809启动 A/D 转换读取转换数据将转换数据存于片内RAM20H 单元返回转换结束否图 1-3 温度采样及模数转换子程序流程图本科毕业设计(论文)温度数据表索引值寄存器 R2 赋初值 01H温度数据表首地址送DPTR查表取出某一温度的电压数据取出表中前一温度值将该温度值存于21H 单元查表取出该温度值将该温度值存于21H 单元索引值加 2返回返回当前温度电压值与查表取得的某一温度电压值比较温度计算子程序相等小于大于图 1-4 温度计算子程序流程图本科毕业设计(论文)3、具体内容(1)温度控制器电器原理图设计按以上分析及相关知识设计出的温度控制器电路原理图如图 1-5所示。P 0 . 0P 0 . 1P 0 . 2P 0 . 3P 0 . 4P 0 . 5P 0 . 6P 0 . 7P 2 . 0P 2 . 1P 2 . 2P 2 . 3P 2 . 4P 2 . 5P 2 . 6P 2 . 7R DW RI N T 0I N T 1A L EP 1 . 0P 1 . 1P 1 . 2P 1 . 3P 1 . 4P 1 . 5P 1 . 6P 1 . 7R S TT 1T 0E A / V ppP S E NR X DT X DI C 1A T 8 9 C 5 1123456781 51 43 12 91 01 1XTAL2XTAL1D 0D 1D 2D 3D 4D 5D 6D 7ABCO EA L ES CE O CC L KV R ( + )V R ( - )I N 0I N 1I N 2I N 3I N 4I N 5I N 6I N 7I C 2A D C 0 8 0 93 93 83 73 63 53 43 33 22 12 22 32 42 52 62 72 81 71 61 21 33 01 71 41 581 81 92 02 12 52 42 392 2671 02 62 72 8123451 21 6 1 1I C 3 A 7 4 L S 0 2 17 4 L S 0 24I C 3 B63521c o mdpgfedcbac o m5109 1 2 4 6 73456101112130001020304050607ABCLKCLR7 4 L S 1 6 483C 33 0 p FC 23 0 p F6 M H z1819R T R 81 0 0 kR 72 0 k+ 5 Vsc 11 0 u F+R 54 7 0R 61 0 k输出控制R 12 0 0R 22 0 0R 32 0 0R 42 0 0L E D 1绿 L E D 2红 L E D 3黄 L E D 4I C 5dpgfedcba7 4 L S 1 6 483I C 6ABCLKCLRdpgfedcba7 4 L S 1 6 483ABCLKCLRI C 7000102030405060700010203040506073456101112133456101112135109 1 2 4 6 75109 1 2 4 6 74 7 0 x 2 11 21 21 2dpgfedcba7 4 L S 1 6 483I C 81 29图 1-5 温度控制电路原理图本科毕业设计(论文)(2)温度数据表在图 1-5 所示的电路中,热敏电阻的连接如图 1-6 所示。D0D1 VR(+)D2D3D4D5 VR(-)D6D7IC2ABC ADC0809IN0OE IN1ALE IN2SC IN3IN4EOC IN5IN6CLK IN71714158181920212524239226710121626272812345VccR720kRT R9图 1-6 热敏电阻的连接本设计所使用的热敏电阻的分度表及 ADC0809 转换后的电压数字量见附表 1-1 所示转换后的电压数字量的计算方法为:热敏电阻与 R8 并并联后的总电阻:R=(Rt*R8)/(Rt+R8)R 与 R7 串联电路中 R 的分压值(即输入 ADC0809 的模拟量):V=5R/(R+R7)R8100k本科毕业设计(论文)5V 被分成 256 等分(8 位量化) ,则每份的电压值:=5/256输入的模拟量电压经 8 位量化后的数字量:D=V/例如,热敏电阻在温度为 20时的阻值为 62.254 千欧,则根据上述方法计算出的电压数字量为 169,注意在计算中 R7 用实测值 19.6 千欧代入进入计算。在实际做该电路时,可根据自己所选择的热敏电阻的分度表计相关电路参数,按上述方法计算出 ADC0809 转换后的各温度对应的电压数字量。程序中的温度数据表构成:1 个温度数据占 2 个字节,前一字为温度值,后一个字节为该温度下热敏电阻上的模拟电压转换成德8 位数字量。如在 20时,热敏电阻对应的电压数字量为 169,则20,169 组成一个温度为 20的温度数据。按这样方法组成的 0-49的温度数据表如下:DATATAB:DB 0,194,1 ,193 ,2 ,192, 3, 191,4,190DB 5,189,6, 188, 7 ,187, 8, 186,9,185DB10,184,11,182,12,181,13,180,14,178DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28, ,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,147,39,135DB 40,133,41,131,42,129,43,127,44,125本科毕业设计(论文)DB 45,123,46,121,47,118,48,116,49,114在温度采样机模数转换子程序中,采样得到的当前温度下热敏电阻上的数字电压存于 20H 单元,在温度计算子程序中通过查表的方法从表中的第一个温度(0)下热敏电阻上的数字电压开始,依次取出各温度下热敏电阻上的十字电压,与与存于 20H 单元的当前温度下热敏电阻上的的数字电压比较,如小于当前温度的数字电压,则在取出下一温度的数字电压与当前温度的数字电压比较;直到大于或等于当前的温度数字电压,比较结束。如大于则取出前一温度作为当前温度存于 21H 单元,如等于则将该温度作为但前温度存于20H 单元。这种温度计算方法,避免了温度特性曲线的非线性对温度计算精确性的影响,计算出的温度非常精确。(3)温度控制程序设计在本设计中,晶体振荡器频率为 6MHz,T0 定时时间为100ms,T0 工作于方式 1,则 T0 的初值为:X=(最大计数值 M 定时时间 t/及其周期 Tm)=2 16 -100ms/2us=15536=3CB0H按以上任务分析设计出的源程序如下:ORG 0000H;跳转到主程序LJMP MAIN;ORG 000BH;LJMP T0INT;跳转到 T0 中断服务程序;本科毕业设计(论文)主程序ORG 0100H;MAIN:MOV R1,#10; T0 100 马上定时溢出计数寄存器 R1赋初值 10MOV P1,#0FFH; 所有指示灯灭MOV SP,#60H; 堆栈指针赋初值 60HMOV TMOD,#01H; T0 定时、方式 1、软启动MOV TL0,#0B0H; T0 赋初值MOV TH0,#3CH;MOV IE,#82H; 开放 T0 中断SETB TR0; 启动 T0SJMP $;定时/计数器 0 中断服务程序ORG 0200H;T0INT:DJNZ R1,NEXT; T0 溢出 10 次,即 1s 进一次采样处理LCALL ADCON; 调用温度采样及模数转换子程序LCALL CALCU; 调用温度计算子程序LCALL DRVCON; 调用驱动控制子程序LCALL METRICCON; 调用十进制转换子程序LCALL DISP; 调用数码管显示子程序MOV R1,#10; R1 重赋值 10本科毕业设计(论文)NEXT:MOV TL0,#0B0H; T0 重装初值MOV TH0,#3CH;RETI;温度采样及模数转换子程序ORG 0300H;ADCON:MOV DPTR,#0F0FFH; 选通 ADC0809 通道 0MOV A,#00H;MOVX DPTR,A; 启动 A/D 转换HERE:JNB P3.3,HERE; 判断数据转换是否结束,没结束则等待MOVX A,DPTR; 读取转换后的数据MOV 20H,A; 将从 ADC0809 中读取的当前温度下热敏电阻上的电压值存于 20H 单元RET ;温度计算子程序ORG 0400H;CALCU:MOV R2,#01H; R2 为数据表的索引值寄存器MOV DPTR,#DATATAB; 温度数据表首地址送 DPTRNEXT1:MOV A,R2; 索引值送 AMOVC A,A+DPTR; 查表取出某一温度的数字电压值CJNE A,20H,K1; 与当前温度的数字电压值比较DEC R2; 等于当前温度的数字电压值,则查表本科毕业设计(论文)取出该温度值作为当前温度值MOV A,R2;MOVC A,A+DPTR;LJMP K3;K1:JNC K2; 大于当前温度的数字电压值,则继续取出下一温度的数字电压进行比较DEC R2; 小于当前温度的数字电压值,则查表取出前一个温度值作为当前温度值DEC R2DEC R2MOV A,R2;MOVC A,A+DPTR;LJMP K3;K2:INC R2;INC R2;LJMP NEXT1;K3:MOV 21H,A; 将当前温度值存于 21H 单元RET;DATATAB;DB 0,194,1,193,2,192,3,191,4,190;温度数据表DB 5,189,6,188,7,187,8,186,9,185DB 10,184,11,182,12,181,13,180,14,178本科毕业设计(论文)DB 15,177,16,175,17,174,18,173,19,171DB 20,169,21,168,22,166,23,165,24,163DB 25,161,26,159,27,158,28,156,29,154DB 30,152,31,150,32,149,33,147,34,145DB 35,143,36,141,37,139,38,137,39,135DB 40,133,41,131,42,129,43,127,44,125DB 45,123,46,121,47,118,48,116,49,114驱动控制子程序ORG 0500H;DRVCON:MOV A,21H; 取出当前温度值CJNE A,#30,J1; 与上限温度值(30)比较LJMP GO;J1:JNC DRV1; 若高于上限温度,则输出驱动信号,同时高于上限温度指示灯点亮CJNE A,#25,J2; 与显现温度(25)比较LJMP GO;J2:JC DRV2; 弱低于下限温度,则驱动信号停止输出,同时点亮低于下限温度的指示灯LJMP GO;DRV1:CLR P1.0;SETB P1.1;本科毕业设计(论文)CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0SETB P1.1;CLR P1.2;SETB P1.3;LJMP OVER;DRV2:SETB P1.0;SETB P1.1;SETB P1.1;SETB P1.2;CLR P1.3;LJMP OVER;GO:CLR P1.1; 在下线温度(25)至上限温度(30)之间,则驱动信号保持前面状态,同时温度正常指示灯点亮SETB P1.2;SETB P1.3;OVER:RET;;十进制转换子程序ORG 0600H;本科毕业设计(论文)METRICCON:MOV R3,#00H; 将存于 21H 单元中的当前温度转换为 BCD 码MOV R4,#00H; 百位存于 32H 单元,十位存于 31H 单元,个位存于 30H 单元MOV A,21H;CLR C;W1:SUBB A,#100;JC W2;INC R4;AJMP W1;W2:ADD A,#100;CLR C;W3:SUBB A,#10;JC W4;INC R3;AJMP W3;W4:ADD A,#10;MOV 30H,A;MOV 31H,R3;MOV 32H,R4;RET;本科毕业设计(论文);数码管显示子程序ORG 0700H;DISP:MOV R5,#03H; 将存于 32H 单元、31H 单元、30H 单元中的温度 BCD 码查表转换为七段码MOV R0,#30H; 通过串行通信方式 0 输出驱动 3 个数码管,显示当前温度MOV DPTR,#TAB;LOOP:MOV A,R0;MOVC A,A+DPTR;MOV SBUF,A;WAIT:JNB T1,WAIT;CLR T1;INC R0;DJNZ R5,LOOP;RET;TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段码数据表本科毕业设计(论文)附表:1-1热敏电阻分度表及经 ADC0809 转换后的电压数字量温度()热敏电阻阻值(千欧) 转换后的电压数字量0 161.608 1941 153.6308 1932 146.0833 1923 138.9435 1914 132.01901 1905 125.8025 1896 119.7608 1887 114.046 1878 108.6397 1869 103.5243 18510 98.6833 18411 94.1006 18212 89.7613 18113 85.6511 18014 8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论