邵阳学院毕业设计(论文)
图3.5 键盘阈值设定子程序流程图
根据流程图设计出键盘阈值设定的子程序的关键是查表,找出”F”键和”0-9”这些数字键并根据进行相应的处理,最后设定一个理想的阈值。其设计的阈值设定子程序如下所示。 阈值设定子程序:
ORG 1000 LCALL TSJP
SFSZK: INC DPTR
MOV A, 60H
MOV DPTR, #LIST
MOVC A , @A+DPTR ;查显示段码 MOV 50H, A ;判断是否为数字键按下
CLR C
SUBB A, #30H
JC NOSHU0
MOV A, 50H
25
邵阳学院毕业设计(论文)
CLR C SUBB A, #3AH JNC NOSHU0
…
3.4显示子程序
本课题显示为LCD显示。显示子程序分为开机界面显示程序,提示界面显示程序阈值设定界面显示程序,测量界面结果显示程序。
图3.6 显示子程序流程图
其实LCD的功能就是显示,使人们更直观方便的弄清楚这个浓度到底有多少,从而减少了事故的发生概率;同时也是本设计的目的所在。下面为显示子程序设计程序。
26
邵阳学院毕业设计(论文)
显示子程序:
E BIT P1.0 ;使能信号线 RW BIT P1.6 ;读/写信号线 RS BIT P1.3 ;数据/指令信号线
CS1 BIT P1.1 ;左半屏控制信号线1为左2为右
;空间分配
COM EQU 20H ;指令专用寄存器 DAT EQU 21H ;数据专用寄存器
CODES EQU 22H ;字在表格中的位置专用寄存器 YE EQU 23H ;字所在的页专用寄存器 LIE EQU 24H ;字所在的列专用寄存器 ALL_YE EQU 25H ;图形的总页数专用寄存器 ALL_LIE EQU 26H ;图形的总列数专用寄存器
CS EQU 27H ;左右半屏控制专用寄存器,为0时在左半屏,为1时在右半屏 HANG EQU 28H ; 所在行寄存器 ORG 1000H
LCALL INIT ;初始化 LCALL CLEAR
…
3.5报警子程序
报警子程序执行之前,键盘设定的报警阈值转换为压缩的BCD码并存放在两个存储单元中。传感器输入值A/D转换后,调用比较程序,经过数据处理后显示的测量值与阈值比较,小于阈值则继续执行显示程序。若大于阈值则将单片机的P1.2、
P1.4两端口清零进行声光报警。40H、4lH、42H、43H单元存放A/D转换后,
并进行十进制转换后的结果。40H和50H分别存放的是处理后的测量值与阈值的千位的压缩BCD码,4lH和5lH分别存放的是处理后的测量值与阈值的百位,42H和52H分别存放处理后的测量值与阈值的十位压缩的BCD码,43H和53H分别存放的是处理后的测量值与阈值的个位的压缩BCD码。程序首先对40H、50H中的值进行比较大小,如果40H中的值大于50H中的值,则进行报警。依此类推,比较4lH和51H,42H和52H,43H和53H。
27
邵阳学院毕业设计(论文)
图3.7 报警子程序流程框图
此报警程序的设置比较简单就是从高位比到低位,只要采集到的数据大于设定的阈值就可以实现声光报警功能。其子程序如下。 声光报警子程序:
ORG 1000H CLR C
MOV R0,43H MOV R1,53H MOV R3,#04H SETB P1.2
28
邵阳学院毕业设计(论文)
SETB P1.4
PDCX:MOV A,@R0;判断程序 SUBB A,R1
JNC SGBJ;转声光报警子程序 DEC R0 DEC R1 DJNZ R3,PDCX RET SGBJ: CLR P1.2 CLR P1.4 RET
29

