单片机 课程设计温度计正文.docx

上传人:b****6 文档编号:8675785 上传时间:2023-02-01 格式:DOCX 页数:38 大小:753.09KB
下载 相关 举报
单片机 课程设计温度计正文.docx_第1页
第1页 / 共38页
单片机 课程设计温度计正文.docx_第2页
第2页 / 共38页
单片机 课程设计温度计正文.docx_第3页
第3页 / 共38页
单片机 课程设计温度计正文.docx_第4页
第4页 / 共38页
单片机 课程设计温度计正文.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

单片机 课程设计温度计正文.docx

《单片机 课程设计温度计正文.docx》由会员分享,可在线阅读,更多相关《单片机 课程设计温度计正文.docx(38页珍藏版)》请在冰豆网上搜索。

单片机 课程设计温度计正文.docx

单片机课程设计温度计正文

1设计课题任务、功能要求说明及总体方案介绍

 

1.1设计任务

设计一个具有特定功能的数字温度计。

1.2功能要求说明

该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。

测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。

1.3总体方案介绍及工作原理说明

1.3.1总体方案介绍

利用单片机AT89S52单片机作为本系统的中控模块。

单片机可把DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。

数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。

在显示电路中,主要靠按键来实现各种显示要求的选择与切换。

1.3.2工作原理说明

利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。

同时处理后的数据送到LED中显示。

本课题以是AT89S52单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。

系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。

系统框图如图1所示。

图1系统基本方框图

2硬件系统的设计

 

2.1硬件系统各模块功能简要介绍

该数字温度计主要由单片机最小系统、独立式键盘模块、LED显示电路模块、蜂鸣电路模块和DS18B20测温模块组成。

各模块的功能如下:

(1)单片机最小系统

由AT89S52单片机、时钟电路和复位电路构成。

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。

复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。

单片机最小系统为整个电路的核心。

(2)独立式键盘模块

采用独立式键盘接法,共有8个按键来对电路进行控制。

分别通过上拉电阻接在单片机的P1口线上。

其中S1~S5在本电路中完成各项功能。

(3)LED显示电路模块

采用两个四位一体共阳型数码管显示器进行显示。

由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470Ω的电阻,这些电阻起限流的作用。

将段控口a--dp接在P0.0--P0.7上,位控口接在P2口线上,实现对显示的控制。

LED显示电路模块主要用来显示温度及报警信息。

(4)蜂鸣电路模块

单片机P3.1口线上接上一个1KΩ电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流。

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

(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

DJNZR7,$

JNBDATA_BUS,SETB_FLAG

CLRFLAG

AJMPNEXT

SETB_FLAG:

SETBFLAG

NEXT:

MOVR7,#120

DJNZR7,$

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:

SETBDATA_BUS

MOVR6,#8;一位共8位数据

CLRC;C=0

WRITING:

CLRDATA_BUS;总线低位,开始写入

MOVR7,#7

DJNZR7,$;保持16us以上

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

MOVDATA_BUS,C;写入一个位

MOVR7,#23

DJNZR7,$;等待

SETBDATA_BUS;重新释放总线;

NOP

DJNZR6,WRITING

SETBDATA_BUS;重新释放总线;

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;读前总线保持为低

NOP

NOP

NOP

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

RET

3.4程序清单

见附录E。

 

4系统测试与结果分析

 

4.1硬件测试

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

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

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

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

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

4.2软件测试

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

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

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

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

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

4.3测试结果

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

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

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

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

图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

晶振

1个

12MHz

发光二极管

9个

单排插

1个

40PIN

蜂鸣器

1个

按键

9个

排阻

2个

10K

下载口座子

1个

十芯

温度传感器

1个

18B20

六脚按键开关

1个

USB电源线

1个

电阻

1个

200Ω

电阻

1个

4.7K

电阻

3个

1K

电阻

24个

470Ω

电解电容

1个

22μf

瓷片电容

2个

33p

短路帽

3个

PCB板子

1块

电源插座

1个

杜邦线

1个

三极管

9个

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

INCR0

INCDPTR

CJNER0,#80H,TT

TT1:

LCALLDIR;调显示子程序显示提示符"P."

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

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

当前位置:首页 > 经管营销 > 经济市场

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

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