片单机简易数字温度计大学论文.docx

上传人:b****8 文档编号:10952499 上传时间:2023-02-23 格式:DOCX 页数:35 大小:425.48KB
下载 相关 举报
片单机简易数字温度计大学论文.docx_第1页
第1页 / 共35页
片单机简易数字温度计大学论文.docx_第2页
第2页 / 共35页
片单机简易数字温度计大学论文.docx_第3页
第3页 / 共35页
片单机简易数字温度计大学论文.docx_第4页
第4页 / 共35页
片单机简易数字温度计大学论文.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

片单机简易数字温度计大学论文.docx

《片单机简易数字温度计大学论文.docx》由会员分享,可在线阅读,更多相关《片单机简易数字温度计大学论文.docx(35页珍藏版)》请在冰豆网上搜索。

片单机简易数字温度计大学论文.docx

片单机简易数字温度计大学论文

第1章引言0

第2章开发和仿真软件简介1

2.1开发软件KeilC51uVision21

2.2仿真软件ProteusISIS2

第3章总体设计方案3

第4章系统硬件使用介绍4

4.1DS18B20温度传感器4

4.2单片机控制电路6

4.3显示器——采用LCD20048

第5章系统软件设计主要流程图9

5.1主程序流程图9

5.2计算温度流程图10

5.3液晶显示流程图11

5.4读出温度子程序12

第6章系统仿真14

第7章总结与体会15

主要参考资料16

附录17

附录一.源程序代码17

附录二.软件仿真图29

 

第1章引言

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

在信息采集(传感器技术)、信息传输(通信技术)和信息处理(计算机技术)三大信息技术中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。

测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:

①传统的分立式温度传感器,②模拟集成温度传感器,③智能集成温度传感器。

目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。

社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。

本次课程设计,利用Keil和Proteus软件设计和仿真该智能数字多点测温系统。

过程中所用到的主要电路由我们自主设计制作,通过查阅资料和借助指导老师最终设计出结构合理、美观,主要电气指标良好,性能稳定可靠的电路。

以培养我们严谨的科学态度,正确的设计思想,科学的设计方法和良好的工作作风,掌握一定的专业技能及综合运用基础理论、基本知识的能力。

 

第2章开发和仿真软件简介

2.1开发软件KeilC51uVision2

KeiluVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS-51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持、PLM、汇编和C语言的程序设计,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。

KeilC51集成开发环境主要由菜单栏、工具栏、源文件编辑窗口、工程窗口和输出窗口五部分组成。

工具栏为一组快捷工具图标,主要包括基本文件工具栏、建造工具栏和调试工具栏,基本文件工具栏包括新建、打开、拷贝、粘贴等基本操作。

建造工具栏主要包括文件编译、目标文件编译连接、所有目标文件编译连接、目标选项和一个目标选择窗口。

调试工具栏位于最后,主要包括一些仿真调试源程序的基本操作,如单步、复位、全速运行等。

在工具栏下面,默认有三个窗口。

左边的工程窗口包含一个工程的目标(target)、组(group)和项目文件。

右边为源文件编辑窗口,编辑窗口实质上就是一个文件编辑器,我们可以在这里对源文件进行编辑、修改、粘贴等。

下边的为输出窗口,源文件编译之后的结果显示在输出窗口中,会出现通过或错误(包括错误类型及行号)的提示。

如果通过则会生成“HEX”格式的目标文件,用于仿真或烧录芯片。

基本环境如图2-1所示:

图2-1KeilC51软件的运行界面

2.2仿真软件ProteusISIS

Proteus软件是来自英国Labcenterelectronics公司的EDA工具软件。

该软件有十几年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,为用户建立了完备的电子设计开发环境。

ProteusISIS的工作界面是一种标准的Windows界面。

主要包括:

标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。

主要功能是在图形编辑窗口做出所需的电路图。

软件的应用设计界面如图2-2所示:

 

第3章总体设计方案

此次课程设计要求设计一个简易数字温度计。

采用AT89C51单片机作为系统的控制电路,负责数据的采集、处理、发送。

可以采用一只温度传感器DS18B20产生温度数据并发送给单片机,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

显示部分采用LCD2004显示器。

这种方法电路比较简单,软件设计也比较简单。

总体设计框图如下:

 

51单片机

LCD2004显示器

 

图3.1总体设计框图

 

第4章系统硬件使用介绍

4.1DS18B20温度传感器

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

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

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

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

8引脚封装TO-92封装

图4-1温度传感器

引脚功能说明:

NC:

空引脚,悬空不使用;

VDD:

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

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

DQ:

数据输入/输出脚。

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

GND:

为电源地

DS18B20内部结构主要由四部分组成:

64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。

光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。

64位光刻ROM的排列是:

开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。

光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:

用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2RAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

暂存存储器包含了8个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。

第三个和第四个字节是TH、TL的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。

第六、七、八个字节用于内部计算。

第九个字节是冗余检验字节。

该字节各位的意义如下:

TMR1R011111

低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。

在DS18B20出厂时该位被设置为0,用户不要去改动。

R1和R0用来设置分辨率,如表1所示:

(DS18B20出厂时被设置为12位)

表1DS18B20温度转换时间表

R1

R0

分辨率/位

温度最大转向时间

0

0

9

93.75

0

1

10

187.5

1

0

11

375

1

1

12

750

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:

每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。

4.2单片机控制电路

控制电路采用AT89C51作为控制电路主体,附加外部震荡电路和复位电路。

本设计用到的AT89C51内部引脚介绍:

图4.2AT89C51内部引脚

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

本设计中使用P0口作为输出口,输出单片机处理好的温度信息到1602液晶显示中。

使用时必须外接上拉电阻以保证输出的不是高阻态。

如图所示:

图4.3P0口接上拉电阻使用

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

本设计中P1口作为输出口输出1602的控制信号,控制1602的显示

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

本设计中P0口需要接10k上拉电阻,否则为P0输出高阻态。

震荡电路采用石英晶振接单片机XTAL1与XTAL2端口构成内部震荡方式。

电容C1,C2起稳定震荡频率、快速起震的作用,电容值选用33pF。

内部振荡的方式所得时钟信号比较稳定,电路中使用较多。

图4.4外部震荡电路

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

复位电路采用的是开关复位方式,接单片机RST端口。

图4.5复位电路

4.3显示器——采用LCD2004

图4.6LCD1602引脚图

2004采用标准的16脚接口,其中:

第1脚:

VSS为电源地

第2脚:

VDD接5V电源正极

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

接单片机P2.5口。

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

接单片机P2.6口。

第6脚:

E(或EN)端为使能(enable)端。

接单片机P2.7口。

第7-14脚:

D0-D7为8位双向数据端。

接单片机P0口。

1602通过D0~D7的8位数据端传输数据和指令。

显示模式设置:

(初始化)

00110000[0x38]设置20×4显示,8位数据接口;

显示开关及光标设置:

(初始化)

00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)

000001NSN=1(读或写一个字符后地址指针加1&光标加1),N=0(读或写一个字符后地址指针减1&光标减1),S=1且N=1(当写一个字符后,整屏显示左移),S=0当写一个字符后,整屏显示不移动,数据指针设H,所以数据地址为80H+地址码(0-27H,40-67H)

其他设置:

置数据首地址为80,01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)

 

第5章系统软件设计主要流程图

5.1主程序流程图

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值。

图5.1主程序流程图

5.2计算温度流程图

计算温度子程序是将所输入的数据进行处理,包括正负判定,小数位、百位、十位、个位计算

 

图5.2计算温度流程图

 

5.3液晶显示流程图

液晶显示是将LCD1602进行初始化并且确定好显示位,并且将内部存储的数据信息进行显示。

 

图5.3液晶显示流程图

 

5.4读出温度子程序

读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。

其程序流程图如下所示

 

图5.4读出温度流程图

 

第6章系统仿真

图6-1

 

第7章总结与体会

经过将近一周的单片机课程设计,最终完成了我的数字温度计的设计,虽然没有完全达到设计要求(特别是系统初始化过程中没有消除85.0的初始显示),但通过努力把程序弄懂修改好并且仿真实现了,还是很高兴的。

在本次设计的过程中,我发现很多的问题,虽然以前还做过类似的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,特别是这么长的程序,需要修改调试。

我发现在单片机的学习过程中,只有我们去试着做了,才能真正的掌握,只学习理论有些东西是很难理解的,更谈不上掌握。

从这次的课程设计中,我意识到在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

通过这次对数字温度计的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字温度计的原理与设计理念,要设计一个电路时我们应该大胆尝试小心求证。

在确定自己的想法后要进行一步步地仿真。

在此感谢我们的张国旭老师,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次简易数字温度计设计的每个实验细节和每个数据,都离不开老师您的细心指导。

而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次课程设计。

同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。

 

主要参考资料

[1]肖看,李群芳.《单片机原理、接口及应用》清华大学出版社.2010

[2]楼然苗.《单片机课程设计指导》.北京航空航天出版社.2002

[3]孙育才.《MCS-51系列单片微型计算机及其应用》.东南大学出版社

[4]王法能.《单片机原理及应用》.科学出版社.2004

[5]李飞光.《单片机课程设计实例指导》.北京航空航天大学出版社.2004

 

附录

附录一.源程序代码

TEMP_ZHEQU24H;实测温度值存放单元

TEMPLEQU25H

TEMPHEQU26H

TEMPHCEQU29H;正、负温度值标记

TEMPLCEQU2AH

TEMPFCEQU2BH

LCD_XEQU2FH;LCD字符显示位置

LCD_RSEQUP2.5;LCD寄存器选择信号

LCD_RWEQUP2.6;LCD读写信号

LCD_ENEQUP2.7;LCD允许信号

DQEQUP3.2;DS18B20数据信号

ORG0000H

MAIN:

MOVSP,#60H

MOVA,#00H

MOVR0,#20H;将20H~2FH单元清零

MOVR1,#10H

CLEAR:

MOV@R0,A

INCR0

DJNZR1,CLEAR

LCALLSET_LCD

START:

LCALLRST;调用18B20复位子程序

LCALLMENU_OK;DS1820存在,调用显示正确信息子程序

LCALLTEMP_BJ;显示温度标记

JMPSTART2

START2:

LCALLRST;调用DS18B20复位子程序

MOVA,#0CCH;跳过ROM匹配命令

LCALLWRITE

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

LCALLWRITE

LCALLRST

MOVA,#0CCH;跳过ROM匹配

LCALLWRITE

MOVA,#0BEH;读温度命令

LCALLWRITE

LCALLREAD;调用DS18B20数据读取操作子程序

LCALLCONVTEMP;调用温度数据BCD码处理子程序

LCALLDISPBCD;调用温度数据显示子程序

LCALLCONV;调用LCD显示处理子程序

SJMPSTART2;循环

;*********************显示温度标记子程序**********************

TEMP_BJ:

MOVA,#0CBH

LCALLWCOM

MOVDPTR,#BJ1;指针指到显示消息

MOVR1,#0

MOVR0,#3

BBJJ1:

MOVA,R1

MOVCA,@A+DPTR

LCALLWDATA

INCR1

DJNZR0,BBJJ1

RET

BJ1:

DB00H,"C"

;******************显示正确信息子程序***************

MENU_OK:

MOVDPTR,#M_OK1;指针指到显示消息

MOVA,#1;显示在第一行

LCALLLCD_PRINT

MOVDPTR,#M_OK2

MOVA,#2

LCALLLCD_PRINT

MOVDPTR,#M_OK3

MOVA,#3

LCALLLCD_PRINT

RET

M_OK1:

DB"OK4130220238",0

M_OK2:

DB"",0

M_OK3:

DB"DATE:

2016-1-26",0

;****************DS18B20复位子程序(初始化)******************

RST:

SETBDQ

NOP

CLRDQ

MOVR0,#6BH;主机发出延时复位低脉冲

MOVR1,#04H

TSR1:

DJNZR0,$

MOVR0,#6BH

DJNZR1,TSR1

SETBDQ;拉高数据线

NOP

NOP

NOP

TSR5:

MOVR0,#06BH

TSR6:

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

TSR7:

SETBDQ

RET

;*************将自定义字符写入LCD的CGRAM中*****************

STORE_DATA:

MOVA,#40H

LCALLWCOM

MOVR2,#08H

MOVDPTR,#D_DATA

MOVR3,#00H

S_DATA:

MOVA,R3

MOVCA,@A+DPTR

LCALLWDATA;写入数据

INCR3

DJNZR2,S_DATA

RET

D_DATA:

DB0CH,12H,12H,0CH,00H,00H,00H,00H

;******************DS18B20数据写入操作子程序*****************

WRITE:

MOVR2,#8;一共8位数据

CLRC

WR1:

CLRDQ;开始写入DS18B20总线要处于复位(低)状态

MOVR3,#07

DJNZR3,$;总线复位保持16微妙以上

RRCA;把一个字节DATA分成8个BIT环移给C

MOVDQ,C;写入一位

MOVR3,#3CH

DJNZR3,$;等待100微妙

SETBDQ;重新释放总线

NOP

DJNZR2,WR1;写入下一位

SETBDQ

RET

;***************DS18B20数据读取操作子程序********************

READ:

MOVR4,#4;将温度低位、高位、TH、TL从DS18B20中读出

MOVR1,#TEMPL;存入25H、26H、27H、28H单元

RE00:

MOVR2,#8

RE01:

CLRCY

SETBDQ

NOP

NOP

CLRDQ;读前总线保持为低

NOP

NOP

NOP

SETBDQ;开始读总线释放

MOVR3,#09;延时18微妙

DJNZR3,$

MOVC,DQ;从DS18B20总线读得一位

MOVR3,#3CH

DJNZR3,$;等待100微妙

RRCA;把读得的位值环移给A

DJNZR2,RE01;读下一位

MOV@R1,A

INCR1

DJNZR4,RE00

RET

;*******************温度值BCD码处理子程序******************

CONVTEMP:

MOVA,TEMPH;判温度是否零下

ANLA,#08H

JZTEMPC1;温度零上转

CLRC

MOVA,TEMPL;二进制数求补(双字节)

CPLA;取反加1

ADDA,#01H

MOVTEMPL,A

MOVA,TEMPH

CPLA

ADDCA,#00H

MOVTEMPH,A

MOVTEMPHC,#0BH;负温度标志

MOVTEMPFC,#0BH

SJMPTEMPC11

TEMPC1:

MOVTEMPHC,#0AH;正温度标志

MOVTEMPFC,#0AH

TEMPC11:

MOVA,TEMPHC

SWAPA

MOVTEMPHC,A

MOVA,TEMPL

ANLA,#0FH;乘0.0625

MOVDPTR,#TEMPDOTTAB

MOVCA,@A+DPTR

MOVTEMPLC,A;TEMPLCLOW=小数部

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

当前位置:首页 > 总结汇报 > 工作总结汇报

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

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