急求:基于MCS-51单片机的温度控制器汇编语言软件设计和硬件电路图

如题所述

第2章 硬件电路详细设计
DS18B20的性能特点:1、采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),2、测温范围为-55℃-+125℃,测量分辨率为0.0625℃,3、内含64位经过激光修正的只读存储器ROM,4、适配各种单片机或系统机,5、用户可分别设定各路温度的上、下限,6、内含寄生电源。温度传感器DS18B20连接方式:在寄生电源供电方式下,DS18B20从单线信号线上汲取能量,在信号线DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。如图2.3所示。
2.4 复位电路的设计
本设计采用人工复位,将一个按扭开关并联于上电自动复位电路按一下开关就在RST端出现一段时间的高电平,即器件复位。
2.5 晶振电路的设计
2.6 DS18B20温度传感器与单片机的接口电路
DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。
2.7 温度测量系统整体硬件电路
Wei1 BIT P3.0 ;;数码管第1位
Wei2 BIT P3.1 ;;数码管第2位
Wei3 BIT P3.2 ;;数码管第3位
Wei4 BIT P3.3 ;;数码管第4位
Dian EQU 20H ;;小数点状态状态保存字节
DisData1 EQU 30H ;;第1位显示数据
DisData2 EQU 31H ;;第2位显示数据
DisData3 EQU 32H ;;第3位显示数据
DisData4 EQU 33H ;;第4位显示数据
DisTime EQU 34H ;;设置显示几次后读取温度值
;;温度数据存储单元标号定义
TempL EQU 35H ;;温度高位
TempH EQU 36H ;;温度低位
;;与DS18B20通迅部分存储单元及标号定义
DS18B20 BIT P1.0 ;;与DS18B20通迅的位地址
RFail BIT 21H.0 ;;复位失败标记
Var EQU 22H ;;变量字节,温度数据处理时用到
Var2 EQU 3FH ;;变量字节
主程序部分:
ORG 00H
LJMP START
ORG 100H
START: ;;-----初始化
MOV SP,#60H ;;初始化堆栈指针
Set18B20:;;-----DS18B20初始化
;;DS18B20复位
ACALL Reset
JB RFail,LOOP ;;复位失败则直接跳至显示部分
;;对DS18B20发出Skip ROM命令
MOV A,#0CCH
ACALL Write
;;对DS18B20发出温度转换命令
MOV A,#44H
ACALL Write
SetDisT:MOV DisTime,#3 ;;设置下一个循环体的循环8次
LOOP:
ACALL Display ;;显示
JB RFail,Set18B20 ;;DS18B20复位失败时,在显示完一次后重新复位
DJNZ DisTime,LOOP
JNB DS18B20,$ ;;判断DS18B20是否已完成温度转换
ACALL GetTemp ;;从DS18B20读出温度值
ACALL DealTemp ;;温度值处理
ACALL SendDisDT ;;根据当前系统状态设置显示内容
SJMP SetDisT ;;;;;;;

;;根据当前状态给显示模块设置显示参数
SendDisDT:
MOV Dian,#7FH ;;最高位为0代表显示小数点
;;传送温度值
MOV A,TempH ;;送高位数据
MOV VAR,TempL ;;送低位数据
ACALL TransData
RET
;;A中保存高位值,Var中保存低位值
TransData:
;;取个位值
MOV B,#10
DIV AB
MOV DisData2,B
;;取十位值
JZ HavNot1 ;;判断商是否为0
MOV B,#10
DIV AB
MOV DisData3,B
JZ HavNot2 ;;判断商是否为0
MOV DisData4,A
SJMP XiaoShu ;;跳至百位符号处理部分
HavNot1:MOV DisData3,#10 ;;十位开始没有数字
HavNot2:MOV DisData4,#10 ;;百位开始没有数字
SignJudge:;;符号处理部分
JNB VAR.7,XiaoShu ;;当为负数显示符号
MOV A,#10
CJNE A,DisData3,BWSign
MOV DisData3,#11 ;;负号在十位
SJMP XiaoShu
BWSign:MOV DisData4,#11 ;;负号在百位
XiaoShu:;;小数处理部分,用查表法获取小数值,精确到小数点后1位
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
DS18B20通迅模块组
-------复位模块
Reset: ;;3微秒高电平
SETB DS18B20
MOV R7,#250
CLR RFail ;;清0复位失败标记
CLR DS18B20
;;延迟501uS
DJNZ R7,$
SETB DS18B20 ;;释放总线(拉高数据线)
;;等待DS18B20作出复位成功反应,最大等待时间为69uS
MOV R7,#17
Wait:
JNB DS18B20,RReset ;;若DS18B20在作出复位成功反应,不再等待
DJNZ R7,Wait
SETB RFail ;;70uS内DS18B20作出复位成功反应,置1复位失败标记
RReset:
;;延迟350Us
MOV R7,#174
DJNZ R7,$
SETB DS18B20
RET
/
;;-------向DS18B20写一个字的模块,要写的内容提前装入ACC中
Write:
MOV R6,#8 ;写8位
WriteBit:
;;2微秒高电平
SETB DS18B20
MOV R7,#3
;;7微秒低电平
CLR DS18B20
DJNZ R7,$
;;ACC低位送至DS18B20
RRC A
MOV DS18B20,C
;;延迟60Us
MOV R7,#28
DJNZ R7,$
;;是否已写完8位
DJNZ R6,WriteBit
RWrite:
SETB DS18B20
RET
; /
;;-------从DS18B20读回一个字节的内容,读回的内容装入ACC中
Read:
MOV R6,#8 ;;读回8位
MOV A,#0 ;;读回的内容装入ACC中
ReadBit:
;;2微秒高电平
SETB DS18B20
MOV R7,#7
;;2微秒低电平
CLR DS18B20
NOP
;;16微秒高电平
SETB DS18B20
DJNZ R7,$
;;读回一位数据放入ACC中
MOV C,DS18B20
RRC A
;;延迟66Us
MOV R7,#33
DJNZ R7,$
;;是否已读完8位
DJNZ R6,ReadBit
RRead:
SETB DS18B20
RET
/
;;-------与DS18B20通迅,读回两字节温度值,并装入ACC中TempL和TempH中
GetTemp:
ACALL Reset ;;复位
JB RFail,RGetTemp ;;判断复位是否成功
;;复位成功
;;对DS18B20发出Skip ROM命令
MOV A,#0CCH
ACALL Write
;;对DS18B20发出读命令
MOV A,#0BEH
ACALL Write
;;从DS18B20读回低8位温度值
ACALL Read
MOV TempL,A
;;从DS18B20读回高8位温度值
ACALL Read
MOV TempH,A
ACALL Reset ;;复位
JB RFail,RGetTemp ;;判断复位是否成功
;;对DS18B20发出Skip ROM命令
MOV A,#0CCH
ACALL Write
;;对DS18B20发出温度转换命令
MOV A,#44H
ACALL Write
RGetTemp:
RET
温度数据处理模块
DealTemp:
;;将整数的二进制数部分移到一个字节,符号位和小数部分移到一个字节
MOV R1,#Var
MOV Var,TempH
MOV A,TempL
XCHD A,@R1 ;;符号位、小数部分至VAR(@R1),整数部分至ACC
SWAP A
;;整数部分处理
JNB Var.7,NotNeg ;;判断是否为负数
CPL A ;;为负数,取反后加1得其绝对值
;;小数部分取反
XRL Var,#1FH ;;
INC Var
NotNeg:
MOV TempH,A
MOV TempL,Var
RET
显示模块
-------显示DisData(30H)从开始的三个字节保存显示信息
Display:
MOV DPTR,#Tab
;;**显示小数部分
MOV A,DisData1
MOVC A,@A+DPTR
MOV P2,A
CLR Wei1
ACALL Delay
SETB Wei1
;;**显示个位
MOV A,DisData2
MOVC A,@A+DPTR
;;小数点处理
ANL A,Dian
MOV P2,A
CLR Wei2
ACALL Delay
SETB Wei2
;;**显示十位
MOV A,DisData3
MOVC A,@A+DPTR
MOV P2,A
CLR Wei3
ACALL Delay
SETB Wei3
;;**显示百位
MOV A,DisData4
MOVC A,@A+DPTR
MOV P2,A
CLR Wei4
ACALL Delay
SETB Wei4
RET
Tab: ;;0~9、空白、负号的编码
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH
;;延迟
Delay:
MOV R6,#6
DD1:MOV R5,#250
DJNZ R5,$
DJNZ R6,DD1
RET
END
这里面插不了图,我有这个的整套课程设计报告,想要找我,[email protected]
温馨提示:答案为网友推荐,仅供参考