数码管温度计c语言,单片机温度计汇编语言详细注释 数码管显示

RG 0000H  ;目标程序存放地址从0000H开始

DQ EQU P0.0          ;赋值DQ为P0.0

MOV DPTR,#TAB ;数据指针地址

ACALL CHU ;初始化序列

MOV A,#0CCH ;发送忽略ROM指令

ACALL XUS ;调用数据发送子程序

MOV A,#4EH ;发送写暂存器指令

ACALL XUS ;调用数据发送子程序

MOV A,#7DH ;设定TH上限报警值125℃

ACALL XUS ;调用数据发送子程序

MOV A,#0B7H ;设定TL下限报警值零下55℃

ACALL XUS ;调用数据发送子程序

MOV A,#03H ;设定默认精度12位

ACALL XUS ;调用数据发送子程序

MOV A,#0CCH ;发送忽略ROM指令

ACALL XUS ;调用数据发送子程序

MOV A,#48H ;发送拷贝暂存器指令,将暂存器的数据保存至EEPROM

ACALL XUS ;调用数据发送子程序

ACALL SI  ;调用延时子程序大于10us即可

LSP:ACALL CHU ;初始化序列

MOV A,#0CCH ;发送忽略ROM指令

ACALL XUS ;调用数据发送子程序

MOV A,#44H ;发送温度转换指令

ACALL XUS ;调用数据发送子程序

ACALL YUA  ;调用延时子程序

ACALL YUA  ;调用延时子程序

VPA:ACALL SXI  ;调用温度处理模块程序

MOV B,A          ;第一次温度值放于寄存器B

ACALL SXI ;调用温度处理模块子程序

CJNE A,B,VPA ;比较两次温度是否相等

ACALL ACS  ;调用温度数据裁分程序

MOV A,15H  ;拷贝数据位数标志

CJNE A,#0FFH,LSL  ;判断数据位数

MOV A,R4  ;获取百位数据

ACALL ZXM ;调用字形码查询子程序

MOV P3,#01H         ;百位数码管开启

MOV P2,A  ;加载百位数码管字形码

ACALL YUA ;调用延时子程序

SJMP LSC  ;转移至十位数码管显示程序段

LSL:MOV A,13H  ;拷贝温度数据符号标志

CJNE A,#0F0H,LSC ;判断温度正负值

MOV A,14H  ;拷贝十位标志位

CJNE A,#0FFH,IEC ;判断数据是否是2位数据

MOV P3,#01H         ;开启百位数码管

MOV P2,#0BFH  ;显示负号字形码

ACALL YUA  ;调用延时子程序

SJMP YYV ;转移至个位数据程序段

IEC:MOV P3,#02H        ;单独开启十位数码管

MOV P2,#0BFH  ;显示负号字形码

ACALL YUA  ;调用延时子程序

SJMP POB  ;转移至个位数码管

LSC:MOV A,14H  ;拷贝十位数据标志

CJNE A,#0FFH,POB ;判断数据是否是十位数据

YYV:MOV A,R3 ;拷贝十位温度值

ACALL ZXM  ;调用字形码查询子程序

MOV P3,#02H        ;单独开启十位数码管

MOV P2,A   ;加载温度值数据

ACALL YUA  ;调用延时子程序

POB:MOV A,R2  ;拷贝个位温度值数据

ACALL ZXM        ;调用字形码查询子程序

MOV P3,#04H         ;单独开启个位数码管

MOV P2,A  ;加载个位数据值

ACALL YUA ;调用延时子程序

MOV A,R5  ;拷贝错误标志寄存器数据

CJNE A,#0CCH,LSP ;判断数据是否正常接收,由从机产生的未知错误

SJMP $   ;数据接收严重错误,或设置错误,等待用户修改

CHU:CLR DQ   ;初始化开始                                 //初始化序列//

MOV 10H,#240  ;设定复位脉冲480us

DJNZ 10H,$                ;复位脉冲需要 X>480us

SETB DQ     ;复位脉冲发送结束

MOV 10H,#30 ;设定存在脉冲等待时间

DJNZ 10H,$ ;等待时间需要15us-60us

MOV 10H,#60  ;设定存在脉冲存在时间(小于等于)≤180us

EPC:JB DQ,CPE      ;检测是否有存在脉冲  k=30us

SJMP SPC     ;检测到存在脉冲

CPE:DJNZ 10H,EPC ;判断存在脉冲存在时间是否超出?  k=120us

SJMP CHU  ;未检测到存在脉冲,重新初始化序列

SPC:JNB DQ,SPC ;等待存在脉冲结束

RET                           ;初始化序列完成,程序返回!!!

XUS:MOV 11H,#8 ;定义数据字节字数8bit         //数据发送程序//

RKP:CLR DQ ;写时序开始

RRC A ;加载发送数据

MOV 10H,#28        ;设定数据保持时间

JNC EBP ;判断数据写时序段

SETB DQ        ;数据写1时序

EBP:DJNZ 10H,$ ;写时序保持56us

SETB DQ        ;据写时序结束数

DJNZ 11H,RKP ;数据字节数

RET                                   ;数据发送完成,程序返回!!!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值