⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.txt

📁 智能温度系统设计,本设计主要通过以单片机为控制单元的温度采集、转化、显示并通过串口将数据传输到PC机
💻 TXT
📖 第 1 页 / 共 2 页
字号:

              MOV       DPTR,#M_OK4 ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#98H      ;第四行起始地址
LCALL SEND_I           ;调用写指令子程序
LCALL QUSHU
              RET
;==============================================================
;显示恒温水温度值子程序
;==============================================================
     SHOW_G:  MOV       A,#86H      ;设置显示位置
LCALL SEND_I
              MOV       A,SDWDG
              MOV       B,#0AH
              DIV       AB
              ADD       A,#30H      ;十位数转换为 ASCII 码
LCALL SEND_D       ;送显示 
              MOV       A,B         ;个位数
              ADD       A,#30H      ;个位数转换为 ASCII 码
LCALL SEND_D       ;送显示                    ;显示恒温水温度值子程序
              MOV       A,#87H      ;设置显示位置
LCALL SEND_I
              MOV       A,#0A1H     ;显示温度标记℃
LCALL SEND_D
              MOV       A,#0E6H
LCALL SEND_D
     SHOW_D:  MOV       A,#96H      ;设置显示位置
LCALL SEND_I
              MOV       A,SDWDD
              MOV       B,#0AH
              DIV       AB
              ADD       A,#30H      ;十位数转换为 ASCII 码
LCALL SEND_D       ;送显示 
              MOV       A,B         ;个位数
              ADD       A,#30H      ;个位数转换为 ASCII 码
LCALL SEND_D       ;送显示                    ;显示恒温水温度值子程序
              MOV       A,#97H      ;设置显示位置
LCALL SEND_I
              MOV       A,#0A1H     ;显示温度标记℃
LCALL SEND_D
              MOV       A,#0E6H
LCALL SEND_D
              RET
;==============================================================
; LCD12864 显示实际温度值子程序
;==============================================================
     SHOW_S:  MOV       A,#8DH      ;设置显示位置
LCALL SEND_I
              MOV       A,75H       ;加载十位数据
CJNE A,#00H,CONV2
      CONV1:  MOV       A,#" "      ;十位数等于0显示空格
LCALL SEND_D      ;送显示
              JMP       CONV3
      CONV2:  ADD       A,#30H      ;十位数转换成ASCII码
LCALL SEND_D      ;显示数据
      CONV3:  MOV       A,74H       ;个位
              ADD       A,#30H      ;个位数转换成ASCII码
              CALL      SEND_D      ;送显示
              MOV       A,#'.'
              CALL      SEND_D      ;送显示
              MOV       A,73H       ;加载小数位
              ADD       A,#30H      ;小数位转换成ASCII码
              CALL      SEND_D      ;送显示
              MOV       A,#8FH      ;显示温度标记℃
              CALL      SEND_I
              MOV       A,#0A1H
              CALL      SEND_D
              MOV       A,#0E6H
              CALL      SEND_D
              RET
;==============================================================
;取数子程序
;==============================================================
QUSHU: CLR A
MOVC A,@A+DPTR       ;查表取数据
LCALL SEND_D         ;送显示
              INC       DPTR
DJNZ COUNT,QUSHU
              RET
;==============================================================
;写数据子程序
;RS=1,RW=0,E=高脉冲,D0-D7=数据
;==============================================================
SEND_D: LCALL CHK_BUSY       ;写数据子程序
              SETB      RS
CLR RW
              MOV       P0,A
              SETB      E
              NOP
              NOP
CLR E
              RET
;--------------------------------------------------------------
      MING1:  SETB      P3.7
LCALL YS
CLR P3.7
              RET
         YS:  MOV       R5,#8FH
        YS1:  MOV       R6,#0FFH
YS2:   DJNZ    R6,$
DJNZ    R5,YS1
              RET
;=============================================================
;   W
;=============================================================
    
;************************按键程序***********************
     ANJIAN:  JB        K3,ANJIAN_0 ;按键K3确定修改
LCALL   YS   ;防抖动
              JB        K3,ANJIAN_0
LCALL MING1
LCALL   BBBB   
              JNB       K3,$
     ANJI_1:  JB        K2,JIAN_2   ;按键K2设定值加1
LCALL   YS   ;防抖动
              JB        K2,JIAN_2
LCALL MING1
              MOV       A,SDWDG
              INC       A
              MOV       SDWDG,A
CLR C
CJNE A,#63H,JIAN_01
              JMP       JIAN_02
              JIAN_01:          JC JIAN_02
              MOV       SDWDG,#00H
              JIAN_02:
LCALL BBBB
              JNB       K2,$
              JIAN_2:   JB      K1,ANJI_3       ;按键K1设定值减1
LCALL   YS              ;防抖动
              JB        K1,ANJI_3
LCALL MING1
              MOV       A,SDWDG
              DEC       A
              MOV       SDWDG,A
CLR C
CJNE A,#63H,JIAN_21
              JIAN_21:          JC JIAN_22
              MOV       SDWDG,#63H
              JIAN_22:          JNB K1,$
LCALL BBBB 
     ANJI_3:  JB        K3,ANJI_1   ;按键K3确定退出
LCALL   YS   ;防抖动
              JB        K3,ANJI_1
LCALL MING1
LCALL CCCC
              JNB       K3,$
LJMP ANJI_4
ANJIAN_0:LJMP ANJIAN_9
     ANJI_4:  JB        K2,JIAN_5   ;按键K2设定值加1
LCALL   YS   ;防抖动
              JB        K2,JIAN_5
LCALL MING1
              MOV       A,SDWDD
              INC       A
              MOV       SDWDD,A
CLR C
CJNE A,#63H,JIAN_31
              JMP       JIAN_32
              JIAN_31:          JC JIAN_32
              MOV       SDWDD,#00H
              JIAN_32:          LCALL CCCC
              JNB       K2,$
              JIAN_5:   JB      K1,ANJI_6       ;按键K1设定值减1
LCALL   YS              ;防抖动
              JB        K1,ANJI_6
LCALL MING1
              MOV       A,SDWDD
              DEC       A
              MOV       SDWDD,A
CLR C
CJNE A,#63H,JIAN_41
              JIAN_41:          JC JIAN_42
              MOV       SDWDD,#63H
              JIAN_42:          JNB K1,$
LCALL CCCC 
     ANJI_6:  JB        K3,ANJI_4   ;按键K3确定退出
LCALL   YS   ;防抖动
              JB        K3,ANJI_4
LCALL MING1
              JNB       K3,$
ANJIAN_9:LCALL CUN
              RET
;==============================================================
;重新对 DS18B20 初始化
;将设定的温度报警值写入 DS18B20
;==============================================================
CUN:    LCALL W18b20
              MOV       A,#0CCH     ;跳过ROM匹配
        LCALL XIEB20
              MOV       A,#4EH      ;写暂存寄存器
        LCALL XIEB20
              MOV       A,SDWDG
LCALL XIEB20
              MOV       A,SDWDD
LCALL XIEB20
       ; MOV A,#7FH        ;12位精确度
       ; LCALL XIEB20
LCALL W18B20   ;把 DS18B20 暂存器里的温度报警值拷贝到EEROM
              MOV       A,#0CCH     ;跳过ROM匹配
        LCALL XIEB20
              MOV       A,#48H      ;把暂存器里的温度报警值拷贝到EEROM
        LCALL XIEB20
              RET
;--------------------------------------------------------------
    SHOW_G1:  MOV       A,#93H      ;设置显示位置
LCALL SEND_I
              MOV       A,SDWDG
              MOV       B,#0AH
              DIV       AB
              ADD       A,#30H      ;十位数转换为 ASCII 码
LCALL SEND_D       ;送显示 
              MOV       A,B         ;个位数
              ADD       A,#30H      ;个位数转换为 ASCII 码
LCALL SEND_D       ;送显示                    ;显示恒温水温度值子程序
              MOV       A,#94H      ;设置显示位置
LCALL SEND_I
              MOV       A,#0A1H     ;显示温度标记℃
LCALL SEND_D
              MOV       A,#0E6H
LCALL SEND_D
              RET
       BBBB:
              MOV       DPTR,#M_ERRORA          ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#80H      ;第一行起始地址
          LCALL SEND_I        ;调用写指令子程序
          LCALL QUSHU

              MOV       DPTR,#M_ERRORB          ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#90H      ;第二行起始地址
          LCALL SEND_I        ;调用写指令子程序
          LCALL QUSHU
lcall show_g1
LJMP DDDD
       CCCC:
              MOV       DPTR,#M_ERRORC          ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#80H      ;第一行起始地址
          LCALL SEND_I        ;调用写指令子程序
          LCALL QUSHU

              MOV       DPTR,#M_ERRORD          ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#90H      ;第二行起始地址
          LCALL SEND_I        ;调用写指令子程序
          LCALL QUSHU
         lcall show_d
       DDDD:  MOV       DPTR,#M_ERROR3          ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#88H      ;第三行起始地址
          LCALL SEND_I        ;调用写指令子程序
          LCALL QUSHU

              MOV       DPTR,#M_ERROR4          ;指针指到显示信息区
              MOV       COUNT,#10H  ;地址计数器设为16
              MOV       A,#98H      ;第四行起始地址
          LCALL SEND_I        ;调用写指令子程序
          LCALL QUSHU
              RET
;--------------------------------------------------------------
      M_OK1:  DB        '设定低温度:    '      ;显示在第一行
      M_OK2:  DB        '设定高温度:    '      ;显示在第二行
      M_OK3:  DB        '实际温度:       '      ;显示在第三行
      M_OK4:  DB        ' 毕业设计 '            ;显示在第四行
   M_ERRORA:  DB        ' 设定高温度!   '       ;显示在第一行
   M_ERRORB:  DB        '                '      ;显示在第二行
   M_ERRORC:  DB        ' 设定低温度!   '       ;显示在第一行
   M_ERRORD:  DB        '              '        ;显示在第二行
   M_ERROR1:  DB        ' 温度探头错误!'       ;显示在第一行
   M_ERROR2:  DB        '    请检查!    '      ;显示在第二行
   M_ERROR3:  DB        '    欢迎使用   '       ;显示在第三行
   M_ERROR4:  DB        ' 毕业设计 '            ;显示在第四行
;************************************************************* 
              END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -