数字温度计Word文档下载推荐.docx

上传人:b****5 文档编号:19719179 上传时间:2023-01-09 格式:DOCX 页数:18 大小:140.05KB
下载 相关 举报
数字温度计Word文档下载推荐.docx_第1页
第1页 / 共18页
数字温度计Word文档下载推荐.docx_第2页
第2页 / 共18页
数字温度计Word文档下载推荐.docx_第3页
第3页 / 共18页
数字温度计Word文档下载推荐.docx_第4页
第4页 / 共18页
数字温度计Word文档下载推荐.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数字温度计Word文档下载推荐.docx

《数字温度计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数字温度计Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。

数字温度计Word文档下载推荐.docx

ORG0013H

LJMPINT01

ORG0050H

START:

MOV20H,#00H;

设20H为模式单元,

为00H时循环显示,

为0FFH时指定显示

MOV2AH,#01H;

2AH单元中存指定显示的路数(ZD)

MOVIE,#85H;

允许外部中断0,1中断

SETBIT0;

设外部中断0为下降沿触发

SETBIT1;

设外部中断1为下降沿触发

MOVSP,#60H

MOV40H,#0AH

MOV41H,#0AH

MOV42H,#0AH

MOV43H,#0AH

KSH:

MOVA,20H

CJNEA,#00H,ZHIDING;

为指定显示,

转ZHIDING程序段

LCALLGETTEMP1;

为循环显示,

调显示第一路子程序

CJNEA,#00H,ZHIDING

LCALLGETTEMP2;

显示完第一路后,

调显示第二路子程序

LJMPKSH;

循环显示完第一路、第二

路后,转回开始(KSH)

ZHIDING:

MOVA,2AH;

为指定显示,从42H单元

中取要显示的路数

CJNEA,#01H,DIER;

不第一路,转DIER(第二)

是第一路,

显示完指定的第一路后,

转回开始(KSH)

DIER:

是第二路,

显示完指定的第二路后,

GETTEMP1:

;

显示第一路子程序

LCALLINI1;

DS18B20初始化

MOVA,#0CCH;

发SKIPROM命令(跳过ROM

命令,单点测温度时,执行

此命令跳过ROM来节省访问时间)

LCALLWRITE1

MOVA,#44H;

发开始温度转换命令

LCALLINI1

发SKIPROM命令

MOVA,#0BEH;

发读存储器命令(读的字节

暂存存储器命令,

在此命令后进行读操作)

LCALLREAD1;

读出已转换的温度值低字节

MOV2BH,A

读出已转换的温度值高字节

MOV2CH,A

LCALLERSH;

二进制转化成十进制

MOVR2,#200;

给R2赋值200

MOV40H,#1

KJ1:

MOVR1,#40H;

显示路数,从40H单元中开始取值

LCALLDISPL;

调用动态显示的子程序

CJNEA,#00H,BACK1;

为指定显示,转ZHIDING程序段

DJNZR2,KJ1;

重复显示第一路200次

BACK1:

RET

GETTEMP2:

显示第二路子程序

LCALLINI2

发SKIPROM命令

LCALLWRITE2

发开始温度转换命令

LCALLWRITE2

LCALLINI2

发读存储器命令

LCALLREAD2;

读出已转换的温度值

LCALLREAD2

LCALLERSH

MOVR2,#200

MOV40H,#2

KJ2:

显示第二路温度值,

从40H单元中开始取值

LCALLDISPL

CJNEA,#00H,BACK2;

DJNZR2,KJ2

BACK2:

************第一个DS18B20初始化子程序****************

INI1:

第一个DS18B20初始化子程序

L01:

CLRP3.0

L11:

CLRP3.0

DJNZR2,L11;

主机发置位脉冲

持续3μs*200=600μs

SETBP3.0;

主机释放总线控制P1.6口改为输入口

MOVR2,#30

L41:

DJNZR2,L41;

DS18B20等待2μs*30=60μs

CLRC

ORLC,P3.0;

DS18B20数据线应变低

JCL01;

DS18B20没准备好,重来

MOVR3,#80

L51:

ORLC,P3.0

JCL31;

DS18B20数据线变高,初始化成功

DJNZR3,L51;

DS18B20数据线低电平状态

可持续3μs*80=240μs

SJMPL01;

初始化失败,重来

L31:

MOVR2,#240

L21:

DJNZR2,L21;

DS18B20应答过程最少

2μs*240=480μs

***************************************************

写第一个DS18B20子程序

WRITE1:

第一个写DS18B20子程序

MOVR3,#8

WR11:

保证了连续写2位间的间隙大于1μs

MOVR4,#8

RRCA

WR21:

DJNZR4,WR21;

DS18B20在数据线变低后

2μs*8=16μs开始采样数据

MOVP3.0,C;

将命令字从低位开始按位依

次送给DS18B20

MOVR4,#20

WR31:

DJNZR4,WR31;

保证整个写过程持续2μs*20=40μs

DJNZR3,WR11;

送完整个命令字

SETBP3.0

************************************************

读第一个DS18B20子程序

READ1:

第一个读DS18B20子程序

RE11:

MOVR4,#4

NOP;

低电平持续2μs

P1.6口设为输入口

RE21:

DJNZR4,RE21;

等待2μs*4=8μs

MOVC,P3.0;

主机(从低位开始)按位读入DS18B20的数据

RRCA;

数据逐位(先低位后高位)送入A

MOVR5,#30

RE31:

DJNZR5,RE31;

保证读数据过程持续2μs*30=60μs

DJNZR3,RE11;

读完整个转换值(不包括符号位)并存入21H中,并且

*************************************************

第二个DS18B20初始化程序

INI2:

L02:

CLRP3.1

L12:

DJNZR2,L12

SETBP3.1

L42:

DJNZR2,L42

ORLC,P3.1

JCL02

MOVR6,#80

L52:

JCL32

DJNZR6,L52

SJMPL02

L32:

L22:

DJNZR2,L22

***********************************************

写第二个DS18B20子程序

**********************************************

WRITE2:

CLREA

WR12:

WR22:

DJNZR4,WR22

MOVP3.1,C

WR32:

DJNZR4,WR32

DJNZR3,WR12

读第二个DS18B20子程序

READ2:

MOVR6,#8

RE12:

NOP

RE22:

DJNZR4,RE22

MOVC,P3.1

RE32:

DJNZR5,RE32

DJNZR6,RE12

判断是否为负数

温度精度转换

ERSH:

MOVA,2CH;

把温度的高字节给了A

RLCA

JCBB;

温度为负转变补(BB1)程序段

MOVR7,#0FFH;

温度为正不点亮

ZHCH:

MOVA,2BH;

屏蔽温度低字节的小数位

ANLA,#0F0H

SWAPA

MOV2DH,A

屏蔽温度高字节的符号位

ANLA,#07H

SWAPA

ADDA,2DH

CFZH:

MOVB,#10

DIVAB

MOV41H,B;

41H中为个位

MOVB,#10

MOV42H,B;

42H中存放十位

ESHD:

低精度二十进制转换小数处理程序

JBACC.3,JF1;

小数十分位为1,则跳转到JF1

MOV43H,#00H

JF1:

MOV43H,#05H;

43H中存放的是小数

BB:

MOVR7,#0BFH;

是负数让第一个数码管显示为“-”

负数补码求补

CPLA

ADDA,#1

MOV2BH,A;

负温度低字节求补后送2BH

MOVA,2CH

ADDCA,#0

MOV2CH,A;

负温度高字节求补后送2CH

LJMPZHCH;

负数求补后转到ZHCH

********************************************************

显示子程序

*********************************************************

DISPL:

MOVDPTR,#CSTAB;

字段码表首址送DPTR

MOVR1,#40H

MOVA,#0FFH;

关闭段选

MOVP1,A

SETBP3.4;

138A脚置1,关闭所有位码

SETBP3.5;

138B脚置1

SETBP3.7;

138C脚置1

DISPL1:

MOVA,R7;

取显示的正负号

MOVP1,A;

发送字段代码

CLRP3.4;

选第一个数码管,即Y6为0

ACALLDL2MS

MOVA,@R1;

取显示缓冲区地址指针

ANLA,#0FH

MOVCA,@A+DPTR;

显示路数

CLRP3.5;

Y5=0

CLRP3.7

SETBP3.4

SETBP3.5

INCR1

MOVA,@R1

MOVCA,@A+DPTR

ANLA,#7FH

MOVP1,A

CLRP3.4;

Y3=0

CLRP3.5

CLRP3.7

ACALLDL2MS;

个位

SETBP3.7

SETBP3.5

INCR1

MOVCA,@A+DPTR

CLRP3.7;

Y4=0

CLRP3.5

十位

SETBP3.4

SETBP3.7

CLRP3.4

CLRP3.7;

Y2=0

小数

CSTAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H;

字段表显示

DB82H,0F8H,80H,90H,0FFH;

0,1,2,3,4,5,6,7,8,9,空

DL2MS:

CPLPSW.4

MOVR3,#02H;

2ms延时

DL2MS1:

MOVR4,#0FFH

DL2MS2:

DJNZR4,DL2MS2

DJNZR3,DL2MS1

**************************************************

外部中断0服务子程序

INT00:

CLREA;

外部中断0服务子程序

PUSHPSW

PUSHACC

MOVA,R2

MOVA,R5

MOVR5,#40

DEL10MS:

MOVR2,#125;

延时40*2μS*125=10MS,防抖动

DJNZR2,$

DJNZR5,DEL10MS

MOV20H,#0FFH

MOV2AH,#01H

SETBEA

POPACC

MOVR5,A

MOVR2,A

POPPSW

RETI

外部中断1服务子程序

INT01:

外部中断1服务子程序

DE10mS:

MOVR2,#125

DJNZR2,$;

DJNZR5,DE10mS

MOV20H,#0FFH

MOV2AH,#02H

SETBEA

RETI

END

四、成品调试

4.1故障

第一次接电源后,数码管没有亮;

第二次接通后,数码管显示不正常。

初步判定为虚焊。

4.2分析与排除

数码管没有亮,隔一段时间触摸各个器件,器件没有发热,说明没有正常工作。

原因很多。

经过对成品的验证、查看三实验手册,以及与其他人的共同探讨,发现原来是没有下载程序。

下载程序后,数码管有示数。

数码管显示不正常,虚焊的原因是首当其冲的。

仔细检查电路焊接处,贴片电阻有一个没有焊接,是只是点了一点锡。

对焊接处继续加工后接电源,显示正常。

用手紧捏温度传感器电阻,示数变化并接近体温。

说明实验成功。

五、总结

********************************************************************************************************************************************************************************

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 生产经营管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1