ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:709.40KB ,
资源ID:7079662      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7079662.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的数字温度计设计与仿真.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的数字温度计设计与仿真.docx

1、基于单片机的数字温度计设计与仿真基于单片机的数字温度计设计与仿真 盘桂云(吉首大学物理科学与信息工程学院,湖南 吉首 416000) 摘 要本课题以单片机为控制核心,设计了一款数字温度计。该系统由51单片机、DS18B20温度传感器以及1602 LCD液晶显示屏等部件组成。系统上电后进入实时温度显示状态,此时将DS18B20中的温度值读到单片机中并将其显示在LCD液晶显示屏上。系统可以设置上下限报警温度值,当测得结果超过设定值时进行相应的报警,提供一个接口可以将温度值传送给其它控制器或计算机,测量准确且误差小,其误差在0.02。关键词:单片机;温度采集;LCD显示;温度传感器;数字温度计; E

2、mluater and Design of Digital Thermometer Based on Microcomputer Control Panguiyun (College of Physics Science and Information Engineering,Jishou University,Jishou,Hunan 416000)AbstractThis topic with the microcontroller as control core , and design a digital thermometer. It consists of 51 single -c

3、hip microcomputer, 18B20 temperature sensor and 1602 LCD screen display etc. After power on, the system into real-time temperature display state, then the temperature 18B20 will read in the single-chip microcomputer and displayed in the LCD screen. System can set upper temperature alarm, when the al

4、arm measured results than the setting measured corresponding alarm, System can provide an interface which sends the temperature to other controller or computer. There is little measuring error, measuring error at 0.02. Key words:Microcontroller;Temperature acquisition;LCD display;Temperatere sensor;

5、Digital thermometer第一章 绪 论 11.1 系统背景 11.2 系统概述 11.2.1 系统功能 11.2.2 系统所用器件及其作用 1第二章 系统总体设计21 系统硬件电路总体设计322系统软件的总体设计 423主程序的流程设计与实现程序 63.2.1 主程序的流程设计63.2.2 主程序的实现程序 7第三章 主要器件介绍31 18B20温度传感器 832 1602液晶显示器 8第四章 系统详细设计41控制模块电路设计 104.1.1晶振电路设计 104.1.2复位电路设计 1042温度传感器模块 114.2.1温度传感器模块电路设计 114.2.2温度传感器模块程序设计

6、 1243 液晶显示模块 164.3.1液晶显示模块电路设计 164.3.2液晶显示模块程序设计 174.4 键盘输入模块174.4.1键盘输入模块电路设计 174.4.2键盘输入模块程序设计 184. 5报警模块 194.5.1报警模块电路设计 194.5.1报警模块程序设计 204. 6串行输出模块20第五章 软件仿真与测试5.1软件的仿真分析与仿真结果 21结束语 25参考文献 26致谢 27附录1:系统电路图 28附录2:源程序清单29 第一章 绪 论1.1 系统背景在工农业生产和日常生活中,对温度的测量占据着极其重要地位。冰箱、空调、烘干机中均用了温度控制系统。目前,我国单片机的开发

7、应用正在兴起,单片机在机电一体化、智能仪表、工业控制、家用电器等方面的应用成果尤为显著。本课题基于单片机设计了一款数字温度计。1.2 系统概述本设计以单片机为控制核心。其设计通过18B20进行温度采集,采用1602液晶来进行温度显示,有键盘输入和LED二极管进行温度报警功能。其温度通过MAX232通信方式传送出去,可给另一控制器或计算机进行其它操作用。硬件总的包括单片机及相应单片机小系统相关元件、18B20温度传感、1602液晶显示屏、三个按键,MAX232电平转换器件和两个LED二极管。1.2.1 系统的功能本数字温度计系统主要完成的功能是对测量温度进行显示,其中包括过温报警功能。具体的功能

8、如下所述:(1)能够实时的测得温度并进行显示,显示的误差在0.02;(2)可以通过键盘输入相应的上下限温度;(3)数字温度计测得的温度值和我们设定的上下限温度都可以在LCD上显示出来。其中在主界面下是实时显示测得的温度值;(4)当系统测得的温度低于最低温度或高于最高温度时会进行相应的报警;(5)测得温度通过MAX232传送出去,可供其它器件操作。本数字温度计的工作过程如下:首先通过18B20温度传感器进行温度采集,然后将采集到的数据传送给单片机,单片机将收到的数据进行相应的处理后通过1602液晶显示给用户。在此过程中如果测得的温度超过了上下限温度时系统会启动报警。其中上下限温度值可由用户进行设

9、定,如未设定则为系统初始值。系统还可将温度通过MAX232传送给计算机等进行相应的操作。1.2.2 系统所用器件及其作用在数字温度计系统中所使用的器件及其作用如下所述:(1) 单片机:系统的控制部分,能对采集的温度进行相应处理。(2) 18B20温度传感器:用来采集温度。(3) 1602液晶显示屏:用来显示单片机控制器处理的相应结显。(4) LED发光二极管:用来进行报警的模拟。(5) 按键:用来输入相应的上下限温度值。(6)MAX232:进行串行通信的电平转换。第二章 系统总体设计2.1系统硬件电路总体设计数字温度计系统硬件电路按功能可以分为以下几个模块电路:控制模块电路、温度传感器模块电路

10、、液晶显示模块电路、键盘输入模块电路、报警模块、串行通信模块电路。系统硬件电路总体设计方框图,如图2.1所示:图2.1.2 系统的电路图2.2系统软件的总体设计软件部分即程序编写部分。为了程序的可读性和独立性,程序的书写分模块书写,且同一个模块放在同一个文件下。根据此思路,程序分为主程序模块部分、1602液晶显示驱动模块部分、按键模块部分、DS18B20驱动模块部分、报警模块部分、串行输出程序模块和组合程序模块部分。各部分的联系都通过组合程序模块部分进行组合,而组合程序只给主程序调用。各程序部分的相关关系如图:各个程序模块设计之间的关系如上图,且在它们的对应关系中还有一个文件名为head .h

11、,此文件用来定义IO端口和进行相关的外部变量和外部函数的声明。每一个C文件前面都会有:include“head.h”来包含些头文件各文件的联接通过外部函数和外部变量。其各部分的外部函数和外部变量声明在head.h文件中。各程序模块对应的外部函数及外部变量如下:DS18B20驱动程序部分: extern void get_temperature();extern int temperature;1602液晶驱动程序部分:extern void lcd_prints(uchar *strint,uchar x,uchar y);按键模块程序部分:extern void key_scanf();ex

12、tern uchar key1,key2,key3;报警程序模块部分:extern void compare_temperature();extern void deal_compare_temperature();extern uchar low_flag,high_flag;串行通信模块部分:extern void usart();组合程序部分:extern void dis_temperature(int temp_temperature);extern void main_init();extern void main_scanf_deal(); 以上列出的各外部函数与外部变量是各个.

13、C文件相互联接的基础,其关系如图2.2.1所示.其中这些外部函数与IO定义都放在head.h文件中.IO定义列出如下: /*IO口的定义*/ /*/*sbit rs = P20;sbit rw = P21;sbit en = P22;sbit busy_f = P07;#define dc_port P1#define lcd_com 0 / Command#define lcd_data 1 / Data#define key P2/按键IO定义sbit B20_IO = P37; /温度输入口sbit beer = P32; /报警IO口1sbit beer1 = P33; /报警IO口2

14、/*/*2.3主程序的流程设计与实现程序2.3.1主程序的流程设计由于各个程序都是模块化的设计,因此主程序的工作量就很少且思路也很清析。它的调用程序都在unite.c文件中。其程序设计思路如下:图2.3.1主程序流程图2.3.2主程序的实现程序/*函数名称:void main()功能说明:主函数入口参数:void*/void main() main_init();/主程序的初始化部分程序 while(1) get_temperature();/获得温度 lcd_write(lcd_com,0x01);/清屏 lcd_prints( now temperature,0,0);/第一行的显示 di

15、s_temperature(temperature);/显示温度(第二行中) key_scanf();/扫描按键 main_scanf_deal();/按键处理 compare_temperature();/三个温度比较处理 deal_compare_temperature();/处理比较结果进行报警 usart();/串行数据传出 第三章 主要器件介绍3.1 18B20温度传感器DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。其引脚图如下:图3.1.1 18B20引脚图DS18B20的功能是测量环境的温度。测温范围-55_+125,其温度数字量转换

16、时间为200MS在此系统中使用的命令只有三个。其命令列出如下:0xCC/跳过ROM0x44/温度转换0xBE/Read Scratchpad 命令对18B20的时序操作参考18B20程序设计部分说明。3.2 1602液晶显示器1602液晶显示器具有功耗低,寿命长的特点。其数据以八位并行方式传输。其引脚图如下:图3.2.1 1602液晶引脚图如图3.2.1,其各引脚如下图表:表3.2.2 1602液晶引脚功能图表1602液晶是工业字符型液晶,能够同时显示16x02即32个字符。使用的命令列出如下:0X38 /设置8位数据方式,无光标 0x0c /开显示 0x06 /设置地址指针加1 0x01 /

17、清屏 0x02 /AC自增第四章 系统详细设计4.1 控制模块电路设计MCU控制模块电路是数字温度计系统的控制核心部分,主要由晶振电路、复位电路、MCU单片机芯片组成。晶振电路,它产生整个系统的时钟脉冲,时钟是12Mhz;复位电路,可进行单片机的复位操作;MCU单片机芯片,是数字温度计系统的控制核心芯片,它负责各种数据处理和控制。4.1.1晶振电路设计 晶振电路采用11.0592MHz的晶振。其电路如下:图4.1.1晶振电路的电路图 其中C1,C2取27PF。4.1.2复位电路设计 51系列单片机的复位是高脉冲复位。其电路设计如下:图4.1.2复位电路的电路图 复位原理:当按键按下时reset

18、从低电平变为高电平,且C3电容完全放电;当按键释放,电容开始冲电。此时电容相当一条导线,reset保持高电平;当C3冲完成后,reset变为低电平。此过程中只要高电平保持时间达到系统要求即可进行一次复位动作。图4.1.3reset的电平变化示意图4.2 温度传感器模块4.2.1温度传感器模块电路设计 温度传感器部分是数字温度计的核心部分。它用来采集温度。本系统采用的温度传感器是DS18B20 。 DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。18B20总共三个接线端口,一个VCC,一个GND,还有一个DQ,VCC和GND是一般电子器件的电源与地,接

19、法固定。DQ是单线数据端口。由于在释放DQ时要保证在高电平,因此采用一个上拉电阻接在VCC上。DQ接MCU中的P3.7接法电路图:图4.2.1 温度传感器模块的电路图4.2.2 温度传感器模块程序设计采集数据处理方法及程序实现:温度传感器部分采用的是18B20。由于从18B20中读得的数据并不是真实的温度值,因此得进行相应的算法计算。为了简便程序并让读出的温度更精确,采用18B20系统默认的设置,即12bit模式。典型对应的温度值表如表4.2.2所示:表4.2.2 DS18B20典型对应的温度值表温度/二进制表示十六进制表示+125 +25.0625+10.125+0.50-0.5-10.12

20、5-25.0625-5500000111 1101000000000001 1001000100000000 1010001000000000 0000100000000000 0000000011111111 1111100011111111 0101111011111110 0110111111111100 1001000007D0H0191H00A2H0008H0000HFFF8HFF5EHFE6FHFC90H从图表与相关资料中都可以看出,每单位十六进制对应的温度是0.0625。这个十六进制数的值保存在两个寄存器中,如图:图4.2.3温度寄存器图 由上表和图:我们得到要想在程序中计算出温

21、度,得分两个部分来算,一个部分是温度为正值时,另一个部分是温度为负值时。因此我们得到了两个公式 当温度为正值时:temperature=(MSB*256+LSB)*0.0625 当温度为负值时:temperature= -( MSB*256+LSB)+1)*0.0625从上面分析出来计算温度的公式了。但是在单片机中小数的处理特别麻烦,要怎样才能让程序写得简节点呢?由于有效位为小数点后两位,因此如果把温度值扩大100倍那样就更简单了,只要在输出显示时小数点的位置处理下就行了。以下是本系统在写计算过程中的部分程序: if(tem2&0x80)=0x80)/如果温度是负值 tmp_tmp=(tem2

22、*256+tem1)+1)*6.25/此处将温度扩大了100倍 flag1=1; Elsetmp_tmp=(tem2*256+tem1)*6.25; /此处将温度扩大了100倍temperature=(int)tmp_tmp; if(flag1)temperature|=0x8000;flag1=0;/表示负数,因负数运算时丢失了符号位,在此给它加上在此部分程序中计算采用了分析出来的公式,处理方法采用了乘100扩大数值的方法。在之后的显示中做了相应的显示处理。datasheet分析及程序实现:DS18B20是一颗数字型芯片,对其操作要按照芯片资料介绍进行。从datasheet中看其操作包括很多

23、,包括多颗DS18B20同总线操作方法,包括不同位数的操作法。我们采用12bit模式即默认模式,这样就少写了程序同时也满足要求。这此设计中只用到一颗故部分datasheet可不理。在程序中我们要对18B20进行写命令,还要对它读数据,芯片的启动要有个初始化程序。1. 初始化18B20部分:图4.2.4初始化18B20时序图如图4.2.3中所示对18B20的初始化只要先将数据线从高电平拉低,等待480us左右释放数据总线,等待15us左右如得到一个低电平(60240us)说明初始化成功,此时可以对它操作。程序如下:/*函数名称:void 18B20_init()功能说明:18B20初始化入口参数

24、: void*/void B20_init() bit flag=1; while(flag) B20_IO=1; B20_delay(1); B20_IO=0; B20_delay(44);/下拉总线 B20_IO=1; B20_delay(2);/释放总线 if(B20_IO)/等待释放总线 flag=1; else/等待应答信号 flag=0; B20_delay(50); B20_IO=1;/拉高挂起2.写程序部分:写程序部分用来对18B20进行写命令,发相应的操作指令用。图4.2.5写18B20时序图如上图所示,对18B20的写过程很简单。首先将数据总线从高电平拉低,等待15us,如

25、果写的是0则保持数据总线为低,如果写的是1则此时把数据总线拉高即可。3.读程序部分:读程序部分用来对18B20读出相应的温度值。图4.2.6读18B20时序图 如上图所示,首先将数据总线从高电平拉低,等待15us,如果读的是低电平则为0,如果读的是高电平则为1. 在程序实现中,目的是得到一个温度值,故在18B20程序模块中有一个函数get_temperature(),用来得到一个温度值即可。以上初始化等程序都为此程序服务,在调用此程序后就得到了个temperature。这就是18B20程序模块的最终目的。18B20程序模块程序全部放在18B20.c文件中。4.3 液晶显示模块4.3.1液晶显示

26、模块电路设计 液晶显示模块是人机接口中的一个重要部分。它是用来显示测得的温度及相关提示信息的。本数字温度计的液晶显示采用的是1602液晶。因为这两种液晶的操作是一样的,而在proutes中又没1602液晶,所以在proutes中采用LMO16L来进行代替, 在常规设计中数据口一般接P0口,考虑到P0口无上拉电阻,这样我们就得在P0口上拉电阻或使用锁存器来代替,这样的话电路上就会增加硬件从而增加了布线的难度。又因为1602液晶不像ROM和RAM那样操作,因此在液晶显示电路设计中采用数据端口为P1口。 RS:数据/命令选择,对应在MCU中的IO端口是:P20 RW:读/写选择端,对应在MCU中的IO端口是:P21 E:使能信号端,对应在MCU中的端口是:P22 图4.3.1 液晶显示模块的电路图4.3.2液晶显示模块的程序设计 1602液晶和18B20一样,操作要根据datasheet进行,在此

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

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