液位检测及显示电路设计:基于AT89C51单片机的方案

目 录
第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











物联沃分享整理
物联沃-IOTWORD物联网 » 液位检测及显示电路设计:基于AT89C51单片机的方案

发表评论