3.2读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图8示
图9 温度转换流程图
3.3温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图9所示
3.4 计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图10所示。
图10 计算温度流程图 图11 显示数据刷新流程图
3.5 显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为0时将符号显示位移入下一位。程序流程图如图11。
4总结与体会
经过将近三周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,举个例子,以前写的那几次,数据加减时,我用的都是BCD码,这一次,我全部用的都是16进制的数直接加减,显示处理时在用除法去删分,感觉效果比较好,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。
从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。
参考文献
[1] 李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,1998
[2] 李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994
[3] 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989
[4] 廖常初.现场总线概述[J].电工技术,1999.
附:
数字温度计程序清单
S1OK EQU 5FH
TEMPUTER EQU 39H
TEMPH EQU 5EH
TEMPL EQU 5DH
MS50 EQU 5CH
SIGN EQU 5BH
S1 BIT P1.0
S2 BIT P1.1
S3 BIT P1.2
S4 BIT P1.3
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TOIT
ORG 0030H
MAIN: MOV SP, #60H
MOV TMOD, #01H
MOV TH0, #3CH
MOV TL0, #0B0H
SETB ET0
SETB TR0
SETB EA
MOV TEMPH, #30
MOV TEMPL, #9
MOV TEMPUTER, #15 ;温度最始值
MOV S1OK, #00H
MOV SIGN, #00H
MOV 38H, #0BH
MOV 37H, #0CH
MOV 36H, #0BH
ACALL DISP
ACALL T1S
; *****************************************
; 主程序
START: JB S1, NET1
ACALL T12MS
JB S1, NET1
JNB S1, $
INC SIGN
MOV A, SIGN
CJNE A, #1, TIAO
ACALL TIAOTL
&
MOV SIGN, #0
ACALL TIAOTH
; *****************************************
NET1: MOV A, S1OK
CJNE A, #1, START
MOV A, TEMPUTER
SUBB A, TEMPH
JNB ACC.7, ALEM
MOV A, TEMPUTER
SUBB A, TEMPL
JB ACC.7, ALEM
SETB P2.1
ACALL WENDU
ACALL DISP
MOV S1OK, #00H
AJMP START
ALEM: MOV 36H, #0CH
MOV 37H, #0CH
MOV 38H, #0CH
CLR P2.1
ACALL DISP
ACALL T1S
LCALL WENDU
LCALL DISP
MOV S1OK, #00H
SJMP START
;*****************************************
TIAOTL:MOV 50H, TEMPUTER
MOV 37H, TEMPL
ACALL BIN_BCD
ACALL DISP
ACALL T12MS
ACALL T12MS
ACALL T12MS
ACALL T12MS
MOV 36H, #0AH
MOV 37H, #0AH
MOV 38H, #0AH
ACALL DISP
ACALL T12MS
ACALL T12MS
ACALL T12MS
ACALL T12MS
JB S2, ADD1
ACALL T12MS
JB S2, ADD1
JNB S2, $
INC TEMPL
MOV A, TEMPL
CJNE A, #100, ADD1
MOV TEMPL, #0
ADD1: JB S3, ADD2
ACALL T12MS
&
JNB S3, $
DEC TEMPL
MOV A, TEMPL
CJNE A, #00 , ADD2
MOV TEMPL,#100
ADD2: JB S4, TIAOTL
ACALL T12MS
JB S4, TIAOTL
JNB S4, $
MOV TEMPUTER, 50H
LJMP START
; 高位调整
; *****************************************
TIAOTH:MOV 50H, TEMPUTER
MOV 37H, TEMPH
ACALL BIN_BCD
ACALL DISP
ACALL T12MS
ACALL T12MS
ACALL T12MS
ACALL T12MS
MOV 36H, #0AH
MOV 37H, #0AH
MOV 38H, #0AH
ACALL DISP
ACALL T12MS
ACALL T12MS
ACALL T12MS
ACALL T12MS
JB S2, ADD11
ACALL T12MS
JB S2, ADD11
JNB S2, $
INC TEMPH
MOV A, TEMPH
CJNE A, #100, ADD11
MOV TEMPH, #0
ADD11: JB S3, ADD22
ACALL T12MS
JB S3, ADD22
JNB S3, $
DEC TEMPH
MOV A, TEMPH
CJNE A, #00 , ADD22
MOV TEMPH,#100
ADD22: JB S4, TIAOTH
ACALL T12MS
JB S4, TIAOTH
JNB S4, $
MOV TEMPUTER, 50H
LJMP START