标题: 基于单片机的液位自动控制与检测仿真与汇编语言源程序 [打印本页]

作者: 养羊羊    时间: 2018-7-2 15:02
标题: 基于单片机的液位自动控制与检测仿真与汇编语言源程序
基于单片机的液位测量仪仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. LED_0    EQU    30H
  2. LED_1    EQU    31H
  3. LED_2    EQU    32H
  4. LED_3    EQU    33H
  5. BUFFER  EQU    34H           ;显示缓存
  6. ADC      EQU    35H
  7. TCNTA    EQU    36H
  8. TCNTB    EQU    37H
  9. H_TEMP   EQU    38H          ;液位上限
  10. L_TEMP   EQU    39H          ;液位下限
  11. FLAG     BIT    00H
  12. H_ALM    BIT    P3.0
  13. L_ALM    BIT    P3.1
  14. SOUND    BIT    P3.7
  15. CLOCK    BIT    P2.4
  16. ST        BIT    P2.5
  17. EOC      BIT    P2.6
  18. OE       BIT    P2.7
  19.           ORG    00H
  20.           SJMP   START
  21.           ORG    0BH
  22.           LJMP   INT_T0
  23.           ORG    1BH
  24.           LJMP   INT_T1
  25. START:   MOV    LED_0,#00H
  26.           MOV    LED_1,#00H
  27.           MOV    LED_2,#00H
  28.           MOV    DPTR,#TABLE     ;送段码表首地址
  29.           MOV    H_TEMP,#153     ;204/255=0.8  高于80%报警
  30.          MOV    L_TEMP,#77       ;77/255=0.3   低于30%报警
  31.          MOV    TMOD,#12H        ;开中断
  32.          MOV    TH0,#245            
  33.          MOV    TL0,#0
  34.          MOV    IE,#8AH              
  35.          CLR    C
  36.          SETB   TR0        ;为ADC0808提供时钟
  37. WAIT:   SETB   H_ALM
  38.          SETB   L_ALM
  39.          CLR    ST
  40.          SETB   ST
  41.          CLR    ST          ;启动转换
  42.          JNB    EOC,[        DISCUZ_CODE_1        ]nbsp;      ;等待输出结果
  43.          SETB   OE         ;允许输出
  44.          MOV    ADC,P1     ;读取A/D转换结果
  45.          CLR    OE         ;关闭输出
  46.          MOV    A,ADC       ;将A/D转换结果转换成BCD码
  47.          SUBB   A,L_TEMP       ;判断是否低于下限
  48.          JC     LALM
  49.          MOV    A,H_TEMP
  50.          MOV    R0,ADC
  51.          SUBB   A,R0           ;判断是否高于上限
  52.          JC     HALM
  53.          CLR    TR1
  54.          LJMP   PROC
  55. LALM:   CLR    L_ALM          ;低位报警
  56.          SETB   TR1
  57.          CLR    FLAG
  58.          LJMP   PROC
  59. HALM:   CLR    H_ALM          ;高位报警
  60.          SETB   TR1
  61.          SETB   FLAG
  62.          LJMP   PROC
  63. PROC:   MOV    A,ADC         ;数值转换
  64.          MOV    B,#51
  65.          DIV    AB
  66.          MOV    LED_2,A
  67.          MOV    A,B
  68.          MOV    B,#10
  69.          DIV    AB
  70.          MOV    LED_1,A
  71.          MOV    LED_0,B
  72.          LCALL  DISP            ;显示A/D转换结果
  73.          SJMP   WAIT
  74. INT_T0:  CPL    CLOCK          ;提供ADC0808时钟
  75.          RETI
  76. INT_T1:  CPL    SOUND
  77.          INC    TCNTA
  78.          MOV    A,TCNTA
  79.          JB     FLAG,I1         ;判断是低位报警还是高位报警
  80.          CJNE   A,#30,RETUNE     ;低位报警声
  81.          SJMP   I2
  82.       I1: CJNE   A,#20,RETUNE       ;高位报警声
  83.       I2: MOV    TCNTA,#0
  84.          INC    TCNTB
  85.          MOV    A,TCNTB
  86.          CJNE   A,#25,RETUNE
  87.          MOV    TCNTA,#0
  88.          MOV    TCNTB,#0
  89.          LCALL  DELAY2
  90. RETUNE:  RETI
  91. DISP:    MOV    A,LED_0         ;数码管显示子程序
  92.          MOVC   A,@A+DPTR       ;将字段码转换显示码
  93.          CLR    P2.3
  94.          MOV    P0,A
  95.          LCALL  DELAY
  96.          SETB   P2.3
  97.          MOV    A,LED_1
  98.          MOVC   A,@A+DPTR
  99.          CLR    P2.2
  100.          MOV    P0,A
  101.          LCALL  DELAY
  102.          SETB   P2.2
  103.          MOV    A,LED_2
  104.          MOVC   A,@A+DPTR
  105. ORL    A,#80H                            ;显示小数点
  106.               MOV    BUFFER+2,A       ;送显示缓存
  107.          CLR    P2.1
  108.          MOV    P0,A
  109.          LCALL  DELAY
  110.          SETB   P2.1
  111.          RET
  112. DELAY:  MOV    R6,#10          ;延时5ms
  113. D1:      MOV    R7,#250
  114.          DJNZ   R7,$
  115.          DJNZ   R6,D1
  116.          RET
  117. DELAY2: MOV    R5,#20
  118. D2:      MOV    R6,#20
  119. D3:      MOV    R7,#250
  120.          DJNZ   R7,$
  121.          DJNZ   R6,D3
  122.          DJNZ   R5,D2
  123.          RET
  124. TABLE:  DB     3FH,06H,5BH,4FH,66H    ;0,1,2,3,4 共阴极接法
  125.          DB     6DH,7DH,07H,7FH,6FH     ;5,6,7,8,9,
  126.          END

复制代码


所有资料51hei提供下载:

基于单片机的液位自动控制与检测.rar (20.69 KB, 下载次数: 43)



作者: liuhi    时间: 2019-12-10 17:00
LM液压传感器在哪买
作者: WSY1997    时间: 2020-4-29 09:30
这个程序有自动控制部分吗?只有警报啊




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1