339 基于单片机数字温度计设计(仿真 程序 报告)【毕设课设】

完整版 电路图和程序代码 下载地址

https://pan.baidu.com/s/1k0Oo_BN8qDBL8oKiMFd7mg?pwd=8888

部分代码展示

RTE EQU 22H
RTG EQU 30H
RTO EQU 32H
RSH EQU 35H
TEMPL EQU 40H;存放温度值低位
TEMPH EQU 41H;存放温度值高位
TEMP EQU 50H
ORG 000H
LJMP  MAIN
ORG 1000H
MAIN:MOV SP,#60H
     SETB P1.0
	 LCALL RST;调用复位子程序
	 JNB RTO,MA;判断复位是否成功
	 MOV A,#0CCH;跳过RAM
	 LCALL WRS ;调用写子程序
	 MOV A,#44H;启动温度转换
	 LCALL WRS
	 LCALL RST
	 MOV A,#0CCH
	 LCALL WRS
	 MOV A,#0BEH;读内部RAM命令
	 LCALL WRS
	 NOP
	 LCALL RRS
	 NOP
	 LCALL WDZ;调用温度转换子程序
	 LCALL SMX;调用数码管显示程序
 MA: LJMP MAIN

/*DS18B20初始复位程序*/
RST: SETB P1.0
     NOP 
	 NOP 
	 CLR P1.0 ;下拉数据线
	 LCALL DELAY1;调用延时程序延时540微妙
	 NOP
	 SETB P1.0;释放数据线
	 MOV RTE,#03H;短暂延时等待
RTD: DJNZ RTE,RTD
	 JNB P1.0,RTH;判断是否收到复位成功信号
	 CLR RTO;复位失败RT0清零
	 NOP
	 ACALL RTA
RTH: SETB RTO ;复位成功RT0置一
     NOP
     MOV RTG ,#5BH;短暂延时
RTT: DJNZ RTG ,RTT
RTA: SETB P1.0;使P1.0置一
     RET

/*DS18B20写时序子程序*/
WRS: CLR C ;
     MOV R4,#8;字节数
     NOP
W0:	 CLR P1.0
	 MOV R2,#05H
W1:	 DJNZ R2, W1
     RRC A ;循环右移
	 MOV P1.0,C	;将结果送入
	 NOP
	 MOV R3,#28;延时
W2:	 DJNZ R3,W2
     SETB P1.0
	 DJNZ R4,W0;判断送完没
	 SETB P1.0
	 RET

/*DS18B20读时序子程序*/
RRS:  MOV  R5, #2;字节行数
      MOV  R0,#40H
RL0	: MOV R6,#8;每行字节数
RL1: CLR C 
	 SETB P1.0
	 NOP 
	 NOP 
	 NOP 
	 CLR P1.0
	 MOV RSH ,#05H ;延时
RL2: DJNZ RSH,RL2
     NOP
	 SETB P1.0
	 NOP
	 NOP
	 NOP
	 MOV C,P1.0	;将P1.0位信息放到C
	 MOV R2, #30
RL3: DJNZ R2,RL3
     NOP
	 NOP
	 RRC A
	 DJNZ  R6,RL1;判断送完没
	 MOV @R0,A ;将数据放在TEMPL中
	 INC R0	   ;TEMPH
	 DJNZ R5, RL0;判断整个数据送完没
	 RET

/*温度转换子程序*/
WDZ:MOV A,TEMPH
    ANL A,#80H;判断温度正负
    JZ  WD2;正温度跳转WD2
	SETB  P1.1;负温度则使P1.1置1
	CLR C	  ;负温度转换部分
    MOV A,TEMPL
	CPL A ;取反
	ADD  A,#01H;加1
	MOV TEMPL,A
	MOV A,TEMPH
	CPL A
	ADDC A,#00H
 	MOV TEMPH,A
WD1:MOV A,TEMPL
    ANL A, #0F0H;屏蔽小数位
    SWAP A
    MOV TEMPL,A
    MOV A,TEMPH
    ANL A,#0FH	;屏蔽符号位
    SWAP A
    ORL A,TEMPL
    MOV TEMP,A	;将转换后温度置及8字节数据放在TEMP
    RET
WD2:CLR P1.1 ;使P1.1清零作为正温度标志
    LCALL WD1 ;转到温度处理部分
	RET
/*数码管显示子程序*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值