编辑: gracecats 2018-11-15

点后面的精度为0.5 LCALL DISPLAY ;

调用数码管显示子程序 LJMP MAIN DISPLAY: MOV A,29H ;

将29H中的十六进制数转换成10进制 MOV B,#100 DIV AB ;

除以100把百位数据除掉剩下个位与 ;

十位,这条指令可要可不要 MOV A,B ;

把余数给 A MOV B,#10 DIV AB ;

所得的数除以10 MOV a_bit,A ;

十位在A MOV a_bit,B ;

个位在B MOV A,29H ;

把新组成的字节的数给A SUBB A,#33 ;

把新组成的字节的数与33相减 JC swcz ;

如果Cy为1说明温度低于33度,要跳到 ;

升温操作上去 CLR C MOV A,29H ;

把新组成的字节的数给A SUBB A,#37 ;

把新组成的字节的数与37相减 JNC jwcz ;

如果Cy为0说明温度高于37度,要跳到 ;

降温操作上去 SETB P3.0 ;

如果在33度与37度之间说明不用做任何 ;

操作 SETB P3.1 LJMP ll1 swcz: CLR P3.1 ;

升温操作P3.1复位 SETB P3.0 ;

升温操作P3.0置位 LJMP ll1 jwcz: CLR P3.0 ;

降温操作P3.0复位 SETB P3.1 ;

降温操作P3.1置位 ll1: MOV DPTR,#TAB ;

指定查表启始地址 MOV R0,#10 dpl1: MOV R1,#120 ;

设置循环的次数 dplop: MOV A,38H ;

取小数位数 MOVC A,@A+DPTR ;

查个位数的7段代码 MOV P1,A ;

送出小数的7段代码 MOV P2,#00000100B ;

开小数位显示 ACALL D1MS ;

显示1ms MOV P2,#00000000B ;

关小数位显示 MOV A,a_bit ;

取个位数 MOVC A,@A+DPTR ;

查个位数的7段代码 ADD A,#80h ;

使个位后有小数点 MOV P1,A ;

送出个位的7段代码 MOV P2,#00000010B ;

开个位显示 ACALL D1MS ;

显示1ms MOV P2,#00000000b ;

关个位显示 MOV DPTR,#TAB MOV A,b_bit ;

取十位数 MOVC A,@A+DPTR ;

查十位数的7段代码 MOV P1,A ;

送出十位的7段代码 MOV P2,#00001000B ;

开十位显示 ACALL D1MS ;

显示1ms MOV P2,#00000000B ;

关十位显示 DJNZ R1, dplop DJNZ R0,dpl1 ;

1200次没循环完 RET D1MS: MOV R7,#80 ;

1MS延时(按12MHZ算) DJNZ R7,$ RET TAB: DB 3FH,06H,5BH,4FH,66H,6DH,07DH,07H,7FH,6FH END

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题