数字温度计实验报告Word下载.docx
- 文档编号:19353649
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:25
- 大小:48.49KB
数字温度计实验报告Word下载.docx
《数字温度计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《数字温度计实验报告Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
DS18B20的引脚功能:
DQ为数字信号输入/输出端;
GND为电源地;
VDD为外接供电电源输入端(在寄生电源接线方式时接地
(2)动态显示
通过单片机与七段显示译码器HCF4511BE结合使用实现
HCF4511BE的简介如下:
HCF4511BE是一个用于驱动共阴极LED(数码管)显示器的BCD码—七段码译码器,特点:
具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。
可直接驱动LED显示器。
HCF4511BE是一片CMOSBCD—锁存/7段译码/驱动器,引脚排列如下图所示。
其中abcd为BCD码输入,a为最低位。
LT为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。
BI为消隐功能端,低电平时使所有笔段均消隐,正常显示时,B1端应加高电平。
另外HCF4511BE有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。
LE是锁存控制端,高电平时锁存,低电平时传输数据。
a~g是7段输出,可驱动共阴LED数码管。
另外,HCF4511BE显示数“6”时,a段消隐;
显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观
HCF4511BE引脚图:
其功能介绍如下:
BI:
4脚是消隐输入控制端,当BI=0时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。
LT:
3脚是测试输入端,当BI=1,LT=0时,译码输出全为1,不管输入DCBA状态如何,七段均发亮,显示“8”。
它主要用来检测数码管是否损坏。
LE:
锁定控制端,当LE=0时,允许译码输出。
LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。
A1、A2、A3、A4、为8421BCD码输入端。
a、b、c、d、e、f、g:
为译码输出端,输出为高电平1有效
HCF4511BE具有锁存功能,译码器的锁存电路由传输门和反相器组成,传输门的导通或截止由控制端LE的电平状态。
当LE为“0”电平导通,TG2截止;
当LE为“1”电平时,TG1截止,TG2导通,此时有锁存作用。
(3)单片机I/O口资源
22H为显示方式存储区,23H为分辨率存储区,38H为DS18B20的标志位存储区
30H,31H摄氏缓冲区,32H,33H为华氏缓冲区,34H,35H为开氏缓冲区
60H-68H存放从DS18B20读入的9个字节数据
36H,37H,40H,41H,42H为中间数据暂存缓冲区
段选p1.0-p1.3,位选p1.4-p1.7,摄氏、华氏、开氏转换INT0,DS18B20数据脚p3.7
摄氏、华氏、开氏表示分别为p2.0、p2.1、p2.2,零下温度显示表示p2.3,报警p2.4
P0.7,P0.6为通道显示
四.设计原理
1.硬件部分
此次实验主要使用到的芯片有传感器DS18B20、单片机AT89C51、七段译码器CD4511、以及LED数码管。
由于传感器DS18B20的输出即为数字信号,因此省去了很多工作,如电流\电压转换、A\D转换等。
此次电路的基本原理为:
传感器读入温度信息,发送给单片机处理,单片机处理后将信号发送给译码器进行译码后送给LED即显示出当前温度;
温度过高时蜂鸣器实行报警。
各部分的连接关系见总图
2.软件部分
软件部分主要包括初始化程序,初始化DS18B20程序,读DS18B20程序,数据转摄氏温度BCD码程序,摄氏温度T转华氏温度F程序,摄氏温度T转开氏温度K程序,零下温度转换程序,报警程序,显示程序,中断程序,延时程序等,具体程序见附录。
其中下列程序的编程方法做以下说明:
(1)数据转摄氏温度BCD码程序:
由于要实现分辨率可调,所以编程时小数位的值是根据分辨率的值来对从DS18B20读入的四位小数位进行取舍,百位、十位和个位的数则由二进制数除以一百、一十和余数求得,这样即实现把从DS18B20读入的温度装换成代显示的摄氏温度BCD码。
(2)摄氏温度T转华氏温度F程序:
华氏温度值F与摄氏温度T的转换关系为:
8位单片机要直接实现9除以5很困难,我们采用的方法是先将摄氏温度T乘以8(3次调用BCD_T)再除以10(右移4位),然后将所得的值加原值T,这样就实现了乘以9/5,再加32就完成了T与F的转换。
(3)摄氏温度T转开氏温度K程序:
T与K的转换关系为:
K=T+273.1,加法运算很容易实现。
(4)零下温度转换程序:
单片机判断从DS18B20读入的数据的符号位为1时,执行零下温度转换程序,因为零下温度时,要对数据位的值求反加1求补码。
(5)报警程序:
对所得的温度进行判断,当温度超过50°
C时,即驱动蜂鸣器(P2.4口)。
(6)中断程序:
INT1接分辨率显示方式选择按键,中断一次,RAM中分辨率显示方式存储区23H的值加1,为2时清零;
INT0接摄氏、华氏、开氏显示方式设定按键,中断一次,RAM中显示方式存储区22H的值加1,为2时清零,00H表示显示摄氏,01H表示显示华氏,02H表示显示开氏。
五.调试
根据以上资料以及原理设计完硬件,编写好程序后,在不存在虚焊和连线错误的情况下,要完好的得出结果,还需经过长时间的调试。
在此次调试中我们发现了如下问题:
1.软件调试时,要用F7进行跟踪调试,并且对照各个寄存器和数据缓冲
区里面的值的变化来判断程序是否正确,是否实现功能,单步调试成功
之后,再全速执行,看看结果是否正确,如果全速执行正确的话就开始
硬件调试,不正确又要单步调试。
所以开始单步调试时,一定要仔细,
以防“返工”。
2.DS18B20读取温度时,延时太长导致显示时“闪烁”,所以要适当减小延
时,使数码管显示时既不闪烁也不跳变得过快而影响读数。
3.中断程序要合理延时以防抖动。
4.编写程序时,要考虑全面,以防止改变显示方式、改变分辨率和切换通道时对数据产生影响。
5.由于单片机独立工作时,位置高时提供电压电流不够驱动,所以在每个
独立位上可以独立接一个电阻然后接正电源,这样起到一个“辅助”的
作用,例如数码管和发光二极管都可以这样来实现正常显示,而不出现
微亮或模糊不清的情况。
六.优缺点总结
上述设计方案完全能实现基本要求、提高要求和自己的发挥部分。
纵观全设计,我们的总结如下:
优点:
1.完成了全部基本要求和提高要求以及发挥部分;
2.本方案最大的亮点是实现零下温度的检测和显示;
3.实现摄氏、华氏、开氏的转换和显示;
4.实现过高温度报警;
5.实现不同分辨率显示;
当然,我们的设计中也存在不少问题,例如,由于单片机独立工作时,不能提供足够大的电压电流,导致报警用蜂鸣器和显示用发光二极管的声音和亮度不够。
七.设计心得体会
通过这三周的软、硬件设计,不仅加深了我们对理论知识的理解,培养了我们的实践动手能力,还锻炼了我们遇到问题解决问题的能力。
从开始接到任务时的无从下手,到小组成员各司其职,搜集资料,学习新知识,相互讨论,分析交流,解决好问题的这个过程本身就是对我们的锻炼。
此次设计课不同于一般理论课的地方就在于要求我们的并非只是单纯的懂得理论知识,更重要的是小组成员间的团结协作精神以及将理论知识用于实践的能力,由于在实际中,存在各种各样的因素,即使我们有着正确的原理图、软件程序等也不一定能得出正确的结果,正如调试时产生的问题一样,这就需要我们有耐心去分析各种可能存在因素以达到解决问题的最终目的,当然这其中肯定少不了老师的指导和帮助,在此,我们小组三人对刘海涛老师的帮助给以最衷心的感谢。
通过这次课程设计我们学到了很多东西,培养了我们的自学能力,接受新事物的心态,以及遇到问题时戒骄戒躁的良好心态和虚心向同学、老师请教自己不会的问题,更重要的是小组成员间的团结协作,相互鼓励,做好分配给自己的任务,用心做每一件事而非应付过关的消极态度。
总之,此次设计课使我们受益匪浅。
八.附录
附录一:
程序清单
;
说明:
*********************************************************
P0.5为0.1分辨率,P0.6为0.2分辨率,P0.7为0.5分辨率
摄氏、华氏、开氏表示分别为p2.0、p2.1、p2.2,零下温度显示表示p2.3,报警p2.4
********************************************************
ORG0000H
LJMPMAIN
ORG0003H
LJMPINT0
ORG0013H
LJMPINT1
主程序*************************************************
ORG0030H
MAIN:
LCALLINIT;
调用初始化程序
LOP:
LCALLINIT_18B20;
调用复位DS18B20子程序
JNB38H,LOP_2
LCALLGET_TEMPER;
调用读温度子程序
LCALLCONV;
调用采样数据转换BCD码子程序
LCALLWARNING;
调用温度超过量程报警子程序
CLRP2.7
SETBP2.6
LCALLDISPLAY;
调用显示子程序
LOP_2:
LCALLINIT_18B20_2
JNB38H,LOPP
LCALLGET_TEMPER_2
LCALLCONV
LCALLWARNING
SETBP2.7
CLRP2.6
LCALLDISPLAY
LOPP:
AJMPLOP
初始化程序*********************************************
INIT:
SETBEA
SETBEX0
SETBIT0
SETBEX1
SETBIT1
MOV22H,#00H
MOV23H,#00H
MOVP1,#00H
CLRP2.0
CLRP2.1
CLRP2.2
CLRP2.3
CLRP2.4
CLRP0.5
CLRP0.6
CLRP0.7
RET
复位DS18B20程序*********************************************
INIT_18B20:
SETBP3.7
NOP
CLRP3.7;
主机发出延时540ms的复位低脉冲
MOVR0,#0CH
LCALLDELAY3
SETBP3.7;
然后拉高数据线
MOVR0,#36
TSR2:
JNBP3.7,TSR3;
等待DS18B20回应
DJNZR0,TSR2
LJMPTSR4;
延时
TSR3:
SETB38H;
置标志位,表示DS18B20存在
LJMPTSR5
TSR4:
CLR38H;
清标志位,表示DS18B20不存在
LJMPTSR7
TSR5:
MOVR0,#06BH
TSR6:
DJNZR0,TSR6;
复位成功,时序要求延时一段时间
TSR7:
------------------------------------------------------------
INIT_18B20_2:
SETBP3.6
CLRP3.6;
SETBP3.6;
TSR2_2:
JNBP3.6,TSR3_2;
等待DS18B20回应+
DJNZR0,TSR2_2
LJMPTSR4_2;
TSR3_2:
LJMPTSR5_2
TSR4_2:
LJMPTSR7_2
TSR5_2:
TSR6_2:
DJNZR0,TSR6_2;
TSR7_2:
-----------------------------------------------------
读出转换后的温度值***************************************
GET_TEMPER:
定时入口
先复位DS18B20
JB38H,TSS2;
判断DS18B20是否存在,不存在则返回
TSS2:
MOVA,#0CCH;
跳过ROM匹配
LCALLWRITE_18B20
MOVA,#44H;
发出温度转换命令
MOVR0,#0FFH;
等待A/D转换结束,750ms
准备读温度前先复位
MOVA,#0BEH;
发出读温度命令
LCALLREAD_18B20;
将读出的9个字节数据保存到60H-68H
--------------------------------------------------
GET_TEMPER_2:
LCALLINIT_18B20_2;
JB38H,TSS2_2;
TSS2_2:
LCALLWRITE_18B20_2
LCALLREAD_18B20_2;
--------------------------------------
写DS18B20的子程序(具体时许要求)*********************
WRITE_18B20:
MOVR2,#8;
一共8位数据
CLRC
WR1:
CLRP3.7
MOVR3,#6
DJNZR3,$
RRCA
MOVP3.7,C
MOVR3,#24
DJNZR2,WR1
---------------------------------------------------
WRITE_18B20_2:
WR1_2:
CLRP3.6
MOVP3.6,C
DJNZR2,WR1_2
----------------------------------------------------
读DS18B20的程序,从DS18B20中读出九个字节的数据
存到60H-68H*****************************************
READ_18B20:
MOVR4,#9
MOVR1,#60H;
存入60H开始的9个单元中
RE00:
MOVR2,#8
RE01:
MOVR3,#09
RE02:
DJNZR3,RE02
MOVC,P3.7
MOVR3,#23
RE03:
DJNZR3,RE03
DJNZR2,RE01
MOV@R1,A
INCR1
DJNZR4,RE00
------------------------------------------------------
READ_18B20_2:
RE00_2:
RE01_2:
RE02_2:
DJNZR3,RE02_2
MOVC,P3.6
RE03_2:
DJNZR3,RE03_2
DJNZR2,RE01_2
DJNZR4,RE00_2
---------------------------------------------------------
采样数据转换BCD码程序*********************************
CONV:
MOV41H,61H
MOV40H,60H;
40H,41H为数据暂存缓冲区
MOV42H,40H;
42H为数据暂存缓冲区
MOVA,61H
RLCA
JCN0;
符号位为1跳转,表示当前是零下温度
CLRP2.3;
关闭正负温度指示灯
LCALLW_BCD
LCALLT_F
LCALLT_K
LJMPQUIT0
N0:
SETBP2.3
MOVA,40H
CPLA
ADDA,#01H
MOV40H,A
MOVA,41H
ADDCA,#00H
MOV41H,A
MOV32H,#00H
MOV33H,#00H
MOV34H,#00H
MOV35H,#00H
QUIT0:
RET
60H,61H中的温度值转换BCD码程序*************************
W_BCD:
ANL40H,#0F0H
SWAPA
ANL41H,#07H
ORLA,40H;
A中存放整数部分的二进制值
MOV41H,A;
41H中存放整数部分的二进制值
MOVB,#100
DIVAB
MOV37H,A
MOVA,B
MOVB,#10
ORLA,37H
MOV37H,A;
37H中存放百位数和十位数BCD码
MOV36H,A;
36H中存放个位数BCD码
MOVA,23H
CJNEA,#00H,FF0
SETBP0.5
ANL42H,#0EH;
MOVA,42H
CJNEA,#00H,L0
MOVA,#00H
LJMPL15
L0:
CJNEA,#02H,L1
MOVA,#01H
L1:
CJNEA,#04H,L2
MOVA,#02H
L2:
CJNEA,#06H,L3
MOVA,#04H
L3:
CJNEA,#08H,L4
MOVA,#05H
L4:
CJNEA,#0AH,L5
MOVA,#06H
L5:
CJNEA,#0CH,L6
MOVA,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 温度计 实验 报告