基于单片机的温度自动检测系统设计课程设计--学位论文

上传人:无*** 文档编号:218210991 上传时间:2023-06-18 格式:DOC 页数:26 大小:1.51MB
返回 下载 相关 举报
基于单片机的温度自动检测系统设计课程设计--学位论文_第1页
第1页 / 共26页
基于单片机的温度自动检测系统设计课程设计--学位论文_第2页
第2页 / 共26页
基于单片机的温度自动检测系统设计课程设计--学位论文_第3页
第3页 / 共26页
点击查看更多>>
资源描述
基于单片机的温度自动检测系统设计摘要随着科技的不断进步,在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。温度测量是温度控制的基础,技术已经比较成熟。,本设计介绍了一种利用单片机AT89S52组成的温度自动检测系统,从硬件和软件两方面介绍了单片机温度控制系统的设计思路。着重介绍了硬件原理图和程序框图。阐述了系统的工作原理、设计及实现。由DS18B20温度传感器芯片测量当前的温度,并将结果送入单片机。然后通过AT89S52单片机对送来的温度进行计算和转换,并将此结果送入液晶显示模块。最后,由LCD1602液晶显示器将温度显示出来。它可以实时的显示和设定温度,当温度值超出报警温度时会自动报警,实现了系统结构简单、性能可靠、控制精度高。关键词:AT89S52单片机 DS18B20温度传感器 温度检测目录摘要I目录II1 引言11.1 选题的背景11.2 选题的目的及意义12 设计的整体方案22.1设计要求22.2 设计的主要内容22.3 设计性能要求23 硬件的选择33.1 单片机的选择33.1.1 AT89S52的特点及选择原因33.1.2 AT89S52的工作模式及注意事项43.2 温度传感器的选择43.2.1 DS18B20的特点及选择原因43.2.2控制器对DS18B20操作流程:63.3 显示器的选择64 电路原理84.1 晶振电路与复位电路84.2 温度采集电路94.3 显示电路94.4 报警系统105 程序原理及系统流程图115.1 主程序115.2 读出温度子程序115.3 温度数据显示子程序135.4 设置报警温度136 软件仿真146.1 软件介绍146.2 仿真过程147 实物的焊接与调试158 全文总结168.1设计总结168.2设计体会16附录I 系统电路原理图17附录II PCB板17附录 程序清单18II1 引言1.1 选题的背景温度控制广泛应用于人们的生产和生活中,人们使用温度计来采集温度,通过人工操作加热、通风和降温设备来控制温度,这样不但控制精度低、实时性差,而且操作人员的劳动强度大。即使有些用户采用半导体二极管作温度传感器,但由于其互换性差,效果也不理想。在某些行业中对温度的要求较高,由于工作环境温度不合理而引发的事故时有发生。对工业生产可靠进行造成影响,甚至操作人员的安全。为了避免这些缺点,需要在某些特定的环境里安装数字温度测量及控制设备。本设计由于采用了新型单片机对温度进行控制,以其测量精度高,操作简单。可运行性强,价格低廉等优点,特别适用于生活,医疗,工业生产等方面的温度测量及控制。本设计是一个数字温度测量及控制系统,能测柜内的温度,并能在超限的情况下进行控制、调整,并报警。保证环境保持在限定的温度中。1.2 选题的目的及意义随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。无论是在工业方面,农业方面或者是平民大众的生活当中,我们都能看到温度计的身影。传统的温度检测以热敏电阻和AD590为温度敏感元件。热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差。测温准确度低,检测系统也有一定的误差。因此,利用新型温度传感器取代旧式的温度传感器是必然的趋势,新型的温度传感器的优势越来越得到体现,越来越普及。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。本设计的温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,测温传感器使用DS18B20,LCD以串口传送数据,实现温度显示,能准确达到以上要求。同时可自由设置报警温度,实现超过最高温度时闪烁红灯蜂鸣器同时响起,当温度降低到最高温度以下,红灯关闭绿灯闪烁的功效。2 设计的整体方案2.1设计要求温度传感器测量水杯中温度,当水温超过最高温度(100摄氏度)时,红灯亮,如水温下降继续亮红灯,直到水温降低到设定的低温时,则亮绿灯,如水温上升而继续亮绿灯,直到水温超过高温则亮红灯。红灯与绿灯不可同时亮。2.2 设计的主要内容根据系统的设计要求,当温度传感器DS18B20把所测得的温度发送到AT89S52单片机上,经AT89S52处理,将把温度在显示电路上显示,除了显示温度以外还可以设置一个报警温度,对所测温度进行监控。利用外接的键盘设置电路,对温度进行上下限设置。当温度高于或低于设定温度时,开始报警并启动相应程序。当开机后,能够设置报警温度,在到达报警时间后能够提示报警。利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。系统框图如下图2-1:AT89S52温度控制报警电路温度传感器键盘设定显示设备图2-1 系统框图选择DS18B20作为本系统的温度传感器,选择单片机AT89S52为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器DS18B20,输出信号全数字化。当LCD液晶显示器接收到来自AT89S52单片机传送来的温度信息后,显示当前的温度。 2.3 设计性能要求设计的主要功能和指标如下:(1)开机时显示当前温度。(2)利用温度传感器(DS18B20)测量某一点环境温度。(3)测量范围为-55110,精度为0.5。(4)用液晶进行实际温度值显示。(5)能够根据需要方便设定上下限报警温度。(6)当达到报警温度后,能够自动发出报警声。3 硬件的选择本设计是选用DS18B20作为温度传感器,选用AT89S52单片机作为整个设计的核心处理器部分。通过处理作为温度传感器传输的温度信息后,将处理后的信息传输给LCD液晶显示器。所以用到的器件有AT89S52、DS18B20、LCD1602等。3.1 单片机的选择3.1.1 AT89S52的特点及选择原因AT89S52作为温度测试系统设计的核心器件该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术具有高性能的8位单片机,属于标准的MCS一51的CMOS产品。片内含8K bytes的可贩毒擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件兼容标准的MCS-51指令系统。片内置通用8位中央处理器(CPU)和Flash存储单元。结合了HMOS的高速和高密度技术及CHMOS的低功耗特征。其具有如下性质:(1)与MCS-51 产品指令系统完全兼容(2)8K字节可重擦写Flash闪烁存储器。(3)寿命:1000写/擦循环。(4)数据保留时间:10年。(5)全静态工作:0Hz-24Hz。(6)三级程序存储器锁定。(7)128*8位内部RAM。(8)32可编程I/O线。(9)三个16位定时器/计数器。(10)8个中断源。(11)可编程串行通道。(12)低功耗的闲置和掉电模式。(13)片内振荡器和时钟电路。 图3-1 AT89S52引脚图AT89S52单片机提供以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。由于此设计需要编写程序,需要将程序烤入单片机中,因此单片机必须具有足够多的存储空间,其具有8K字节的Flash完全满足要求。32位的I/O 口线能够使得单片机与温度显示器、温度传感器、键盘、报警电路、按键电路和指示灯连接等等变得可能。16位的定时计数器使得读取数据变得更加简单,同时其结构有利于晶振电路和复位电路的连接。最重要的是,能够在掉电状态下保存RAM内的数据。同时,与同类51单片机相比,AT89S52具有更强的可操作性。因此,对于本设计来说,选择AT89S52是最有利的。3.1.2 AT89S52的工作模式及注意事项AT89S52单片机有两种可用软件编程的省电模式,它们是空闲模式和掉电工作模式。这两种方式是控制专用寄存器PCON(即电源控制寄存器)中的PD(PCON1)和IDL(PCON0)位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是空闲等待方式,当IDL=1,激活空闲工作模式,点偏激进入睡眠状态。如需同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在空闲工作状态下,CPU保持睡眠状态而所有的片内的外设都保持激活状态,这种方式由软件产生,此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。终止空闲工作模式的方法有两种,进入中断服务程序,执行完中断服务程序并紧随RST1(中断返回)指令后,下一条要执行的指令就是使单片机进入空闲模式的那条指令后面的一条指令。其二是通过硬件复位可以将空闲工作模式终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU通常是从激活空闲模式那条指令的吓一跳指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU访问片内RAM,而允许访问其他端口。为了避免可能对端口产生意外写入,激活空闲状态的那条指令后一条指令不应是一条端口或外部存储器的写入指令。在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令。片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器但并没有因此改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,但必须保持一定时间以使振荡器重启动并稳定工作。AT89S52单片机具有一些极限参数:(1)工作温度:-55摄氏度至+125摄氏度(2)储藏温度:-65摄氏度至+150摄氏度(3)任一引脚对地电压:-1.0V至+7.0V(4)最高工作电压:6.6V(5)直流输出电流:15.0mA3.2 温度传感器的选择 3.2.1 DS18B20的特点及选择原因DS18B20是美国DALLAS公司继DS1820之后推出的增强型单总线数字式温度传感器,它在转换速度、转换时间、传输距离、分辨率等方面较之前产品有了很大的改进,给用户带来了更方便、更令人满意的效果。DALLAS 最新单线数字温度传感器DS18B20是一种新型的“一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持“一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DQ 为数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源; GND为地信号;VDD为可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻.DS18B20的主要特征:* 全数字温度转换及输出。l* 先进的单总线数据通信。l* 最高12位分辨率,精度可达土0.5摄氏度。l* 12位分辨率时的最大工作周期为750毫秒。l* 可选择寄生工作方式。l* 检测温度范围为55C +125C (67F +257F)l* 内置EEPROM,限温报警功能。l* 64位光刻ROM,内置产品序列号,方便多机挂接。l* 多样封装形式,适应不同硬件系统。 DS18B20芯片封装结构: 图3-2-1 DS18B20引脚图 图3-2-2 DS18B20实物图DS18B20引脚功能:GND 电压地 DQ 单数据总线 VDD 电源电压 NC 空引脚DS18B20工作原理:DS18B20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更强。其一个工作周期可分为两个部分,即温度检测和数据处理。在讲解其工作流程之前我们有必要了解18B20的内部存储器资源。18B20共有三种形态的存储器资源,它们分别是:ROM 只读存储器,用于存放DS18B20ID编码,其前8位是单线系列编码(DS18B20的编码是19H),后面48位是芯片唯一的序列号,最后8位是以上56的位的CRC码(冗余校验)。数据在出产时设置不由用户更改。DS18B20共64位ROM。RAM 数据暂存器,用于内部计算和数据存取,数据在掉电后丢失,DS18B20共9个字节RAM,每个字节为8位。第1、2个字节是温度转换后的数据值信息,第3、4个字节是用户EEPROM(常用于温度报警值储存)的镜像。在上电复位时其值将被刷新。第5个字节则是用户第3个EEPROM的镜像。第6、7、8个字节为计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转换、计算的暂存单元。第9个字节为前8个字节的CRC码。EEPROM 非易失性记忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,DS18B20共3位EEPROM,并在RAM都存在镜像,以方便用户操作。我们在每一次读温度之前都必须进行复杂的且精准时序的处理,因为DS18B20的硬件简单结果就会导致软件的巨大开消,也是尽力减少有形资产转化为无形资产的投入,是一种较好的节约之道。3.2.2控制器对DS18B20操作流程:1、 复位:首先我们必须对DS18B20芯片进行复位,复位就是由控制器(单片机)给DS18B20单总线至少480uS的低电平信号。当18B20接到此复位信号后则会在1560uS后回发一个芯片的存在脉冲。2、 存在脉冲:在复位电平结束之后,控制器应该将数据单总线拉高,以便于在1560uS后接收存在脉冲,存在脉冲为一个60240uS的低电平信号。至此,通信双方已经达成了基本的协议,接下来将会是控制器与18B20间的数据通信。如果复位低电平的时间不足或是单总线的电路断路都不会接到存在脉冲,在设计时要注意意外情况的处理。3、 控制器发送ROM指令:双方打完了招呼之后最要将进行交流了,ROM指令共有5条,每一个工作周期只能发一条,ROM指令分别是读ROM数据、指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。ROM指令为8位长度,功能是对片内的64位光刻ROM进行操作。其主要目的是为了分辨一条总线上挂接的多个器件并作处理。诚然,单总线上可以同时挂接多个器件,并通过每个器件上所独有的ID号来区别,一般只挂接单个18B20芯片时可以跳过ROM指令(注意:此处指的跳过ROM指令并非不发送ROM指令,而是用特有的一条“跳过指令”)。ROM指令在下文有详细的介绍。4、 控制器发送存储器操作指令:在ROM指令发送给18B20之后,紧接着(不间断)就是发送存储器操作指令了。操作指令同样为8位,共6条,存储器操作指令分别是写RAM数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM中的报警值复制到RAM、工作方式切换。存储器操作指令的功能是命令18B20作什么样的工作,是芯片控制的关键。5、 执行或数据读写:一个存储器操作指令结束后则将进行指令执行或数据的读写,这个操作要视存储器操作指令而定。如执行温度转换指令则控制器(单片机)必须等待18B20执行其指令,一般转换时间为500uS。如执行数据读写指令则需要严格遵循18B20的读写时序来操作。3.3 显示器的选择由于设计中要求同时显示测试温度、温度上限、温度下限和开机时间,因此显示屏首先要能够一次性容纳这些字符。工作电压不能太高,与单片机的连接方式需要简单,显示准确。本设计中采用的是1602型LCD液晶屏能够很好的满足这些要求。此液晶属于工业字符型液晶,能够同时显示16x02即32个字符。LCD液晶显示器是一种低压、微功耗的显示器件,只要23伏就可以工作,工作电流仅为几微安,是任何显示器无法比拟的,同时可以显示大量信息,除数字外,还可以显示文字、曲线,比传统的数码LED显示器显示的界面有了质的提高。在仪表和低功耗应用系统中得到了广泛的应用。1602采用标准的16脚接口,其中:第1脚:VSS为电源地;第2脚:VCC接5V电源正极;第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 图3-3-1 LCD1602引脚图 图3-3-2 LCD1602实物图 1602拥有很多出色的优点:1)显示质量高,由于液晶显示器的每一个点收到信号后就一直保持那种色彩和亮度恒定发光,因此液晶显示器的画质高而且不会闪烁。2)数字式接口,液晶显示器都是数字式的,和单片机的接口简单操作也很方便。3)体积小、重量轻,液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。4)功率消耗小,相比而言液晶显示器的主要功耗在内部电极和驱动IC上,因而耗电量比其他器件要小很多。虽然LCD显示器的价格比数码管要贵,但它的显示效果好,是当今显示器的主流,所以采用LCD 作为显示器。4 电路原理整个设计的电路包括了最小系统电路、温度控制电路、温度显示电路、按键电路和报警电路五部分电路组成。4.1 晶振电路与复位电路晶振电路和复位电路与单片机连接构成最小系统电路,如图4-1-1,如何选取合适的引脚,选取何种连接方式都至关重要。图4-1-1 最小系统电路在晶振电路中,主要用到了XTAL1和XTAL2两个引脚。(1)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。(2)XTAL2:来自反向振荡器的输出。在晶振电路中,AT89S52具有两种晶振方式,一种是片内时钟振荡方式,但需要在引脚外接石英晶体和振荡电容,振荡电容的值一般取10-30pf。另一种是外部时钟方式,即将XTAL1接外部时钟,XTAL2脚悬空。单片机的晶振频率采用11.0592MHZ,加两个30pF电容。XTAL1和XTAL2分别为反向放大器的输入和输出,外接石英晶体和振荡电容,构成了片内时钟振荡方式。而振荡周期指的就是单片机外接石英晶体振荡器的周期。当时钟起振后,产生一定的频率的时钟信号,单片机的CPU在时钟信号的控制下能一步一步完成自己的工作,同时与整个系统相关的周期还有振荡周期、状态周期、机器周期和指令周期。电容C1和C2主要用于校正波形,振荡器的作用主要是产生时钟振荡。而整个电路的作用则是为了产生自激振荡。对于复位电路,AT89S52有两种复位方式,分别是上点复位和按键复位。本设计采用的是按键复位,即利用一个复位电容和按键的组合使得复位变得更加直接和简单。引脚RST作用是复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。在按下按键后,系统自动复位,十分方便。在复位电路中添加按键主要是为了能够使得复位更加方便,电容主要是在复位后进行充电,而上拉电阻起到限流的作用,保护了电路。4.2 温度采集电路温度控制电路主要运用到了DS18B20和AT89S52,如图4-2-1。如何使两者连接实现功能是温度控制电路的主要设计目的。图4-2-1 温度采集电路在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。内部寄生电源I/O口线要接5K左右的上拉电阻。这里采用的是第一种连接方法,如图所示:传感器数据采集电路主要指DS18B20温度传感器与单片机的接口电路。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式考虑到实际应用中寄生电源供电方式适应能力差且易损坏,此处采用电源供电方式,I/O口接单片机的P2.4口4.3 显示电路液晶显示器是一种将液晶显示器件,连接器件,集成电路,PCB线路板,背光源,结构器件装配在一起的组件。图4-3-1 显示电路在显示电路中,VSS接地,VDD接5V正电源, VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,为了获得最佳对比度,VEE接地。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。4.4 报警系统利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过所预设的温度时,数据口相应拉高电平,报警输出。而另一端则直接和单片机的P3.1端口相连。图4-4-1 报警电路5 程序原理及系统流程图5.1 主程序按键设置N执行报警程序返回温度极限从DS18B20读取温度并显示SET键被按下?显示初始化开始初始化中断和定时器NYY 图5-1 主程序流程图主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每250ms进行一次。主程序的第二个功能是查询SET键是否被按下,以实现设置温度上下限的功能。其程序流程见图5-1所示。由总的流程图可以分析出,在整个程序中应该包括如下几个部分:读写DS18B20子程序,温度转换子程序,处理温度数据子程序,动态数据显示子程序等5.2 读出温度子程序读出温度子程序的主要功能是读出RAM中的数据,在读出时需进行CRC校验,校验有错时不进行温度数据的读取。其程序流程图如图5-2所示。结束单片机读取温度数据移入温度寄存器温度转移成功?写DS18B20读取温度指令初始化DS18B20开始NY 图5-2 程序流程图CPU对DS18B20的访问流程是:先对DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令, 这样才能对DS18B20进行预定的操作。void Init_DS18B20(void) unsigned char x=0; DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20);上述程序中将DQ拉低,精确延时,再将DQ拉高,通过判断x的值来确定是否已经初始化完成。5.3 温度数据显示子程序显示温度数据子程序主要是对显示缓冲数组中的显示数据进行刷新操作,查表送段码至LCD,点亮数码管,显示数字。一个字节不能直接在显示屏上显示,这就需要将字节通过处理转化成能在LCD上显示的数。该段程序的作用在于,在接收到温度信息后,通过转化,变成能在LCD上显示的字符。再通过LCD显示出来。5.4 设置报警温度该系统可以设置报警温度,当K1=1,开启中断,可以设置温度上限,如果K3=1时,减一;如果K4=1时,加一。 if(K3=0) delay(10); while(K3=0);if(BJG=9) BJG=0; BJS+; else BJG+; if(K4=0) delay(10); while(K4=0);if(BJG=0) BJG=9; BJS-; else BJG-; 这段程序的作用在于,设置报警温度的大小值 。6 软件仿真6.1 软件介绍Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。 Proteus主要由ISIS和ARES两部分组成,ISIS的主要功能是原理图设计及与电路原理图的交互仿真,ARES主要用于印制电路板的设计。 6.2 仿真过程在Proteus中仿真如下图所示,在仿真过程中,主要检测DS18B20是否能快捷的检测出室温,能否随着温度的变化而变化。这是检验是否能检验温度的重要标准。设置报警温度为50摄氏度,仿真结果如图6-2-1: 图6-2-1 报警温度设置显示当温度(55C)超过报警温度时红灯点亮,仿真结果如图6-2-2。 图6-2-2当温度(40C)超过报警温度时红灯熄灭绿灯点亮,仿真结果如图6-2-1。 图6-2-17 实物的焊接与调试由于本次设计使用的是Altium designer软件绘图制版,Proteus软件仿真,因此很容易就把PCB版制作出来了。实物焊出来之后,先要进行硬件调试。实物经过硬件调试后还要进行软件调试,即将程序写入到单片机存储器中,实现设计功能。 图7-1 成品实物图8 全文总结8.1设计总结本次课程设计中设计的温度计主要由AT89S52和DS18B20来实现功能的。因此需要通过查阅资料来了解这些器件的基本结构,主要功能和注意事项等等。通过了解器件,在触类旁通之下,能够知道与所选器件相似的器件,比较彼此之间的优缺点,来确定设计选择的器件是否合适,如何更好的利用器件的特点成为了本次设计重要的一方面。在确定了器材之后,如何利用使之最大限度的体现设计的功能,完成设计目标,这又是需要花大量时间去思考的。在设计完成之后,设计合理的程序和通过仿真软件模拟仿真,又再一次检验了设计的成果。最后在实物焊接完成后,整个设计才圆满完成。温度计设计作为一种比较简单的单片机设计,只有突出其在简单,方便,使用,便捷方面,这个设计才有其意义。8.2设计体会通过此次课程设计,使我更加扎实的掌握了有关单片机各种软件以及电子线路方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门实践课,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等,掌握了焊接的方法和技术,通过查询资料,也了解了温度传感器和液晶显示器的构造及原理。 我认为,在这次课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在制造实物中,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。 回顾起此课程设计,我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。附录I 系统电路原理图附录II PCB板附录 程序清单-#include#define uchar unsigned char#define uint unsigned intsbit RS=P11;sbit EN=P13;sbit RW=P12;sbit DQ=P23;sbit G=P31;sbit R=P30;sbit SOUND=P16;sbit K1=P32;sbit K2=P33;sbit K3=P34;sbit K4=P35;uchar i;uint num; uint bai,shi,ge,xiaoshu;uchar code t0=The temperature ;uchar code t1= is C ;uchar code t2=Alarm temperature ;uchar code wendu=0123456789012; uchar BJS=3;uchar BJG=0;void delay(uint x) /延时程序1-uint m,n;for(m=x;m0;m-) for(n=10;n0;n-); /*液晶写指令*/void write_com(uchar com)P0=com;RS=0; /命令/状态寄存器EN=0; /使能信号RW=0; /写操作delay(10);EN=1; /使LCD能信号delay(10);EN=0;/*液晶写数据指令*/void write_date(uchar date)P0=date;RS=1;/命令状态寄存器EN=0;RW=0;delay(10);EN=1;delay(10);EN=0; /延时写数据/*液晶初始化指令*/void init()write_com(0x38);delay(20);write_com(0x0f);delay(20);write_com(0x06);delay(20);write_com(0x80); for(i=0;i16;i+) write_date(t0i); delay(0); write_com(0x80+0x40);for(i=0;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; tmpDelay(4);return(dat);void WriteOneChar(unsigned char dat) /写一个字节unsigned char i=0;for (i=8; i0; i-) DQ = 0; DQ = dat&0x01;tmpDelay(5); DQ = 1; dat=1;unsigned int Readtemp() /读取温度unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0; Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器a=ReadOneChar(); /连续读两个字节数据?b=ReadOneChar();t=b;tBJS) R=0; G=1; SOUND=0; if(wendushi=BJS)&(wenduge=BJG) R=0; G=1; SOUND=0; if(wendushiBJS) R=1; G=0; SOUND=1; if(wendushi=BJS)&(wendugeBJG) R=1; G=0; SOUND=1; void int0_ser() interrupt 0 /*设置报警温度、 while(1) write_com(0x80); for(i=0;i16;i+) write_date(t2i); delay(0); write_com(0xc0+4); write_date(wendubai); write_com(0xc0+5); write_date(BJS); write_com(0xc0+6); write_date(BJG); write_com(0xc0+7); if(K3=0) delay(10); while(K3=0);if(BJG=9) BJG=0; BJS+; else BJG+; if(K4=0) delay(10); while(K4=0);if(BJG=0) BJG=9; BJS-; else BJG-; if(K2=0) break; void main() /*主函数* EA=1; EX0 = 1; /允许外部中断0 IT0 = 1; /外部中断为边沿触发方式 init();while(1) num=Readtemp(); bai=num/1000; shi=num/100; ge=num/10%10; xiaoshu=num%10; write_com(0x80); for(i=0;i16;i+) write_date(t0i); delay(0); write_com(0xc0+4); write_date(wendubai); write_com(0xc0+5); write_date(wendushi); write_com(0xc0+6); write_date(wenduge); write_com(0xc0+7); write_date(0x2e); write_com(0xc0+8); write_date(wenduxiaoshu); deng(); 24
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!