Red de conocimiento informático - Conocimiento del nombre de dominio - Solicitud urgente: Diseño de software en lenguaje ensamblador de controlador de temperatura y diagrama de circuito de hardware basado en el microcontrolador MCS-51

Solicitud urgente: Diseño de software en lenguaje ensamblador de controlador de temperatura y diagrama de circuito de hardware basado en el microcontrolador MCS-51

Capítulo 2 Diseño detallado del circuito de hardware

Características de rendimiento de DS18B20: 1. Adopte tecnología dedicada de bus único, que se puede utilizar a través de la línea del puerto serie o mediante otras I/ Puertos O La interfaz de línea y microcomputadora, sin pasar por otros circuitos de conversión, genera directamente el valor de temperatura medido (número binario de 9 bits, incluido el bit de signo 2. El rango de medición de temperatura es -55 ℃ -+ 125 ℃, y la medición). la resolución es 0.0625 ℃, 3, Contiene memoria ROM de solo lectura corregida con láser de 64 bits, 4. Se adapta a varios microcontroladores o computadoras del sistema, 5. Los usuarios pueden configurar los límites superior e inferior de cada temperatura por separado, 6. Contiene energía parásita suministrar. Modo de conexión del sensor de temperatura DS18B20: en el modo de fuente de alimentación parásita, DS18B20 extrae energía de la línea de señal de un solo cable, almacena la energía en el capacitor interno cuando la línea de señal DQ está en un nivel alto y consume el capacitor durante el período en que la línea de señal está en un nivel bajo. La energía eléctrica funciona hasta que llega el nivel alto y luego se carga la fuente de alimentación parásita (condensador). Como se muestra en la Figura 2.3.

2.4 Diseño del circuito de reinicio

Este diseño utiliza reinicio manual. Un interruptor de botón se conecta en paralelo al circuito de reinicio automático de encendido. Cuando se presiona el interruptor, se activa un. Aparecerá alto voltaje en el extremo RST durante un período de tiempo fijo, el dispositivo se reinicia.

2.5 Diseño del circuito oscilador de cristal

2.6 Circuito de interfaz entre el sensor de temperatura DS18B20 y el microcontrolador

DS18B20 se puede alimentar de dos maneras, una es usar fuente de alimentación modo, en este momento, el pin 1 de DS18B20 está conectado a tierra, el pin 2 se usa como línea de señal y el pin 3 está conectado a la fuente de alimentación. El otro es un método de suministro de energía parásito. Como se muestra, el puerto del microcontrolador está conectado a un bus de un solo cable. Para garantizar que se proporcione suficiente corriente dentro del ciclo de reloj efectivo DS18B20, se puede usar un tubo MOSFET para completar el pull-up. del autobús.

Cuando DS18B20 está en operación de escritura de memoria y operación de conversión A/D de temperatura, debe haber un fuerte pull-up en el bus y el tiempo máximo de encendido de pull-up es 10us. Cuando se utiliza el modo de fuente de alimentación parásita, el terminal VDD está conectado a tierra. Dado que el sistema de un solo cable tiene un solo cable, la interfaz de envío debe ser de tres estados.

2.7 Circuito de hardware general del sistema de medición de temperatura

Wei1 BIT P3.0;;Tubo digital No.1

Wei2 BIT P3.1;;Tubo digital No.1 2 bits

Wei3 BIT P3.2;;El tercer bit del tubo digital

Wei4 BIT P3.3;;El cuarto bit del tubo digital

Dian EQU 20H ;;Byte de guardado del estado del punto decimal

DisData1 EQU 30H ;;Los datos de visualización del primer dígito

DisData2 EQU 31H ;;Los datos de visualización del segundo dígito

DisData3 EQU 32H ;;Muestra datos en el tercer dígito

DisData4 EQU 33H ;;Muestra datos en el cuarto dígito

DisTime EQU 34H ;;Lee el valor de temperatura después de configurar la pantalla varias veces

;;Definición de etiqueta de unidad de almacenamiento de datos de temperatura

TempL EQU 35H;;Bit de temperatura alta

TempH EQU 36H;;Bit de temperatura baja

;;Con unidad de memoria de pieza de comunicación DS18B20 y definición de etiqueta

DS18B20 BIT P1.0;;Dirección de bit para comunicación con DS18B20

RFail BIT 21H.0; ;Restablecer indicador de fallo

Var EQU 22H ;;Byte variable, utilizado en el procesamiento de datos de temperatura

Var2 EQU 3FH ;;Byte variable

Parte principal del programa:

ORG 00H

INICIO LJMP

ORG 100H

INICIO: ;;-----Inicialización

MOV SP,# 60H ;;Inicializar puntero de pila

Set18B20:;;-----Inicialización de DS18B20

;;Restablecer DS18B20

Restablecer ACALL

JB RFail,LOOP ;;Si el reinicio falla, salte directamente a la parte de la pantalla

;;Emita el comando Saltar ROM a DS18B20

MOV A,#0CCH

Escritura ACALL

;;Emitir comando de conversión de temperatura a DS18B20

MOV A,#44H

Escritura ACALL

SetDisT:MOV DisTime,# 3 ;;Establece el siguiente cuerpo del bucle para que se repita 8 veces

LOOP:

ACALL Display ;;Display

JB RFail,Set18B20 ;;Cuando DS18B20 no se reinicia, reinicie después de mostrar una vez

DJNZ DisTime,LOOP

JNB DS18B20,$ ;;Juzgue si DS18B20 ha completado la conversión de temperatura

ACALL GetTemp ;; Lee el valor de temperatura de DS18B20

ACALL DealTemp ;;Procesamiento del valor de temperatura

ACALL SendDisDT ;;Configura el contenido de la pantalla de acuerdo con el estado actual del sistema

SJMP SetDisT ;;; ;;;;

;;Establece los parámetros de visualización para el módulo de visualización según el estado actual

SendDisDT:

MOV Dian ,#7FH ;;El bit más alto es 0. Mostrar punto decimal

;;Enviar valor de temperatura

MOV A,TempH ;;Enviar datos de orden superior

MOV VAR,TempL ;;Enviar datos de orden inferior

ACALL TransData

RET

;;A

Guarde el valor de orden superior en Var y el valor de orden inferior en Var

TransData:

;;Obtenga el valor de las unidades

MOV B,#10

DIV AB

MOV DisData2,B

;;Obtener el valor de las decenas

JZ HavNot1 ;;Juzgar si el cociente es 0

MOV B,#10

DIV AB

MOV DisData3,B

JZ HavNot2 ;; Determinar si el cociente es 0

MOV DisData4 ,A

SJMP XiaoShu ;;Saltar a la sección de procesamiento de signos de centenas

HavNot1:MOV DisData3,#10 ;;No hay ningún número que comience con el dígito de las decenas

HavNot2: MOV DisData4,#10 ;;No hay ningún número a partir del dígito de las centenas

SignJudge:;;Parte de procesamiento de símbolos

JNB VAR.7,XiaoShu ;;El signo se muestra cuando es un número negativo

MOV A,#10

CJNE A,DisData3,BWSign

MOV DisData3 ,#11 ;;El signo negativo está en el lugar de las decenas

SJMP XiaoShu

BWSign:MOV DisData4,#11 ;;El signo negativo está en el lugar de las centenas

XiaoShu:;;En la parte de procesamiento decimal, utilice el método de búsqueda de tabla para obtener el valor decimal, con una precisión de 1 decimal

MOV A,VAR

ANL A, #0FH

MOV DPTR,#XSTab

MOVC A,@A+DPTR

MOV DisData1,A

RTransTemp:

RET

XSTab: DB 0,1,1,2,3,3,4, 4,5,6,6,7,8,8,9,9

Grupo de módulos de comunicación DS18B20

-------Restablecer módulo

Restablecer: ;;Nivel alto de 3 microsegundos

SETB DS18B20

MOV R7,#250

CLR RFail ;;Borrar indicador de error de reinicio

CLR DS18B20

;;Retraso 501uS

DJNZ R7,$

SETB DS18B20 ;;Libere el bus (tire de la línea de datos alta)

;;Espere a que DS18B20 responda exitosamente para reiniciar, el tiempo máximo de espera es 69uS

MOV R7,#17

Espere:

JNB DS18B20 ,RReset ;;Si DS18B20 responde exitosamente al reinicio, ya no espere

DJNZ R7,Espera

SETB RFail ;;DS18B20 responde exitosamente al reinicio dentro de 70uS y establece el indicador de falla de reinicio en 1

RReset:

;;Delay 350Us

MOV R7,#174

DJNZ R7,$

SETB DS18B20

RET

/

;;-------Un módulo que escribe una palabra en DS18B20 y el contenido a escribir se carga en ACC por adelantado Medio

Escribir:

MOV R6,#8 ;Escribir 8 bits

WriteBit:

;;2 microsegundos de alto nivel

SETB DS18B20

MOV R7,#3

;;Nivel bajo de 7 microsegundos

CLR DS18B20

DJNZ R7,$

;; el bit bajo de ACC se envía a DS18B20

RRC A

MOV DS18B20,C

;;Retraso 60Us

MOV R7,#28

DJNZ R7,$

;;Si se han escrito 8 dígitos

DJNZ R6,WriteBit

RWrite:

SETB DS18B20

RET

/

; ;-------Leer un byte de contenido de DS18B20 y cargar el contenido leído en ACC

Leer:

MOV R6,#8 ;; Leer retorno 8 bits

MOV A,#0 ;;El contenido leído se carga en ACC

ReadBit:

;;Nivel alto de 2 microsegundos

p>

SETB DS18B20

MOV R7,#7

;;Nivel bajo de 2 microsegundos

CLR DS18B20

NOP

;;Nivel alto de 16 microsegundos

SETB DS18B20

DJNZ R7,$

;;Leer un bit Los datos se colocan en ACC

MOV C, DS18B20

RRC A

;; Retraso 66Us

MOV R7, #33

DJNZ R7,$

;;¿Se han leído 8 bits?

DJNZ R6,ReadBit

RRead:

SETB DS18B20

RET

/

;;-------Comuníquese con DS18B20, vuelva a leer el valor de temperatura de dos bytes e instálelo Ingrese TempL y TempH en ACC

GetTemp:

ACALL Reset;;Reset

JB RFail,RGetTemp;;Juzgue si el reinicio fue exitoso

; ;Reinicio exitoso

;;Emitir comando Saltar ROM a DS18B20

MOV A,#0CCH

ACALL Write

;Emitir a comando de lectura a DS18B20

MOV A,#0BEH

ACALL Write

;;Vuelva a leer el valor de temperatura inferior de 8 bits de DS18B20

ACALL Read

MOV TempL,A

;;Vuelve a leer el valor de temperatura alta de 8 bits de DS18B20

ACALL Read

MOV TempH,A

ACALL Reset ;;Reset

JB RFail,RGetTemp ;;Determinar si el reinicio es exitoso

;;Emitir el comando Saltar ROM a DS18B20

MOV A,#0CCH

Escritura ACALL

;;Emitir comando de conversión de temperatura a DS18B20

MOV A,#44H

ACALL Write

RGetTemp:

RET

Módulo de procesamiento de datos de temperatura

DealTemp:

;; Mueve la parte binaria del entero a un byte y mueve el bit de signo y la parte decimal a un byte

MOV R1,#Var

MOV Var,TempH

MOV A,TempL

>

p>

JNB Var.7,NotNeg ;;Determina si es un número negativo

CPL A ;;Si es un número negativo, inviértelo y suma 1 para obtener su valor absoluto

;;Negación parcial decimal

XRL Var,#1FH ;;

INC Var

NotNeg:

MOV TempH,A

MOV TempL,Var

RET

Módulo de visualización

-------Display los tres bytes desde el principio de DisData(30H) Guardar información de visualización

Mostrar:

MOV DPTR,#Tab

;;**Mostrar parte decimal

MOV A,DisData1

MOVC A,@A+DPTR

MOV P2,A

CLR Wei1

Retardo ACALL

SETB Wei1

;;**Dígito de unidades de visualización

MOV A,DisData2

MOVC A,@A+ DPTR

;;Procesamiento de punto decimal

ANL A,Dian

MOV P2,A

CLR Wei2

ACALL Delay

SETB Wei2

;;**Mostrar dígitos de decenas

MOV A,DisData3

MOVC A,@A+ DPTR

MOV P2,A

CLR Wei3

ACALL Retraso

SETB Wei3

;;** Mostrar dígitos de centenas

MOV A ,DisData4

MOVC A,@A+DPTR

MOV P2,A

CLR Wei4

ACALL Delay

SETB Wei4

RET

Pestaña: ;;0~9, en blanco, código negativo

DB 0C0H,0F9H,0A4H,0B0H,99H ,92H,82H,0F8H,80H,90H,0FFH,0BFH

;;Retraso

Retraso:

MOV R6,#6

DD1:MOV R5,#250

DJNZ R5,$

DJNZ R6,DD1

RET

FIN

No puedo insertar imágenes aquí. Tengo un conjunto completo de informes de diseño de cursos para esto. Si quieres contactarme, mingchaofu@126.com