温度采集显示在液晶和数码管上.doc_第1页
温度采集显示在液晶和数码管上.doc_第2页
温度采集显示在液晶和数码管上.doc_第3页
温度采集显示在液晶和数码管上.doc_第4页
温度采集显示在液晶和数码管上.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

温度采集显示在液晶和数码管上A_BITEQU 20H;存放个位数变量B_BITEQU 21H ;存放十位数变量FLAG EQU 38H ;DS18B20是否存在标志DQ EQU P3.7 ;DQ引脚由P1.0控制RS BIT p3.0;液晶控制接口RW BIT p3.1E BIT p3.5TEMPEREQU60HORG0000HLJMPMAINORG0030H;跳过异常向量区;-;主程序;- MAIN:MOVSP,#53HSTART3: LCALLRE_TEMP;调用读取温度子程序LCALLTURN;数据转化子程序LCALLDISPLAY;显示子程序LCALLDP1LJMPSTART3GO3END:LCALLDELAY1LJMPSTART3;-初始化及读取温度值子程序-RE_TEMP:SETBDQLCALLRESET_1820;调用复位子程序JBFLAG,ST;判断DS18B20是否存在 HOME:RET ST:;DS18B20存在MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820;调用写入数据子程序MOVA,#44H;发出温度转换命令LCALLWRITE_1820;调用写入数据子程序LCALLRESET_1820;调用读温度前先复位MOVA,#0CCH;跳过ROM匹配LCALLWRITE_1820;调用写入数据子程序MOVA,#0BEH;发出读温度命令LCALLWRITE_1820;调用写入数据子程序LCALLREAD_1820;调用读取数据子程序LJMPHOME;-复位子程序-RESET_1820:SETB DQNOPCLR DQ;-主机发出复位低脉冲- MOVR1,#3 DLY: MOVR0,#107 DJNZR0,$DJNZR1,DLY;-然后拉高数据线-SETB DQNOPNOP NOP ;-等待DS18B20回应- MOVR0,#25H T2:JNBDQ,T3DJNZR0,T2LJMPT4;-标志位FLAG=1,表示DS18B20存在- T3:SETBFLAGLJMPT5;-标志位FLAG=0,表示DS18B20不存在- T4:CLRFLAGLJMPT7;-时序要求延时一段时间- T5:MOVR0,#110 T6:DJNZ R0,T6 T7:SETBDQRET;-写入子程序-WRITE_1820:MOVR2,#8;一共8位数据 CLRC;C=0 WRB1:CLRDQ;总线低位,开始写入MOVR3,#7DJNZ R3,$ ;保持16us以上RRCA;把字节DATA分成8个位,环移给CMOVDQ,C;写入一个位MOVR3,#23DJNZR3,$ ;等待SETBDQ;重新释放总线NOPDJNZR2,WRB1;写入下一个位SETBDQRET;-读子程序-READ_1820: MOVR4,#2;读出两个字节的数据MOVR1,#29H;低位存入29H,高位存入28H RE0:MOVR2,#8 ;数据位一共有8位 RE1:CLRCSETB DQNOPNOPCLRDQ;读前总线保持为低NOPNOPNOPSETB DQ;开始读总线释放MOVR3,#9 RE2: DJNZ R3,RE2;延时18usMOVC,DQ;从总线读到一个位MOVR3,#23 RE3: DJNZR3,RE3;等待50usRRCA ;把读得的位值环移给ADJNZR2,RE1;读下一个位MOVR1,A DECR1DJNZR4,RE0RET;-数据转化子程序- TURN:MOVA,29HMOVC,40H ;将28中的最低位移入C(4043H对应的是28H的位地址,也可以改用28H.028H.3)RRCA ;将A中内容和进位位一起循环右移一位MOVC,41HRRCAMOVC,42HRRCAMOVC,43HRRCAMOV29H,ARET;-温度显示子程序-DISPLAY: MOVA,29H;上限报警处理部分(比较的方法做)SUBBA,#30;设置上限温度是30摄氏度/JCNO_ALARM/CLRP2.7;蜂鸣器报警/CLRP1.4;P1.5口亮灯指示进行降温LJMPGONEXT/NO_ALARM:/SETBP2.7/SETBP1.4GONEXT:MOVA,29HMOVB,#10DIVAB ;十位在B中,个位在A中MOVB_BIT,AMOVA_BIT,BLCDDDIS:MOVA,TEMPERCJNEA,A_BIT,ZWFHRET:MOVTEMPER,A_BITRETZW:CALLLCDDISPAJMPFHRETDP1:MOV R1,#250 LOOP1:MOV A,A_BIT MOV DPTR ,#TAB MOVC A,A+DPTR MOV P0,A CLR P2.0 ACALL DELAYSETB P2.0MOV A,B_BITMOV DPTR ,#TAB MOVC A,A+DPTR MOV P0,A CLR P2.1 ACALL DELAY SETB P2.1DJNZ R1,LOOP1 DJNZ R0,DP1 RETLCDDISP:MOVP1,#01HCALLENRWMOVP1,#38HCALLENRWMOVP1,#0CHCALLENRWMOVP1,#06HCALLENRWMOVP1,#80HCALLENRWMOVDPTR,#YJTABCALLRWRAMMOVP1,#0C0HCALLENRWMOVDPTR,#YJTAB1CALLRWRAMW_TEM:MOVP1,#0CCHCALLENRWMOVDPTR,#ASCIIMOVA,B_BITMOVCA,A+DPTRMOVP1,ASETBRSCLRRWCLRECALLDEL2MSSETBEMOVDPTR,#ASCIIMOVA,A_BITMOVCA,A+DPTRMOVP1,ASETBRSCLRRWCLRECALLDEL2MSSETBERETENRW:CLRRSCLRRWCLRECALLDEL2MSSETBERETRWRAM:MOVR1,#00HAL:MOVA,R1MOVCA,A+DPTRCALLRWRAM2INCR1CJNEA,#00H,ALRETRWRAM2:MOVP1,ASETBRSCLRRWCLRECALLDEL2MSSETBERET;-延时子程序-DEL2MS:MOV R6,#250;2MS延时,用作数码管动态扫描 DJNZ R6,$ RETDELAY1:;延时子程序1MOVR3,#4 L3: MOVR4,#250 L2: MOVR5,#250 L1: DJNZR5,L1 DJNZR4,L2DJNZR3,L3RETDELAY:MOV R7,#80DJNZ R7,$RET;-显示段码表-TAB:D

温馨提示

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

评论

0/150

提交评论