基于AT89C52单片机的多点温度测试系统设计_第1页
基于AT89C52单片机的多点温度测试系统设计_第2页
基于AT89C52单片机的多点温度测试系统设计_第3页
基于AT89C52单片机的多点温度测试系统设计_第4页
基于AT89C52单片机的多点温度测试系统设计_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于at89c52单片机的多点温度测试系统设计摘 要:集成电路的大规模发展对单片机控制电路的实际运用有着巨大的推动作用。单片机具有体积小、重量轻、价格便宜、低功耗、控制功能强及运算速度快等特点,使其在测控系统、智能仪表、机电一体化产品、智能接口等方面具有较广泛的运用。以单片机为核心,运用温度传感器可完成对温度采集,并进行相应的处理。本系统利用4片温度传感器ds18b20把所测得的温度发送到at89c52单片机上,通过单片机的处理发送到显示单元进行显示。系统运用单片机进行温度上下限设定,对各点温度进行测控报警,运用主从分布式思想,实现温度的远程控制,构成多点温度检测系统。关键词 单片机,温度传感

2、器,多点温度检测abstractthe practical application of large-scale development of the integrated circuit chip control circuit has a tremendous role in promoting. mcu with a small size, light weight, inexpensive, low-power, control and computing speed, has a wider use in the monitoring and control systems, int

3、elligent instruments, mechanical and electrical integration products, intelligent interface. with the single chip processor as the core, the application of temperature sensor for temperature acquisition can be completed, and carry on corresponding processing.this system, using four slices of ds18b20

4、, sent the temperature measured by the temperature sensor ds18b20 to at89c52 single-chip computer, through the mcu processing, the temperature is sent to the display unit to display. the system uses the mcu to set upper and lower temperature, to measure and control the point temperature and alarm. a

5、t the same time, use the main distributed thought to achieve remote control of the temperature, and to constitute a multi-point temperature detection system. key words: mcu, slice, multi-point temperature detection目 录1.绪论11.1课题背景11.2国内外发展现状11.3本设计的内容及任务21.3.1设计内容21.3.2设计任务22.系统总体设计32.1系统概述32.2系统工作原理

6、32.3系统器件的选择42.3.1单片机的选择42.3.2温度传感器的选择52.3.3显示器的选择83.系统的硬件设计103.1单片机最小系统的设计113.1.1 时钟电路的设计113.1.2复位电路的设计113.2温度采集模块的设计123.3 lcd显示电路133.4 键盘电路143.5 声光报警电路154.系统的软件设计164.1工作方案简介164.2主程序流程图164.3温度读取转换模块174.4lcd液晶显示模块194.5按键处理模块204.6声光报警模块215.系统的软件仿真226.总结23参考文献24答 谢25附 录1 系统硬件原理图26附 录2 程序设计261.绪 论1.1课题背

7、景随着现代科技的发展,温度成为了各行各业最普遍而重要的测量和控制参数。温度的测量技术与和所处的环境密切相关,随着时代的进步,科技的发展,各行各业各行各业对温度的测试系统的要求也在不断提高以达到设备环境、生产流程的安全要求。集成电路的大规模发展对单片机控制电路的实际运用有着巨大的推动作用。单片机具有体积小、重量轻、价格便宜、低功耗、控制功能强及运算速度快等特点,使其在测控系统、智能仪表、机电一体化产品、智能接口等方面具有较广泛的运用。以单片机为核心,运用温度传感器可完成对温度采集,并进行相应的处理。所以基于单片机的多点温度测试系统被广泛用于工农业的控制过程中,既提高了产品的功能和质量,体统的抗干

8、扰能力得到大幅提升,又降低了成本,同时也简化了设计,对提高控制效率,节约资源起到了重要作用。1.2国内外发展现状 近年来,在温度的测控领域,多种新型的测量技术已经取得了重大突破,新一代温度测量元件正在不断出现和完善化,从晶体管测温元件到智能集成电路测温元件、核磁共振温度测量器、激光以及微波测温等等。这种现象充分地表明了温度测量技术的发展已经进入到了一种新的时代,人们会随着身处的不同环境来选择不同的温度测控方式。总的来说温度的测量发展可分为:继续对传统的温度测量元件的不断完善;加强新原理、新材料、新加工工艺的开发;向智能化、集成化、适用化方向发展等。而基于单片机检测温度的传感元件也不断更新,其中

9、最有代表性的属ds18b20温度传感器。ds18b20是美国maxim半导体器件公司的全子公司dallas生产的一种但数据总线数字输出型全集成式智能温度传感器,其优点是集测温敏感元件及其a/d转换、运算处理、逻辑控制、rom和ram单元、i/o端口等电路模块全部集成在一块极小的半导体芯片上,简化了电路设计,与传统的温度传感器相比,新型的智能温度传感器具有微型化、低功耗、高性能、抗干扰能力强、易于与微处理器接口等优点。基于单片机的智能温度检测技术具有广阔应用前景和巨大经济价值。1.3本设计的内容及任务1.3.1设计内容要求利用单片机、传感器及其他所需器件设计一个多点温度测试系统,可以同时对多个点

10、进行温度的检测和显示。1.3.2设计任务分为硬件设计和软件设计两方面任务。硬件设计方面,选择控制器,进行硬件电路的设计,包括检测电路、提示电路、显示电路、外围辅助电路等;软件方面,利用c语言或者汇编语言编写程序,实现各功能测试。具体要求能够做出实物,实现基本功能。2.系统总体设计2.1系统概述单片机系统的设计,关键是系统内信号传输的问题。因为单片机不能直接接受模拟量信号,所在在温度测量的环节必须对温度信号的性质进行确认,若采用以模拟量信号的基础的温度传感器作为温度采集端,则要考虑温度模拟量与数字量之间的转换,而直接用数字温度传感器作为温度的采集端,不仅可以简化电路设计,而且可以提高系统的稳定性

11、。在多点测温系统中,传统用模拟信号进过各种变换得到最终温度的方式正面临各类问题的挑战,而采用数字温度芯片ds18b20测量温度,其输出的信号是全数字化的,便于单片机处理及控制,省去了传统的测温方法的很多外围电路,使得测温系统体积较小,成本较低,且一个单片机芯片可连接多个温度传感器,实现多点温度的检测。系统由数字温度计ds1820和微控制器at89c52构成的温度测量装置,通过液晶显示器进行温度显示,并通过按键进行报警上下限设置,当温度超过设定范围时,声光报警系统会进行报警提示。2.2系统工作原理 本系统利用4个温度传感器ds18b20把所测的温度发送到at89c52,通过单片机的处理控制显示单

12、元进行显示,并通过按键系统进行温度上下限设定,对各点温度进行声光测控报警。系统运用主从分布式思想,实现温度的远程控制, 构成多点温度检测系统。系统的总体设计框图如图2-1所示图2-1 系统总体设计框图2.3系统器件的选择一个单片机工作系统中芯片的性能,对单片机系统工作的稳定性显得尤为重要,在选择芯片时,既要考虑系统的成本,同时也要考虑所选芯片的实用性,使整个系统的性价比最高。2.3.1单片机的选择单片机的全称是单片微型计算机,又称mcu,是将计算机的基本部分微型化,使之集成在一块芯片上的微机,片内含有cpu、rom、ram、并行i/o接口、定时/计数器、a/d、d/a、中断控制、系统时钟及系统

13、总线等3。随着微电子设计技术及计算机技术的不断发展,单片机产品和技术日新月异。目前,生产单片机的厂商有很多比较著名的有intel、philips、microchip、motorola、atmel等半导体企业。intel公司生产的8051芯片,其结构合理,技术也比较成熟,此外还有一些厂家生产与mcs-51系列相兼容的芯片,例如atmel公司生产的atmel89 系列单片机(简称89系列单片机),就是基于intel公司的mcs-51系列而研制的,这是一种内部含flash存储器的特殊单片机。目前89系列单片机取代了传统的mcs-51系列单片机,成为了人们使用的主流单片机之一,虑到本系统是多路温度检测

14、,显示及控制线路较多,所以选择性价比相对较高的at89c52单片机。 at89c52引脚图如图2-2所示。图2-2 at89c52引脚图2.3.2温度传感器的选择目前市场上温度传感器的种类繁多,以普通传感器建立检测系统时,首先要建立传感器输出信号与被测物理量之间关系的数学模型,并在此基础上,设计出传感器接口电路,对传感器的输出信号进行a/d转换和补偿。而智能温度传感器具有模拟量信号到数字量值的a/d转换,并且能够在程序控制下,设置a/d的精度,具有自己的指令系统,并且带有数据存储功能。综上所述,选用智能温度传感器ds18b20不仅可以降低电路设计的难度,同时还可以提高所测温度的准确度,故可以选

15、用四个数字温度传感器ds18b20组成温度的采集模块。ds18b20是美国maxim半导体公司的全资子公司dallas生产的一种单数据总线数字输出型全集成式智能温度传感器。这种传感器既可以单只独立使用,易于与外部微处理器系统连接,进行交换数据;又可以多只联网使用,组成多点信息采集网络或综合信息处理系统,是一种典型的单芯片型智能传感器。其引脚图如图2-3所示。dallasds18b20 1 2 3gnddqvdd图2-3 ds18b20引脚图ds18b20有两种供电方式:一是使用外接电源供电,它是最普通的供电方式,二是使用其内部的寄生电源供电,寄生电源方式是指ds18b20可以通过数据线为自身供

16、电,即通过内部电容存储数据总线上电信号的能量来产生电能,为传感器工作供电。 ds18b20的工作步骤可分为三步: 第一步 初始化ds18b20,发送“初始化脉冲”信号。 第二部 执行ds18b20的“rom操作命令”,并在其后跟随需要交换的数据。 第三部 执行ds18b20的“功能操作命令”,并在其后跟随需要交换的数据5。一般情况下,每次使用ds18b20时,都必须按照上述这三步的操作顺序访问ds18b20器件,不能缺少其中任何一个步骤,也不能变更这三个步骤的执行顺序。否则,ds18b20不能做出正常响应。ds18b20指令系统如表2-1所示。表2-1 ds18b20指令系统指令约定代码功能读

17、rom33h读ds18b20rom中的编码(64位地址)符合rom55h匹配rom命令用于选中指定的ds18b20器件,主机发送匹配rom命令(后面跟随指定器件的64位rom序列号),可以再单只或多只器件在线的情况下,准确定位指定序列号的ds18b20器件。搜索rom0f0h主机可以通过发送和执行“搜索rom命令”,来识别这些单总线器件的序列号,确定在线的ds18b20器件的数量和类型。跳过rom0cch忽略64位rom地址,直接向ds18b20发温度转换温度,适用单片机工作。告警搜索命令0ech执行后,只有温度超过设定值上限或下限时单片机作出反应。温度转换44h命令ds18b20启动对温度温

18、度传感器所测得温度数值进行a/d转换,转换后的数字温度数据保存在便笺式暂存器中的温度寄存器中。读寄存器0beh读内部ram中9字节的内容。写寄存器4eh用于使主机向ds18b20片内暂存器写入3个字节的数据,写入过程必须从低字节向高字节顺序进行。复制寄存器48h将内部ram的第3,4字节的内容复制到epram中。复制epram0b8h将epram中内容恢复到ram的第3,4字节。读供电方式0b4h此命令用来使主机知晓ds18b20当前使用的电源供电方式,寄生供电时ds18b20发送“0”,外接电源供电ds18b20发送“1”。ds18b20主要功能参数如下:1) 测温范围:-55+125;在-

19、10+85范围内,测温精度为±0.5。2) 温度转换精度:a/d转换精度分为4级,各级转换精度对应的输出信号的码位,从低到高分别为:9位,10位 ,11位,12位。但ds18b20初次上电时默认的温度转换精度为12位码。3) 测温读数分辨力:9位转换精度时为0.5;10位转换精度时为0.25;11位转换精度时为0.125;12位转换精度时为0.0625。4) 测温a/d转换时间:9位精度时为93.75ms;10位精度时为187.5ms;11位精度时为375ms;12位精度时为750ms。5) 可以设定报警温度的上下门限值,保存在eeprom中。6) 电源电压适用范围:3.05.5v。

20、2.3.3显示器的选择 由于本系统要同时对采集的四路温度进行显示,如选用数码管显示,所需的数码管较多,而使用液晶在显示器可以满足同时对多路温度进行显示的需求。液晶显示(lcd)是单片机应用系统的一种常用人机接口形式,其优点是显示质量高、数字式接口、体积小、重量轻、功耗低。广泛使用的点阵字符式液晶显示模块lcd1602有控制器hd44780、驱动器hd44100和液晶板组成。lcd1602模块为2×16字,芯片工作电压为(4.55.5)v,工作电流为2.0ma(5.0v),模块最佳工作电压为5.0v,字符尺为2.95×4.35(w×h)mm。其外形如图2-4所示。

21、图2-4 lcd1602模块外形lcd1602模块使用时要先进行初始化,初始化内容为清屏、功能设置、显示与不显示设置、输入模式设置,lcd1602第一行字符地址为00h0fh、第二行字符地址为40h4fh,如要输入字符,则应先确认输入字符的地址。lcd1602模块的控制是通过操作命令完成的。共有11条命令,如表2-2所示。表2-2 lcd1602操作指令序号指令rsr/wd7d6d5d4d3d2d1d01清屏00000000012光标归为000000001*3输入模式设置00000001i/ds4显示与不显示设置0000001dcb5光标或屏幕内容移位选择000001s/cr/l*6功能设置0

22、0001dlnf*7cgram地址设置0001cgram地址8ddram地址设置001ddram地址9读忙标志和计数器地址设置01bf计数器地址10写ddram或cgrom10要写的数据11读ddram或cgrom11读出的数据命令说明:命令1:清屏(ddram全写空格)。光标回到主屏幕左上角,地址计数器设置为0。命令2:光标归位。光标回到主屏幕左上角。命令3:光标和显示模式设置。i/d:光标移动方向,高电平右移,低电平左移。s:屏幕上的文字是否左移或者右移,高电平表示有效,低电平则无效。命令4:显示与不显示设置。d:显示的开与关,为1表示开显示,为0表示关显示。c:光标的开与关,为1表示有光

23、标,为0表示无光标。b:光标是否闪烁,为1表示闪烁,为0表示不闪烁。命令5:光标或屏幕内容移位选择。s/c:为1时移动屏幕内容,为0时移动光标。r/l:为1时右移,为0时左移。命令6:功能设置。dl:为0时设为4位数据接口,为1时设为8位数据接口。n:为0时单行显示,为1时双行显示。f:为0时显示5×7点阵,为1时显示5×10点阵。命令7:cgram地址设置,地址范围00h3fh(共64个单元,对应8个自定义字符)。命令8:ddram地址设置,地址范围00h7fh。命令9:读忙标志和计数器地址。计数器地址范围00h7fh。命令10:写ddram或cgrom。要配合地址设置命

24、令。命令11:读ddram或cgrom。要配合地址设置命令。3.系统的硬件设计一个多路温度采集系统,包括多路温度信息的采集、转换、显示等环节。本系统主要包括微处理器、四路温度的采集器、显示电路、复位电路、时钟电路、键盘电路、声光报警电路等。3.1单片机最小系统的设计单片机最小系统,是组成一个独立工作的单片机系统是,芯片和连接各芯片之间的总线少的不能再少。一般情况下包括:单片机、时钟电路、复位电路。3.1.1 时钟电路的设计在at89c52的引脚xtal1和xtal2端外接晶体振荡器(简称晶振),就构成了内部震荡方式,时钟电路如图3-1所示,其中电容c1和c2的作用是稳定频率和快速起振,典型值为

25、30pf,晶振cys的震荡频率要小于12mhz,典型值为6mhz、12mhz或11.0592mhz,由于本系统要与pc机通信,所以应选择11.0592mhz的晶振,这样便于将波特率设定为标称值。图3-1 时钟电路3.1.2复位电路的设计复位是使单片机获系统中的其他部件处于某种确定的初始状态。单片机上电后首先从复位操作开始。单片机的复位是通过复位电路实现的,在实际应用中,复位操作有两种方式形式:一是上电复位,二是按键复位。本系统采用按键复位。复位信号变低电平时,单片机开始执行程序。复位电路如图3-2所示,按键复位支路由按键reset,电阻r1,r2组成,电路的参数为:r1=470,r2=200。

26、通过电路分析可知,在单片机运行期间,当reset按键按下时,按键接通相当于短路,电容c3的电压不能跃变,rst引脚获得高电平信号,随着电容c3的放电,rst引脚的电平将逐渐下降,两个机器周期后单片机就执行复位操作。图3-2 复位电路3.2温度采集模块的设计本系统将四个ds18b20的dq端子分别接在单片机的p1.0p1.3口上,通过单片机发送指令分别对每个温度传感器进行读写操作,这样可以跳过读每个ds18b20的序列号而直接进行温度的读写,从而实现多点温度检测系统。ds18b20有三个引脚,其中两根是电源线vdd和gnd,另外一根用作总线dq(data in/out),其输入和输出均是数字信号

27、,与ttl电平兼容,因此其可以与微处理器直接进行接口,从而省去了一般传感器所必需的中间转换环节。四片ds18b20采用外接独立电源供电,这使ds18b20的工作稳定,并使测控系统可以随时侦测ds18b20的工作状态,做出适时的指令操作。ds18b20的接口电路如图3-3所示。 图3-3 ds18b20的接口电路3.3 lcd显示电路本系统通过p0口来连接lcd1602的d0d7,采用8路10k的排阻限流,p2.5p2.7口分别连接1602的rs、r/d、e,通过这三个引脚来控制1602的读写。四路温度同时显示在1602上,便于读数,接口电路如图3-4所示。 图3-4 lcd1602接口电路3.

28、4 键盘电路控制电路是一个单片机系统必不可少组成部分,本系统在运行的过程中会根据外部环境的变化对温度报警的上下限进行设置,故把单片机的p3.3p3.7口作为控制按钮的输入端,它们在运行中对应的功能分别为设置温度报警上限、设置温度报警下限、温度值加1、温度值减1和退出。当有按键按下时,单片机对应的端口会被置0,单片机会做出相应的响应,并通过lcd1602进行显示。键盘电路如图3-5所示。图3-5 键盘电路3.5 声光报警电路由于本系统设有报警系统,单片机需对温度传感器所测得的温度进行检测,并与设定的温度上限县进行比较,当发现所测温度超出所设定温度值的范围时单片机发出报警信号。声光报警电路如图3-

29、6所示,通过p1.7口来控制蜂鸣器报警,通过p2.1p2.4来控制四只不同颜色的发光二极管,四只发光二极管对应四只ds18b20温度传感器,单片机复位后p1口输出高电平,四只二极管被点亮,当某只温度传感器超出温度范围时,相应的控制端口置0,熄灭发光二级管进行报警提示,同时蜂鸣器会响起。图3-6 声光报警电路4.系统的软件设计4.1工作方案简介软件程序是一个单片机系统正常工作的核心,单片机根据程序来执行相关指令,使系统实现所有的预定功能。本系统通电以后进行复位初始化操作,四路ds18b20测取个路温度送入lcd液晶屏显示,再启动报警系统对路温度进行检测,观察是否有温度超出设定的温度范围,如果有,

30、则启动报警,同时提示电路进行提示,单片机随时对按键系统(温度上下限的设定)进行检测,当发现有控制按钮按下时,对相应的按键进行响应,设置温度检测的上下限,再与设定温度进行对比,检测温度。整个系统进行循环工作。4.2主程序流程图程序处理是整个系统的关键,即简洁的硬件结构是靠复杂的软件来支持的。主程序的主要功能是负责读出并处理ds18b20的测量温度值、温度值的实时显示及报警功能。本系统采用自顶向下循环执行程序设计,模块化程序设计,单片机带有复位功能,当系统运行出现错误时,可以通过复位操作对整个系统进行复位。根据对以上流程图的分析系统软件设计可分为温度的读取转换模块、lcd温度显示模块、按键处理模块

31、和报警模块几个部分。图4-1 主程序流程图4.3温度读取转换模块四路温度采集传感器分别接在单片机的p1.0p1.3口,可以从四个口读取温度,在读取温度时可以跳过读rom命令,ds18b20操作命令可以分为四步:复位命令、跳过读rom命令、读ram命令和数据交换命令。再执行完以上四步以后,单片机判断温度符号,送入lcd液晶屏显示。流程图如图4-2所示。图4-2 温度读取转换流程图1) 复位和应答脉冲时隙首先,主机发送“复位脉冲”(低电平),将ds18b20的dq总线下拉为低电平,并保持480s以上,之后主机释放数据线并转入接收状态;由上拉电阻将dq总线拉至高电平,与此同时,ds18b20开始检测

32、脉冲电平的上升沿,这个过程大约延迟1560s,完成此操作后ds18b20发送存在脉冲,将dq总线下拉为低电平5。2) 写时隙 写“0”时,主机把dq单总线直接下拉为点电平,并保持60s以上(且小于120s),完成写0时隙。写“1”时,主机先把dq单总线下拉为低电平(持续时间为1s以上),并在15s之内释放dq总线,又上拉电阻把dq总线上拉为高电平,这个全程的时隙长度要大于60s,这样就完成了写1时隙5。3) 读时隙 ds18b20器件仅在主机发出读时隙时,才向主机传输数据。所有读时隙至少需要60s。且在两次独立的读时隙之间,至少需要1s的恢复时间。每个读时隙由主机发起,至少拉低总线1s。4.4

33、lcd液晶显示模块点阵字符式液晶显示器lcd1602模块为2×16字,lcd液晶屏的显示通过四部:初始化lcd、读操作、写操作、数据显示。通过编程使第一路温度显示在液晶显示器的00h005h位置,第二路温度显示在液晶显示器的0ah0fh位置,第三路温度显示在液晶显示器的40h45h位置,第四路温度显示在液晶显示器的4ah4fh位置。lcd显示模块流程图如图4-3所示。图4-3 lcd显示模块流程图4.5按键处理模块实现温度报警需要对报警温度的上下限进行设置,不同环境下的报警温度也有所不同,本系统通过单片机的p3.3p3.7口连接五个按键来对温度进行设置,当单片机接收到按键信号时对各引

34、脚的不同功能进行响应,单片机各引脚功能如表4-1所示,按键处理模块流程图如图4-4所示。表4-1 引脚功能引脚引脚功能p3.3设置温度上限p3.4设置温度下限p3.5加1p3.6减1p3.7退出图4-4 按键处理模块流程图4.6声光报警模块当单片机读取四路ds18b20的温度后会对思路温度进行检测,与设定的温度上下限进行比较,当发现某路温度超出设定范围时,单片机会发出报警信号,使p1.7口输出矩形波,蜂鸣器实现报警,同时提示电路的发光二极管会对应熄灭进行报警提示,可以观察出是哪一路温度超出温度设定范围,报警模块流程图如图4-5所示。图4-5 报警模块流程图5.系统的软件仿真proteus软件是

35、英国labcenter electronics公司出品的电子设计自动化软件,包括isis和ares两部分,isis提供了30多个元件库数千种元器件和多种现实存在的虚拟仪器仪表,可以直观地仿真微控制器系统、数字电路和模拟电路的功能和结果。proteus软件最大的特色之处就是可以仿真包括外围接口模数混合电路在内的微控制器系统,是一款不可多得的优秀单片机系统仿真平台。本系统先在proteus软件中会只好硬件原理图,在电器连接性检查无误的情况下,与第三方软件keilc连接调试,用keils uvision开发源代码,并进行编辑,生成可执行文件(.hex)后,选中单片机at899c52,左键点

36、击at89c52,在出现的对话框里点击program file按钮,找到刚才编译得到的hex文件,然后点击“ok”按钮进行模拟。点击模拟调试按钮,进人调试状态,经对各个环节进行调试,仿真结果无误,可以进行实物焊接。6.总结在系统的设计过程中,使用了数字化的温度传感器ds18b20,简化了系统的结构,与传统的以模拟量为基础的温度传感器想比,数字化的温度传感器不需要进行a/d转换,温差的补偿,使用起来更加方便可靠。由于整个系统使用的信号全部为数字量,可以直接将底线接在电源的负极,而不用去考虑模拟接地。使用液晶显示器lcd1602可以将四路温度同时显示,观察起来十分方便。在本次设计过程中,硬件的选取

37、和软件的编程都是极大考验,要尽量降低系统的复杂程度,又要使系统在性价比最高的基础上实现其所有的功能。单片机强大的综合性功能使软件程序的设计变得简单,各变量的使用非常灵活,在设计时要考虑按键的去抖动,同时也要注意高低电平的输出,采用软硬件相结合的方式,可以避免走许多弯路,有利于系统的维护和调试。参考文献1 李全利 单片机原理及接口技术,北京:高等教育出版社,2009年,第二版,第1929页。2 韩志军 单片机系统设计与应用实例,北京:机械工业出版社,2010年,第二版,第231244页。3 肖看,李群芳 单片机原理、接口及应用,北京:清华大学出版社,2010年,第二版,第300309页。4 喻宗

38、泉,李建民,喻晗 单片机原理与应用技术,西安:西安电子科技大学出版社,2006年,第1838页。5 苏震 现代传感技术,北京:电子工业出版社,2011年,第366397页。6 周润景,张丽娜 基于proteus的电路及单片机系统设计与仿真,北京:北京航空航天大学出版社,2006年,第321339页。7 李宏,张家田 液晶显示器件应用技术,北京:机械工业出版社,2004年,第128152页。答 谢经过两个多月的努力,我的论文已经接近尾声,在这两个多月里遇到了许多困难,但在指导老师及同学的帮助下,所有的困难都一一解决了,在这里要特别感谢王老师,在论文的选题,开题报告的提交,以及论文的写作过程中都给

39、了我极大的帮助。每当一项进度遇到困难时,王老师都细心指导,在她的帮助下,我学会了查阅相关论文资料,掌握相关芯片的使用方法,最终完成毕业设计的任务要求。在这里还要特别感谢徐同学的细心帮助,在购买焊接器件的过程中,由于对各器件在实际运用中的特性不是太了解,在徐同学的帮助下才能将器件购买齐全。同时要感谢在论文写作过程中所有帮助过我的同学,谢谢大家的支持!附 录1 系统硬件原理图附 录2 程序设计#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit dq =p10;/一号ds18b20与单片机连接

40、口sbit dq1=p11;/二号ds18b20与单片机连接口sbit dq2=p12;/三号ds18b20与单片机连接口sbit dq3=p13;/四号ds18b20与单片机连接口sbit d1=p21; /一号ds18b20报警显示接口sbit d2=p22; /二号ds18b20报警显示接口sbit d3=p23; /三号ds18b20报警显示接口sbit d4=p24; /四号ds18b20报警显示接口sbit rs=p25;/lcd控制脚sbit rw=p26;sbit en=p27;sbit key0=p33; /按键定义sbit key1=p34; sbit key2=p35;s

41、bit key3=p36;sbit key4=p37;sbit bell=p17; /报警信号uchar code str3="set high "uchar code str4="set low "uchar data disdata 5;uchar data disdata15;uchar data disdata25;uchar data disdata35;uchar data disdata44;uchar data disdata54;unsigned char temphigh=40,templow=5; /温度设定初始值uint flag

42、0,flag1,flag2,flag3,flag4;/按键标志uint high,low; /高温和低温设置值uint tvalue,tvalue1,tvalue2,tvalue3;/温度值uchar tflag,tflag1,tflag2,tflag3;/温度正负标志/*lcd1602程序*/void delay1ms(uint ms)/延时1毫秒unsigned int i,j;for(i=0;i<ms;i+) for(j=0;j<110;j+);void wr_com(uchar com)/lcd写指令 rs=0; rw=0; p0=com; delay1ms(5); en=

43、1; delay1ms(5); en=0;void wr_dat(uchar dat)/lcd写数据 rs=1;rw=0; p0=dat; delay1ms(5); en=1; delay1ms(5); en=0;void lcd_init()/lcd初始化设置wr_com(0x38);/设置16×2显示,5×7点阵,8位数据接口wr_com(0x0c);/设置开显示,不显示关标wr_com(0x06);/写一个字符后地址指针加1 wr_com(0x01);/显示清0,数据指针清0void display(uchar *p)/显示while(*p!='0')

44、wr_dat(*p);p+;delay1ms(5);init_play()/1号初始化显示 lcd_init();wr_com(0x80);/*二号初始化*/init_play1()/2号初始化显示 lcd_init();wr_com(0x80+0x0a);/*三号初始化*/init_play2()/3号初始化显示 lcd_init();wr_com(0x80+0x40);/*四号初始化*/init_play3()/4号初始化显示 lcd_init();wr_com(0x80+0x4a);/*1号ds1820程序*/void delay_18b20(uint i)/延时1微秒 while(i-

45、);void ds1820rst() /ds1820复位 uchar x=0;dq = 1; /dq复位delay_18b20(4); /延时dq = 0; /dq拉低delay_18b20(100); /精确延时大于480usdq = 1; /拉高delay_18b20(40); uchar ds1820rd()/读数据 uchar i=0;uchar dat = 0;for (i=8;i>0;i-) dq = 0; /给脉冲信号 dat>>=1; dq = 1; /给脉冲信号 if(dq) dat|=0x80; delay_18b20(10); return(dat);v

46、oid ds1820wr(uchar wdata)/写数据uchar i=0; for (i=8; i>0; i-) dq = 0; dq = wdata&0x01; / 数据放在数据线上被读走 delay_18b20(10); dq = 1; wdata>>=1; read_temp() /1号读取温度值并转换uchar a,b;ds1820rst(); ds1820wr(0xcc);/跳过读序列号ds1820wr(0x44);/启动温度转换ds1820rst(); ds1820wr(0xcc);/跳过读序列号 ds1820wr(0xbe);/读取温度a=ds182

47、0rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a; if(tvalue<0x07ff) tflag=0; else tvalue=tvalue+1;tflag=1; tvalue=tvalue*(0.625);/温度值扩大10倍,精确到1位小数return(tvalue);/*1号温度值显示*/ void ds1820disp() uchar flagdat; disdata0=tvalue/1000+0x30;/百位数disdata1=tvalue%1000/100+0x30;/十位数disdata2=tvalue

48、%100/10+0x30;/个位数disdata3=tvalue%10+0x30;/小数位if(tflag=0)flagdat=0x20;/正温度不显示符号elseflagdat=0x2d;/负温度显示负号:-if(disdata0=0x30)disdata0=0x20;/如果百位为0,不显示if(disdata1=0x30) disdata1=0x20;/如果百位为0,十位为0也不显示 wr_com(0x80+0x00); wr_dat(flagdat);/显示符号位 wr_com(0x80+0x01); wr_dat(disdata0);/显示百位 wr_com(0x80+0x02); w

49、r_dat(disdata1);/显示十位 wr_com(0x80+0x03); wr_dat(disdata2);/显示个位 wr_com(0x80+0x04); wr_dat(0x2e);/显示小数点 wr_com(0x80+0x05); wr_dat(disdata3);/显示小数位/*二号ds18b20程序*/void delay_18b201(unsigned int i)/延时1微秒 while(i-);void ds1820rst1() /ds1820复位 uchar x=0;dq1 = 1; /dq复位delay_18b20(4); /延时dq1 = 0; /dq拉低delay_18b201(100); /精确延时大于480usdq1 = 1; /拉高delay_18b201(40); uchar ds1820rd1()/读数据 uchar i=0;uchar dat1 = 0;for (i=8;i>0;i-) dq1 = 0; /给脉冲信号 dat1>>=1; dq1 = 1; /给脉冲信号 if(dq1) dat1|=0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论