基于单片机的数字温度计设计兰州交通大学.docx

上传人:b****5 文档编号:8791054 上传时间:2023-05-15 格式:DOCX 页数:18 大小:69.89KB
下载 相关 举报
基于单片机的数字温度计设计兰州交通大学.docx_第1页
第1页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第2页
第2页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第3页
第3页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第4页
第4页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第5页
第5页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第6页
第6页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第7页
第7页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第8页
第8页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第9页
第9页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第10页
第10页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第11页
第11页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第12页
第12页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第13页
第13页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第14页
第14页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第15页
第15页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第16页
第16页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第17页
第17页 / 共18页
基于单片机的数字温度计设计兰州交通大学.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的数字温度计设计兰州交通大学.docx

《基于单片机的数字温度计设计兰州交通大学.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计设计兰州交通大学.docx(18页珍藏版)》请在冰点文库上搜索。

基于单片机的数字温度计设计兰州交通大学.docx

基于单片机的数字温度计设计兰州交通大学

单片机原理及系统课程设计

 

评语:

 

考勤(10)

守纪(10)

过程(30)

设计报告(30)

答辩(20)

总成绩(100)

专业:

电气工程及其自动化

班级:

电气1103

姓名:

杨子

学号:

201109306

指导教师:

侯涛

兰州交通大学自动化与电气工程学院

2014年1月15日

1设计题目

基于单片机的数字温度计设计

2设计背景

温度是工业生产和科学研究的重要参量之一,温度的测量是个永恒的话题,覆盖范围广泛。

数字温度计可以利用在很多领域,在一些人不能直接进入的场所,利用单片机控制的数字温度计,可以准确地观测到其中的温度。

数字温度计就是一个典型的例子,但人们对它的要求越来越高,一切向着数字化控制,智能化控制方向发展。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。

3设计原理

3.1设计方法

(1)分析设计目的,根据要求查阅相关硬件的资料,预设计多种方案,设计产品功能;

(2)根据设计要求,分析各方案的难易程度,比较他们的可操作性,进而基本确定设计方案(倾向选择硬件结构简单,可靠性强并且各部件市场使用率高的方案),选定相应的硬件设备,并进行硬件设计;

(3)根据搜索的相关材料,深入分析各部件的特性,绘制总程序流程,进行软件的初步设计,对软件功能模块化分割;

(4)根据模块的功能要求,绘制相应的流程图,再编写相应程序的设计和完成相关调试,以完成软件的基本设计;

(5)对产品进行调试、仿真。

运用Proteus进行硬件连接,再在Keilc平台下生成可执行文件,再装入单片机中。

进一步分析结果,修改硬件连接和软件程序,确定相关参数。

最终,通过多次的调试和修改以完成产品的设计要求。

3.2系统框图设计

温度计电路设计总体设计方框图如图1所示,主控制器采用单片机AT89C52,温度传感器采用DS18B20,用LCD1602数字显示器实现温度显示。

系统框图如图3-1所示。

图3-1系统框图

3.3系统电路原理图

本数字温度计是以单片机AT89C52为数据处理核心,运用DS18B20单总线数字式温度传感器进行温度采集,使用LCD1602对采集结果进行输出显示。

根据电路原理框图设计出电路原理图如图3-2所示,由温度传感器DS18B20给单片机提供温度转换过的温度电信号。

AT89C52是一种低电压,高性能CMOS8位单片机。

其片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),和片内置通用8位中央处理器(CPU)和Flash储存单元,功能强大AT89C52单片机适合于许多较为复杂控制应用场合。

DS18B20的数字温度计提供9至12位可编程设备温度读数。

信息被发送到从DS18B20通过1线接口,所以中央处理器与DS18B20只有一个一条口线连接。

为读写以及温度转换可以从数据线本身获得能量,不需要外接电源。

因为每一个DS18B20的包含一个独特的序号,多个DS18B20可以同时存在于一条总线。

这使得温度传感器放置在许多不同的地方。

它的用途很多,包括空调环境控制,感测建筑物内温设备或机器,并进行过程监测和控制。

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。

图3-2系统设计原理图

在图3-2中,复位电路、控制电路加上单片机组成单片机最小应用系统,能够实现很多复杂的功能。

系统能实现温度的测量,显示温度等功能。

系统中按钮“↑”和“↓”能对所测温度进行调整,启动DS18B20的测温程序,再将采集到的数据传输至AT89C52内,锁存器74LS373稳定数据,最终由液晶显示LCD1602输出结果。

4仿真图

在课题中,在PROTEUS软件中对设计的硬件电路进行仿真。

PROTEUS软件是英国Labcenterelectronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及单片机的外围器件。

仿真图如图4-1所示。

图4-1数字温度计仿真图

5体会与总结

首先,关于硬件设计的认识。

硬件设计主要考虑两方面的问题,设计要求的实现:

根据电子元件的发展要求,我们要在可实现的前提下,选择硬件简单、集成度高、可靠性强的设计方案;设计的可操作性:

软件与硬件呈现互补关系,当硬件较为简单时,我们需要软件控制实现其功能,因此我们要选择集成度高,控制方法清晰、实际运用广泛的硬件。

其次,关于知识内容的学习。

通过本次课程设计,复习和巩固了单片机知识的有关内容;通过对具体问题的解决,加强了我们理论运用于实际的能力;修改和调试程序的过程中,进一步锻炼和提高了我们的逻辑思维能力。

然后,关于软件设计的认识。

由于产品软件功能的实现是个较为复杂的问题,通过课程设计我学习到了“化复杂为简单”的方法。

如果每次进行软件设计时,能够把一个复杂的功能划分成多个具体的模块功能,再逐一对模块具体分析和设计,便可以更高效、更清晰的解决问题。

最后,关于小组答辩和报告书写。

通过小组答辩:

一方面,培养自己的逻辑表达能力,为将来的毕业设计和答辩做铺垫;另一方面,通过听取其他同学的设计方案,我们可以在小组其他成员身上学习到很多,还可以取长补短、查缺补漏。

报告书写不仅可以让我们熟悉论文格式而且能够培养我们严谨的工作态度。

参考文献

[1]王思明、张金敏、张鑫等.单片机原理及应用系统设计[M].北京科学出版社,2012

[2]冯博琴、吴宁.微型计算机原理与接口技术[M].北京清华大学出版社,2007

[3]李守中.51单片机开发入门与经典实例[M].北京人民邮电出版社,2007

[4]李平.单片机入门与开发[M].北京机械工业出版社,2008

[5]胡汉才.单片机原理与接口技术[M].北京清华大学出版社,1996

 

附录:

;==================================================================

;单片机内存分配申明!

SIGNBIT00H

INEQUP3.3

DIVDLLDATA21H

DIVDLHDATA22H

DIVDHLDATA23H

DIVDHHDATA24H

DIVLDATA25H

DIVHDATA26H

TEMPLDATA27H

TEMPHDATA28H

TEMPER_HEQU29H

TEMPER_LEQU2AH

FLAG1EQU30H

LCD_CMD_WREQU8000H

LCD_DATA_WREQU8001H

LCD_BUSY_RDEQU8002H

LCD_DATA_RDEQU8003H

LCD_CLSEQU1

LCD_HOMEEQU2

LCD_SETMODEEQU4

LCD_SETVISIBLEEQU8

LCD_SHIFTEQU16

LCD_SETFUNCTIONEQU32

LCD_SETCGADDREQU64

LCD_SETDDADDREQU128

;=================主程序开始===============================

ORG0000H

LJMPSTART

ORG30H

START:

MOVSP,#60H

LCALLINIT;初始化液晶显示器

MAIN:

LCALLGET_TEMPER;调用读温度子程序

MOVA,TEMPER_H;读温度值高8位

JNBACC.7,M1;温度为正值则转移

SETBSIGN;设置温度值为负数

MOVA,TEMPER_L;求温度值的补码

CPLA

ADDA,#1

MOVTEMPER_L,A

MOVA,TEMPER_H

CPLA

ADDCA,#0

MOVTEMPER_H,A

SJMPM2

M1:

CLRSIGN;温度值为正数

M2:

MOVR2,TEMPER_H

MOVR3,TEMPER_L;待转换的温度值送R2R3

MOVR6,#03H

MOVR7,#0E8H;乘数1000送R6R7

LCALLDMUL;温度值*1000,结果在R4R5R6R7中

MOVA,#5

LCALLJIAFA;为实现四舍五入将乘的结果+5

MOVDIVDHH,R4

MOVDIVDHL,R5

MOVDIVDLH,R6

MOVDIVDLL,R7;运算结果送被除数单元

MOVDIVH,#0;除数为160

MOVDIVL,#160

LCALLCHUFA;得到乘10以后的温度值

MOVR6,DIVDLH

MOVR7,DIVDLL

LCALLH2B;

MOVA,#'T'

LCALLWRDATA;显示字母“T”

MOVA,#'='

LCALLWRDATA;显示字母“=”

JNBSIGN,M3;温度为正值则转移

MOVA,#'-'

LCALLWRDATA;显示负号

M3:

MOVA,R3

JZM31;不显示无效零

ORLA,#30H;将温度值转换为ASCII码

LCALLWRDATA

M31:

MOVA,R4

SWAPA

ANLA,#0FH

JZM32;不显示无效零

ORLA,#30H

LCALLWRDATA

SJMPM33

M32:

MOVA,R3

JZM33

MOVA,#'0'

LCALLWRDATA

M33:

MOVA,R4

ANLA,#0FH

ORLA,#30H

LCALLWRDATA

MOVA,#'.';显示小数点

LCALLWRDATA

MOVA,R5

SWAPA

ANLA,#0FH

ORLA,#30H

LCALLWRDATA

MOVA,R5

ANLA,#0FH

ORLA,#30H

LCALLWRDATA

MOVA,#0DFH;显示“°”

LCALLWRDATA

MOVA,#'C';显示“C”

LCALLWRDATA

MOVA,#20H;显示空格以便于清除上次显示在该位置的字符

LCALLWRDATA

MOVA,#2;显存地址指针清零,光标回到行首

LCALLWRCMD

MOVR5,#4

M4:

MOVR6,#250

M5:

LCALLD1MS

DJNZR6,M5

DJNZR5,M4

LJMPMAIN

;=================主程序结束===============================

;============================================================

;液晶显示器初始化

;============================================================

INIT:

MOVA,#30H;8位、1行、5*7字符方式

LCALLWRCMD

MOVA,#LCD_SETVISIBLE+4;打开显示

LCALLWRCMD

MOVA,#LCD_SETDDADDR;开始显示的位置在最左边

LCALLWRCMD

MOVA,#LCD_SETMODE+3;增量方式,光标移动

LCALLWRCMD

RET

CLS:

MOVA,#LCD_CLS

LCALLWRCMD

MOVA,#LCD_SETDDADDR;开始显示的位置在最左边

LCALLWRCMD

RET

WRCMD:

MOVDPTR,#LCD_CMD_WR

MOVX@DPTR,A

SJMPWTBUSY

WRDATA:

MOVDPTR,#LCD_DATA_WR

MOVX@DPTR,A

WTBUSY:

MOVDPTR,#LCD_BUSY_RD

MOVXA,@DPTR

JBACC.7,WTBUSY

RET

GET_TEMPER:

SETBIN

LCALLINIT_1820;先复位DS18B20

JBFLAG1,TSS2

RET;判断DS1820是否存在?

若不存在则返回

TSS2:

MOVA,#0CCH;跳过ROM匹配

LCALLWRITE_1820

MOVA,#44H;发出温度转换命令

LCALLWRITE_1820

LCALLD1MS;DISPLAY

LCALLINIT_1820;准备读温度前先复位

MOVA,#0CCH;跳过ROM匹配

LCALLWRITE_1820

MOVA,#0BEH;发出读温度命令

LCALLWRITE_1820

LCALLREAD_18200;

RET

INIT_1820:

SETBIN

NOP

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

MOVR1,#3

TSR1:

MOVR0,#107

DJNZR0,$

DJNZR1,TSR1

SETBIN;然后拉高数据线

NOP

NOP

NOP

MOVR0,#25H

TSR2:

JNBIN,TSR3;等待DS18B20回应

DJNZR0,TSR2

LJMPTSR4;延时

TSR3:

SETBFLAG1;置标志位,表示DS1820存在

LJMPTSR5

TSR4:

CLRFLAG1;清标志位,表示DS1820不存在

LJMPTSR7

TSR5:

MOVR0,#117

TSR6:

DJNZR0,TSR6;时序要求延时一段时间

TSR7:

SETBIN

RET

WRITE_1820:

MOVR2,#8;一共8位数据

CLRC

WR1:

CLRIN

MOVR3,#6

DJNZR3,$

RRCA

MOVIN,C

MOVR3,#23

DJNZR3,$

SETBIN

NOP

DJNZR2,WR1

SETBIN

RET

READ_18200:

MOVR4,#2;将温度高位和低位从DS18B20中读出

MOVR1,#TEMPER_L;

RE00:

MOVR2,#8;数据一共有8位

RE01:

CLRC

SETBIN

NOP

NOP

CLRIN

NOP

NOP

NOP

SETBIN

MOVR3,#9

RE10:

DJNZR3,RE10

MOVC,IN

MOVR3,#23

RE20:

DJNZR3,RE20

RRCA

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

RET

D1MS:

MOVR7,#80

DJNZR7,$

RET

DMUL:

MOVA,R3

MOVB,R7

MULAB

XCHA,R7

MOVR5,B

MOVB,R2

MULAB

ADDA,R5

MOVR4,A

CLRA

ADDCA,B

MOVR5,A

MOVA,R6

MOVB,R3

MULAB

ADDA,R4

XCHA,R6

XCHA,B

ADDCA,R5

MOVR5,A

MOVF0,C

MOVA,R2

MULAB

ADDA,R5

MOVR5,A

CLRA

MOVACC.0,C

MOVC,F0

ADDCA,B

MOVR4,A

RET

JIAFA:

ADDA,R7

MOVR7,A

CLRA

ADDCA,R6

MOVR6,A

CLRA

ADDCA,R5

MOVR5,A

CLRA

ADDCA,R4

MOVR4,A

RET

CHUFA:

MOVA,DIVH;除数为零?

ORLA,DIVL

JNZDIVD0

SETBOV;为零,置溢出标志

RET

DIVD0:

MOVTEMPL,#0

MOVTEMPH,#0

MOVB,#32

DIVD1:

CLRC

MOVA,DIVDLL

RLCA

MOVDIVDLL,A

MOVA,DIVDLH

RLCA

MOVDIVDLH,A

MOVA,DIVDHL

RLCA

MOVDIVDHL,A

MOVA,DIVDHH

RLCA

MOVDIVDHH,A

MOVA,TEMPL

RLCA

MOVTEMPL,A

XCHA,TEMPH

RLCA

XCHA,TEMPH

MOVF0,C

SUBBA,DIVL

MOVR7,A

MOVA,TEMPH

SUBBA,DIVH

ANLC,/F0

JCDIVD2

MOVTEMPL,R7

MOVTEMPH,A

INCDIVDLL

DIVD2:

DJNZB,DIVD1

CLROV

RET

H2B:

CLRA;BCD码初始化

MOVR3,A

MOVR4,A

MOVR5,A

MOVR2,#10H;转换双字节十六进制整数

HB3:

MOVA,R7;从高端移出待转换数的一位到CY中

RLCA

MOVR7,A

MOVA,R6

RLCA

MOVR6,A

MOVA,R5;BCD码带进位自身相加,相当于乘2

ADDCA,R5

DAA;十进制调整

MOVR5,A

MOVA,R4

ADDCA,R4

DAA

MOVR4,A

MOVA,R3

ADDCA,R3

MOVR3,A

DJNZR2,HB3;处理完16bit

RET

END

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2