数字温度计课程设计Word格式.docx

上传人:b****6 文档编号:16294864 上传时间:2022-11-22 格式:DOCX 页数:36 大小:727.30KB
下载 相关 举报
数字温度计课程设计Word格式.docx_第1页
第1页 / 共36页
数字温度计课程设计Word格式.docx_第2页
第2页 / 共36页
数字温度计课程设计Word格式.docx_第3页
第3页 / 共36页
数字温度计课程设计Word格式.docx_第4页
第4页 / 共36页
数字温度计课程设计Word格式.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

数字温度计课程设计Word格式.docx

《数字温度计课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《数字温度计课程设计Word格式.docx(36页珍藏版)》请在冰豆网上搜索。

数字温度计课程设计Word格式.docx

蜂鸣电路主要完成超温报警功能。

(5)DS18B20测温模块

单片机P3.0口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个4.7KΩ电阻来完成对总线的上拉。

2.2温度传感器介绍

DS18B20可以程序设定9~12位的分辨率,精度为±

0.5°

C。

可选更小的封装方式,更宽的电压适用范围。

分辨率设定,及用户设定的报警温度存储在EPROM中,掉电后依然保存。

温度传感器DS18B20引脚如图2所示。

图2DS18B20外部封装图

引脚功能说明:

NC:

空引脚,悬空不使用;

VDD:

可选电源脚,电源电压范围3~5.5V。

当工作于寄生电源时,此引脚必须接地。

DQ:

数据输入/输出脚。

漏极开路,常态下高电平。

GND:

为电源地

2.3电路原理图、PCB图和元器件布局图

Proteus原理图、PCB图以及元器件布局图分别见附录A、附录B与附录C。

2.4元器件清单

元器件清单见附录D。

3软件系统的设计

3.1使用的单片机资源的情况

本设计采用独立式键盘,键盘直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。

用到的LED显示器接到了单片机的P0口线上和P2口线上。

DS18B20和蜂鸣器接在P3口线上。

3.2程序流程

3.2.1主程序流程图及功能说明

主程序的主要功能是负责准备状态提示符“P.”显示,等待按键按下进入各键功能子程序完成各项功能,其程序流程见图3所示。

图3主程序流程图

3.2.2各键功能程序流程图及功能说明

(1)S1键功能程序

S1键功能程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图4所示。

图4S1键功能程序流程图

(2)S2键功能程序

S2键功能程序的主要功能是负责上限温度的设定的进入与退出,其程序流程见图5所示。

图5S2键功能程序流程图

(3)S3键功能程序

S3键功能程序的主要功能是负责下限温度的设定的进入与退出,其程序流程见图6所示。

图6S3键功能程序流程图

(4)S4键功能程序

S4键功能程序的主要功能是当前设定温度加1,其程序流程见图7所示。

图7S4键功能程序流程图

(5)S5键功能程序

S5键功能程序的主要功能是当前设定温度减1,其程序流程见图8所示。

图8S5键功能程序流程图

3.2.3部分子程序流程图及功能说明

(1)显示数据子程序

显示数据子程序主要功能是智能显示当前温度,其程序流程图如图9所示。

图9 显示数据子程序流程图

(2)温度处理子程序

温度处理子程序的主要功能是将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定以及判断是否超出限定温度,其程序流程图如图10所示。

图10温度处理子程序流程图

3.3部分子程序程序清单及说明

(1)DS18B20的复位子程序部分

根据DS18B20的通信协议,每一次读写数据之前都要对DS18B20进行复位,复位要求主机先发出复位低脉冲(大于48us);

然后释放,DS18B20收到信号后等待16~60us,然后发出60~240us的存在低脉冲,主机收到此信号表示复位成功。

其程序清单如下:

RESET_PULSE:

RESET:

SETBDATA_BUS

NOP

CLRDATA_BUS;

主机发出延时537微秒的复位低脉冲

MOVR7,#255

DJNZR7,$

SETBDATA_BUS;

然后拉高数据线

MOVR7,#30

JNBDATA_BUS,SETB_FLAG

CLRFLAG

AJMPNEXT

SETB_FLAG:

SETBFLAG

NEXT:

MOVR7,#120

SETBDATA_BUS

JNBFLAG,RESET

RET

(2)DS18B20的写入子程序部分

当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。

有两种写时间隙,写1时间隙和写0时间隙。

所有写时间隙必须最少持续60μs,包括两个写周期至少1μs的恢复时间。

I/O线电平变低后,DS18B20在一个15μs到60μs的窗口内对I/O线采样。

如果线上事高电平,就是写1,如果是低电平,就是写0。

主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs内允许数据线拉到高电平。

主机要生成一个写0时间隙,必须把数据线拉到低电平并保存60μs。

每个读时隙都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0或1。

所有读时序至少需要60us。

程序清单如下:

WRITE:

MOVR6,#8;

一位共8位数据

CLRC;

C=0

WRITING:

CLRDATA_BUS;

总线低位,开始写入

MOVR7,#7

DJNZR7,$;

保持16us以上

RRCA;

把字节DATA分成8个位,循环给C

MOVDATA_BUS,C;

写入一个位

MOVR7,#23

等待

SETBDATA_BUS;

重新释放总线;

DJNZR6,WRITING

RET

(3)DS18B20的读取子程序部分

当从DS18B20读数据时,主机生成读时间隙。

当主机把数据从高电平拉到低电平时,读时间隙开始,数据线必须保持至少1μs;

从DS18B20输出的数据在读时间隙的下降沿出现后15μs内有效。

因此,主机在读时间隙开始后必须把I/O脚驱动拉为的电平保持15μs,以读取I/O脚状态。

在读时间隙的结尾,I/O引脚将被外部上拉电阻拉到高电平。

所有读时间隙必须最少60μs,包括两个读周期至少1μs的恢复时间。

READ:

SETBDATA_BUS

MOVR0,#TEMP_L;

低位存入TEMP_L,高位存入TEMP_H

MOVR6,#8;

数据一共有8位

MOVR5,#2;

读取两个字节的数字

CLRC

READING:

CLRDATA_BUS;

读前总线保持为低

SETBDATA_BUS;

开始读总线释放

MOVR3,#9

RE10:

DJNZR3,RE10;

延时18us

MOVC,DATA_BUS;

从总线读到一个位

RRCA;

把读得的位值循环移给A

MOVR7,#23

DJNZR7,$;

等待50us

DJNZR6,READING;

读取下一位

MOV@R0,A

INCR0

MOVR6,#8

DJNZR5,READING

3.4程序清单

见附录E。

4系统测试与结果分析

4.1硬件测试

硬件测试的主要是检查电路各种参数是否符合设计要求。

先排除硬件电路故障,利用万用表或逻辑测试仪器,检查电路中各器件以及引脚是否连接是否稳固,是否有短路故障。

先将单片机AT89S52芯片取下,对电路板进行通电检查,通过观察看是否有异常,测单片机的电源引脚看是否是正常的电压,是否有虚焊的情况,然后用万用表测试各电源电压,若这些都没有问题,则将单片机AT89S52芯片插上,接通电源观察电路指示灯是否正常。

人为升高温度看是否超限报警。

断开开18b20插槽,看是否报警。

4.2软件测试

下好程序后,上电(按键复位后)能够自动显示系统提示符“P.”并且流水灯循环两灭,当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。

与温度计测量结果数据比较如下表所示。

但我按下停止键的时候,DS18B20停止工作,数码管上可以通过开始自动显示系统提示符“P.”。

超限和断开18b20后会报警。

测试结果测量值都在误差允许范围内,因此符合设计要求,本设计成功完成预期目标。

4.3测试结果

当我按下开始键的时候,DS18B20开始工作,数码管上显示实时温度,并且测量精度小数点后两位。

测试结果测量值都在误差允许范围内,则符合设计要求,本设计成功完成预期目标。

图11P.显示图

图12调上限图

图13调下限图

图14当时寝室温度

4.4设计体会

本次课程设计是数字温度机的设计,从用Protel、Proteus画原理图、PCB图到制板,再到编程,通过本次课程设计我学会了很多。

首先是学会了利用自己所学的理论知识来解决实际问题,在整个设计过程中,我们把老师以前所讲的芯片的原理、作用及性能都运用到了这次设计中,这样加强了我们对课本知识的理解和巩固。

我觉得这次设计不仅加强了我们对课本知识的回顾和温故,而且锻炼了我们运用软件的能力,实现了从理论与实际的结合。

其次通过这次课程设计,加强了我们的动手、思考和解决问题的能力。

书中的理论有点枯燥,运用书中的知识去调试,那是一种无法比拟的成就感。

这样更能激发我们对我们专业的兴趣,和对我们专业知识的理解和掌握,能激发我们对电子科研技术的钻研,增加设计兴趣。

总之,通过本次课程设计,使我从中受益匪浅,我认识到了自己的以前许多许多的不足和缺点。

我明白了要想把理论和实际,还是有一定距离的。

在以后的学习中要更加努力为以后打好基础。

结束语

通过此次的单片机课程设计,我学到了许多以前在课本上学不到的东西,同时也把以前学到的理论知识运用到了此次的课程设计中,很好地加强了我在单片机方面的知识。

我懂得了理论与实际相结合的重要性,只掌握书上的理论知识是远远不够的,而应该把所学的理论知识与实践相结合,把理论运用与实践,从实践中验证理论,从而提高自己的实际动手能力和独立思考的能力,为以后踏入社会打下基础。

致谢

通过这一阶段的努力,我的课程设计终于完成了,这意味着单片机技术这门理论课即将结束。

在本学期,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。

在我完成课程设计的过程中,老师和同学给我提供了许多帮助,比如对实践中出现的问题给予耐心的解答等,在此,特别感谢老师与各位同学的热心帮助。

参考文献

[1]李广弟,朱月秀,冷祖祁.单片机基础[M].第三版.北京:

北京航空航天大学出版社,2007.1~260

LiGuangdi.ZhuYuexiu.Lengzuqi.Microcontrollerbasedon[M].3rded.Beijing:

BeijingAerospaceUniversityPress,2007.1~260

[2]康华光.电子技术基础(模拟部分)[M].第五版.武汉:

华中科技大学出版社,2007.20~100

kanghuaguang.Electronictechnologyfoundation(analogpart)[M].Fifthedition.Wuhan:

huazhonguniversityofscienceandtechnologypress,2007.20~100

附录

附录A原理图

图A1

附录BPCB图

图B1

图B2

附录C元器件分布图

图C1

附录D元器件清单

名称

数量

参数

单片机

1个

AT89S52

共阳数码管

2个

4位一体

底座

3个

40PIN

晶振

12MHz

发光二极管

9个

单排插

蜂鸣器

按键

排阻

10K

下载口座子

十芯

温度传感器

18B20

六脚按键开关

USB电源线

电阻

200Ω

4.7K

1K

24个

470Ω

电解电容

22μf

瓷片电容

33p

短路帽

PCB板子

1块

电源插座

杜邦线

三极管

9012

附录E总程序清单

;

*******************************************************************;

项目名称:

数字温度计

设计者:

蒋佳

设计日期:

2013年1月5日

堆栈栈底7FH;

LED数码管显示器设定;

P0.7---P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a

P2.7---P2.0位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)

显示缓冲区设定从左至右依次为7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)

独立式键盘设定;

8个按键S1至S8分别依次接在P1.0至P1.7口线;

子程序;

DIR(数码管显示子程序)

键盘扫描子程序KEY(判断是否有键按下)

DELAY(1毫秒延时子程序,晶振频率12MHz)

KEYS(判键按下子程序)

READ_TEMP(读温度程序)

RESET_PULSE(DS18B20的复位子程序)

WRITE(S18B20的写入子程序)

READ(DS18B20的读取子程序)

DISPLAY(显示数据子程序)

DWBJ(低温报警处理程序)

GWBJ(高温报警处理程序)

PROCESS(温度处理子程序)

常数表格;

DSER(共阳数码管字型代码表)

DSER1(系统提示符P.字型代码序号表)

TABLE_DP1(小数点后第一位字符代码表)

TABLE_DP2(小数点后第二位字符代码表)

键功能程序;

KEYAA(按键S1的功能程序)

KEYBB(按键S2的功能程序)

KEYCC(按键S3的功能程序)

KEYDD(按键S4的功能程序)

KEYEE(按键S5的功能程序)

伪指令定义区

DATA_BUSBITP3.0

FLAGBIT00H;

标志位

FLAG_THBIT21H.0

FLAG_TLBIT21H.1

TEMP_LEQU30H;

温度值低字节

TEMP_HEQU31H;

温度值高字节

TEMP_DPEQU32H;

温度小数

TEMP_INTEQU33H;

温度值整数

TEMP_BAIEQU34H;

温度百位数

TEMP_SHIEQU35H;

温度十位数

TEMP_GEEQU36H;

温度个位数

DIS_BAIEQU37H;

显示百位数

DIS_SHIEQU38H;

显示十位数

DIS_GEEQU39H;

显示个位数

DIS_DP1EQU3AH;

显示第一位小数

DIS_DP2EQU3BH;

显示第二位小数

DIS_FHEQU3CH;

显示负号

DIS_BJEQU3DH;

显示高温报警

TEMP_BJEQU3EH;

报警温度

TEMP_BJHEQU3FH;

高温报警温度

TEMP_BJLEQU40H;

低温报警温度

系统起始程序区

ORG0000H

START:

LJMPMAIN

系统监控程序区

ORG0020H

MAIN:

MOVSP,#7FH;

确立堆栈区

MOVPSW,#00H;

初始化PSW,通用寄存器组为第0组;

MOVR0,#20H;

RAM区首地址

MOVR7,#96;

RAM区单元个数

ML:

MOV@R0,#00H

INCR0

DJNZR7,ML

MOVTEMP_BJH,#40

MOVTEMP_BJL,#5

PL:

MOVR0,#78H;

显示缓冲存储单元首地址

MOVDPTR,#DSER1;

提示符"

P."

字符代码表首地址

TT:

CLRA

MOVCA,@A+DPTR

MOV@R0,A

INCDPTR

CJNER0,#80H,TT

TT1:

LCALLDIR;

调显示子程序显示提示符"

LCALLKEY;

调键扫描子程序

JB20H.0,KEYAA

JB20H.1,KEYBB

JB20H.2,KEYCC

LJMPTT1

键功能程序

按键S1的功能程序名为KEYAA

实现功能进入温度测试

KEYAA:

LCALLREAD_TEMP;

调读温度程序

LCALLPROCESS;

调数据处理程序

LJMPKEYAA

按键S2的功能程序名为KEYBBB

实现功能进入上限温度设置

KEYBB:

CJNER2,#00H,KEYBB1

INCR2

MOVTEMP_BJ,TEMP_BJH

MOVA,TEMP_BJ

MOVB,#0AH

DIVAB

MOV78H,B

MOV79H,A

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1