DS18B20温度控制数码管显示(汇编非常详细)_第1页
DS18B20温度控制数码管显示(汇编非常详细)_第2页
DS18B20温度控制数码管显示(汇编非常详细)_第3页
DS18B20温度控制数码管显示(汇编非常详细)_第4页
DS18B20温度控制数码管显示(汇编非常详细)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

;*;**;**;**;**;**;*;***

!-DS18B20温度控制数码管显示(汇编非常详细)1、P1.6=→进入设定温度报警值TL状态:精品文档放心下载L--202、P1.6→进入设定温度报警值TH状态:H--283、P1.6→返回4、设定过程:P1.4→加键(UP),P1.5→减键(DOWN),可快速调。 *谢谢阅读TIMER_LDATA23HTIMER_HDATA24HTIMER_COUNDATA25HTEMPLDATA26HTEMPHDATA27HTEMP_THDATA28HTEMP_TLDATA29HTEMPHCDATA2AHTEMPLCDATA2BHTEMP_ZHDATA2CHBEEPEQUP3.7DATA_LINEEQUP3.3RELAYEQUP1.3FLAG1EQU20H.0FLAG2EQU20H.1;-------------------------------------------------K1EQUP1.4K2EQUP1.5K3EQUP1.6K4EQUP1.7;=================================================精品文档放心下载!-ORG0000HJMPMAINORG000BHAJMPINT_T0;--------------------------------------------------MAIN:MOVSP,#30HMOVTMOD,#01H;T0,方式1MOVTIMER_L,#00H;50ms定时值MOVTIMER_H,#4CHMOVTIMER_COUN,#00H;中断计数MOVIE,#82H;EA=1,ET0=1LCALLREAD_E2;LCALLRE_18B20MOV20H,#00HSETBBEEPSETBRELAYMOV7FH,#0AH;熄灭符CALLRESET;复位与检测DS18B20JNBFLAG1,MAIN1;FLAG1=0,DS18B20不存在JMPSTARTMAIN1:CALLRESETJBFLAG1,STARTLCALLBEEP_BL;DS18B20错误,报警JMPMAIN1START:MOVA,#0CCH;跳过ROM匹配CALLWRITEMOVA,#044H;发出温度转换命令CALLWRITECALLRESETMOVA,#0CCH;跳过ROM匹配CALLWRITEMOVA,#0BEH;发出读温度命令CALLWRITECALLREAD;读温度数据CALLCONVTEMPCALLDISPBCDCALLDISP1CALLSCANKEY!-LCALL TEMP_COMPJMP MAIN1;=====================================================;DS18B20复位与检测子程序感谢阅读;FLAG1=1OK,FLAG1=0ERROR精品文档放心下载;======================================================感谢阅读RESET:RESET1:RESET2:RESET3:RESET4:RESET5:

SETBDATA_LINENOPCLRDATA_LINEMOVR0,#64H ;主机发出延时600微秒的复位低脉冲感谢阅读MOVR1,#03HDJNZR0,$MOVR0,#64HDJNZR1,RESET1SETBDATA_LINE ;然后拉高数据线NOPMOVR0,#25HJNBDATA_LINE,RESET3 ;等待DS18B20回应精品文档放心下载DJNZR0,RESET2JMPRESET4 ;延时SETBFLAG1 ;置标志位,表示DS1820存在谢谢阅读JMPRESET5CLRFLAG1 ;清标志位,表示DS1820不存在精品文档放心下载JMPRESET6MOVR0,#064HDJNZR0,$ ;时序要求延时一段时间RESET6: SETBDATA_LINERET;===========================================================谢谢阅读;;===========================================================谢谢阅读WRITE:

MOVR2,#8CLRCY

;一共8位数据WR1:CLRDATA_LINE

;开始写入DS18B20总线要处于复位(低)状态谢谢阅读MOVR3,#09DJNZR3,$RRCAMOVDATA_LINE,C

;总线复位保持18微妙以上;把一个字节DATA分成8个BIT环移给C感谢阅读;写入一个BITMOVR3,#23DJNZR3,$SETBDATA_LINE

;等待46微妙;重新释放总线!-NOPDJNZR2,WR1 ;写入下一个BITSETBDATA_LINERET;============================================================感谢阅读;从DS18B20中读出温度低位、高位和报警值TH、TL精品文档放心下载;存入26H、27H、28H、29H;============================================================谢谢阅读READ: MOVR4,#4MOVR1,#26HRE00: MOVR2,#8RE01: CLRCSETBDATA_LINENOPNOPCLRDATA_LINENOPNOPNOPSETBDATA_LINEMOVR3,#09DJNZR3,$MOVC,DATA_LINEMOVR3,#23DJNZR3,$RRCADJNZR2,RE01MOV@R1,AINCR1DJNZR4,RE00RET;--------------------------------------------精品文档放心下载;200ms对闪动标记取反一次;--------------------------------------------感谢阅读INT_T0:

;将温度高位和低位从DS18B20中读出;存入26H、27H、28H、29H;读前总线保持为低;开始读总线释放;延时18微妙;从DS18B20总线读得一个BIT;等待46微妙;把读得的位值环移给A;读下一个BITPUSH ACCPUSH PSWMOV TL0,TIMER_LMOV TH0,TIMER_HINC TIMER_COUNMOV A,TIMER_COUNCJNE A,#04H,INT_ENDMOV TIMER_COUN,#00HCPL FLAG2!-INT_END:POP PSWPOP ACCRETI;==========================================================;重新对DS18B20初始化谢谢阅读;将设定的温度报警值写入DS18B20;==========================================================谢谢阅读RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:CALLRESETMOVA,#0CCH;跳过ROM匹配LCALLWRITEMOVA,#4EH;写暂存寄存器LCALLWRITEMOVA,TEMP_TH;TH(报警上限)LCALLWRITEMOVA,TEMP_TL;TL(报警下限)LCALLWRITEMOVA,#7FH;12位精确度LCALLWRITERET;====================================================感谢阅读;功能键扫描子程序;====================================================谢谢阅读SCANKEY:MOV P1,#0F0HJB K1,SCAN_K2CALL BEEP_BLSCAN_K1: CALL ALERT_TLCALL ALERT_PLAYJB K1,SCAN_K1CALL BEEP_BLSCAN_K11: CALL ALERT_THCALL ALERT_PLAYJB K1,SCAN_K11CALL BEEP_BLSCAN_K2: JB K2,SCAN_K3CALL BEEP_BLSCAN_K3: JB K3,SCAN_K4CALL BEEP_BL!-LCALL RESET_ALERTLCALL RE_18B20LCALL WRITE_E2SCAN_K4: JB K4,SCAN_ENDCALL BEEP_BLSCAN_END: RET;================================================谢谢阅读;设置温度报警值;================================================精品文档放心下载RESET_ALERT:CALLALERT_TLCALLALERT_PLAYJNBK3,$;K3为位移键SETBTR0RESET_TL:CALLALERT_PLAYJNBFLAG2,R_TL01mov75H,7fh;送入熄灭符mov76H,7fhCALLALERT_PLAYJMPR_TL02R_TL01:CALLALERT_TLmov75h,7Eh;送设定值mov76h,7DhCALLALERT_PLAY;显示设定值R_TL02:JNBK1,K011AJNBK2,K011BJNBK3,RESET_THJMPRESET_TLK011A:INCTEMP_TLMOVA,TEMP_TLCJNEA,#120,K012A;没有到设定上限值,转MOVTEMP_TL,#0K012A:CALLTL_DELJMPRESET_TLK011B:DECTEMP_TLMOVA,TEMP_TLCJNEA,#00H,K012B;没有到设定下限值,转MOVTEMP_TL,#119K012B:CALLTL_DELJMPRESET_TL!-;-------------------------------------------------------RESET_TH:CALLBEEP_BLJNBK3,$RESET_TH1:CALLALERT_PLAYJNBFLAG2,R_TH01mov75H,7fh;送入熄灭符mov76H,7fhCALLALERT_PLAYJMPR_TH02R_TH01:CALLALERT_THmov75h,7Eh;mov76h,7DhCALLALERT_PLAYR_TH02:JNBK1,K021AJNBK2,K021BJNBK3,K002JMPRESET_TH1K021A:INCTEMP_THMOVA,TEMP_THCJNEA,#120,K022A;没有到设定上限值,转MOVTEMP_TH,#0K022A:CALLTH_DELJMPRESET_TH1K021B:DECTEMP_TH;减1MOVA,TEMP_THCJNEA,#00H,K022B;没有到设定下限值,转MOVTEMP_TH,#119K022B:CALLTH_DELJMPRESET_TH1K002:CALLBEEP_BLCLRTR0;关闭中断RET;-----------------------------------------------------;键延时子程序;多次调用报警值显示程序来延时;-----------------------------------------------------TL_DEL:;报警低值延时MOVR2,#0AH!-TL_DEL1: CALL ALERT_TLCALL ALERT_PLAYDJNZ R2,TL_DEL1RETTH_DEL: ;报警高值延时MOV R2,#0AHTH_DEL1: CALL ALERT_THCALL ALERT_PLAYDJNZ R2,TH_DEL1RET;====================================================精品文档放心下载;实时温度值与设定报警温度值TH、TL比较子程序谢谢阅读;当实际温度大于TH的设定值时,显示“H”,继电器关闭。精品文档放心下载;当实际温度小于TH的设定值时,显示“O”,继电器吸合。谢谢阅读;当实际温度小于TL的设定值时,显示“L”。;闪动显示标记符H、L、O;====================================================感谢阅读TEMP_COMP:SETBTR0;启动中断MOVA,TEMP_THSUBBA,TEMP_ZH;减数>被减数,则JCCHULI1;借位标志位C=1,转MOVA,TEMP_ZHSUBBA,TEMP_TL;减数>被减数,则JCCHULI2;借位标志位C=1,转JNBFLAG2,T_COMP1;FLAG2=0,显示标记字符MOV74H,#0AH;熄灭符LCALLDISP1JMPT_COMP2T_COMP1:MOV74H,#00HLCALLDISP1;显示"O"T_COMP2:CLRRELAY;继电器吸合CLRTR0;关闭中断RET;---------------------------------------------;超温处理;---------------------------------------------CHULI1:SETBRELAY;继电器关闭JNBFLAG2,CHULI10MOV74H,#0AH;熄灭符LCALLDISP1JMPCHULI11CHULI10:MOV74H,#0DH!-LCALL DISP1;CALL BEEP_BL

;显示"H";蜂鸣器响CHULI11:CLR TR0RET;---------------------------------------------谢谢阅读

;关闭中断;欠温处理;---------------------------------------------精品文档放心下载CHULI2:

;欠温处理JNB FLAG2,CHULI20MOV 74H,#0AH ;熄灭符LCALL DISP1JMP CHULI21CHULI20: MOV 74H,#0CHLCALL DISP1 ;显示"L";CALL BEEP_BL ;蜂鸣器响CHULI21: CLR TR0 ;关闭中断RET;------------------------------------------------------------谢谢阅读;把DS18B20暂存器里的温度报警值拷贝到EEROM谢谢阅读;------------------------------------------------------------精品文档放心下载WRITE_E2:CALL RESETMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#48H ;温度报警值拷贝到EEROM感谢阅读LCALL WRITERET;--------------------------------------------------------------感谢阅读;把DS18B20EEROM里的温度报警值拷贝回暂存器感谢阅读;-------------------------------------------------------------感谢阅读READ_E2:CALL RESETMOV A,#0CCH

;跳过ROM匹配LCALL WRITEMOV A,#0B8H

;温度报警值拷贝回暂存器CALL WRITERET;*****************************************************精品文档放心下载处理温度BCD码子程序;****************************************************感谢阅读CONVTEMP: MOV A,TEMPH ;判温度是否零下谢谢阅读ANL A,#80H!-JZTEMPC1;温度零上转CLRCMOVA,TEMPL;二进制数求补(双字节)CPLA;取反加1ADDA,#01HMOVTEMPL,AMOVA,TEMPH;-CPLAADDCA,#00HMOVTEMPH,A;TEMPHCHI=符号位MOVTEMPHC,#0BHSJMPTEMPC11TEMPC1:MOVTEMPHC,#0AH;TEMPC11:MOVA,TEMPHCSWAPAMOVTEMPHC,AMOVA,TEMPLANLA,#0FH;乘0.0625MOVDPTR,#TEMPDOTTABMOVCA,@A+DPTRMOVTEMPLC,A;TEMPLCLOW=小数部分BCDMOVA,TEMPL;整数部分ANLA,#0F0HSWAPAMOVTEMPL,AMOVA,TEMPHANLA,#0FHSWAPAORLA,TEMPLMOVTEMP_ZH,A;组合后的值存入TEMP_ZHLCALLHEX2BCD1MOVTEMPL,AANLA,#0F0HSWAPAORLA,TEMPHC;TEMPHCLOW=十位数BCDMOVTEMPHC,AMOVA,TEMPLANLA,#0FHSWAPA;TEMPLCHI=个位数BCDORLA,TEMPLCMOVTEMPLC,AMOVA,R7!-JZ TEMPC12ANL A,#0FHSWAP AMOV R7,AMOV A,TEMPHC

;TEMPHCHI=

百位数

BCDANL A,#0FHMOV TEMPHC,ATEMPC12: RET;-----------------------------------------------------------精品文档放心下载小数部分码表;-----------------------------------------------------------感谢阅读TEMPDOTTAB:DB00H,01H,01H,02H,03H,03H,04H,04H,05H,06HDB06H,07H,08H,08H,09H,09H谢谢阅读;===========================================================精品文档放心下载;显示区BCD码温度值刷新子程序;===========================================================感谢阅读DISPBCD:MOVA,TEMPLCANLA,#0FHMOV70H,A;小数位MOVA,TEMPLCSWAPAANLA,#0FHMOV71H,A;个位MOVA,TEMPHCANLA,#0FHMOV72H,A;十位MOVA,TEMPHCSWAPAANLA,#0FHMOV73H,A;百位MOVA,TEMPHCANLA,#0F0HCJNEA,#010H,DISPBCD0SJMPDISPBCD2DISPBCD0:MOVA,TEMPHCANLA,#0FHJNZDISPBCD2;十位数是0MOVA,TEMPHC!-SWAP AANL A,#0FHMOV 73H,#0AH

;符号位不显示MOV 72H,A

;十位数显示符号DISPBCD2:

RET;***************************************************************谢谢阅读温度显示子程序;***************************************************************谢谢阅读;显示数据在70H-73H单元内,用4位共阳数码管显示,P0口输出段码数据,谢谢阅读;P2口作扫描控制,每个LED数码管亮2MS时间再逐位循环。精品文档放心下载DISP1:MOVR1,#70H;指向显示数据首址MOVR5,#7FH;扫描控制字初值PLAY:MOVP0,#0FFHMOVA,R5;扫描字放入AMOVP2,AMOVA,@R1;取显示数据到AMOVDPTR,#TAB;取段码表地址MOVCA,@A+DPTR;查显示数据对应段码MOVP0,A;段码放入P0口MOVA,R5JBACC.6,LOOP5;小数点处理CLRP0.7LOOP5:LCALLDL_MS;显示2MSINCR1;指向下一个地址MOVA,R5;放回R5内JNBACC.3,ENDOUT;ACC.3=0时一次显示结束RRA;A中数据循环左移MOVR5,A;放入R5中AJMPPLAY;跳回PLAY循环ENDOUT:MOVP0,#0FFH;一次显示结束,P0口复位MOVP2,#0FFH;P2口复位RETTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH,0C7H,89H感谢阅读“0"“1"“2"“3"“4"“5"“6"“7"“8"“9"“灭"“-"“L”“H"精品文档放心下载DL_MS: MOV R6,#0AH ;2MS延时程序,LED显示程序用感谢阅读DL1: MOV R7,#64HDL2: DJNZ R7,DL2!-DJNZ R6,DL1RET;******************************************************;单字节十六进制转BCD谢谢阅读;******************************************************HEX2BCD1:MOVB,#064H精品文档放心下载DIV ABMOV R7,AMOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRET;===============================================感谢阅读;报警值TH、TL数据转换;===============================================感谢阅读ALERT_TL:MOV79H,#0CHMOV78H,#0BHMOVA,TEMP_TLMOVR0,#77HMOVB,#064HDIVABCJNEA,#01H,ALERT_TL1MOV@R0,AJMPALERT_TL2ALERT_TL1:MOVA,#0BH;显示“-”MOV@R0,AALERT_TL2:MOVA,#0AHXCHA,BDIVABDECR0MOV@R0,AMOV7DH,ADECR0MOV@R0,BMOV7EH,BRET;-----------------------------------------------ALERT_TH:MOV79H,#0DHMOV78H,#0BH!-MOVA,TEMP_THMOVR0,#77HMOVB,#064HDIVABCJNEA,#01H,ALERT_TH1MOV@R0,AJMPALERT_TH2ALERT_TH1:MOVA,#0BH;显示“-”MOV@R0,AALERT_TH2:MOVA,#0AHXCHA,BDIVABDECR0M

温馨提示

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

最新文档

评论

0/150

提交评论