单片机数字温度计 课程设计说明书.docx

上传人:b****6 文档编号:5154588 上传时间:2022-12-13 格式:DOCX 页数:26 大小:163.01KB
下载 相关 举报
单片机数字温度计 课程设计说明书.docx_第1页
第1页 / 共26页
单片机数字温度计 课程设计说明书.docx_第2页
第2页 / 共26页
单片机数字温度计 课程设计说明书.docx_第3页
第3页 / 共26页
单片机数字温度计 课程设计说明书.docx_第4页
第4页 / 共26页
单片机数字温度计 课程设计说明书.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

单片机数字温度计 课程设计说明书.docx

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

单片机数字温度计 课程设计说明书.docx

单片机数字温度计课程设计说明书

 

1系统的总体设计

1.1设计背景

温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要意义。

在单片机的应用中,一个很重要的应用就是对温度进行测量。

测量温度的关键是温度传感器,采用智能温度传感器以实现温度数字化,既能以数字形式直接输出被测温度值,具有测量误差小,分辨率高,抗干扰能力强,也能远距离传输数据,带串行总线接口等优点,温度的数字显示在LCD1602上。

单片机,温度传感器与LCD1602等电子器件的互联,可以研制和开发具有高性价比的新一代测温系统——基于单片机的数字温度计。

1.2电路的总体工作原理

温度控制系统采用AT89C51八位机作为微处理单元进行控制。

系统框图如图1.1:

图1-1系统框图

根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示等功能。

选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

该系统的总体设计思路如下:

温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器为点阵字符LCD,1602液晶模块。

检测范围-50摄氏度到110摄氏度。

1.2.1采用数字单片智能温度传感器

DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。

由于DS18B20将温度传感器、信号放大调理、A/D转换、接口全部集成于一芯片,与单片机连接简单、方便,所以温度传感器采用DS18B20。

图1-2DS18B20温度传感器

1.2.2采用1602LCD液晶屏

采用LCD液晶屏进行显示。

LCD液晶显示器是一种低压、微功耗的显示器件,只要2~3伏就可以工作,工作电流仅为几微安,是任何显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示文字、曲线,比传统的数码LED显示器显示的界面有了质的提高。

在仪表和低功耗应用系统中得到了广泛的应用。

优点为:

1.显示质量高,由于液晶显示器的每一个点收到信号后就一直保持那种色彩和亮度恒定发光,因此液晶显示器的画质高而且不会闪烁。

2.数字式接口,液晶显示器都是数字式的,和单片机的接口简单操作也很方便。

3.功率消耗小,相比而言液晶显示器的主要功耗在内部电极和驱动IC上,因而耗电量比其他器件要小很多。

图1-31602液晶模块

2系统的硬件设计

2.1单片机最小系统的设计

图2-1AT89C51单片机最小系统

AT89C51单片机如图2.1所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可以用于数据的输出和输入,P3口具有第二功能为系统提供一些控制信号。

时钟电路用于产生MCS-51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制下,严格地按时序指令工作。

MCS-51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。

这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。

电路中的微调电容通常选择为30pF左右,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。

晶体的振荡频率为12MHz。

MCS-51的复位采用最简单的外部按键复位电路。

按键自动复位是通过外部复位电路的来实现的.我们选用时钟频率为12MHz,C1取47μf。

2.2温度传感电路设计

2.2.1温度传感器DS18B20

硬件上,DS18B20的VCC接外部电源,GND接地,I/O与单片机的I/O线相连。

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

2.2.2温度传感器DS18B20温度转换

由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。

系统对DS18B20的各种操作按协议进行。

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

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

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

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

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

表2DS18B20温度值格式表

高8位

S

S

S

S

S

26

25

24

低8位

23

22

21

20

2-1

2-2

2-3

2-4

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中。

当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。

表3是一部分温度值对应的二进制温度数据。

表3 一部分温度对应值表

温度/℃

二进制表示

十六进制表示

+125

0000011111010000

07D0H

+85

0000010101010000

0550H

+25.0625

0000000110010000

0191H

+10.125

0000000010100001

00A2H

+0.5

0000000000000010

0008H

0

0000000000001000

0000H

-0.5

1111111111110000

FFF8H

-10.125

1111111101011110

FF5EH

-25.0625

1111111001101111

FE6FH

-55

1111110010010000

FC90H

2.3显示电路的设计

2.3.11602LCD主要技术参数及引脚说明

1602LCD主要技术参数:

显示容量:

16×2个字符

芯片工作电压:

4.5—5.5V

工作电流:

2.0mA(5.0V)

模块最佳工作电压:

5.0V

字符尺寸:

2.95×4.35(W×H)mm

液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。

根据显示内容和方式的不同可以分为,数显LCD,点阵字符LCD,点阵图形LCD在此设计中我们采用点阵字符LCD,这里采用常用的2行16个字的1602液晶模块。

1602LCD采用标准的14脚接口,各引脚接口说明如表4所示:

表4引脚接口说明表

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

8

D1

数据

1602采用标准的14脚接口,其中:

第1脚:

VSS为地电源第2脚:

VDD接5V正电源

第3脚:

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

第4脚:

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

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

2.3.21602LCD的指令说明及时序

1602液晶模块内部的控制器共有11条控制指令,如表5所示:

表5控制命令表

序号

指令

RS

R/W

D7

D6

D5

D4

D3

D2

D1

D0

1

清显示

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

*

3

置输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示开/关控制

0

0

0

0

0

0

1

D

C

B

5

光标或字符移位

0

0

0

0

0

1

S/C

R/L

*

*

6

置功能

0

0

0

0

1

DL

N

F

*

*

7

置字符发生存贮器地址

0

0

0

1

字符发生存贮器地址

8

置数据存贮器地址

0

0

1

显示数据存贮器地址

9

读忙标志或地址

0

1

BF

计数器地址

10

写数到CGRAM或DDRAM)

1

0

要写的数据内容

11

从CGRAM或DDRAM读数

1

1

读出的数据内容

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。

(说明:

1为高电平、0为低电平)

指令1:

清显示,指令码01H,光标复位到地址00H位置。

指令2:

光标复位,光标返回到地址00H。

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标。

指令6:

功能设置命令DL:

高电平时为4位总线,低电平时为8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:

字符发生器RAM地址设置。

指令8:

DDRAM地址设置。

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据。

指令11:

读数据。

与HD44780相兼容的芯片时序表如下:

表6基本操作时序表

读状态

输入

RS=L,R/W=H,E=H

输出

D0—D7=状态字

写指令

输入

RS=L,R/W=L,D0—D7=指令码,E=高脉冲

输出

读数据

输入

RS=H,R/W=H,E=H

输出

D0—D7=数据

写数据

输入

RS=H,R/W=L,D0—D7=数据,E=高脉冲

输出

 

3软件设计思想及流程

3.1系统主程序

图3-1主程序流程图

3.2读温度子程序

图3-2读温度子程序流程

3.3转换温度子程序

图3-3温度转换子程序流程图

3.4计算温度子程序

图3-4计算温度子程序流程图

 

图3-5显示温度子程序

 

4Protuse仿真图

图4-1数字温度计连线图

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

5全文总结

经过一周的时间的单片机课程设计,查阅了大量的关于传感器、单片机及其接口电路、以及控制方面的理论。

经过了一番特殊的体验后,经历了失败的痛苦,也尝到了成功的喜悦。

第一次靠用所学的专业知识来解决问题。

检查了自己的知识水平,使我对自己有一个全新的认识。

我们在单片机单片机理论课程的基础上,通过对此次课程设计的学习,使我们在软件编程、调试、相关仪器设备和相关软件的使用技能的方面得到了较全面的锻炼提高,增进对单片机的感性认识,加深对单片机理论方面的理解;加深了单片机内部功能结构的应用;使我们掌握单片机的内部功能模块的应用,掌握单片机接口功能和扩展应用,掌握一些特殊器件及常用器件的使用方法,学习编制综合程序;了解和掌握单片机应用系统的软硬件设计方法及调试过程。

强化了单片机应用电路的设计与分析能力,提高了我们在单片机应用方面的实践技能,充分发挥我们的主观能动性,激发我们的学习兴趣,培养我们主动利用单片机解决工程实际问题的意识。

这些培养和锻炼对于我们以后走向工作岗位来说,也是很重要的。

总之,这一次的课程设计使我们学到了许多东西,我从中获益匪浅。

 

6参考文献

[1]吴亦锋,陈德为.单片机原理与接口技术.北京:

电子工业出版社,2010.11

[2]周润景.单片机电路设计、分析与制作.北京:

机械工业出版社,2010.5

[3]蔡振江.单片机原理及应用.北京;机械工业出版社,2007.1

[4]高洪志.MCS-51单片机原理及应用技术.北京:

人民邮电出版社,2009.4

[5]张精武.单片机系统的PROTEUS设计与仿真.北京:

电子工业出版社,2007.4

[6]胡汉才.单片机原理及其接口技术.(第2版).北京:

清华大学出版社,2004

 

附录:

源程序代码

TEMP_ZHEQU26H;实测温度值存放单元

TEMPLEQU27H

TEMPHEQU28H

TEMPHCEQU29H;正、负温度值标记

TEMPLCEQU2AH

TEMPFCEQU2BH

LCD_XEQU2FH;LCD字符显示位置

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

LCD_RWEQUP2.1;LCD读写信号

LCD_ENEQUP2.2;LCD允许信号

DQEQUP3.3;DS18B20数据信号

ORG0000H

LJMPMAIN

ORG0030H

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

START1:

SJMP$

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,#2

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

RET

M_OK1:

DB"MADEBYHAO",0

M_OK2:

DB"TEMP:

",0

;*******************DS18B20复位子程序********************

RST:

SETBDQ

NOP

CLRDQ;

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

MOVR1,#04H

TSR1:

DJNZR0,$

MOVR0,#6BH

DJNZR1,TSR1

SETBDQ;拉高数据线

NOP

NOP

NOP

MOVR0,#32H

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,#2;将温度低位、高位、从DS18B20中读出

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

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=小数部分BCD

MOVA,TEMPL;整数部分

ANLA,#0F0H;取出高四位

SWAPA

MOVTEMPL,A

MOVA,TEMPH;取出低四位

ANLA,#0FH

SWAPA

ORLA,TEMPL;重新组合

MOVTEMP_ZH,A

LCALLHEX2BCD1

MOVTEMPL,A

ANLA,#0F0H

SWAPA

ORLA,TEMPHC;TEMPHCLOW=十位数BCD

MOVTEMPHC,A

MOVA,TEMPL

ANLA,#0FH

SWAPA;TEMPLCHI=个位数BCD

ORLA,TEMPLC

MOVTEMPLC,A

MOVA,R4

JZTEMPC12

ANLA,#0FH

SWAPA

MOVR4,A

MOVA,TEMPHC;TEMPHCHI=百位数BCD

ANLA,#0FH

ORLA,R4

MOVTEMPHC,A

TEMPC12:

RET

;*******************二-十进制转换子程序***************

HEX2BCD1:

MOVB,#100

DIVAB

MOVR4,A

MOVA,#10

XCHA,B

DIVAB

SWAPA

ORLA,B

RET

TEMPDOTTAB:

DB00H,00H,01H,01H,02H,03H,03H,04H;小数部分码表

DB05H,05H,

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

当前位置:首页 > 高等教育 > 艺术

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

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