JJYYY水温控制系统设计论文

时间:2024.4.5

水温控制系

摘要: 该水温控制系统采用单片机进行温度实时采集与控制。温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10~+85°C范围内, 固有测温分辨率为0.5 ℃。水温实时控制采用继电器控制电热丝和风扇进行升温、降温控制。系统具备较高的测量精度和控制精度,能完成升温和降温控制。

关键字: AT89C51   DS18B20   水温控制

目       录

1. 系统方案选择和论证……………………………………………………………2

1.1 题目要求……………………………………………………………………………………2

1.1.1 基本要求…………………………………………………………………………2

1.2 系统基本方案……………………………………………………………………………3

1.2.1 各模块电路的方案选择及论证…………………………………………………3

1.2.2 系统各模块的最终方案…………………………………………………………5

2. 硬件设计与实现……………………………………………………………………………4

2.2 主要单元电路的设计……………………………………………………………………5

2.1.1 温度采集部分设计………………………………………………………5

 2.1.2键盘显示控制部分……………………………………………5

3. 系统软件设计……………………………………………………………………………6

 主程序流程图……………………………………………………………………………7

4. 系统测试……………………………………………………………………………………7

4.1 静态温度测试……………………………………………………………………………8

4.2动态温控测量………………………………………………………………………………8

4.3结果分析……………………………………………………………………………………8

附录1:产品使用说明…………………………………………………………………8

附录2:系统硬件原理图…………………………………………………………………………9

附录3:软件程序清单……………………………………………………………………………10

参考文献…………………………………………………………………………………………19

1.系统方案选择和论证

1.1     题目要求

设计并制作一个水温自动控制系统,控制对象为1L净水,容器为搪瓷器皿。水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变。

1.1.1 基本要求

(1)温度设定范围为40~90℃,最小区分度为1℃,标定温度≤1℃。

(2)环境温度降低时(例如用电风扇降温)温度控制的静态误差≤1℃。

(3)用十进制数码管显示水的实际温度。

1.2 系统基本方案

根据题目要求系统模块分可以划分为:温度测量模块,显示电路模块,加热模块,控制模块,系统的框图如图1.2.1所示。为实现各模块的功能,分别做了几种不同的设计方案并进行了论证。

1.2.1 各模块电路的方案选择及论证

(1)控制器模块

根据题目要求,控制器主要用于对温度测量信号的接受和处理、控制电热丝和风扇使控制对象满足设计要求、控制显示电路对温度值实时显示以及控制键盘实现对温度值的设定等。对控制器的选择有以下二种方案:

图1.2.1  系统基本模块方框图

方案一:采用模拟运算放大器组成PID控制系统。对于水温控制是足够的。但要附加显示、温度设定等功能,要附加许多电路,稍显麻烦。

方案二:采用ATMEL公司的AT89C51作为系统控制器。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。基于以上分析拟订方案二,由AT89C52作为控制核心,对温度采集和实时显示以及加热装置进行控制。

(2)加热装置有效功率控制模块

根据题目,可以使用电热炉进行加热,控制电热炉的功率即可以控制加热的速度。当水温过高时,关掉电热炉进行降温处理,让其自然冷却。在制作中,我们装设一个二极管来代替表示,当水温超高时关闭电炉开启风扇散热,当需要加热时开启电炉关闭风扇。都通过二极管发光来表示。

(3)温度采集模块

题目要求温度静态误差小于等于0.2℃,温度信号为模拟信号,本设计要对温度进行控制和显示,所以要把模拟量转换为数字量。该温度采集模块有以下二种方案:

  方案一:采用温度传感器AD590K。AD590K具有较高精度和重复性,良好的非线性保证±0.1℃的测量精度。加上软件非线性补偿可以实现高精度测量。AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。送入8为A/D转换器,可以获得255级的精度,基本满足题目要求。  

方案二:采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。

基于以上分析和现有器件所限,温度采集模块选用方案二。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。

(4)键盘与显示模块  

根据题目要求,水温要由人工设定,并能实时显示温度值。采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用单列3按键进行温度设定。数码管具有:低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。同时数码管采用BCD编码显示数字,程序编译容易,资源占用较少。

1.2.2 系统各模块的最终方案

根据以上分析,结合器件和设备等因素,确定如下方案:

1. 采用AT89C52单片机作为控制器,分别对温度采集、LED显示、温度设定、加热装置功率控制。

2. 温度测量模块采用数字温度传感器DS18B20。此器件经软件设置可以实现高分辨率测量。

3. 电热丝有效功率控制采用继电器控制,实现电路简单实用,加上温度变化缓慢可以满足设计要求。

4. 显示用LED数码管显示实时温度值,用ENTER、UP、DOWN三个单键实现温度值的设定。  

图1.2.3  系统基本框图

系统的基本框图如图1.2.3 所示。CPU(AT 89C52)首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通过89S52来处理数据。数据处理后的结果就显示到数码管上。另外由键盘设定温度值送到单片机,单片机通过数据处理发出温度控制信息到继电器。DS18B20可以被编程,所以箭头是双向的。

2. 硬件设计与实现

2.1 主要单元电路的设计

2.1.1 温度采集部分设计

本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图2.2.1所示。

图2.2.1  DS18B20测温电路

2.1.2 键盘、显示、控制器部分

本设计中采用动态显示方式驱动3个七段数码管,分别显示温度的十位、个位和小数位。数码管采用共阴极,由于AT89C52单片机每个I/O的拉电流只有1—2mA。所以在位码和段码都加上了同相驱动器。

键盘采用按键开关经上拉电阻分别接P1.0、P1.1、P1.2口上,起到控制、上调和下调作用。每按上调和下调键,设定温度值增1减1。单片机XTAL2、XTAL1接12MHZj晶振,提供系统时钟基值。另RESET接复位按键。原理图如图2.2.4所示。

图2.2.4   键盘、显示、控制器部分原理图

3. 系统软件设计

系统的软件设计采用汇编语言,对单片机进行变成实现各项功能。

主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和继电器各模块。用的是循环查询方式,来显示和控制温度。

 主程序流程图

总模块流程图如图3.1.1所示。本软件设计采用循环查询来处理各个模块,温度是缓慢变化量所以可以满足性能要求。

图3.1.1所示为系统主程序流程图

图3.1.1 主程序流程图

4. 系统测试

4.1 静态温度测试

测试方式:由于种种条件的限制,采用模拟加热方式进行测试。利用继电器的指示灯来显示继电器的动作。红灯表示加热,绿灯表示降温。

测试结果如表4.1.1所示:

表4.1.1  测试结果数据

4.2动态温控测量

测试方式:加热方式用体温对传感器DS18B20进行加热。设定控制温度,记录超调温度,稳态误差。超调温度与加热的功率有关,这里不再测量。

测量结果如表4.2.1所示:

表4.2.1  测试结果数据

4.3结果分析

有以上的测量结果可见,系统基本上达到了所要求的指标,静态测温的精度主要由DS18B20来决定。

在控温指标中,影响系统的性能的因素很多。最关键的是加热系统本身的物理性质及控制算法。由于条件的限制,在本设计中采用体温进行测试。

附录1: 产品使用说明

本水温控制系统能在0~99℃范围内设定任意温度值,超出此范围将有出错显示888,之后返回到99℃或0℃。通过按ENTER键确认开始温度设定;P1.1的UP键为加1键,每按一次使设定温度值加1℃P1.2的DOWN键为减1键,每按下一次设定温度值减1℃。设置完温度要在按ERTER键确认温度设定完成,之后显示实测温度值。当温度传感器没有接入时也将有出错提示显示888。


附录2 :    系统硬件原理图   

附录3:软件程序清单

TEMPERATURE_L DATA 31H ;DS18B20低8位Buffer
        TEMPERATURE_H DATA 30H ;DS18B20高8位Buffer
           
        TEMPERATURE_HC DATA 32H   ;计算后十位的BCD码存放BUFFER
        TEMPERATURE_LC DATA 33H   ;计算后的个位和小数位的BCD码存放BUFFER
        TEMPERATURE_ZH DATA 34H   ;计算后十位和个位HEX码的存放BUFFER
   
        DIS_BUF_X DATA 35H ;数码管小数位Buffer
        DIS_BUF_G DATA 36H  ;数码管个位Buffer
        DIS_BUF_S DATA 37H  ;数码管十位Buffer

       
        KEY_BUF_G DATA 39H ;键盘输入后,的个位值
        KEY_BUF_S DATA 49H ;键盘输入后,的十位值

        K_ENTER EQU P1.0  ;输入数据确认按钮
        K_UP EQU P1.1   ;上调按钮
        K_DOWN EQU P1.2  ;下调按钮
       
        P_DS18B20 EQU P3.0  ;读取DS18B20的输入端口
        P_SWITCH EQU P1.7   ;继电器控制端口,1-加热,0-断开
        P_FAN EQU P1.5   ;风扇控制,1-降温,0-断开

 
        FLAG EQU 20H.0        ;标志位,确定是否存在DS18B20,1-存在,0-不存在
        ENTER_FLAG EQU 20H.1  ;键盘输入的标志位,为0说明键盘正在输入,为1说明键盘输入退出

;程序开始执行
        ORG 0000H
        LJMP MAIN
        ORG 0100H
MAIN:   MOV SP,#60H           ;初始化
        MOV KEY_BUF_G,#00H   ;由于KEY_BUF是由用户输入的,所以先赋值初始化
        MOV KEY_BUF_S,#00H
   
NEXT:
        LCALL  READ_TEMP ;调用读温度子程序
        JB FLAG,NORMAL    ;判断是否有DS18B20的存在
        CALL ERR              ;不存在时显示错误信息
AJMP NEXT
NORMAL: LCALL DATA_DEAL     ;处理从DS18B20得到的数据
        LCALL SET_DIS_BUF       ;赋值给DIS_BUF_X,G,S,
        LCALL DISPLAY       ;调用数码管显示子程序
        LCALL SCAN_KEY      ;扫描键盘
        LCALL SWITCH            ;处理继电器
        AJMP    NEXT

;程序名称:ERR
;功能:程序出错处理,显示三个8,即888
;入口参数:无
;出口参数:DIS_BUF_X,DIS_BUF_G, DIS_BUF_S,
 ERR:   MOV DIS_BUF_X,#08H ;如果没有找到DS18B20,那么就显示错误,错误显示为888
        MOV DIS_BUF_G,#08H     
        MOV DIS_BUF_S,#08H
        LCALL DISPLAY
        RET 


;程序名称:DATA_DEAL
;功能:处理采集后的的数据
;入口参数:TEMPERATURE_L
;出口参数:DIS_BUF_G, DIS_BUF_S,DIS_BUF_X

DATA_DEAL:
        MOV  A,TEMPERATURE_H    ;判温度是否零下
        ANL  A,#80H
        JZ  TEMPC1          ;A为0,说明是正数,跳往TEMPC1,如果是负数,则对低8为进行补码处理
        CLR  C
        MOV  A,TEMPERATURE_L    ;二进制数求补(双字节)
        CPL  A              ;取反加1
        ADD  A,#01H
        MOV  TEMPERATURE_L,A    ;取补码后存回TEMPERATURE_L,此时TEMPERATURE_L里面的值就可以表示温
;度了,不过还要继续处理一下。
        MOV  A,TEMPERATURE_H
        CPL  A
        ADDC  A,#00H               ;高位TEMPERATURE_H取反,加上从低位TEMPERATURE_L进来的位
        MOV  TEMPERATURE_H,A       ;写回TEMPERATURE_H
        MOV  TEMPERATURE_HC,#0BH
        SJMP  TEMPC11

TEMPC1: MOV  TEMPERATURE_HC,#0AH    
TEMPC11:MOV  A,TEMPERATURE_HC
        SWAP  A
        MOV  TEMPERATURE_HC,A
        MOV  A,TEMPERATURE_L
        ANL  A,#0FH              ;取A低4位(小数位,单位是0.0625),得出来的数要乘以0.0625,通过查表来算出值
        MOV  DPTR,#TEMPDOTTAB
        MOVC  A,@A+DPTR          ;查表
        MOV  TEMPERATURE_LC,A    ;TEMPERATURE_LC  LOW=小数部分 BCD
        MOV  DIS_BUF_X,A         ;小数位的BCD码送入显示buffer中

        MOV  A,TEMPERATURE_L     ;整数部分
        ANL  A,#0F0H             ;得到个位单个数值
        SWAP  A                  ;SWAP后就得到个位真正的个位
        MOV  TEMPERATURE_L,A
        MOV  A,TEMPERATURE_H
        ANL  A,#0FH
        SWAP  A
        ORL  A,TEMPERATURE_L
        MOV  TEMPERATURE_ZH,A     ;组合后的值存入TEMPERATURE_ZH
        LCALL  HtoB               ;转换HEx值成为BCD码
        MOV  TEMPERATURE_L,A      ;TEMPERATURE_L目前存入的是十位和个位的BCD编码
        ANL  A,#0F0H
        SWAP  A
        ORL  A,TEMPERATURE_HC     ;TEMPERATURE_HC LOW位 = 十位数 BCD
        MOV  TEMPERATURE_HC,A
        MOV  A,TEMPERATURE_L
        ANL  A,#0FH
        SWAP  A                   ;TEMPERATURE_LC HI位 = 个位数 BCD
        ORL  A,TEMPERATURE_LC
        MOV  TEMPERATURE_LC,A

RET
;  小数部分码表
TEMPDOTTAB:  DB   00H,00H,01H,02H,03H,03H,04H,04H,05H,06H,06H,07H,08H,08H,09H,09H
;0.0625->00H
;0.0625*2 = 0.125->01H
;0.0625*3 = 0.1875->02H
;0.0625*4 = 0.25->03H
;0.0625*5 = 0.3125->03H
;以此类推..........

;程序名称:HtoB
;功能:十六进制转 BCD
;入口参数:A
;出口参数:R7
HtoB:   MOV  B,#064H  ;100       
        DIV  AB       ;a/100       
        MOV  R7,A     ;       
        MOV  A,#0AH
        XCH  A,B
        DIV  AB              
        SWAP  A
        ORL  A,B
        RET


;程序名称:INIT_TEMP
;功能:初始化DS18B20,确定DS18B20是否是存在的
;入口参数:无
;出口参数:FLAG
INIT_TEMP:                  
        SETB    P_DS18B20
        NOP
        CLR P_DS18B20                ;主机发出延时537微秒的复位低脉冲
        MOV R0,#6BH
        MOV R1,#04H
TSR1:   DJNZ    R0,$
        MOV     R0,#6BH
        DJNZ    R1,TSR1
        SETB    P_DS18B20               ;然后拉高数据线,释放总线进入接受状态
        NOP
        NOP
        NOP
        MOV R0,#32H
TSR2:   JNB     P_DS18B20,TSR3       ;等待DS18B20回应p
        DJNZ    R0,TSR2
        LJMP    TSR4                ;延时
TSR3:   SETB    FLAG                ;置标志位,表示DS1820存在
        LJMP    TSR5
TSR4:   CLR FLAG                ;清标志位,表示DS1820不存在
        LJMP    TSR7
TSR5:   MOV R0,#06BH
TSR6:   DJNZ    R0,TSR6         ;时序要求延时一段时间
TSR7:   SETB    P_DS18B20
        RET

;程序名称:READ_TEMP
;功能:读取DS18B20的数据
;入口参数:TEMPERATURE_L,TEMPERATURE_H
;出口参数:无
READ_TEMP:
        SETB       P_DS18B20
        LCALL   INIT_TEMP     ;先复位DS18B20
        JB  FLAG,TSS2
        RET                   ;判断DS1820是否存在?若DS18B20不存在则返回
TSS2:   MOV A,#0CCH           ;跳过ROM匹配
        LCALL   WRITE_18B20
        MOV A,#44H            ;发出温度转换命令
        LCALL   WRITE_18B20;

LCALL   DISPLAY       ;等待AD转换结束,12位的话750微秒
        LCALL   INIT_TEMP     ;准备读温度前先复位
        MOV A,#0CCH           ;跳过ROM匹配
        LCALL   WRITE_18B20
        MOV A,#0BEH           ;发出读温度命令
        LCALL   WRITE_18B20
        LCALL   READ_18B20    ;将读出的温度数据保存到35H/36H
        RET

;具体的步骤:初始化完后当拉低电平开始产生写时隙-》15微妙之内送入一位数据-》15~60微妙1820来
;采样读取它  

;程序名称:WRITE_18B20
;功能:将A保存的数值写入DS1820中,有具体的时序要求,详细参考附图的说明
;入口参数:A 寄存器
;出口参数:无
WRITE_18B20:   
        MOV R2,#08H         ;一共8位数据,串行通讯
        CLR C
WR1:    CLR P_DS18B20
        MOV R3,#07H
        DJNZ    R3,$
        RRC A               ;循环右移
        MOV P_DS18B20,C
        MOV R3,#3CH
        DJNZ    R3,$                ;23*2 = 46微妙
        SETB    P_DS18B20
        NOP
        DJNZ    R2,WR1          ;A里面一共是8位,所以要送8次
        SETB    P_DS18B20       ;释放总线
        RET

;程序名称:READ_18B20
;功能:读取18B20中的数据,由于是串行通讯,每次读取一个,循环8次读取
;入口参数:TEMPRATURE_L
;出口参数:无
READ_18B20:
        MOV R4,#02H             ;将温度高位和低位从DS18B20中读出
        MOV R1,#TEMPERATURE_L  
RE00:   MOV R2,#08H             ;数据一共有8位
RE01:   CLR C
        SETB    P_DS18B20
        NOP
        NOP
        CLR P_DS18B20
        NOP
        NOP
        NOP
        SETB    P_DS18B20
        MOV R3,#09H
RE10:   DJNZ R3,RE10
        MOV C,P_DS18B20
        MOV R3,#3CH
RE20:   DJNZ R3,RE20
        RRC A
        DJNZ R2,RE01
        MOV @R1,A
        DEC R1
        DJNZ R4,RE00
        RET

;程序名称:SCAN_KEY
;功能:扫描键盘
;入口参数:DIS_BUF_G,DIS_BUF_S,
;出口参数:KEY_BUF_G,KEY_BUF_S,
SCAN_KEY:
      JB K_ENTER,QUIT           ;如果有Enter键入,则开始键盘输入
      LCALL K_DELAY
      JB K_ENTER,QUIT
      CLR ENTER_FLAG                ;每次进来都赋值输入标志,设置为0
      MOV KEY_BUF_G,DIS_BUF_G ;将当前的温度赋值给KEY_BUF,也就是说是以当前温度为基准,进行加减的
      MOV KEY_BUF_S,DIS_BUF_S
K_LOOP:
      JB ENTER_FLAG,QUIT            ;如果输入完成,ENTER_FLAG则为1,退出键盘程序
      JB K_ENTER,KUP
      CALL PRO_ENTER
KUP:  JB K_UP,KDOWN
      CALL PRO_UP
KDOWN:JB K_DOWN,LOOPA
      CALL PRO_DOWN
LOOPA:LCALL DISPLAY
      SJMP K_LOOP
QUIT: RET

;程序名称:PRO_ENTER
;功能:确认键盘输入和退出键盘输入
;入口参数:ENTER_FLAG
;出口参数:ENTER_FLAG
PRO_ENTER:
      CALL K_DELAY
      JB K_ENTER,K_LOOP ;按键抖动处理
      SETB ENTER_FLAG
      CALL K_DELAY
      RET


;程序名称:PRO_UP
;功能:数值上调处理
;入口参数:KEY_BUF_G,KEY_BUF_S,
;出口参数:DIS_BUF_G,DIS_BUF_S,
PRO_UP:
      CALL K_DELAY
      JB K_UP,K_LOOP    ;按键抖动处理
      INC KEY_BUF_G     ;个位增一
      MOV A,KEY_BUF_G
      CJNE A,#0AH,UPNEXT;个位增加到10,回0
      MOV KEY_BUF_G,#00H
      INC KEY_BUF_S     ;十位加一
      MOV A,KEY_BUF_S
      CJNE A,#0AH,UPNEXT;十位超过99,溢出了
      MOV R0,#200
ERROR1:LCALL ERR        ;出错,显示888
      DJNZ R0,ERROR1
      DEC KEY_BUF_S     ;退回99
      MOV KEY_BUF_G,#09H
UPNEXT:
      MOV DIS_BUF_G,KEY_BUF_G
      MOV DIS_BUF_S,KEY_BUF_S

MOV DIS_BUF_X,#00H
      CALL K_DELAY
      RET

;程序名称:PRO_DOWN
;功能:数值下调处理
;入口参数:KEY_BUF_G,KEY_BUF_S,
;出口参数:DIS_BUF_G,DIS_BUF_S,
PRO_DOWN:
      CALL K_DELAY
      JB K_DOWN,K_LOOP    ;按键抖动处理
      DEC KEY_BUF_G       ;个位减一
      MOV A,KEY_BUF_G
      CJNE A,#0FFH,DOWNNEXT;个位减到0,回到9
      MOV KEY_BUF_G,#09H
      DEC KEY_BUF_S        ;十位减一
      MOV A,KEY_BUF_S
      CJNE A,#0FFH,DOWNNEXT;十位低于0,溢出了
      MOV R0,#200
ERROR2:LCALL ERR           ;出错,显示888
      DJNZ R0,ERROR2
      INC KEY_BUF_S        ;退回00
      MOV KEY_BUF_G,#00H
DOWNNEXT:
      MOV DIS_BUF_G,KEY_BUF_G ;增加完成后,赋值退出,然后DISPLAY显示出来
      MOV DIS_BUF_S,KEY_BUF_S

MOV DIS_BUF_X,#00H
      CALL K_DELAY
      RET
 
K_DELAY:            ;键盘抖动延时子程序
    MOV R6,#250
DL20MS_1:
    MOV R7,#200
    DJNZ R7,$
    DJNZ R6, DL20MS_1
    RET

;继电器控制
SWITCH:
        MOV A,KEY_BUF_G     ;三个Buffer都是0的话,说明还没有输入数值,直接退出
        JNZ SNEXT
        MOV A,KEY_BUF_S
        JNZ SNEXT
        JZ  SQUIT
SNEXT:  CALL SET_DIS_BUF
    MOV A,KEY_BUF_S
    SUBB A,DIS_BUF_S
    JC COOL
    JNZ HOT                 ;十位如果相等,那么继续比较个位
    MOV A,KEY_BUF_G
    SUBB A,DIS_BUF_G
    JC COOL
HOT:  CLR P_SWITCH              ;P_SWITCH 为0说明当前温度小于设定温度,要升温,所以接继电器控制电热丝加热
      CLR P_FAN

SJMP SQUIT
COOL: SETB  P_FAN

SETB P_SWITCH        ;P_SWITCH 为1说明当前温度大于设定温度,要降温,所以接风扇
SQUIT:RET

;程序名称:SET_DIS_BUF
;功能:赋值给DIS_BUF_G, DIS_BUF_S,
;入口参数:TEMPERATURE_LC,TEMPERATURE_HC
;出口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_X
SET_DIS_BUF:
     MOV  A,TEMPERATURE_LC
         ANL  A,#0FH
         MOV  DIS_BUF_X,A                 ;小数位
         MOV  A,TEMPERATURE_LC
         SWAP  A
         ANL  A,#0FH
         MOV  DIS_BUF_G,A                 ;个位
         MOV  A,TEMPERATURE_HC
         ANL  A,#0FH
         MOV  DIS_BUF_S,A                 ;十位

RET

;程序名称:DISPLAY
;功能:显示数据到数码管中。
;入口参数:DIS_BUF_G, DIS_BUF_S, DIS_BUF_X
;出口参数:无
DISPLAY:
        MOV DPTR,#DISTAB
        MOV R3,#01H
        MOV R1,#DIS_BUF_S
DPLOP:  MOV A,@R1
        MOVC A,@A+DPTR
        MOV P2,R3
        MOV P0,A
        CJNE R3,#02H,DPNEXT
        CLR P0.7
DPNEXT: MOV A,R3
        RL A
        MOV R3,A
        DEC R1
    CALL DS1M
        CJNE R3,#08H,DPLOP
        MOV  P0,#0FFH            ;一次显示结束,P0口复位
        MOV  P2,#0FFH            ;P2口复位
        RET
DS1M:
        MOV R7,#05H

JOOP0:  MOV R6,#64H

JOOP:   DJNZ R6,JOOP
        DJNZ R7,JOOP0
        RET

;数码管TAB
DISTAB:
        DB  0C0H ;0
        DB  0F9H ;1
        DB  0A4H ;2
        DB  0B0H ;3
        DB  099H ;4
        DB  092H ;5
        DB  082H ;6
        DB  0F8H ;7
        DB  080H ;8
        DB  090H ;9
        DB  0FFH ;NONE
END

考文献:

[1].             单片机应用开发实用子程序. 边春元等 编著. 人民邮电出版社. 2005

[2].             DS18B20官方英文文档 . DS18B20官方英文站点下载

[3].             全国大学生电子设计大赛培训系列教程. 高吉祥 主编.电子工业出版社.2007

[4].             单片微型计算机原理及应用. 张毅坤等 编著. 西安电子科技大学出版社.1998

[5].             微型计算机接口技术 . 王兆月等 编著. 机械工业出版社 .2006

更多相关推荐:
电子设计大赛水温控制系统报告

天津大学20xx信芯杯电子设计大赛实验报告题目水温控制系统实验地点时间1目录目录2摘要3设计任务与要求4方案论证51单片机供电模块选择方案52温度检测电路的方案选择53显示电路的方案选择54加热方案的选择55控...

水温控制系统完整版设计报告(19xx年电子设计大赛c题)(含完整电路图,流程图,论证方案)

合肥工业大学20##安徽省电子设计大赛实验报告(一)题目:水温控制系统(1997年c题)姓名:指导老师:杨老师实验地点:逸夫楼607时间:20##年7月16号7月24号目录目录.................…

自动控制原理水温控制系统实验报告

恒温控制系统设计报告学院电子信息学院班级12级电子信息工程指导老师xxx姓名zzz学号1228436867前言水温控制无论是在工业生产中还是在日常生活中都起着非常重要的作用过低的温度或过高的温度都会使水资源失去...

温度控制系统设计报告

温度控制系统设计学院物理科学与技术学院专业电子信息科学与技术姓名学号指导教师班级中南大学物理科学与技术学院1绪论随着社会的发展科技的进步以及测温仪器在各个领域的应用智能化已是现代温度控制系统发展的主流方向特别是...

过程控制系统课程设计(锅炉汽包温度控制系统论文)

红河学院题目水塔温度控制系统目录第1章水塔温度控制系统设计方案011系统设计方案概述012水塔温度串级控制系统仿真2第2章水塔温度控制系统硬件设计321系统对象特性设计322系统检测回路设计323控制器设计52...

任务书S7-300PLC的夹套锅炉水温控制系统硬件设计

南阳理工学院毕业设计论文任务书电子与电气工程系自动化专业079642班学生陈娱乐学号96407033指导教师殷华文职称副教授一毕业设计论文题目基于SIEMENSS7300PLC的夹套锅炉水温控制系统硬件设计二毕...

基于单片机的温度控制系统毕业设计开题报告

河北农业大学毕业论文设计开题报告题目基于单片机的温度控制系统设计学生姓名王传秀学号20xx234020xx3所在院系信息科学与技术学院专业班级电子信息科学与技术指导教师贾雨琛20xx年04月9日134

水温控制系统毕业设计论文

基于单片机的水温控制系统设计摘要本水温控制系统以MCS52单片机为中心控制器件主要由温度传感模块AD转换放大模块单片机编程模块显示模块控制模块等部分组成温度信号由温度传感器AD590采集经过放大转化为电压信号进...

微机交通灯控制系统课程设计报告

微型计算机技术课程设计报告题目交通信号灯控制系统专业名称电子信息工程班级092班学号000000000l姓名xxx20xx年12月交通信号灯控制系统XXX电子信息工程学系摘要本文介绍了以8086微处理器为核心利...

单片机课程设计——交通灯控制系统设计

本科课程设计报告第1页共24页交通灯控制系统设计单片机课程设计报告河南理工大学本科课程设计报告摘要本设计是针对交通灯系统的设计由单片机AT89C51实物用AT89S52键盘LED显示交通灯演示系统组成单片机是把...

交通灯控制系统设计 实验报告

综合设计实验项目名称:交通灯控制系统设计适用年级:2所属课程:微型计算机原理班级:20##级电通6C班姓名:学号:日期:20XX/6/23一、实验目的:要求学生综合所学的软硬件知识,并应用基础实验所获得的实验设…

交通灯控制电路的设计(实验报告)

交通信号灯控制电路的设计一设计任务与要求1任务用红黄绿三色发光二极管作为信号灯设计一个甲乙两条交叉道路上的车辆交替运行且通行时间都为25s的十字路口交通信号灯并且由绿灯变为红灯时黄灯先亮5s黄灯亮时每秒钟闪亮一...

水温控制系统设计报告(13篇)