![基于单片机的智能温度检测器设计_第1页](http://file4.renrendoc.com/view11/M03/2C/1E/wKhkGWVybmiAKvvzAAI9-gHc9to116.jpg)
![基于单片机的智能温度检测器设计_第2页](http://file4.renrendoc.com/view11/M03/2C/1E/wKhkGWVybmiAKvvzAAI9-gHc9to1162.jpg)
![基于单片机的智能温度检测器设计_第3页](http://file4.renrendoc.com/view11/M03/2C/1E/wKhkGWVybmiAKvvzAAI9-gHc9to1163.jpg)
![基于单片机的智能温度检测器设计_第4页](http://file4.renrendoc.com/view11/M03/2C/1E/wKhkGWVybmiAKvvzAAI9-gHc9to1164.jpg)
![基于单片机的智能温度检测器设计_第5页](http://file4.renrendoc.com/view11/M03/2C/1E/wKhkGWVybmiAKvvzAAI9-gHc9to1165.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-2"\h\u18071第1章绪论-1-84521.1课题研究的背景及意义-1-187041.2单片机的意义和本设计特点-1-10081第2章硬件设计-2-214452.1系统总设计结构图-2-226592.2蜂鸣器、LED和按键简介-2-196412.3主控芯片AT89C51单片机的简介-3-184832.4LCD1602液晶简介-4-284472.5DS18B20温度传感器简介-5-23672.6系统电路设计-5-157212.7总电路设计-12-19390第3章软件设计-12-186803.1系统软件设计整体思路-12-78233.2系统软件设计流程图-18-9255第4章程序仿真调试-19-301314.1程序调试用到的软件及工具-19-147884.2KEILC51简介-19-257014.3软件开发环境的搭建-19-238594.4Proteus介绍-20-125864.5仿真结果-21-16592第5章总结-24-23342参考文献-25-11346致谢-26-9121附录-27-基于单片机的智能温度检测器的设计摘要本设计研究基于单片机的智能温度检测器,旨在通过单片机及温度传感器实现自动检测报警功能。设计中首先对其背景及意义进行表达切入主题,然后对整个系统的硬件设计和软件设计以及软件调试设计重点分析,其中在硬件设计中还分别对其所选器件做了一个简单的表达介绍,比方按键,蜂鸣器,LCD1602液晶,DS18B20温度传感器,AT89C51单片机等,最后再对这一设计进行一个总结。设计中使用4个按键组成独立按键进行对温度上下限的设定,采用无源蜂鸣器作为报警装置。整个系统使用LCD1602液晶作为显示装置,实时显示检测温度和设定的上下限值。本系统硬件结构简单,操作灵活,以高级语言C语言开发,KEIL4程序开发软件为开发工具设计而成。关键词:AT89C51单片机;温度检测器;DS18B20;KEIL4开发软件;LCD1602液晶Thedesignofintelligenttemperaturedetectorbasedonsingle-chipmicrocomputerABSTRACTThedesignofintelligenttemperaturedetectorbasedonMCU,toachieveautomaticdetectionbythemicrocontrollerandtemperaturesensoralarmfunction.Thedesignofthefirstdescribedthebackgroundandsignificanceofthesubject,thenthesystemhardwaredesignandsoftwaredesignanddebuggingsoftwaredesignfocusesontheanalysis,whichinthehardwaredesignofthedeviceareselectedtodoasimplenarrative,suchasbuttons,buzzer,LCD1602LCD,DS18B20temperaturesensor,AT89C51SCM,thenthedesignofasummary.The4keycomponentsusedinthedesignofkeyindependenttemperaturelimitsetting,usingpassivebuzzerasthealarmdevice.ThewholesystemusingLCD1602asaliquidcrystaldisplaydevice,displayreal-timetemperaturedetectionandsetlimitonthevalueof.Thehardwareofthissystemhastheadvantagesofsimplestructure,flexibleoperation,withthelanguageClanguagedevelopment,KEIL4applicationdevelopmentsoftwaredevelopmenttoolsanddesign.KeyWords:AT89C51microcontroller;temperaturesensor;DS18B20;KEIL4software;LCD1602LCD第1章绪论1.1课题研究的背景及意义温度是一个非常重要的物理量,无论是工业控制还是家庭等场所的测量都是有十分重要的意义。在工业生产中,其对温度控制要求是非常严格的,尤其是对一些特殊的材料的煅烧,其温度有的在低范围,有的在高范围温度,有的需要恒定的温度。因此需要对温度进行严格的控制,传统使用的温度检测仅仅是使用一些模拟温度器件进行检测,此温度误差是非常大的,而且在早期的显示器中都是用的是指针式显示界面,人机交互非常不方便,人们还要仔细看才知道现在温度多少,也不能实现自动报警检测和温度的设定,因此需要人们在旁边守着温度表看,如果温度高于一定的时候就不加燃料,否那么继续添加燃料,此种方案是非常浪费能源的。随着科技的不断开展,尤其是微处理器及传感器的快速开展,于是就开启了智能化的温度检测器,并且拥有一个非常好的人机交互界面,人们只需要看下液晶显示屏就知道准确温度,通过按键的操作就可以实现对温度上下限值的设置。通过传感器精确的测温及单片机的智能控制,就可以实现温度超限报警指示,低于下限关闭报警指示。因此极大的节约了工业劳动力及能源的消耗。因此本设计中研究基于单片机智能温度检测器设计就非常有必要了。1.2单片机的意义和本设计特点在现代生活的各个领域中,单片机几乎已经完全控制了整个行业,甚至已经潜移默化的改变了人们的生活方式和生活习惯,大到航空航天领域,小到马路上各式各样的把戏灯控制等等。这无不表达单片机的智能以及重要性。可以预见单片机今后的开展方向:低功CMOS耗化;微型单片化;主流与多品种共存化;大容量、高性能化:以往单片机内的ROM为1KB~4KB,RAM为64~128B;单片机又称单片微控制器,它把一个计算机系统集成到一个芯片里。简单的来讲,就是把我们电脑主板上是由CPU处理、程序存储器、数据存储器、输入输出电路IO、显示设备等模块集成到了一块微小的芯片之内。它体积小,价格廉价,功能丰富,调写程序便利。因为它兼容了传统的8051系列MCS-51指令单片机,移植性能强,相对高性能的单片机来讲,它使用起来是很便利的。4k的flash存储器,8bit的位宽处理,128的RAM。该设计使用它可以满足我们的所有需求。我们在这个设计中采用了51内核单片机AT89C51作为核心部件,主要起主控作用,引领整个系统的运行控制,当作控制器的核心部位。本设计主要特点采用了数字温度传感器DS18B20进行温度的检测,通过按键设定温度上下限后即可实现自动检测报警,实现了其智能化特点。整个系统使用的是LCD1602液晶进行显示,实时显示测试的温度及设定的上下限值,通过一个无源蜂鸣器和LED发光二极管作为系统的报警指示,当检测温度高于设定上限的时候驱动蜂鸣器报警,只有当温度低于下限值报警指示灯灭。因此就可以组建成一个基于单片机的智能温度检测器了。第2章硬件设计2.1系统总设计结构图本设计由主控芯片AT89C51单片机,晶振电路,复位电路,电源电路,DS18B20测温电路,LCD显示电路,按键电路,声光报警电路组成。51单片机全权负责整个系统的执行控制过程。如图1:图2-1系统总设计图2.2蜂鸣器、LED和按键简介蜂鸣器可分为2种,一种是无源蜂鸣器,一种是有源蜂鸣器,此二者的区分在于,有源蜂鸣器直接给高或低电平就能驱动发声,但是无源蜂鸣器需要给他一定的脉冲触发信号才能使蜂鸣器发声,在此设计中我们使用的是无源蜂鸣器,即在控制他的时候我们必须输出一定频率的脉冲方能时此蜂鸣器发声报警。图2-2蜂鸣器LED是半导体二极管的一种,可以把电能转换成光能。发光二极管与普通的二极管一样是由一个PN结组成的,也具有单向导电性。当给二极管加上一个正向电压时,二极管导通;反之,截止状态。在正向电压中,从P区注入到N区的空穴和N区注入到P区的电子,在PN结附近内P区的空穴和N区的电子复合,产生辐射的荧光。所以这样就有产生发光的电子,LED发光的原理就是这样。按键,它是常用控制器件的一种,通常被用来对需要控制的电路开或断即接通状态或者断开状态,内部的电流是很小的,应而可以到达手动控制的作用。在这里我们设计中使用的常用的按键,其按下后会有些许的波动,导致上下电平不稳,所以在后面的程序编写过程中需要专门用软件来消抖,一般其抖动的时间在10ms左右,如果不想再软件上做消抖处理也可以在硬件上做消抖,可以在按键那并接一个RC电路,那样就可以起到充放电延时的作用。这样一来单片机就可以对按键按下和按键断开有一个稳定的判断识别了。图2-3按键2.3主控芯片AT89C51单片机的简介单片机又称单片微控制器,它把一个计算机系统集成到一个芯片里。简单的来讲,就是把我们电脑主板上是由CPU处理、程序存储器、数据存储器、输入输出电路IO、显示设备等模块集成到了一块微小的芯片之内。它体积小,价格廉价,功能丰富,调写程序便利。因为它兼容了传统的8051系列MCS-51指令单片机,移植性能强,相对高性能的单片机来讲,它使用起来是很便利的。它具有以下标准功能:4k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,内置2KBEEPROM,拥有3个16位的定时器和计数器,还有外部中断2个,和全双工串行口等等。它的最高运作频率35MHz,6T/12T可选。其特性有:4K字节程序存储空间;256字节数据存储空间;内带2K字节EEPROM存储空间;可直接使用串口下载;芯片参数:1.它是51单片机的加强版,拥有2种时钟模式,一种是6个时钟机器周期的,还有一种是12个时钟机器周期的,它完全兼容传统51单片机的指令系统。2.工作电压:5.5V~3.3V〔5V单片机〕/3.8V~2.0V〔3V单片机〕。3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。4.用户应用程序空间为8K字节。5.片上集成256字节RAM。6.通用I/O口〔32个〕,复位后为:单片机拥有40个管脚,P0,P1,P2,P3各8个,还有复位1个,晶振2个,电源2个,EA一个,ALE一个。P0口内部无上拉电阻,是漏极开路的,所以在使用P0口的时候一定要外接上拉电阻。 其他3个口都有内部的上拉电阻,所以可以不用外接。7.单片机可以直接通过P30P31RXD和TXD串口管脚下载程序。8.具有EEPROM功能。9.该单片机拥有3个定时器和计数器其为16位的。即定时器T0、T1、T2。10.有2个外部中断,可以通过下降沿或者低电平触发中断。11.可以使用定时器模拟出多个异步串行口。12.工作温度范围:-40~+85℃〔工业级〕/0~75℃〔商业级〕。13.PDIP封装,引脚图如下:图2-4AT89C51芯片图2.4LCD1602液晶简介LCD1602为字符型液晶显示器,通常只能显示字符和数字,如果想显示汉字的话一般选择LCD12864,LCD1602能够显示2行字符,每一行显示16个字符,故得名为1602。其内部含有许多个RAM,我们使用到的是40个。通过控制1602的控制管脚RS,RW,E我们即可向LCD1602显示器中写入数据,具体的显示位子第一行起始地址是0x80,第二行显示的起始地址是0x40+0x8。其具体的图形如下:图2-5LCD16022.5DS18B20温度传感器简介数字温度传感器DS18B20是DALLAS公司生产的一款超小体积并且抗干扰能力强和精度高的数字温度传感器。不需要将模拟量转化为数字量A/D转换电路,直接将温度测量值转换成为数字量。DS18B20的测量范围为-55℃-125℃,精度为±0.5℃。DS18B20引脚如下,DS18B20它是单总线接口的总共有3个管脚,一个VCC一个GND还有一个就是DQ数据管脚,在单总线通信中对时序是非常严格的。图2-6DS18B20管脚图2.6系统电路设计本设计中使用51内核芯片单片机是AT89C51,通过2个22P电容和1个12MHz的晶振组成的晶振电路,系统的时钟脉冲就是由它提供,还有通过1个电阻和1个电解电容和1个按键组成的复位电路,使用4个按键组成独立按键进行对温度上下限的设定,采用无源蜂鸣器作为报警装置。整个系统使用LCD1602液晶作为显示装置,实时显示检测温度和设定的上下限值。2.6.1晶振电路电路中C1无极性电容和C2无极性电容是起振电容。当12MHz晶振在高频的情况工作时,会产生一定的寄生的电感。为了使电感到达平衡和产生谐振,那么可以加上2个10-33pf的无极性电容。具体的大小可以参考下晶振厂家提供的参数手册。单片机的内部有一振荡电路,我们需要在外部接上晶振电路单片机才能工作。晶振和电容与内部的电路组成振荡电路。只要单片机一上电,电容启振,晶振工作,这样单片机就有一个持续的时钟信号。51单片机内部有一个12分频器,因此时钟周期为t=1/12000000≈1us。图2-7晶振电路复位电路此系统使用的51单片机是高电平复位。对于AT89C51,只需在复位引脚加上2个机器周期的高电平,就能让单片机复位。单片机的IO口显示高电平,程序计数器从零开始执行。采用的手动复位,按下按钮,复位引脚获得高电平,单片机复位,松开按钮后,单片机重新开始工作。单片机的9脚RST(Reset)复位引脚,如图。当我们的程序运行到1000行的时候,单片机重启启动了,之前运行的数据将会丧失,因为RAM是不储存在我们的flash区域的,这个时候,那么我们的单片时机重新开始运行,这个过程就是复位。当我们的程序运行中,遇到一些特殊情况造成系统奔溃了,我们把这种情况叫做死机,类似我们的电脑的,这个时候我们可以手动按下复位按键,单片时机重新运行。复位电路的存在,就是防止一些特殊情况的发生,在程序跑飞的时候能够复原。复位电路的工作原理:51单片机高电平复位。对AT89C51来说,在复位引脚加2个机器周期的高电平,可使单片机复位。单片机的IO口呈现高电平,程序计数器从零开始执行。采用的手动复位,按钮按下,复位引脚得到高电平,单片机复位,按钮松开后,单片机开始工作。当这个电路处于稳定状态时,电容隔离直流电,隔离+5V。此时复位按键在弹起的状态,R31的电阻是没有电压差的。我们的这个到单片机是高电平复位,低电平工作,当按下去的时候,电容起到放电的作用,瞬间是+5V的高电平。所以,在按下的一瞬间,高电平复位成功。我们再来分析从没有电到上电的过程。电容C1上方是5V电压,这个时候哦电容C1进行充电,正离子从上往下充电,负电子从GND往上充电,这个时候电容对电路来说是短路的,相当于一根导线,电压都加在了R31这个电阻上,那么RST上的电压值,Vrst=R31*I,随着电容充电越多,在充满的时候,电流就会越来越小的,那么此时Vrst上的电压也会变小,直到电容充满后,线路中不再有电流,那么这个时候Rst和GND的电位就相等了,也即是0V。从这个过程中,Rst复位引脚是先持续一段时间的高电平,然后再低电平,之后单片机正常运行。我们可以根据一条充放电的公式得到:T=1.2RC,把我们上图的参数带入,求得是564us,大于2个机器周期。重要一点的是,每个单片机复位高电平的时候都是不,具体的要参考手册。图2-8复位电路电源电路向单片机供电。单片机电源:AT89C51单片机的工作电压范围:3.3V—5.5V,一般给51单片机外接一个5V的直流稳压电源。连接方式为VCC(40脚〕:接电源+5V端VSS(20脚〕:接电源地端。本设计使用市电220V交流作为输入,通过一个变压器降压后再经过整流电桥整流变为直流,通过电容滤波等处理,最后经过降压芯片7805稳压到5V,然后将输出的5V接入到单片机端供电。变压器是电源进行电源转换的,有升压变压器,也有降压变压器,我们使用的是降压变压器,需要将市电220V降到50V左右,其中我们需要选择好变压器,变压器有前圈和后圈,其计算公式是N1/N2=V1/V2,因此我们就可以计算出后半圈的电压输出大小。如图:图2-9变压器将变压器降压后的交流电我们还需要对其整流,使其交流变为直流,我们可以通过单相桥式整流电路,通过整流电路,我们就可以得到一个直流波动的电压。正电压经过D3进来然后经过D4出去,负电压经过D5进来,经过D2出去,因此也就将交流变化为直流。图2-10单相桥式整流电路输出电压经过整流电路整流为直流后,其电压还是波动的,因此我们需要将其通过一个电源滤波电路滤波,我们使用的滤波电路时由电解电容及无极性电容组成,将整流电压经过一个470uf的电解电容,就可以使其波动滤除掉,因为我们需要得到一个5V电压,所以我们还需要对其进行稳压处理,我们使用的稳压芯片是7805,将其滤波后的电压通过7805输入端,输出端就可以得到一个5V电压,为了平安起见,我们还需要将其稳压后的电压进行滤波,使其稳压通过一个470u的电解电容和一个1nf的无极性电容,最终我们就可以得到一个标准的5V直流电压了,将其电压供应整个系统作为电源。滤波电路如下:图2-11滤波电路总电源电路如下:图2-12电源电路LCD显示电路此设计中采用的是字符型LCD1602,它只能显示数字及字符,可以显示2行,每一行可以显示16个字符,通过控制LCD的数据命令RS管脚和读写RW管脚还有使能E管脚。即可实现对LCD1602的读写了。我们将LCD1602的数据脚通过单片机P0口控制,数据命令及使能管脚通过单片机的P25P26P27口控制,通过按照LCD1602通讯时序控制,我们即可将要显示的数据通过P0口发送到LCD上实时显示。具体电路如下:图2-13LCD显示电路2.6.5按键电路在本设计中我们使用了4个按键接到单片机管脚P32,P33,P34,P35上,另一端共地,如果有按键按下去了,单片机的对应管脚就会被拉为低电平,因此可以使用此方法来判断,按键是否按下,然后做出相应的动作。其中我们将2个按键接在了单片机的P32和P33管脚上,此管脚可以设定为单片机外部中断0和1模式,即当有按键按下时进入中断函数进行处理,处理结束后可以返回主函数继续运行。按键K1是对温度上下限值设定的切换,K2K3是对温度数据的加减,K4是设定确认。具体电路如下:图2-14按键电路2.6.6声光报警电路此设计中我们使用的是无源蜂鸣器,即只有触发一定频率的脉冲才能使蜂鸣器发声。我们将单片机的P37管脚接在PNP型三极管上,当单片机P37口输出一定频率的脉冲即可触发蜂鸣器发声了。同时设计中还使用了一个发光二极管进行温度报警指示,将其阳极接在单片机的P31管脚,单片机P31输出一个高电平的时候LED发光,反之熄灭。具体电路如下:图2-15声光报警电路2.6.7测温电路此设计中我们使用数字温度传感器DS18B20的数据口接到单片机的P36管脚,通过此管脚模拟单总线时序与DS18B20进行通信。管脚上拉一个电阻,使其通信更加稳定运行,具体电路如下:图2-16测温电路2.7总电路设计用Proteus仿真软件绘制的完整电路图如下:图2-17总电路第3章软件设计3.1系统软件设计整体思路现在开发都是追求快速,尽最大的缩短开发周期,以前的汇编语言现在已经很少使用了,现在开发使用最多的是高级语言,然而C语言又是高级语言中的佼佼者。本设计中我们使用的是C语言开发。硬件电路中使用到了LCD1602,如果要对LCD进行显示,首先就要对LCD进行初始化操作,我们参考LCD1602数据手册的初始化过程可知:首先进行一个短暂延时,然后写指令38H,延时一段时间,然后写入指令0CH,即显示开和光标设置,延时一段时间然后写入指令06H即显示光标功能设置,最后写入指令01H,即清屏。因此我们就对LCD进行初始化完成,就可以在LCD上面进行显示操作了。具体程序如下:voidinit() //LCD初始化函数{ delay(1000); wrc(0x38); wrc(0x38); wrc(0x38); wrc(0x06); wrc(0x0c); wrc(0x01);}根据上面LCD初始化过程的介绍,我们就可以将其过程通过流程图的形式展现出来,LCD1602初始化程序流程图如下:开始开始延时10ms延时10ms写入功能设定值38H写入功能设定值38H写入模式功能设置,光标开启,06H写入模式功能设置,光标开启,06H写入开启开关控制命令0CH写入开启开关控制命令0CH写入清屏指令01H写入清屏指令01H结束结束硬件设计中我们使用单片机的P0口控制LCD1602的数据口D0-D7,单片机的P25,P26,P27分别控制单片机的RS,RW,E。因此如果我们要对LCD进行操作的话我们首先要明确LCD1602的读写函数的编写,我们参考LCD1602读写时序,如下:图3-1LCD1602读写时序图在编写写命令函数的时候,首先要将RS=0,此是选择命令,在把写翻开RW=0,最后是触发一个低脉冲的使能信号E,然后将命令发送给P2即可。在编写写数据函数的时候和上面一样,只是将RS=1改变即可,其他的完全一样。具体程序如下:voidwrc(uint8c) //LCD写命令函数{ delay(1000); rs=0; rw=0; e=0; P0=c; e=1; delay(10); e=0;}voidwrd(uint8dat) //LCD写数据函数{ delay(1000); rs=1; rw=0; e=0; P0=dat; e=1; delay(10); e=0; rs=0;}硬件中使用到了按键来设定温度的上下限值,由于按键K1和K4接在单片机的外部中断0和外部中断1管脚上,因此我们需要对外部中断0和1进行初始化及中断函数才能使用,具体初始化函数如下:voidint0init() //外部中断0初始化{ EA=1; EX0=1; IT0=1; //选择下降沿触发}voidint1init() //外部中断1初始化{ EA=1; EX1=1; IT1=1; //选择下降沿触发} voidint0()interrupt0{ delay(1000);//消抖处理 mode++; sheding=0; if(mode==3) { mode=1; }}voidint1()interrupt2{ delay(1000);//消抖处理 mode=0; sheding=1;}还有2个按键接在了单片机的P34和P35管脚上,我们知道按键按下后会有一个抖动的问题,因此我们需要在软件内进行消抖处理,一般是延时10ms进行滤波,具体操作如下:delay(1000);//消抖处理按键处理后我们还需要对按键是否松开来判断,通过一个while来判别。硬件还使用到了DS18B20进行温度的检测,由于其是单总线通信,因此我们需要严格按照DS18B20时序图来进行编写。初始化时序如下:图3-2DS18B20初始化时序图针对初始化时序可以编写如下函数:voidds18b20init() //18b20的初始化{ dq=1; delay(1); dq=0; delay(80); dq=1; delay(5); dq=0; delay(20); dq=1; delay(35);}DS18B20写时序如下:图3-2DS18B20写时序图DS18B20读时序:图3-2DS18B20读时序图因此可以编写温度传感器读写函数:voidds18b20wr(u8dat) //18b20写数据{ u8i; for(i=0;i<8;i++) { dq=0; dq=dat&0x01; dat>>=1; delay(8);//在时序上只有这一块对时序要求最准确,他的时间必须大于15us dq=1; delay(1); } }u8ds18b20rd() //18b20读数据{ u8value,i; for(i=0;i<8;i++) { dq=0; value>>=1; dq=1; if(dq==1)value|=0x80; delay(8);//在这一块也对时间要求特别准确,整段程序必须大于60us } returnvalue;}最后就是一些数据的处理及显示函数,具体可以参考附录。3.2系统软件设计流程图按照上面的程序方案即可画出如下流程图:图3-3软件设计流程图第4章程序仿真调试在KEIL中我们编写好程序,通过KEIL中的编译器编译,使程序确保语法是无错误的,在没有错误的情况下我们在使用KEIL中的软件仿真一步步仿真,通过查看相关存放器的值确认程序无误。或者通过编译生成的HEX文件烧写到仿真软件中,看具体的效果,直到效果无误即可。4.1程序调试用到的软件及工具在编写程序我们使用的是KEILC51,在期内可以软件调试或者也可以使用仿真芯片来仿真测试。4.2KEILC51简介KEILC51是由ARM公司开发的,针对51单片机开发设计,内部具体编译调试软件仿真等等一系列功能,是一个非常强大的单片机开发工具。还可以开发ARM程序。只需要在KEIL软件内设定生成HEX,即可将高级语言转化为机器能识别的机器语言。4.3软件开发环境的搭建设计开发过程采用KEILC51的开发环境。首先翻开程序开发软件KEILC51,双击此软件后进入软件开发主界面,这个时候是没有工程文件的,我们需要创立一个工程,点击工程project,选择第一个选项,然后选择保存位置和工程名,接着就会弹出选择单片机型号界面,由于硬件单片机我们使用的是AT89C51,其和AT89S52同属一个。在KEIL创立工程的时候我们可以将AT89S52型号的单片机替换成AT89C51。我们选择AT89S52如下,在选择芯片的时候课以任意选择AT89S51和AT89S52,因为他们都属于51单片机,选择好后点击OK。图4-1keil创立工程完成上面的步奏后,这个时候需要创立一个.c文件,将其保存,然后就要将保存的.c文件添加到工程内,右键工程组后,选择AddFile...,然后就可以在工程目录内看到.c文件了,此时就可以在编写程序区写入程序了,写完程序后还需要编译。KEILC51这款软件能产生可以直接使用的HEX格式文件,因此,还需要生产HEX文件,要产生HEX文件必须在IDE的“Projet〞->“Options〞->“Output〞中的HEXFormat栏选择HEX-80,然后再将CreateHEXFile栏打上勾。图4-2keil配置图然后我们直接将编译好的HEX文件下载到单片机内即可。4.4Proteus介绍Proteus仿真软件是英国的一家公司开发设计的。此软件专门用于电子开发设计自动化设计,因此也简称是EDA工具软件。此软件不仅具有其它的EDA软件的仿真的功能,关键是他开可以仿真到单片机及其外围数字器件及模拟器件。到目前Proteus仿真软件是最好的数字仿真设计开发软件。LabCenterElectronics公司因此闻名。在我国,由于电子技术开展不是非常的快速,EDA的推广也只是刚刚起步,但是此软件的设计框架完美性得到了广阔的电子及单片机技术爱好者和一直从事教研的老师和单片机应用开发设计者的青睐。此仿真软件既可以在原理图布线,通过KEIL编写编译好的程序直接下载到单片机内就可以仿真,看到和实际电路一样的效果,还可以通过此软件直接导出PCB设计图,完全实现了从理论到实践的跨越,通过此仿真我们就可以按照此电路搭建实物电路,实现仿真到实际开发的一个平台。Proteus也是目前唯一能将电路的仿真及PCB设计和虚拟的模拟三个软件相结合的一个大平台。软件内部自带有目前市场上主流的多种处理器,主要有8051和PIC的12,16,18等,还有MSP430系列单片机及AVR单片机,甚至还能实现ARM及DSP处理器仿真,随着日益不断的更新,后面还有很多种型号的单片机及高端处理器模型在推出。此软件在编译器上它能够支持IAR及Keil和MATLAB等多种。4.5仿真结果开机显示测试温度界面如下:温度传感器检测的温度是36度,在LCD液晶上显示的也是36度图4-3仿真1设定温度上限界面如下:图4-4仿真2设定温度下限界面如下:图4-5仿真3检测温度高于设定上限温度声光报警:图4-6仿真4当检测温度低于下限温度,指示灯灭,报警消除:图4-7仿真5我们只需要设定温度的上下限值就可以通过单片机自动检测报警。第5章总结这次的设计花了不少的时间去做。在这段时间中,我体验了一次设计,原理图,编程,代码调试,这个过程让我体验到了工程师研发的感觉。工程虽小,却五脏俱全。数字电路,单片机接口电路,模拟电路中,几乎把所学的各个知识都集在了一起。因为平时以理论为主,到了动真刀真枪的时候,还遇到了不少的困难。电路的搭建,选取什么适宜的MCU型号,单总线通信时序的模拟等等。单片机程序里,怎么计算延时时间,还有对按键消抖的处理等等很多问题。一开始,对于设计延时函数比拟纠结,虽然网上有很多的延时函数可以摘取,但是本着学习的太多,自己使用KEIL内的软件仿真计算出具体的时间,这样让我在设计中更加有成就感,还有在按键的消抖过程中,一开始没有作消抖处理,导致按键按下后会出现屡次判断现象,将抖动的误操作当作正常操作。后来参考了一些单片机书籍,有对这些讲解,原来这些细节的东西不是看一遍书就能记得的,需要动手在编译器上敲代码,遇到问题了,解决了,这些细节的问题才能加深理解,知道怎么去运用。实践是检验真理的唯一标准,这次毕业设计给我好好上了一堂课。在这段时间的工程制作过程中,让我很充实,很快乐。因为我会运用单片机来做应用了。调试成功的时候,那真是很令人兴奋的,挺有成就感的;但遇到问题的时候,令人十分抓狂。人们都说,成功的背后需要承受痛苦之前方能尝到甜味,确实是这样的。参考文献[1]李朝青.单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,1998.[2]李全利.单片机原理及接口技术[M].高等教育出版社,2003.[3]PROTEL99SE电路设计与制板[M].机械工业出版社,2007.[4]杨将新,李华军,刘到骏等.单片机程序设计及应用〔从根底到实践〕[J].电子工业出版社,2006.[5]StevenF.Barrett.DaneilJ.Pack.EmbeddedSystem[M].北京:电子工业出2006.[6]周立功.LPC900系列Flash单片机应用技术[J].北京航空航天大学出版社,2004.[7]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社,2005.[8]楼然苗.51系列单片机设计实例.北京:北京航空航天出版社,2004.[9]黄仁欣.单片机原理及应用技术.北京:清华大学出版社,2005.[10]何立民.单片机高级教程.第1版.北京:北京航空航天大学出版,2001.[11]赵晓安.MCS-51单片机原理及应用.天津:天津大学出版社,2001.3.[12]李广第.单片机根底.第1版.北京:北京航空航天大学出版社,1999.[13]徐惠民,安德宁.单片微型计算机原理接口与应用.第1版.北京:北京邮电大学出版社,1996.致谢在此毕业设计中让我对处理问题的能力得到了很大的提高。知道在遇到问题的时候要去刨根问底,去追溯问题的根源,这样问题才能引刃而解。只有这样才能学习到很多的东西,积累很多的经验,而这些经验对我是很值得拥有的财富。在此也要感谢我的指导老师,是他一直对我的设计耐心的指导,即使我犯很低级的错误,我的指导老师也非常有耐心,和蔼的给我讲解,教我怎么去分析问题和解决问题,这令我非常的敬佩。还有他那渊博的知识,毫无保存的给我们讲解分享经验,这些都是我所感动和敬佩的。最后还要感谢我大学期间的所有老师,是他们一步步带我们成长和进步的,还有我那些同学们,没有他们的支持和关爱,相信我的大学生活也不会这么丰富多彩。谢谢你们。附录#include<reg52.h>typedefunsignedcharuint8;typedefunsignedintuint16;sbitrs=P2^6; //数据命令选择sbitrw=P2^5; //读写选择sbite=P2^7; //使能sbitbeep=P3^7;//蜂鸣器sbitdq=P3^6; //温度传感器接口sbitled=P3^1;//sbitk1=P3^2; //模式按键sbitk2=P3^4; //加sbitk3=P3^5; //减sbitk4=P3^3; //确认uint8num[]="0123456789.C"; uint8d1[8]="Temper:";uint8d2[2]="H:";uint8d3[2]="L:";uint8tm[5],tm1[5],tm2[5];uint8a,c,temp;floatdio;uint16k;uint8mode,sheding=0;charwenduh=40,wendul=20;voiddelay(uint16i)//延时函数,大约10us{ while(i--);}voidint0init() //外部中断0初始化{ EA=1; EX0=1; IT0=1; //选择下降沿触发}voidint1init() //外部中断1初始化{ EA=1; EX1=1; IT1=1; //选择下降沿触发} voidwrc(uint8c) //LCD写命令函数{ delay(1000); rs=0; rw=0; e=0; P0=c; e=1; delay(10); e=0;}voidwrd(uint8dat) //LCD写数据函数{ delay(1000); rs=1; rw=0; e=0; P0=dat; e=1; delay(10); e=0; rs=0;}voidinit() //LCD初始化函数{ delay(1000); wrc(0x38); wrc(0x38); wrc(0x38); wrc(0x06); wrc(0x0c); wrc(0x01);}//DS18B20检测温度voidds18b20init() //18b20的初始化{ dq=1; delay(1); dq=0; delay(80); dq=1; delay(5); dq=0; delay(20); dq=1; delay(35);}voidds18b20wr(uint8dat) //18b20写数据{ uint8i; for(i=0;i<8;i++) { dq=0; dq=dat&0x01; dat>>=1; delay(8);//在时序上只有这一块对时序要求最准确,他的时间必须大于15us dq=1; delay(1); } }uint8ds18b20rd() //18b20读数据{ uint8value,i; for(i=0;i<8;i++) { dq=0; value>>=1; dq=1; if(dq==1)value|=0x80; delay(8);//在这一块也对时间要求特别准确,整段程序必须大于60us } returnvalue;}uint8readtemp() //读取温度内需要复位的{ uint8b; ds18b20init(); //初始化 ds18b20wr(0xcc);//发送忽略ROM指令 ds18b20wr(0x44);//发送温度转换指令 delay(100); ds18b20init(); //初始化 ds18b20wr(0xcc);//发送忽略ROM指令 ds18b20wr(0xbe);//发读暂存器指令 a=ds18b20rd(); //温度的低八位 b=ds18b20rd(); //温度的高八位 b<<=4; //sssss***;s为标志位s=0表示温度值为正数,s=1温度值为负数 c=b&0x80; //温度正负标志位确认 b+=(a&0xf0)>>4; a=a&0x0f; //温度的小数局部 returnb;}voidtime0init()//定时器0初始化{ TMOD=0X01; TH0=0Xfc; TL0=0X18;//1ms TR0=1; EA=1; ET0=1;}voidsound()//蜂鸣器报警{ uint8i=100; while(i--) { beep=~beep; delay(100); } }voiddatapros() //数据处理函数{ dio=a*0.0625; k=dio*10000;//取小数点后两位有效数字 wrc(0x08+0x80); if(c==0x80) //读取到负温度即为补码,要将其转换成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度国际劳务输出合同管理与劳动权益保障
- 2025年度广州科技创新园区建设工程施工合同参考范本
- 2025年度城市更新改造工程监理服务合同
- 长春2024年吉林长春市市直事业单位招聘13人笔试历年参考题库附带答案详解
- 贵州2025年贵州省残疾人联合会直属事业单位招聘13人笔试历年参考题库附带答案详解
- 西双版纳2025年云南西双版纳州妇幼保健院第一批非在编护理人员招聘笔试历年参考题库附带答案详解
- 舟山浙江舟山岱山县司法局招聘编外工作人员(二)笔试历年参考题库附带答案详解
- 绥化2025年黑龙江肇东市急需紧缺高中教师招聘6人笔试历年参考题库附带答案详解
- 湖北2025年湖北医药学院专项招聘90人笔试历年参考题库附带答案详解
- 河南2025年河南财政金融学院招聘高层次人才笔试历年参考题库附带答案详解
- 安全教育培训记录表(春节节后)
- 水稻叶龄诊断栽培技术课件
- 经纤支镜气道球囊扩张术课件
- 汽车尾气污染与治理汽车尾气污染课件
- 河南神火兴隆矿业有限责任公司泉店煤矿矿产资源开采与生态修复方案
- 对外汉语教学论
- 《十万个为什么》推进课(小学课件)
- 全国主要城市的月日均总辐照量和年日均总辐照量
- 会计公司员工手册
- GB/T 13404-2008管法兰用非金属聚四氟乙烯包覆垫片
- 任职宣布大会上的讲话(集团公司任命子公司领导班子成员)
评论
0/150
提交评论