单片机课设数字温度计设计.docx
- 文档编号:12000314
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:26
- 大小:341.66KB
单片机课设数字温度计设计.docx
《单片机课设数字温度计设计.docx》由会员分享,可在线阅读,更多相关《单片机课设数字温度计设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机课设数字温度计设计
1引言
单片机是指一个集成在一块芯片上的完整计算机系统。
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
单片机具有优异的性能价格比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点。
单片机的应用:
1、在智能仪器仪表中的应用:
在各类仪器仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比;2、在机电一体化中的应用:
机电一体化产品是指集机械、微电子技术、计算机技术于一本,具有智能化特征的电子产品;3、在实时过程控制中的应用:
用单片机实时进行数据处理和控制,使系统保持最佳工作状态,提高系统的工作效率和产品的质量;4、在人类生活中的应用:
目前国外各种家用电器已普通采用单片机代替传统的控制电路;5、在其它方面的应用:
单片机除以上各方面的应用,它还广泛应用于办公自动化领域、商业营销领域、汽车及通信、计算机外部设备、模糊控制等各领域中。
这里,将利用单片机设计模拟交通信号灯。
随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
2总体设计方案
2.1功能简介
该温度计的基本范围为-50℃-110℃,精度误差小于0.5℃,数码管直接显示DS18B20所测量的温度,超出-50~110℃范围时喇叭报警并且数码管开始闪烁,在温度范围内时喇叭停止报警并且数码管停止闪烁。
2.2设计思路
AT89C51作为温度测试系统设计的核心器件,具有低电压供电和体积小等特点。
该器件是INTEL公司生产的MCS-5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。
芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O接口等计算机所需的基本功能部件。
程序存储在单片机的程序存储器中,运行过程由程序控制。
温度传感器选用达拉斯公司的单线数字温度传感芯片DS18B20。
它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DS18B20。
每个芯片内有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID号码。
其测温范围是-55~128℃,测温分辨率在12位时精度为0.0625℃。
DS18B20简化了温度器件与计算机的接口电路,使得电路简单,使用更加方便。
显示部分使用4位LED数码管来作为温度的直接输出,使用1位喇叭作为报警灯,当温度超出-50~110℃时,喇叭报警和数码管闪烁来提示。
采用单片机汇编程序语言设计温度计的程序,对DS18B20进行初始化、读、写,读取温度,数据的转换,温度显示和报警处理等等。
3硬件设计
3.1AT89C51
图1AT89C51引脚图
本次设计需要注意的几个端口:
P0口(39—32):
是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。
可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输入端用。
在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。
P3口(10—17):
是一组带有内部上拉电阻的8位双向I/O口,,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。
作输出端口时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除可作为一般的I/O口线外,更重要的用途是它的第二功能,如图2所示:
图2端口引脚P3
/Vpp(31):
内部和外部程序存储器选择线。
=0时访问外部ROM0000H—FFFFH;
=1时,地址0000H—0FFFH空间访问内部ROM,地址1000H—FFFFH空间访问外部ROM。
本次设计
接高电平。
XTAL1(19)和XTAL2(18):
使用内部振荡电路时,用来接石英晶体和电容;使用外部时钟时,用来输入时钟脉冲。
RST/VPD(9):
复位信号输入端。
AT89S51接能电源后,在时钟电路作用下,该脚上出现两个机器周期以上的高电平,使内部复位。
第二功能是VPD,即备用电源输入端。
当主电源Vcc发生故障,降低到低电平规定值时,VPD将为RAM提供备用电源,发保证存储在RAM中的信号不丢失。
3.2DS18B20
DS18B20测温原理如图3所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图3DS18B20测温原理
DS18B20测温范围在-55~+125℃;转换精度9~12位进制数,可编程确定转换的位数;测温分辨率为9位精度为0.5℃,12位精度为0.0625℃;转换时间:
9位精度为93.75ms、10位精度为187.5ms、12位精度为750ms;内部有温度上、下限告警设置。
DS18B20内部结构[2]如图4所示:
图4DS18B20内部结构
DS18B20功能命令[2]如表1所示:
表1DS18B20功能命令表
命令
功能描述
代码
CONVERT
启动温度转换
44H
READSCRATCHPAD
读取温度寄存器
BEH
READROM
读DS18B20的序列号
33H
WRITESCRATPAD
将数据写入暂存器的第2、3字节中
4EH
MATCHROM
匹配ROM
55H
SEARCHROM
搜索ROM
F0H
ALARMSEARCH
报警搜索
ECH
SKIPROM
跳过读序列号的操作
CCH
READPOWERSUPPLY
读电源供给方式,0寄生,1外部电源
B4H
其连线使用如图5所示(2接P3.6):
图5DS18B20连线图
由于DS18B20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。
系统对DS18B20的各种操作必须按协议进行。
操作协议为:
初始化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。
3.3报警电路
报警电路采用喇叭做报警灯,使用74LS04反向驱动,电路图如图6所示:
图6报警电路
3.4温度显示电路
四位共阴极数码管,能够显示带一位小数的正负温度。
零下时:
1显示负号,2显示十位,3显示个位,4显示小数位。
零上时:
1显示百位,2显示十位,3显示个位,4显示小数位。
当温度超过109.5或低于49.5时,四个数码闪烁。
如图7所示:
图7温度显示电路
4程序设计
4.1程序流程图
图8程序流程图
4.2初始化程序
使用DS18B20时,单片机先向DS18B20送出复位信号,单片机将数据拉低并保持480~960μs;再释放数据线,由上拉电阻拉高15~60μs;然后再由DS18B20发出低电平60~240μs,就完成了复位操作。
程序如下:
XIAO_BITEQU30H;存小数数据单元
GE_BITEQU31H;存个位数据单元
SHI_BITEQU32H;存十位数据单元
BAI_BITEQU33H;存百位数据单元
DI_8BITEQU34H;低8位
GAO_8BITEQU35H;高8位
DQEQUP3.7;数据通信线
ORG0000H
LJMPSTART
ORG0030H
START:
MOVSP,#60H
LCALLZHUANHUAN
LCALLCHULI
LCALLDISPLAY
LJMPSTART
INIT_1820:
SETBDQ
NOP
CLRDQ
MOVR1,#3
DU_1:
MOVR0,#107
DJNZR0,$
DJNZR1,DU_1
SETBDQ;拉高数据线
NOP
NOP
NOP
MOVR0,#25H
DU_2:
JNBDQ,DU_3;等待DS18B20回应
DJNZR0,DU_2
LJMPDU_4;延时
DU_3:
SETBF0;置标志位,表示DS1820存在
LJMPDU_5
DU_4:
CLRF0;清标志位,表示DS1820不存在
LJMPDU_7
DU_5:
MOVR0,#117
DU_6:
DJNZR0,DU_6;时序要求延时一段时间
DU_7:
SETBDQ
RET
4.3读取程序
读数据之前,单片机先将数据线拉低,再释放。
DS18B20在数据线从高电平跳低后15μs内将数据送到数据线上。
单片机在15μs后读数据线。
程序如下:
READ_1820:
MOVR4,#2;将温度高位和低位从DS18B20中读出
MOVR1,#DI_8BIT;低位存入DI_8BIT,高位存入GAO_8BIT
RE0:
MOVR2,#8
RE1:
CLRC
SETBDQ
NOP
NOP
CLRDQ
NOP
NOP
NOP
SETBDQ
MOVR3,#9
RE2:
DJNZR3,RE2
MOVC,DQ
MOVR3,#23
RE3:
DJNZR3,RE3
RRCA
DJNZR2,RE1
MOV@R1,A
INCR1
DJNZR4,RE0
RET
4.4温度转换
读出后转换的温度值.其程序如下:
ZHUANHUAN:
LCALLINIT_1820;先复位DS18B20
JBF0,ZH1
LJMPSTART;判断DS1820是否存在?
若DS18B20不存在则返回
ZH1:
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#44H;发出温度转换命令
LCALLWRITE_1820
LCALLDISPLAY;等待AD转换结束
LCALLINIT_1820;准备读温度前先复位
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#0BEH;发出读温度命令
LCALLWRITE_1820
LCALLREAD_1820
RET
4.5写入程序
在单片机对DS18B20写数据时,应先将数据线拉低1μs以上,再写入数据(写1为高,写0为低)。
待单片机写入的数据变化15~60μs后,DS18B20将对数据线采样。
单片机写入数据到DS18B20的保持时间为60~120μs。
程序如下:
WRITE_1820:
MOVR2,#8;一共8位数据
CLRC
WR1:
CLRDQ
MOVR3,#6
DJNZR3,$
RRCA
MOVDQ,C
MOVR3,#23
DJNZR3,$
SETBDQ
NOP
DJNZR2,WR1
SETBDQ
RET
4.6处理程序
先判断温度高8位的CY,如果CY为1,则将高、低8八位求补;对高、低8位的数据按权整合称一个整数,判断是否在-50~110℃之间,超出范围则置报警灯为亮;将该数按百、十、个位分别存入相应的存储单元。
流程图如图9所示:
图9数据处理流程图
程序如下:
CHULI:
CLR37H
MOVA,GAO_8BIT
JBACC.7,FU
MOVA,DI_8BIT
MOVB,#16
DIVAB
MOV36H,A;将DI_8BIT的高四位右移四位,存入36H中
MOVA,B;将TEMPER_L的低四位X10/16得小数后一位数
MOVB,#10
MULAB
MOVB,#16
DIVAB
MOV30H,A;将小数后一位数.存入30H中
MOVA,GAO_8BIT;TEMPER_H中存放高8位数,权重16
MOVB,#16
MULAB
ADDA,36H;A中存入温度值的整数部分
CJNEA,#110,BAOJING1
BAOJING1:
JCZHENGZC
SETBP3.6
SETB38H
SJMPHOT
ZHENGZC:
CLRP3.6
CLR38H
HOT:
MOVB,#10
DIVAB
MOVGE_BIT,B;个位存入31H中
MOVB,#10
DIVAB
MOVSHI_BIT,B;十位存入32H中
MOVB,#10
DIVAB
MOVBAI_BIT,B;百位存入33H中
RET
FU:
SETB37H
MOVA,DI_8BIT
CPLA
ADDA,#1
MOVF0,C
MOVB,#16
DIVAB
MOV36H,A;将DI_8BIT的高四位右移四位,存入36H中
MOVA,B;将TEMPER_L的低四位X10/16得小数后一位数.
MOVB,#10
MULAB
MOVB,#16
DIVAB
MOV30H,A;将小数后一位数.存入30H中
MOVA,GAO_8BIT;TEMPER_H中存放高8位数,权重16
CPLA
MOVC,F0
ADDCA,#00H
MOVB,#16
MULAB
ADDA,36H;A中存入温度值的整数部分
CJNEA,#50,BAOJING2
BAOJING2:
JCFUZC
SETBP3.6
SETB38H
SJMPCOLD
FUZC:
CLRP3.6
CLR38H
COLD:
MOVB,#10
DIVAB
MOVGE_BIT,B;个位存入31H中
MOVB,#10;
DIVAB;
MOVSHI_BIT,B;十位存入32H中
MOVB,#10;
DIVAB;
MOVBAI_BIT,B;百位存入33H中
RET
4.7显示程序
将百、十、个、小数位的数据查表,送到对应的数码管显示,程序流程图如10所示:
图10显示程序流程图
程序如下:
DISPLAY:
MOVDPTR,#TABLE
MOVR0,#4
XUN:
MOVR1,#250;显示1000次
HUAN:
JNB37H,ZHENG
MOVA,#10
MOVCA,@A+DPTR
MOVP1,A
CLRP3.0
LCALLDELAY1
SETBP3.0
SJMPGO_ON
ZHENG:
MOVA,BAI_BIT;示温度百位
MOVCA,@A+DPTR
MOVP1,A
CLRP3.0
LCALLDELAY1
SETBP3.0
GO_ON:
MOVA,SHI_BIT;显示温度十位
MOVCA,@A+DPTR
MOVP1,A
CLRP3.1
LCALLDELAY1
SETBP3.1
MOVA,GE_BIT;显示温度个位和小数点
MOVCA,@A+DPTR
ADDA,#80H
MOVP1,A
CLRP3.2
LCALLDELAY1
SETBP3.2
MOVA,XIAO_BIT;显示小数
MOVCA,@A+DPTR
MOVP1,A
CLRP3.3
LCALLDELAY1
SETBP3.3
DJNZR1,HUAN;250次没完循环
DJNZR0,XUN;4个250次没完循环
JB38H,DELAY2
RET
DELAY1:
MOVR7,#9
DJNZR7,$
RET
DELAY2:
MOVR4,#10
LP1:
MOVR5,#200
LP2:
MOVR6,#126
DJNZR6,$
DJNZR5,LP2
DJNZR4,LP1
RET
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
DB01000000B;-
END
5实验仿真
图11仿真电路
6总结体会
起先对单片机不太了解的我,为了完成此次的课程设计,翻书、上网查资料,但还是有很多不了解的地方。
无奈就去问同学。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,在以后的学习中还要多加改正。
两个星期的课程设计结束了,感觉到从总得到了很多成长,学到了很多东西,有对单片机更深的理解,有自己的努力和汗水,有同学们的帮助,还有大家的合作能力,我要把它们好好地收藏起来,今后都是我生活中的无价之宝。
参考文献
[1]何立民主编,单片机中级教程,北京航空航天大学出版社
[2]丁元杰主编,单片机原理与应用,机械工业出版社。
[3]孙育才主编,MCS-51系列单片微型计算机及其应用,东南大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 温度计 设计