找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3253|回复: 2
打印 上一主题 下一主题
收起左侧

基于单片机的液位自动控制与检测仿真与汇编语言源程序

[复制链接]
跳转到指定楼层
楼主
基于单片机的液位测量仪仿真原理图如下(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)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:571534 发表于 2019-12-10 17:00 | 只看该作者
LM液压传感器在哪买
回复

使用道具 举报

板凳
ID:717401 发表于 2020-4-29 09:30 | 只看该作者
这个程序有自动控制部分吗?只有警报啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表