- 7
- 0
- 约2.99千字
- 约 5页
- 2017-08-09 发布于重庆
- 举报
系统程序设计.doc
系统程序设计
1.主程序
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值,温度测量每1s进行一次。其程序流程图如图9-12所示。
2.读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图9-13所示。
3.温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率,时转换时间约为750ms。在本程序设计中采用1s显示程序延时法等待转换的完成。
图 2—3主程序流程图 图 2—4 读出温度子程序流程图
4.计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图9-14所示。
5.显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高位显示位为0时,将符号显示位移入下一位。程序流程图如图18所示。
图 2-5 计算温度子程序
图 2-6 显示数据刷新子程序流程图
6.源程序清单
TIMEL EQU 0E0H
TIMEH EQU 0B1H
TEMPHEAD EQU 36H
BITST DATA 20H
TIMELSOK BIT BITST.1
TEMPONEOK BIT BITST.2
TEMPL DATA 26H
TEMPH DATA 27H
TEMPHC DATA 28H
TEMPLC DATA 29H
TEMPDIN BIT P3.7
ORG 0000H
LJMP START
ORG 000BH
LJMP T0IT
ORG 100H
START: MOV SP, #60H
CLSMEM: MOV R0, #20H
MOV R1, #60H
CLSMEM1:MOV @R0,#00H
INC R0
DJNZ R1,CLSMEM1
MOV TMOD,
MOV THO,#TIMEL
MOV TLO,#TIMEH
SJMP INIT
ERROR: NOP
LJMP START
NOP
INIT: NOP
SETB ET0
SETB TR0
SETB EA
MOV PSW,#00H
CLR TEMPONEOK
LJMP MAIN
T0IT: PUSH PSW
MOV PSW,#10H
MOV TH0,#TIMEH
MOV TL0,#TIMEL
INC R7
CJNE R7,#32H,T0IT1
MOV R7,#00H
SETB TIMELSOK
TOIT1: POP PSW
RETI
MAIN: LCALL DISP1
JNB TIMELSOK,MAIN
CLR TIMELSOK
JNB TEMPONEOK,MAIN2
LCALL READTEMP1
LCALL CONVTEMP
LCALL DISPBCD
LCALL DISP1
MAIN2: LCALL READTEMP
SETB TEMPONEOK
LJMP MAIN
INITDS1820:SETB TEMPDIN
NOP
NOP
CLR TEMPDIN
MOV R6,#0A0H
DJNZ R6,$
MOV R6,#0A0H
DJNZ R6,$
SE
原创力文档

文档评论(0)