毕业论文 基于单片机的温度控制系统 - 图文
更新时间:2023-12-15 19:06:01 阅读量: 教育文库 文档下载
- 毕业论文怎么写大专推荐度:
- 相关推荐
毕业设计(论文)
题 目 基于单片机的温度控制系统设计 专 业 应用电子技术
姓 名 李 婉 青
班 级 09221班04号
指导教师 周 俊
成都电子机械高等专科学校
二0一二年五月
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
基于单片机的温度控制系统设计
[摘 要]:
1 文章介绍了基于单片机温度控制的硬件设计和软件设计,它在很多领域都广泛运用,而该系统硬件部分的重心在于单片机。文章以温度采集系统为例, DS18B20温度测量系统是以AT89C51单片机作为控制核心,智能温度传感器DS18B20为控制对象,用LM016L液晶显示,运用C语言实现系统的各种功能。设计完成了DS18B20的温度采集电路、显示电路、温度处理电路、报警提示电路。借助仿真工具Proteus和单片机编程软件Keil实现了系统软、硬件的交互仿真,实现了课题设计目的。
本课题所设计的温度控制系统可实现对远程环境的温度测量与监控,适用于电力工业、农业、煤矿、火灾、高层建筑等场所,还可以用于环境恶劣的工业控制现场。 [关键词]:数字温度传感器DS18B20;单片机;LMO16L ;Proteus仿真;Keil
Based on SCM multi-channel data acquisition system design
Abstract: this paper introduces the data acquisition based on single chip computer hardware design and software design, its existence has a very important role in many areas. This paper introduces is the focus of the data acquisition system, and the system hardware part is the center of gravity of the microcontroller. In this paper, the more temperature gathering system for example, DS18B20 temperature measuring system is based on AT89C51 single chip microcomputer as control core, intelligent temperature sensor DS18B20 is the object of control, with LM016L liquid crystal display, using C language implementation of various of system function. Design finished DS18B20 temperature selection screen circuit testing and points. Using simulation tools Proteus and single chip microcomputer Keil software programming realized the system software and hardware, realize the interaction of the topic the design purpose.
This subject design temperature control system can realize to the remote environment temperature measurement and monitoring, used in electric power industry, coal mine, fire, high-rise buildings and other places, can also be used for the environmental bad industrial control field.
Keywords: digital temperature sensor DS18B20; SCM; Proteus simulation; Keil
1
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
目录
[摘 要]: ....................................................................................................................................................... 1 第一章绪论 .................................................................................................................................................... 3
1.1课题研究的目的和意义 .................................................................................................................. 3 1.2 课题内容 ......................................................................................................................................... 3 第二章系统设计 ............................................................................................................................................ 4
2.1系统的总设计 .................................................................................................................................. 4 2.2功能模块 .......................................................................................................................................... 4 第三章硬件设计 ............................................................................................................................................ 5
3.1单片机主控制单元 .......................................................................................................................... 5 3.2温度信号采集单元 .......................................................................................................................... 8 3.3液晶显示屏输出 ............................................................................................................................ 12
3.3.1 1602LCD的基本参数及引脚功能 ................................................................................. 12 3.3.2 1602LCD的指令说明及时序 ......................................................................................... 14 3.3.3 1602LCD的RAM地址映射及标准字库表 .................................................................. 16 3.4蜂鸣器报警电路 ............................................................................................................................ 18 第四章软件设计 .......................................................................................................................................... 19
4.1主程序 ............................................................................................................................................ 19 4.2温度采集子程序 ............................................................................................................................ 20 4.3数据处理子程序 ............................................................................................................................ 24 4.4显示子程序 .................................................................................................................................... 25 4.5温度处理及蜂鸣器报警子程序 .................................................................................................... 26 第五章仿真测试 .......................................................................................................................................... 28
5.1 Keil C51 的使用 ........................................................................................................................... 28 5.2 Proteus 的仿真 .............................................................................................................................. 32 结束语: .............................................................................................................................................. 36 致谢: .................................................................................................................................................. 37 参考文献: .......................................................................................................................................... 38
2
2
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
第一章绪论
1.1课题研究的目的和意义
温度是一个永恒的话题和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量,是国际单位制七个基本量之一。温度的变化会给我们的生活、工作、生产等带来重大影响,因此对温度的测量及控制至关重要。其测量控制一般使用各式各样形态的温度传感器。随着现代计算机和自动化技术的发展,作为各种信息的感知、采集、转换、传输相处理的功能器件,温度传感器的作用日显突出,已成为自动检测、自动控制系统和计量测试中不可缺少的重要技术工具,其用途已遍及工农业生产和日常生活的各个领域。
然而,随着科学测量的发展,数据采集及其应用也受到了人们的关注,数据采集系统得到迅速的发展,被广泛应用于各种领域。数据采集系统起始于20世纪50年代,1956年美国首先研究了用在军事上的测试系统。
尽管现在以微机为核心的可编程数据采集与处理采集技术的发展方向得到了迅速的发展,而且组成一个数据采集系统只需要一块数据采集卡,把它插在微机的扩展槽内并辅以应用软件,就能实现数据采集功能,但这并不会对基于单片机为核心的数据采集系统产生影响。相较于数据采集板卡成本和功能的限制,单片机具多功能、高效率、高性能、低电压、低功耗、低价格等优点,这就使得以单片机为核心的数据采集系统在许多领域得到了广泛的应用。
3 1.2 课题内容
数据采集也是从一个或多个信号获取对象信息的过程, 它研究信息数据的采集、存储、处理等问题。它是对传感器信号的测量与处理, 以微型计算机等高技术为基础而形成的一门综合应用技术。
该文以温度采集为例,以AT89C51单片机为核心,在单片机中编写对各个硬件设备的控制程序,先通过单片机与DS18B20温度传感器建立一个联系,使DS18B20温度传感器开始工作检测所在环境的温度值,再通过LCD液晶显示器显示DS18B20温度传感器检测到的温度值,最后根据对温度范围的控制设置一温度上下限温度值用于报警提示。当然数据的采集和显示都需要相应硬件和软件共同来完成,该系统难点是对温度传感器的温度采集并显示,而对采集到的温度通过软件程序设定来进行控制就相对来说容易多了。
3
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
第二章系统设计
2.1系统的总设计
本设计使用单片机作为控制核心,采用单个温度传感器对温度进行检测,以液晶显示屏显示检测温度,通过继电器对加热降温系统进行控制:温度过高或者过低,蜂鸣器报警提示;温度偏低进行炉温加热处理;温度偏高进行电机降温处理;。系统总体控制框图如图2.1所示:
图2.1系统总体控制框图
升温处理 及 降温处理 温度传感器 AT89C51 单片机 4 液晶屏显示 蜂鸣器报警 2.2功能模块
根据总系统的结构可以将其分为五个功能模块:单片机主控制模块、温度信号采集模块、温度处理模块、液晶屏温度显示模块、蜂鸣器报警模块。单片机主控制模块即整个系统的核心模块,是一个AT89C51芯片,主要通过执行其程序存储器Rom中的程序来对其4个并行I/O口进行读写操作完成对其他模块的控制。温度信号采集模块是由一个温度信号采集器组成,主要是温度信号采集并将数据传回给单片机主控制模块。传感器采集的温度值通过传回给主控制模块AT89C51单片机进行处理,然后送入液晶显示器进行温度显示。温度处理模块是由继电器控制,加热炉和电机分别来对温度进行升温、降温处理。液晶屏温度显示模块当然就是对温度的当前值进行显示。蜂鸣器报警模块就是对当采集的温度值大于或者小于用户自定义的遇界温度值进行报警提示。
4
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
第三章硬件设计
3.1单片机主控制单元
主控制单元是单片机选用市场上常见的美国ATMEL公司的AT89C51作为控制元件,以下是一些AT89C51的介绍:AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如下所示
主要特性:
·与MCS-51 兼容
·4K字节可编程FLASH存储器 ·寿命:1000写/擦循环 ·数据保留时间:10年 ·全静态工作:0Hz-24MHz ·三级程序存储器锁定 ·128×8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 管脚说明: VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行
5
5
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P1口可作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口可接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。P3口也可作为AT89C51的一些特殊功能口,如下表所示:
管脚 备选功能
P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。
6
6
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
所用单片机AT89C51,见下图3.1所示:
图3.1AT89C51
(1)时钟电路:如下图3.2连接即可构成自激振荡电路,振荡频率取决于适应晶体的振荡频率,范围可取1.2~12MHZ,C1、C2主要起频率微调和稳定作用,电容可取5~30pF。
图3.2时钟电路
(2)复位电路:如下图3.3
图3.3复位电路
7
7
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
3.2温度信号采集单元
对于温度的采集需要用到DS18B20一总线温度传感器,以下DS18B20的一些介绍: DSl8B20温度传感器是美国DALLAS半导体公司继DSl820之后最新推出的只用改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据要求通过简单的编程实现9~l2位的数字直读方式。可以分别存93.75ms和750ms内完成9位和12位的数字量,并且从DSl8B20读出的信息或写入DSl8B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接DSl8B20供电,而无需额外电源。因而使用DSl8B20可使系统结构更趋简单,可靠性更高。他在测温精度,转换时时间,传输距离,分辨率等方面较DSl820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。DSl8B20采用3脚PR35封装或8脚SOIC封装,其内部结构框图如3.4所示:
图3.4 DSl8B20的内部结构图
DS18B20的内部结构主要有四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DSl8B20有2种封装形式:3脚PR-35直插式和8脚SOIC贴片式管脚排列如图3.5所示:
图3.5 DS18B20的管脚
8 8
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
DS18B20的引脚说明如下: GND :地 DQ :数据I/O VDD :电源 NC :空脚
64位激光ROM开始8位是产品类型的编号,接着是每个器件的惟一的序号共有48位,最后8位是前56位的CRC校验码,这也是多个DSl8B20可以采用一线进行通信的原因。64位激光ROM的机构如表3.1所示:
表3.1 64位激光ROM
8位CRC编号
DSl8B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除EEPRAM。后者用于存储TH,TL值。数据先写入RAM,经校验后再传给EEPRAM。而配置寄存器为高速暂存器中的第5个字节,他的内容用与确定温度值的数字转换分辨率,DSl8B20 工作时按此寄存器中的分辨率将温度转换为相应精度的数值。低5位一直都是1,TM是测试模式位,用于设置DSl8B20在工作模式还是在测试模式。在DSl8B20出厂时该位被设置为0,用户不要去改动,Rl和R0决定温度转换精度位数。如表3.2所示。
表3.2内部存储器 TM
由表3.3可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如表4所示。其中温度信息(第l,2字节),TH和TL值第3,4节,第6~8字节,表现为全逻辑1;第9字节读出的是前面所有的8字节的CRC码,可用来保证通信正确。
表3.3温度数据转换与时间
R1 0 0 1 1
当DSl8B20接收到温度转换命令后,开始启动转换,如表3.4所示。转换完成后的
9 48位序列号 8位产品系列编码 LSB MSB LSB MSB LSB MSB
R1 R0 1 1 1 1 1 R0 0 1 0 1 分辨率 9 10 11 12 温度最大转换时间/ms 93.75 187.5 275.00 750.00 9
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
温度值就以16位带符号扩展到二进制补码形式储存在高速暂存存储器的第l,2字节。单片机可通过单线接口读到该数据,读取时低位在前面,高位在后,数据格式以0.0625℃/LSB形式表示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。
表3.4高速暂存存储器 温度低位 温度高位
在DSl8B20完成温度变换之后,温度值与贮存TH和TL内的触发值相比较因为这些寄存器仅仅是8位,所以0.5℃位在比较时被忽略。TH或TL的最高有较位直接对应于l6位温度奇存器的符号位。如果温度测量的结果高于TH或低于TL,那么器件内告警标志将置位。每次温度测量更新此标志。只要告警标志置位,DSl8B20将对告警搜索命令做出响应。这允许并联连接许多DSl8B20,同时进行温度测量。如果某处温度超过极限,那么可以识别出正在告警的器件并立即将其读出而不必读出非告警的器件。部分温度转换如表3.5所示:
表3.5部分温度转换 温度 +125℃ +85℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃ 参数特性:
(1)独特的单线接口只需l个接口引脚即可通信 (2)多点综合测温能力使分布式温度检测应用得以简化 (3)不需要外部元件 (4)可用数据线供电 (5)需备份电源
(6)测量范围从-55℃至+125℃增量值为0.5℃ (7)以9位数字值方式读出温度
H L 配置 保留 保留 保留 8位CRC 10 输入(2进制) 0000 0111 1101 0000 0000 0101 0101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1111 0101 1110 1110 1110 0110 1111 输出(16进制) 07D0H 0550H 0191H 00A2H 0008H 0000H FFF8H FF5EH EE6FH FE90H 10
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
(8)在1秒(典型值)内把温度变换为数字 (9)用户可定义的非易失性的温度告警设置
(10)告警搜索命令识别和寻址温度在编定的极限之外器件温度告警情况 (11)应用范围包括恒温控制工业系统消费类产品温度计或任何热敏系统 极限参数:
(1)任何引脚相对于地的电压-0.5V至+7.0V (2)运用温度-55℃至+125℃ (3)贮存温度-55。C至+125℃ (4)焊接温度260℃/l0秒
如图3.6所示,为单片机与DS18B20的接口电路。DS18B20只有三个引脚,一个接地,一个接电源,一个数字输入输出引脚接单片机的P3.0口电源与数字输入输出脚间需要接一个4.7K的电阻。当然如果单片机的I/O口内部自带有上拉电阻就可以不加上拉电阻了。
VccDS18B20 DQ GND 4.7K 11
单 P1.0 片 机
图3.6 DS18B20与单片机接口电路
DSl8B20使用中注意到事项:
DSl8B20虽然具有测温系统简单,测温精度高、连接方便、占用I/O 口线少等优点,但在实际应用中也应注意以下问题:
(1)在实际片使用中发现,应使电源电压保持在5v左右,如果电压过低,会使所测得到温度与实际温度出现偏高现象,使温度输出定格在85℃。
(2)连接DSl8B20的总线电缆是有长度限制的。当采用普通信号电缆传输长度超过50m时,读取的测温数据发生错误,当采用双绞线带屏蔽电缆为总线电缆时,正常通讯距离可达l50m,当采用每米胶合次数更多的双绞线带屏蔽电缆时,正常通讯距离可以进一步加长。这种情况主要由总线分布电容使信号波形产生畸变造成的。因此,存进行长距离测量时要充分考虑总线分布电容和阻抗匹配问题。根据要求设计的温度采集单元如图3.7所示:
11
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
图3.7温度采集单元
在本系统要采用一条总线上挂单个DS18B20器件。在P1.0口接DS18B20温度传感器。由于只采用单个传感器,故无需读出DS18B20温度传感器的序列号,在程序中直接跳过ROM。
12 3.3液晶显示屏输出
液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
3.3.1 1602LCD的基本参数及引脚功能
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图3.8所示:
图3.8 1602LCD尺寸图
12
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
1602LCD主要技术参数: 显示容量:16×2个字符 芯片工作电压:4.5—5.5V 工作电流:2.0mA(5.0V)
13 模块最佳工作电压:5.0V 字符尺寸:2.95×4.35(W×H)mm 引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表3.6所示:
表3.6:引脚接口说明表
编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/W E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D7 BLA BLK 引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极 第1脚:VSS为地电源。 第2脚:VDD接5V正电源。 第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
13
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。
14 3.3.2 1602LCD的指令说明及时序
1602液晶模块内部的控制器共有11条控制指令,如表3.7所示:
表3.7:控制命令表
序号 指令 1 2 3 4 5 6 7 8 9 10 11 清显示 光标返回 置输入模式 显示开/关控制 光标或字符移位 置功能 置字符发生存贮器地址 置数据存贮器地址 读忙标志或地址 写数到CGRAM或DDRAM) 从CGRAM或DDRAM读数 RS 0 0 0 0 0 0 0 0 0 1 1 R/W D7 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 D6 0 0 0 0 0 0 D5 0 0 0 0 0 1 D4 0 0 0 0 1 DL D3 0 0 0 1 D2 0 0 1 D D1 0 1 I/D C * * D0 1 * S B * * S/C R/L N F 1 字符发生存贮器地址 1 显示数据存贮器地址 BF 计数器地址 0 要写的数据内容 1 读出的数据内容 1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置。
14
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
指令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相兼容的芯片时序表3.8如下:
表3.8:基本操作时序表
读状态 写指令 读数据 写数据 输入 输入 输入 输入 RS=L,R/W=H,E=H RS=L,R/W=L,D0—D7=指令码,E=高脉冲 RS=H,R/W=H,E=H RS=H,R/W=L,D0—D7=数据,E=高脉冲 输出 输出 输出 输出 D0—D7=状态字 无 D0—D7=数据 无 15 读写操作时序如图3.9和3.10所示:
15
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
16
图3.9读操作时序
图3.10 写操作时序
3.3.3 1602LCD的RAM地址映射及标准字库表
液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图3.11是1602的内部显示地址。
16
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
17
图3.11 1602LCD内部显示地址
例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图3.12所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”
图3.12字符代码与图形对应图
17
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
连接显示电路如图3.13所示:
图3.13
18 3.4蜂鸣器报警电路
蜂鸣器报警电路由一个报警器与一个I/O口P2.2相连,通过对I/O通过输入高低电平来控制报警器的响铃。P2.2为低电平时报警并红灯亮。见下图3.14:
图3.14蜂鸣器报警电路
18
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
第四章软件设计
4.1主程序
系统主流程图如图4.1所示,主要完成是调用LCD液晶显示器的初始化及18b20初始化,对温度的采集、转化并显示以及对相应温度的控制处理。主程序相当于一条主线,将各个准备子程序模块组合在一起,以实现功能要求,将当前温度值显示在液晶显示器上。
Y
图4.1主函数流程图
显示温度 温度控制响应 启动温度转换 1602初始化 开始 19 N 18b20初始化是否成功
19
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
4.2温度采集子程序
温度采集子程序主要是实现对温度的采集及对温度数据进行处理传回给单片机在进行显示。本系统用的DS18B20温度传感器要进行温度检测就需要对它进行初始化、写指令操作,读数据操作以及读温度前的准备工作等。因此温度采集子程序又由对DS18B20温度传感器的初始化子程序、写指令子程序、读数据子程序、读温度数据前的准备子程序组成。
根据DS18B20时序如下:
对DS18B20的初始化时序,如图4.2:
20 图4.2 DS18B20的初始化时序
主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。
作为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。对DS18B20的写操作如图4.3:
20
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
21 图4.3. DS18B20的写操作
接下来就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。
对DS18B20的读操作如图4.4:
图4.4. DS18B20的读
21
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
对18B20以上这些操作的程序流程图如下图4.5所示:
开始 拉高数据总线 延时6μs 拉低数据总线 延时约
600μs 拉高数据总线 延时30μs N 检测低脉冲 Y 返回存在低脉冲标志 返回
开始 一字节数据 拉高数据总线 等待一个机器周期 拉低数据总线 分离一字节个 位,然后整字节左移一个位 写入一位二进制数 N Y 图4.5
22 开始 22 拉高数据总线 拉低数据总线 N Y
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
对于读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成。
DS18B20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-WIRE 器件将不响应主机,因此读写时序很重要。微控制器控制 DS18B20 完成温度的转换必须经过以下步骤 : (1)每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us,然后释放,DS18B20 收到信号后等待16us~60us 左右,然后发出60us~240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。 (2)发送一条 ROM 指令,见表4.1:
表4.1发送ROM指令
23
(3)发送存储器指令,见表4.2:
表4.2发送存储器指令
现在要让DS18B20进行一次温度的转换,那具体的操作就是:
23
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
1、主机先作个复位操作,
2、主机再写跳过ROM的操作(CCH)命令,
3、然后主机接着写个转换温度的操作命令,后面释放总线至少一秒,让DS18B20完成转换的操作。在这里要注意的是每个命令字节在写的时候都是低字节先写,例如CCH的二进制为11001100,在写到总线上时要从低位开始写,写的顺序是“零、零、壹、壹、零、零、壹、壹”。整个操作的总线状态如4.5图。
24
图4.5转换时总线状态
读取RAM内的温度数据。同样,这个操作也要接照三个步骤。 1、主机发出复位操作并接收DS18B20的应答(存在)脉冲。 2、主机发出跳过对ROM操作的命令(CCH)。 3、主机发出读取RAM的命令(BEH),随后主机依次读取DS18B20发出的从第0一第8,共九个字节的数据。如果只想读取温度数据,那在读完第0和第1个数据后就不再理会后面DS18B20发出的数据即可。同样读取数据也是低位在前的。整个操作的总线状态如4.6图:
图4.6读取RAM内的温度数据
在这里说明一下,第二步跳过对ROM操作的命令是在总线上只有一个器件时,若总线上不止一个器件,那么跳过ROM操作命令将会使几器件同时响应,这样就会出现数据冲突。因本系统只采用一条总线上挂一个DS18B20器件就不需要通过识别DS18B20的序列号。
4.3数据处理子程序
数据处理也就是先对DS18B20采集得到的温度值进行的一些变换,使其转换成真实值并成为十进制数,然后再进行变化使其能在液晶显示器上显示。temp是系统定 义的一无符号整型变量,用于存储温度值,方便于对温度值的处理具体的流程图见图
24
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
4.7所示:
负数标志置1 temp对100取余再除以10得到温度个位数值 25 低位单字节温度值对of取余,再乘以10再除以16得到温度值小数值 负数标志置0 结束
图4.7数据处理子程序流程图
4.4显示子程序
显示子程序主要功用是将传感器测得的温度值显示出来,本系统用的是LCD液晶显示器,而LCD液晶显示器要显示出数据在之前需要对液晶显示器进行初始化,写指令,写数据等操作因为本系统液晶显示器只写不读,所以没有附加读操作的时序图。所以R/W管脚一直处于低电平,在硬件中就直接接地,在软件中就不用操作此管脚的信号了,就只需要控制RS和E管脚就可以了。根据时序图LCD液晶显示器的写指令,写数据以及初始化的流程图如图4.8所示:
25
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
26
图4.8 LCD液晶显示子程序流程图
4.5温度处理及蜂鸣器报警子程序
蜂鸣器报警在本系统中由单片机的P2^2管脚电平的高低来控制蜂鸣器报警。单片机的P2^2管脚低电平蜂鸣器报警,单片机的P2^2管脚高电平蜂鸣器不报警。通过对读到并且进行了数据处理的温度值进行判断是否大于或者小于某一报警值而进行报警,直到读到的温度值不在报警温度值之中就停止报警。本系统以大于60℃小于1℃蜂鸣器报警为例,T为读到并且进行了数据处理的温度真实值。当P2^0为低电平时,系统由三极管驱动继电器线包,并由继电器来驱动大功率的加热炉,做升温处理。相应的,当P2^1为低电平时,继电器驱动电机风扇工作,降温处理。温度处理及鸣器报警子程序见4.9图:
26
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
送入温度值T T>60||T<1 Y27 N蜂鸣器开启 YT<10 N启动升温 T>30 Y启动降温 N返回 图 4.9温度处理及蜂鸣器报警子程序
27
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
第五章仿真测试
5.1 Keil C51 的使用
Keil软件是美国Keil Software 公司出品的51 系列兼容单片机C语言和汇编语言软件开发系统 ,而且是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统 Keil有以下几个特点: 1、全功能的源代码编辑器; 2、器件库用来配置开发工具设置; 3、项目管理器用来创建和维护用户的项目;
4、集成的MAKE工具可以汇编、编译和连接用户嵌入式应用; 5、所有开发工具的设置都是对话框形式的; 6、真正的源代码级的对CPU和外围器件的调试器;
7、高级GDI(AGDI)接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信。 在KEIL软件中编程的步骤如下:
首先打开KeilUvision2,在KEIL系统中,每做个独立的程序,都视为工程。首先从菜单中的工程中“新建工程”,建立我们将要做的工程项目如图5.1:
图5.1
接下来Keil环境要求我们为12工程选择一个单片机型号;我们选择Ateml公司的89C51,
28
28
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
“确定”后工程就算建立好了如图5.2和5.3所示:
29
图5.2
图5.3
建立了工程项目以后现在就要为工程添加程序,点击“文件”中的新建,新建一个空白文档;这个空白文档就是我们编写单片机程序的场所。在这里可以进行编辑、修改
29
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
等操作。根据题意,在文档中写入代码,写完后再检查一下,然后保存,然后再将保存好的文档添加到工程中,具体做法如图5.4所示:
30
图5.4
程序文件添加完毕后,对其进行编译当前程序、编译修改过的文件并生成应用程序、重新编译所有文件并生成应用程序后,再点击TARGET,则其页面为图5.5:
30
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
31
图5.5
再点击图案上的Output键如图5.5
图5.6
接下来就是点击上图中的select folder for objects键,得到下图将其产生的HEX文件存储在E盘zh文件夹中图5.6
31
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
32
图5.7
最后一步就是将HEX文件烧录到单片机里如图5.7
5.2 Proteus 的仿真
Proteus是英国Labcenter electronics公司研发的EDA设计软件,是一个基于ProSPICE混合模型仿真器的,完整的嵌入式系统软、硬件设计仿真下台。
Proteus不仅可以做数字电路、模拟电路、数模混合电路的仿真,还可进行多种CPU的仿真,涵盖了51、PIC、AVR、HCll、ARM等处理器,真正实现了在计算机上从原理设计、电路分析、系统仿真、测试到PCB板完整的电子设计,实现了从概念到产品的全过程。
Proteus ISIS的工作界而是一种标准的Windows界面,如图5.8包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口图5.8所示:
32
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
33
图5.8 rotuse ISIS 工作界面
原理图绘制:
(1)新建文件:打开Protuse,点FILE,在弹出的下拉菜单中选择NEWDESIGN,在弹出的图幅选择对话框中选Landscape A4。
(2)元器件选取:按设计要求,在对象选择窗口中点P,弹出PICK DEVICES对话框,在KEYWORDS中填写要选择的元器件,然后在右边对话框中选中要选的元器件,则元器件列存对象选择的窗口中。
本设计所需选用的元器件如下:
AT89C51:单片机 LM016L:图形液晶
RES、RESPACK-8:电阻、上拉电阻 CRYSTAL:晶振 CAP:电容 DS18B20:温度传感器 RESISTOR:电阻 SOUNDER:蜂鸣器 LED_:发光二极管 RLY_SPCO:继电器 HEATER:加热炉 MOTOR:电机
33
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
(3)按设计连接原理图,如图5.9所示:
34
图5.9 Proutes中系统仿真原理图
在图形编辑窗口内,将鼠标置于单片机上,单击鼠标右键,选中该对象,单击鼠标左键,进入对象属性编辑页面,如图5.10所示: 在“Program File”中,通过打开按钮,添加编译工程文件产生后缀为.hex 的文件。然后将晶振频率改为12MHz,点击确定。最后点击左下角的运行按钮运行仿真就OK了。
34
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
35
图5.10
35
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
结束语:
通过广泛查阅各类文献资料与实际调研走访,深入了解温度控制和数据采集系统在现实生活、生产中的广泛应用与研究意义。本文以温度信号多路采集为例,介绍了用DSl8B20温度传感器温度的采集,用单片机AT89C51控制DS18B20温度传感器进行温度的采集再将温度值传回单片机进行处理在送到LM016L显示屏显示。对所选取的系统分析各单元电路的设计,以及各电路与单片机的接口技术。着重分析系统软件的设计过程,使用单片机C语言进行程序没计。本文是采用模块化的方式进行叙述,对各模块的设计进行了比较详细地阐述。本次设计的基于DSl8B20的温度测量系统是一个分布式的温度测量系统,它可以远程对温度实现测量和监控,广泛应用于电力工业、煤矿、森林、火灾、高层建筑等场合。
经过这一次毕业设计,我学了不少的知识,学会了怎样查阅资料和利用工具,学会了用C语言来进行单片机的程序编写以及熟练地使用PROTEUS仿真软件和KEIL开发工具。通过这次毕业设计,最主要的还是学会了根据硬件要求用C语言对单片机进行程序编写,以前课本学习的是用汇编语言对单片机进行程序编写,现在学会了用C语言编写程序将两者一比较发现C语言要好编写得多,而且移植性也很好,没有汇编那么繁琐。其次我也对一些常见电子原件和产品有了一些了解,虽然只是了解但是能从以前的茫然到现在的了解并且能简单运用也是一个很大的进步,同时通过这一次毕业设计也使我发现了自己知识面的严重不足,对很多东西都很陌生需要重复学习。我也深刻地认识到只有将书本与具体的实践相结合,才会有真正的收获,才能巩固自己的所学,认识到自己的不足,同时我们也要有一种积极学习的态度,时代在进步我们也要跟着时代前进,要不断学习,不断创新,用自己的知识与行动来证明自己的价值。
36
36
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
致谢:
经过两个月的努力,我的毕业设计顺利完成了。在这里,我向所有指导过我的老师和帮助过我的同学,对他们表示深深的谢意。在本文的撰写过程中,周老师作为我的指导老师,他治学严谨,视野广阔,为我营造了一种良好的学术氛围。通过辅导讲解,使我接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,了解通用的研究方法。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于他在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。最后,我还要认真地谢谢我身边所有的朋友和同学,谢谢你们,你们对我的关心、帮助和支持是我不断前进的动力之一,我的大学生活因为有你们而更加精彩。
37
37
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
参考文献:
[1] 胡汉才.单片机原理及接口技术[M].北京:清华大学出版社,1996
[2] 沈红卫.单片机应用系统设计实例与分析[M].北京:北京航空航天大学出版社,
2003
[3] 张永枫.单片机应用实训教程[M].西安:西安电子科技大学出版社,2005 [4]百度http://www.56doc.com/electron/scm/3936.html [5] ]百度http://www.wsdxs.cn/html/lunwenzhidao/
38 附录 1 系统C语言程序
#include
sbit sw=P2^0; //定义升温 sbit jw=P2^1; //定义降温 sbit beep = P2^2; //定义扬声器 sbit SB1=P2^3; sbit SB2=P2^4;
sbit rs=P2^5; //lcd的控制 sbit rw=P2^6; sbit e=P2^7; sbit DQ=P1^0; sbit DQ1=P1^1; bit flag=1;
uchar T=0,temp1=0,temp2=0,flag_dis=0; uchar table[]={\
uchar table1[]={'0','1','2','3','4','5','6','7','8','9'}; uchar table2[]={\
/****************************************************** * 函数:1602 模块
38
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
*******************************************************/ void delay(uint z) //延时 { uchar x,y; for(x=50;x>1;x--) }
void lcd_writecom(uchar com) //写地址函数 { rs=0; rw=0; P0=com; delay(10);
e=1;
delay(10); e=0; }
void lcd_writedate(uchar dat) //写数据函数 { rs=1; rw=0; P0=dat; delay(1); e=1; delay(1); e=0; }
void init_1602(void) //1602初始话 { delay(10);
lcd_writecom(0x38); delay(5);
lcd_writecom(0x38); delay(5);
lcd_writecom(0x38); delay(5);
lcd_writecom(0x01); delay(5);
for(y=z;y>1;y--);
39
39
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
lcd_writecom(0x08); delay(5);
lcd_writecom(0x06); delay(5);
lcd_writecom(0x0C); }
/****************************************************** * 函数:18B20 模块*
*******************************************************/
bit init_DS18B20(void) //18b20初始化程序 { bit flag; uchar time; DQ=1; _nop_();
DQ=0; //再将数据线从高拉低,要求保持480~960us for(time=0;time<200;time++) ; //略微延时约600微秒//以向DS18B20发出
//一持续480~960us的低电平复位脉冲
DQ=1; //释放数据线(将数据线拉高) for(time=0;time<20;time++); //延时约60us(释放总线后需等待15~60us让DS18B20 //输出存在脉冲)
flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time<200;time++); //延时足够长时间,等待存在脉冲输出完毕
return (flag); //返回检测成功标志 }
void WriteOneChar ( uchar dat) { uchar i,time; for (i=0; i<8; i++) { DQ=1; _nop_();
DQ=0; //将数据线从高拉低时即启动写时序 for(time=0;time<1;time++);
//18B20 写 数据
40
40
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
DQ=dat&0x01; //利用与运算取出要写的某位二进制数据,并将其送到数据线上等待
DS18B20采样
for(time=0;time<10;time++);//延时约30us,DS18B20在拉低后的约15~60us期间从
数据线上采样
DQ=1; //释放数据线
41 for(time=0;time<1;time++) ; //延时3us,两个写时序间至少需要1us的恢复期
dat>>=1; //将dat中的各二进制位数据右移1位 } }
uchar ReadOneChar(void) //18B20 读数据
{ uchar time,i,date=0; //储存读出的一个字节数据 for (i=0;i<8;i++) {
DQ=1;
_nop_();
DQ = 0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序
for(time=0;time<1;time++); //等待一个机器周期
备
DQ = 1; //将数据线\人为\拉高,为单片机检测DS18B20的输出电平作准
for(time=0;time<2;time++); //延时约6us,使主机在15us内采样 date>>=1; if(DQ==1)
date|=0x80; //如果读到的数据是1,则将1存入dat else
date|=0x00; //如果读到的数据是0,则将0存入dat
for(time=0;time<15;time++); //延时3us,两个读时序之间必须有大于1us的恢复期
} }
void tempchange_get(void) //启动18B20温度转换+ 读取数据 {
return(date); //返回读出的十六进制数据
41
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
uchar a,b[3],p,time,tempL,tempH; init_DS18B20(); //18B20 复位 WriteOneChar(0xcc); //跳过读ROM 指令 WriteOneChar(0x44); //写温度转换指令 delay(10);
init_DS18B20(); //准备读数据的初始化 for(time=0;time<2;time++);
WriteOneChar(0xcc); //跳过ROM WriteOneChar(0xbe); //读暂存器 tempL = ReadOneChar(); //读低8 位 tempH = ReadOneChar(); //读高8 位 a=tempH&0x80;
if(a) //为一则是负温度,补码修正,为零则是正温度,不处理
{
if(tempL==0){tempH——;tempL=255;}
tempL-=1; tempL=~tempL; tempH=~tempH; flag_dis=1; } else flag_dis=0;
//对取出的数据处理
temp1=tempL&0x0F; //取第一字节低四位 b[0]=temp1&0x08; b[1]=temp1&0x04; b[2]=temp1&0x02; b[3]=temp1&0x01;
b[0]>>=3; b[1]>>=2; b[2]>>=1;
p=b[0]*5000+b[1]*2500+b[2]*1250+b[3]*625; //小数位化整数 temp2=p/1000; //第一个小数位
42
42
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
tempL&=0xF0; //取第一字节高四位 tempL>>=4;
temp1=tempH&0x0F; //取第二字节低四位 temp1<<=4;
temp1=temp1&0x7F; //只取7位 temp1=temp1|tempL; //合并为整数位 数据 }
/****************************************************** * 函数:对18B20 获取的温度进行处理*
*******************************************************/ void deal(uint t) {if(flag_dis==1)t=0;
if((t<1)||(t>60))beep=0; else beep=1; if(t<10)sw=0;else sw=1; if(t>30)jw=0;else jw=1; }
/****************************************************** 函数功能:显示模块*
*******************************************************/ void display(uchar temp1,uchar temp2 ) { uchar i;
lcd_writecom(0x80); delay(3); for(i=0;i<3;i++)
{lcd_writedate(table2[i]); delay(3);}
if(flag_dis)lcd_writedate('-'); //结果为负数显示 lcd_writedate(table1[temp1/100]); // delay(3);
百位为0不显示
43
43
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
lcd_writedate(table1[temp10/10]); delay(3);
lcd_writedate(table1[temp10]); delay(3);
lcd_writedate('.'); //小数点 delay(3);
lcd_writedate(table1[temp2]); //lcd_writecom(0x88); lcd_writedate('C'); }
void error_ds(flag) { uchar i; if(flag==1)
{lcd_writecom(0x80); //等待的显示 delay(3); for(i=0;i<16;i++)
{ lcd_writedate(table[i]); delay(3); } } }
/****************************************************** 函数名称:main(void); *
*******************************************************/ void main(void) {
init_1602(); //LCD 初始化 error_ds(flag);
while(init_DS18B20()); //18b20初始化
lcd_writecom(0x01); //清屏 while(1) {
44
44
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
tempchange_get(); //温度转换 deal(temp1); //温度处理 display(temp1,temp2); // delay(10); //扫描周期 } }
45
45
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
附录 2仿真图
46 升温图
降温图
46
成都电子机械高等专科学校 电子与电气工程系毕业设计论文
47
负温度报警
温度过高报警
47
正在阅读:
避雷器的电气参数 - 图文04-25
寻桑叶作文500字07-16
六年级阅读短文练习04-22
律师事务所个人所得税分享05-18
传输原理 试题库10-23
景阳红外球机说明书01-26
我熟悉的一个人作文400字03-31
梦想成真小学日记10-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 单片机
- 控制系统
- 毕业论文
- 温度
- 基于
- 图文
- 2019六年级下册数学试题小升初数学模拟卷 - 冀教版(含答案)精品教育 doc
- 贝聿铭给年轻设计师的10点忠告
- 普通话轻声练习测试
- 2017年内蒙古执业助理医师《儿科学》:营养性维生素D缺乏性佝偻病的临床模拟试题
- 班级德育工作总结
- 《加班》最新4人年会搞笑小品剧本
- 图书馆项目管理计划书
- 2019高考英语听力场景常见及高频单词
- 微机原理实验debug调试
- 改进低年级小学数学学习方式的探究
- 十堰市发展大道BT项目过街管沟施工安全专项方案
- 江苏省融资性担保机构行政许可工作指引(试行)
- 2011内蒙地区驾驶证理论考试C2车型答题技巧
- 案情介绍
- 蜗牛的奖杯
- 营口经济概况 - 图文
- 数据结构实验哈夫曼树编码
- 游客投诉处理制度
- 《幼儿园课程》模拟试卷2013
- 一起学mini2440裸机开发(十)--mini2440外部中断实验 - 图文