目 录
第1章 绪论………………………………………………………………1
1.1 液位检测系统的概况………………………………………………1
1.2 国内外研究动态…………………………………………………… 1
1.3 本次毕业设计的意义……………………………………………… 2
1.4 本次毕业设计的任务……………………………………………… 2
第2章 硬件电路设计………………………………………………………3
2.1 硬件电路工作原理………………………………………………… 3
2.2 硬件电路设计……………………………………………………… 3
2.2.1 系统总体设计框图…………………………………………… 3
2.2.2 核心芯片的介绍……………………………………………… 4
2.3 硬件电路各模块设计………………………………………………10
2.3.1 电源电路设计…………………………………………………10
2.3.2 单片机最小系统电路设计……………………………………10
2.3.3 显示电路设计…………………………………………………11
2.3.4 液位传感器的接口电路设计…………………………………12
2.3.5 AT89C51与ADC0809的接口电路设计………………………13
2.3.6 报警电路设计…………………………………………………14
2.4 硬件电路总结………………………………………………………14
第3章 软件设计………………………………………………………… 17
3.1 AT89C51的I/O口应用…………………………………………… 17
3.1.1 P0口的信号输入…………………………………………… 17
3.1.2 P1口的信号输入…………………………………………… 17
3.1.3 P2口的信号输入…………………………………………… 17
3.1.4 P3口的信号输入…………………………………………… 18
3.2 软件模块设计………………………………………………………19
3.2.1 主程序的设计…………………………………………………19
3.2.2 A/D转换的设计………………………………………………20
3.2.3 显示子程序的设计……………………………………………21
3.2.4 报警子程序的设计……………………………………………24
3.3 软件设计总结………………………………………………………25
第4章 联机调试…………………………………………………………28
4.1 仿真电路调试…………………………………………………… 28
4.2 硬件电路调试…………………………………………………… 29
4.3 硬件电路调试出现的问题及解决方法………………………… 30
4.4 软件程序调试………………………………………………………30
4.5 软件程序调试出现的问题及解决方法………………………… 31
4.6 联机调试总结…………………………………………………… 31
第5章 结论………………………………………………………………32
致谢……………………………………………………………………… 33
参考文献………………………………………………………………… 34
附录……………………………………………………………………… 36
1.4 本次毕业设计的任务
本文的主要任务是以单片机为主控制器,开发一个基于液位传感器的液位监控系统,可测量并显示液位高度。设定最高液位和最低液位,当液位高于最高液位或低于最低液位时发出报警信号,提醒工作人员液位信息。研究设计内容包括:
(一)液位检测的基本原理与方法;
(二)液位检测系统的整体方案设计;
(三)模数转换电路的设计;
(四)显示电路设计;
(五)系统软件流程设计;
(六)电源电路的设计;
(七)PCB布线及硬件抗干扰设计。
设计完成之后提供一个可以应用于一般工业的液位检测及显示系统的设计方案,测量范围和测量精度满足一般工业应用需要。通过毕业设计的整个过程,可以综合运用传感器、单片机、电子电路和程序设计等方面的知识,锻炼和提高科研的能力。
3.2.2 A/D转换的设计
ADC0809芯片实现A/D转换的时间为0.1ms左右,A/D转换后得到的数字量应及时传送到单片机进行处理。
OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。
ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
START——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持 低电平。本信号有时简写为ST。
CLK——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号。
EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
CLR ST
SETB ST
CLR ST ;启动转换
JNB EOC,$ ;等待输出结果
SETB OE ;允许输出
MOV ADC,P1 ;读取A/D转换结果
CLR OE ;关闭输出
MOV A,ADC ;将A/D转换结果转换成BCD码
LED_0 EQU 30H
LED_1 EQU 31H
LED_2 EQU 32H
LED_3 EQU 33H
BUFFER EQU 34H ;显示缓存
ADC EQU 35H
TCNTA EQU 36H
TCNTB EQU 37H
H_TEMP EQU 38H ;液位上限
L_TEMP EQU 39H ;液位下限
FLAG BIT 00H
H_ALM BIT P3.0
L_ALM BIT P3.1
SOUND BIT P3.7
CLOCK BIT P2.4
ST BIT P2.5
EOC BIT P2.6
OE BIT P2.7
ORG 00H
SJMP START
ORG 0BH
LJMP INT_T0
ORG 1BH
LJMP INT_T1
START: MOV LED_0,#00H
MOV LED_1,#00H
MOV LED_2,#00H
MOV DPTR,#TABLE ;送段码表首地址
MOV H_TEMP,#153 ;204/255=0.8 高于80%报警
MOV L_TEMP,#77 ;77/255=0.3 低于30%报警
MOV TMOD,#12H ;开中断
MOV TH0,#245
MOV TL0,#0
MOV IE,#8AH
CLR C
SETB TR0 ;为ADC0808提供时钟
WAIT: SETB H_ALM
SETB L_ALM
CLR ST
SETB ST
CLR ST ;启动转换
JNB EOC,$ ;等待输出结果
SETB OE ;允许输出
MOV ADC,P1 ;读取A/D转换结果
CLR OE ;关闭输出
MOV A,ADC ;将A/D转换结果转换成BCD码
SUBB A,L_TEMP ;判断是否低于下限
JC LALM
MOV A,H_TEMP
MOV R0,ADC
SUBB A,R0 ;判断是否高于上限
JC HALM
CLR TR1
LJMP PROC
LALM: CLR L_ALM ;低位报警
SETB TR1
CLR FLAG
LJMP PROC
HALM: CLR H_ALM ;高位报警
SETB TR1
SETB FLAG
LJMP PROC
PROC: MOV A,ADC ;数值转换
MOV B,#51
DIV AB
MOV LED_2,A
MOV A,B
MOV B,#10
DIV AB
MOV LED_1,A
MOV LED_0,B
LCALL DISP ;显示A/D转换结果
SJMP WAIT
INT_T0: CPL CLOCK ;提供ADC0808时钟
RETI
INT_T1: CPL SOUND
INC TCNTA
MOV A,TCNTA
JB FLAG,I1 ;判断是低位报警还是高位报警
CJNE A,#30,RETUNE ;低位报警声
SJMP I2
I1: CJNE A,#20,RETUNE ;高位报警声
I2: MOV TCNTA,#0
INC TCNTB
MOV A,TCNTB
CJNE A,#25,RETUNE
MOV TCNTA,#0
MOV TCNTB,#0
LCALL DELAY2
RETUNE: RETI
DISP: MOV A,LED_0 ;数码管显示子程序
MOVC A,@A+DPTR ;将字段码转换显示码
CLR P2.3
MOV P0,A
LCALL DELAY
SETB P2.3
MOV A,LED_1
MOVC A,@A+DPTR
CLR P2.2
MOV P0,A
LCALL DELAY
SETB P2.2
MOV A,LED_2
MOVC A,@A+DPTR
ORL A,#80H ;显示小数点
MOV BUFFER+2,A ;送显示缓存
CLR P2.1
MOV P0,A
LCALL DELAY
SETB P2.1
RET
DELAY: MOV R6,#10 ;延时5ms
D1: MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
DELAY2: MOV R5,#20
D2: MOV R6,#20
D3: MOV R7,#250
DJNZ R7,$
DJNZ R6,D3
DJNZ R5,D2
RET
TABLE: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4 共阴极接法
DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9,
END