基于单片机89C51控制的温度智能控制系统.doc_第1页
基于单片机89C51控制的温度智能控制系统.doc_第2页
基于单片机89C51控制的温度智能控制系统.doc_第3页
基于单片机89C51控制的温度智能控制系统.doc_第4页
基于单片机89C51控制的温度智能控制系统.doc_第5页
全文预览已结束

下载本文档

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

文档简介

TEMPER_LEQU41H;用于保存读出温度的低8位TEMPER_HEQU40H;用于保存读出温度的高8位FLAG1EQU38H;是否检测到DS18B20标志位A_BIT1EQU31H;数码管个位数存放内存位置B_BIT1EQU32H;数码管十位数存放内存位置D_BIT1EQU35H;数码管百位数存放内存位置DQEQUP3.2;30H,31H,32H,33H:X个位十位XMOD7:MOVSP,#60HLCALLGET_TEMPER;调用读温度子程序LCALLTEMPCOVLCALLJDQGZLCALLDISPLAY;调用数码管显示子程序AJMPMOD7TEMP0:INCAAJMPTEMP1TEMPCOV:MOVA,TEMPER_L;数据处理子程序TEMPCOVMOVB,#16DIVABJBB.3,TEMP0TEMP1:MOV34H,A;将TEMPER_L的高四位右移四位,存入34H中(温度值)MOVA,B;将TEMPER_L的低四位X10/16得小数后一位数.MOVB,#10MULABMOVB,#16DIVABMOV30H,A;将小数后一位数.存入30H中MOVA,TEMPER_H;TEMPER_H中存放高8位数,权重16MOVB,#16MULABADDA,34H;34H中存入温度值的整数部分MOVB,#10DIVABMOV31H,B;个位存入31H中MOVB,#10;DIVAB;MOV32H,B;十位存入32H中MOVB,#10;DIVAB;MOV35H,B;百位存入33H中MOVA,TEMPER_HMOV33H,#10H;JBACC.7,EXIT7MOV33H,#00HEXIT7:RETINIT_1820:;这是DS18B20复位初始化子程序SETBDQNOPCLRDQ;主机发出延时537微秒的复位低脉冲MOVR1,#3TSR1:MOVR0,#107DJNZR0,$DJNZR1,TSR1SETBDQ;然后拉高数据线NOPNOPNOPMOVR0,#25HTSR2:JNBDQ,TSR3;等待DS18B20回应DJNZR0,TSR2LJMPTSR4;延时TSR3:SETBFLAG1;置标志位,表示DS1820存在LJMPTSR5TSR4:CLRFLAG1;清标志位,表示DS1820不存在LJMPTSR7TSR5:MOVR0,#117TSR6:DJNZR0,TSR6;时序要求延时一段时间TSR7:SETBDQRET;-GET_TEMPER:;读出转换后的温度值SETBDQLCALLINIT_1820;先复位DS18B20JBFLAG1,TSS2RET;判断DS1820是否存在?若DS18B20不存在则返回TSS2:MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#44H;发出温度转换命令LCALLWRITE_1820LCALLDISPLAY;等待AD转换结束,12位的话750微秒LCALLINIT_1820;准备读温度前先复位MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820MOVA,#0BEH;发出读温度命令LCALLWRITE_1820LCALLREAD_18200;将读出的温度数据保存到35H/36HRET;写DS18B20的子程序(有具体的时序要求)WRITE_1820:MOVR2,#8;一共8位数据CLRCWR1:CLRDQMOVR3,#6DJNZR3,$RRCAMOVDQ,CMOVR3,#23DJNZR3,$SETBDQNOPDJNZR2,WR1SETBDQRET;读DS18B20的程序,从DS18B20中读出两个字节的温度数据READ_18200:MOVR4,#2;将温度高位和低位从DS18B20中读出MOVR1,#TEMPER_L;低位存入TEMPER_L(TEMPER_L),高位存入(TEMPER_H)RE00:MOVR2,#8;数据一共有8位RE01:CLRCSETBDQNOPNOPCLRDQNOPNOPNOPSETBDQMOVR3,#9RE10:DJNZR3,RE10MOVC,DQMOVR3,#23RE20:DJNZR3,RE20RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RET;显示子程序DISPLAY:MOVDPTR,#TAB;指定查表启始地址MOVR0,#4DPL1:MOVR1,#250;显示1000次DPLOP:MOVA,A_BIT1;取个位数MOVCA,A+DPTR;查个位数的7段代码MOVP1,A;送出个位的7段代码CLRP3.7;开个位显示ACALLD1MS;显示1MSSETBP3.7MOVA,B_BIT1;取十位数MOVCA,A+DPTR;查十位数的7段代码MOVP1,A;送出十位的7段代码CLRP3.5;开十位显示ACALLD1MS;显示1MSSETBP3.5MOVA,D_BIT1;取百位数MOVCA,A+DPTR;查百位数的7段代码MOVP1,A;送出百位的7段代码CLRP3.4;开百位显示ACALLD1MS;显示1MSSETBP3.4MOVP1,#00HDJNZR1,DPLOP;100次没完循环DJNZR0,DPL1;4个100次没完循环RETJDQGZ:MOVR7,34H;34H为温度的整数位.MOVA,#10;这里以10度为例,若高于10度,刚开启继电器SUBBA,R7;10度减当前温度.JCKAI;如果高于10度,则KAISETBP3.3;关闭,P3.3接PNP三极管AJ

温馨提示

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

评论

0/150

提交评论