基于某51单片机和DS18B20地数字温度计设计.doc
摘 要随着科技的不断开展,电子设备的应用已经取得了非凡的成就。即使是高度集成化的今天,单片机技术依旧在我们的日常生活中占据着重要的地位。温度是日常生活、工业、医学、环境保护、化工、石油等领域最常用到的一个物理量。测量温度的根本方法是使用温度计直接读取温度。最常见到得测量温度的工具是各种各样的温度计。它们常常以刻度的形式表示温度的上下,人们必须通过读取刻度值的多少来测量温度。利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,有直观准确。本文介绍了一个基于STC89C51单片机和数字温度传感器DS18B20的测温系统,并用LED数码管显示温度值,易于读数。系统电路简单、操作简便,系统具有可靠性高、本钱低、功耗小等优点。通过Proteus画图以与Keil编程,成功的仿真出了能够实时测量温度并显示温度的数字温度计。关键词:单片机、数字温度传感器、温度计目录摘要2目录3第一章绪言111课题背景112课题研究的目的和意义113国内外研究现状2第二章设计要求32.1 设计任务32.2根本要求3第三章课程设计方案与器材选用分析43.1设计总体方案43.1.1方案论证43.1.2总体框图设计53.2器材选用分析53.2.1 DS18B20温度传感器53.2.2 AT89S52单片机介绍91. AT89S52的主要性能92. AT89S52的功能特性93.3系统硬件设计103.3.1主电路搭建103.3.2显示电路113.3.3总体电路12第四章软件设计13主程序134.2读出温度子程序134.3温度转换命令子程序144.4计算温度子程序155.4键盘扫描流程图15第五章仿真与调试165.1仿真与调试165.2调试与运行16致谢17主要参考文献:18附录1:元件清单19附录2:原理图20附录3:实物图21附录4:程序22第一章 绪言11 课题背景工农业生产中经常需要测量温度。在设计温度测量系统时,通*要采用电池供电的极低功耗模块。传统的温度测量手段比拟多,但不论是采用分立晶体管,或者是热电偶,功耗都降不下来。为达到低功耗要求,采用一枚极低功耗的、带Flash存储器的MCU,以与热敏电阻传感器、日历时钟和液晶模块(LCD)组成测量系统。采用负温度系数(NTC)热敏电阻,具有测量灵敏度高、体积小,电阻值大、价格廉价等特点,且温度X围可以从-40125,精度可达1,根本上满足了行业中对温度的测量需求。系统兼顾了温度测量精度和低功耗方面的要求。温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体开展水平仍然不高,同日本、美国、德国等先进国家相比,仍然有着较大的差距。成熟的温控产品主要以点位控制与常规的PID控制器为主,它们只能适应一般温度系统控制,而用于较高控制场合的智能化、自适应控制仪表,国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。随着我国经济的开展与参加WTO,我国政府与企业对此都非常重视,对相关企业资源进展了重组,相继建立了一些国家、企业的研发中心,开展创新性研究,使我国仪表工业得到了迅速的开展。12 课题研究的目的和意义温度是日常生活、工业、医学、环境保护、化工、石油等领域最常用到的一个物理量。测量温度的根本方法是使用温度计直接读取温度。最常见到得测量温度的工具是各种各样的温度计,例如:水银玻璃温度计,热电偶或热电阻温度计等。它们常常以刻度的形式表示温度的上下,人们必须通过读取刻度值的多少来测量温度。传统的方式是采用热电偶或热电阻。利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,有直观准确。随着社会的不断开展,人们对自动化集成中调空的要求日益提高。即使是高度集成化的今天,单片机技术依旧在我们的日常生活中占据着重要的地位。科技不断开展,现代社会对各种信息参数的采集的准确度和准确度的要求都有了巨大的增长,然而如何准确却又快速的获取需要的阐述却受限于当代信息根底的开展水平。在三大信息技术中心急采集(传感器技术)、信息传递(通信技术)和信息的处理技术(计算机技术)中,传感器技术属于信息技术的前沿尖端产品,尤其是温度传感技术,在我国各个领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统例如:单片机LPC2148目前在移动产品中有还是具有优势的4。单片机的潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度X围大,抗干扰能力强,能满足一些特殊要求的应用场合,更加扩大了单片机的应用X围,也进一步促使单片机性能的开展。而现在的单片机在农业上页有了很多的应用。13 国内外研究现状单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大局部功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大局部部件:CPU、内存、内部和外部总线系统,目前大局部还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器Microcontroller,是因为它最早被用在工业控制领域。单片机具有低的处理速度和存储容量小的特点。单片机由芯片内仅有CPU的专用处理器开展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的开展便分道扬镳。早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上开展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大开展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。第二章 设计要求2.1 设计任务 现代社会生活中,多功能的数字温度计可以给我们的生活带来很大的方便;支持“一线总线接口的温度传感器简化了数字温度计的设计,降低了本钱;以美国MAXIM/DALLAS半导体公司的单总线温度传感器DS18B20为核心,以ATMEL公司的AT89S52为控制器设计的DS18B20温度控制器结构简单、测温准确、具有一定控制功能的智能温度控制器。 此次课程设计,就是用单片机1实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进展处理。本次采用DS18B20数字温度传感器来实现基于51单片机的数字温度计的设计。该数字温度计利用AD590集成温度传感器与其接口电路完成温度的测量并转换成模拟电压信号,经由模数转换器ADC0804转换成单片机能够处理的数字信号,然后送到单片机AT89C51中进展处理变换,最后将温度值显示在D4、D3、D2、D1共4位七段码LED显示器上。系统以AT89C51单片机为控制核心,加上AD590测温电路、ADC模数转换电路、4位温度数据显示电路以与外围电源、时钟电路等组成。2.2 根本要求实现实时温度显示,4位LED显示;设计温度控制器原理图,学习用PROTEL画出该原理图,并用proteus进展仿真; 设计和绘制软件流程图,用C语言进展程序编写;焊接硬件电路,进展调试。第三章 课程设计方案与器材选用分析 3.1设计总体方案 显示器件:LED8位数码管,LED液晶屏12864由于本设计的需要,仅仅需要显示温度值,而且在显示方面8为数码管有着直观清晰容易分辨的特性,并且综合考虑8为数码管价格廉价,体积小巧等优点,所以当前选取LED8为数码管作为显示器件。提与到温度的检测,我们首先会考虑传统的测温元件有热电偶和热电阻,而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比拟多的外部硬件支持,硬件电路复杂,软件调试也复杂,制作本钱高。 因此,本数字温度计设计采用智能温度传感器DS18B20作为检测元件,测温X围为-55°C至+125°C,最大分辨率可达0.0625°C。DS18B20可以直接读出被测量的温度值,而采用三线制与单片机相连,减少了外部的硬件电路,具有低本钱和易使用的特点。 按照系统设计功能的要求,确定系统由三个模块组成:主控制器STC89C51,温度传感器DS18B20,驱动显示电路。总体电路框图如下:图3-1 系统总体框图3.1.1方案论证 方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进展A/D转换后,就可以用单片机进展数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比拟麻烦。 所以,他的设计理论不符合本次设计的方案要求,应继续考虑另一可行方案。 方案二:进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进展转换,就可以满足设计要求。 因此,从以上两种方案很容易看出,方案二,电路比拟简单,软件设计也比拟简单,故采用了方案二。3.1.2总体框图设计 温度计电路设计总体设计方框图如图3-2所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。DS18B20 采用3脚PR-35封装或8脚SOIC封装。图3-2 总设计方框图主控制器:单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。 显示电路:显示电路采用3位共阳LED数码管,从P3口RXD,TXD串口输出段码。3.2器材选用分析 3.2.1 DS18B20温度传感器 本设计的测温系统采用芯片DS18B20,DS18B20是DALLAS公司的最新单线数字温度传感器,它的体积更小,适用电压更宽,更经济。 实现方法简介: DS18B20采用外接电源方式工作,一线测温一线与STC89C51连接,测出的数据放在存放器中,将数据经过BCD码转换后送到LED显示。DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改良型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。DS18B20的性能特点如下: 独特的单线接口仅需要一个端口引脚进展通信; 多个DS18B20可以并联在唯一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压X围为3.05.5; 零待机功耗; 温度以9或12位数字; 用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度温度报警条件的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作; DS18B20内部结构主要由四局部组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图3-3所示。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。图3-3DS18B20引脚图64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进展通信的原因。温度报警触发器和,可通过软件写入户报警上下限。图3-4DS18B20的内部结构图DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置存放器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时存放器中的分辨率转换为相应精度的温度数值。该字节各位的定义如如下图3-5所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和0决定温度转换的精度位数,来设置分辨率。以12位转化为例说明温度上下字节存放形式与计算:12位转化后得到的12位数据,存储在DS18B20的两个上下两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。DSl8B20的内部存储器是由8个单元组成,其中第0、1个存放测量温度值,第2、3分别存放报警温度的上下限值,第4单元为配置单元,5、6、7单元在DSl8B20这里没有被用到。对于第4个存放器,用户可以设置温度转换精度,系统默认12bit转换精度,相当于十进制的00625,其转换时间大约为750ms。由表3-1可见,DS18B20温度转换的时间比拟长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。 高速暂存RAM的第6、7、8字节保存未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。表3-1 温度精度配置当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。 当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2-4-2是一局部温度值对应的二进制温度数据。表3-2 温度精度配置DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比拟。假如TTH或TTL,如此将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进展报警搜索。 在64位ROM的最高有效字节中存储有循环冗余检验码CRC。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比拟,以判断主机收到的ROM数据是否正确。 DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进展计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器1、温度存放器中,计数器1和温度存放器被预置在55所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进展减法计数,当减法计数器1的预置值减到0时,温度存放器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进展计数,如此循环直到减法计数器计数到0时,停止温度存放器的累加,此时温度存放器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未关闭就重复上述过程,直到温度存放器值大致被测温度值。 另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进展。操作协议为:初使化DS18B20发复位脉冲发ROM功能命令发存储器操作命令处理数据。由于DS18B20采用的“一线总线结构,所以数据的传输与命令的通讯只要通过微处理器的一根双向Io口就可以实现。DSl8B20约定在每次通信前必须对其复位。表3-3DS18B20的ROM操作指令主机一旦检测到DS18B20的存在,根据DS18B2的工作协议,就应对ROM进展操作,接着对存储器操作,最后进展数据处理。在DS18B20中规定了5条对ROM的操作命令。见表3-3。表3-4DS18B20的存储器操作指令主机在发送完ROM操作指令之后,就可以对DS18B20内部的存储器进展操作,同样DS18B20规定了6条操作指令。 3.2.2 AT89S52单片机介绍 1. AT89S52的主要性能 与MCS-51单片机产品兼容,8K字节在系统可编程Flash存储器、 1000次擦写周期、 全静态操作:0Hz33Hz 、三级加密程序存储器 、 32个可编程I/O口线 、三个16位定时器/计数器 八个中断源 、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针 、掉电标识符 。 2. AT89S52的功能特性AT89S52 是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振与时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash AT89S52P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,P1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入P1.0/T2和时器/计数器2 的触发输入P1.1/T2EX。P1.0 T2定时器/计数器T2的外部计数输入,时钟输出。 P1.1 T2EX定时器/计数器T2的捕捉/重载触发信号和方向控制 P1.5 MOSI在系统编程用 P1.6 MISO在系统编程用 P1.7 SCK在系统编程用。P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 。 TTL 逻辑电平。对P2 端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。在访问外部程序存储器或用16位地址读取外部数据存储器例如执行MOVX DPTR 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址如MOVX RI访问外部数据存储器时,P2口输出P2锁存器的内容。 P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流IIL。RST复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。 EA/VPP外部访问允许,欲使CPU仅访问外部程序存储器地址为0000H-FFFFH,EA端必须保持低电平接地。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平接Vcc端,CPU如此执行内部程序存储器的指令。 3.3系统硬件设计3.3.1 主电路搭建主电路主要是:测温电路以与单片机最小系统测温电路:由于每片DS18B20含有唯一的硅串行通信口。加上温度传感器DS18B20的高集成度,导致测量电路非常简单。仅需要用单口与单片机通信即可。图3-5 测温电路单片机最小系统:单片机最小系统主要包括3个主要局部,复位电路,电源电路以与时钟电路。单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。本系统设计采用内部振荡方式。图3-6 时钟电路RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。按键手动复位有电平方式和脉冲方式两种,本系统设计采用上电复位。图3.7 复位电路3.3.2 显示电路显示电路:显示电路用四位一体的共阳极数码管显示。图3-8 显示电路3.3.3总体电路当接通电源以后,温度传感器正常工作,温度传感器将根据被测温度的不同来采集不同的数据,然后将所采集到的数据传送到比拟器到中,然后由比拟器将采集到的数据转变成上下电平,在送入单片机,单片机通过控制各个引脚电平的上下来来控制温度的显示输出。整机电路图如图3-9所示。图3-9 总体电路第四章 软件设计整个系统的功能是由硬件电路配合软件来实现的,当硬件根本定型的时候软件也根本定下拉了,从软件的功能不同,可以分为两的类:一是主程序,它是整个软件的核心,专门用来协调各个执行模块和操作者的联系。二是子程序,它是用来完成各种实质性的工作的,如测量、计算、显示、通讯等。每一个执行软件就是一个小的执行模块,这里将每一个模块一一列出来,并为每个执行模块进展功能定义和接口定义。4.1主程序主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值,温度的实时显示,并根据设置的上下限判断是否报警。系统开始运行时,温度传感器测量并计算温度值通过P1.0口传输进单片机里进展处理,经过处理后的数据再通过P0口传输到数码管进展显示。通过按键设置温度报警界限,当超过报警界限时单片机将相应的数据通过P1.1口传输进展声光报警。温度测量每1s进展一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4-1所示。图4-1 主程序流程图4.2读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进展CRC校验,校验有错时不进展温度数据的改写。其程序流程图如图4-2示图4-2 读温度流程图4.3温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成16。温度转换命令子程序流程图如上图,图4-3所示。图 4-3 温度转换流程图4.4 计算温度子程序计算温度子程序将RAM中读取值进展BCD码的转换运算,并进展温度值正负的判定. 图4-4计算温度流程图5.4 键盘扫描流程图图 4-5 按键扫描流程图第五章 仿真与调试5.1仿真与调试此设计的电路在Proteus软件中进展仿真,运行 Proteus 的 ISIS 程序后,进入该仿真软件的主界面。主界面由菜单栏、工具栏、预览窗口、元件选择按钮、元件列表窗口、原理图绘制窗口和仿真进程控制按钮组成如图7-2所示。通过元件选择按钮 P (从库中选择元件命令) 命令,在弹出的 Pick Devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,对元件参数设置与元器件间连线,完成单片机系统的硬件原理图绘制。5.2调试与运行1首先启动KEIL C51软件的集成开发环境,从桌面上双击uVision图标以启动软件。2建立工程文件。通常单片机应用系统软件包含多个源程序文件,KEIL C51使用工程这一概念,将这些参数设置和所需的所有文件都加在一个工程中。因此,需要建立一个工程文件,并为这个工程选择CPU,确定编译,汇编,连接的参数,指定调试的方式。3建立并添加源文件。使用菜单或者单击工具栏的新建文件按钮,出现文本便捷窗口,在该窗口中输入新编制的源程序并保存该文件。然后,我打开已经画好的仿真图,再将生成的HEX文件导入单片机里,点击开始按钮,电路正常工作,并且能够实现预先设想的所有功能,而且效果很好,从而验证了我的程序的正确性。图5.1 仿真结果图致 谢值此论文撰写即将完毕之际,回想2年半的学习和研究生活,本人感慨颇深,深感时间的短促。在此次的论文撰写过程中,许多熟识的或仅仅是认识的人向本人提供了无私热情的帮助和支持,这是由于这些人的鼓励和默默支持,才使本人能够较为顺利的完成了此次论文的编写。在本文即将完成之际,我在此向所有为本文的完成提供了有益的建议和全力的帮助的人们致以最为由衷的谢意以与表达本人的感激之情。在本论文的撰写过程中,我首先要对李艳华导师表示最诚挚的感谢。在论文选题与早期的准备工作期间,教师无私的分享了所掌握的相关研究资料,并对资料内容进展了详细而有效的分析,为本人的论文撰写提供较好的背景资料。在论文撰写期间,教师为课题的进展提供了尽可能多的物质和理论的支持,并在算法的研究过程中给予了启发性的指导。没有教师的潜心指导和悉心照料,本课题根本无法进展。在此再次对教师表示谢意。我还要感谢同学们对我的帮助,他们用丰富的理论和实践经验为本人提供了良好的学习气氛和参考价值,正是在与他们的实际接触中让我逐渐完善自己的不足,并不断取得进步。同时,还要感谢我身边的朋友们,在我生活和学习彷徨的时候给我有力的支持和帮助。我还要要感谢我的父母,是他们在精神、学业和生活上给我全力的关心和鼓励,论文的顺利完成也有他们的一份功劳。最后,衷心的向给予我无私帮助的所有教师和同学致以谢意,向本人就读的某某工商职业学院致谢,它的严格、严肃、认真的教育态度和良好的学习设施与气氛让本人受益匪浅。总之,经过长时间的论文撰写,我不仅提高了理论分析的能力,同时也提高了动手实践的能力,作为这段学习生活的总结,本论文的完成对于本人有着无法替代的重要意义。主要参考文献:1、王小立.单片机应用技术一体化教程 中国科学技术大学 20062、孙育才. MCS-51系列单片微型计算机与其应用. 第3版.某某:东南大学 20033、毕万新.单片机原理与接口技术 第2版 某某理工4、谭浩强.C语言程序设计第三版.:清华大学,20055、谭浩强.C语言设计解题与上机指导第二版.:清华大学,19996、单片机学习网.:/ mcustudy7、DS18B20使用说明书附录1:元件清单序号元件名称代号规格数量1单片机U1AT89C5212温度计U2DS18B2013四位一体共阳数码管U314晶振Y112MHz15三极管Q1、Q2、Q3、Q4901246电阻R1、R610K27电阻R2、R3、R4、R548瓷片电容C2、C330pF29电容C110uF110万用板7*9111圆孔母座3PIN112电源插座DC113电源线USB114小按键K1115自锁开关S1116IC座40脚1附录2:原理图附录3:实物图附录4:程序#include<reg52.h> #defineuiunsignedint#defineucunsignedchar /宏定义sbitDQ =P37; /定义DS18B20总线I/Obitbdatafuhao;ucqian,bai,shi,ge;uccodeled=0x5F,0x44,0x9D, 0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7;uccodeled_dian=0x7f,0x64, 0xbd,0xf5,0xe6,0xf3,0xfb,0x67,0xff,0xf7;/*延时子程序*/voidDelay(intnum)while(num-) ;/*初始化DS18B20*/voidInit_DS18B20()DQ = 1; /DQ复位Delay(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay(80); /准确延时,大于480usDQ = 1; /拉高总线Delay(40);/*读一个字节*/ucReadOneChar()uci=0;ucdat = 0;for (i=8;i>0;i-)DQ = 0; / 给脉冲信号dat>>=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;Delay(4);return(dat);/*写一个字节*/voidWriteOneChar(ucdat)uci=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;Delay(5);DQ = 1;dat>>=1;/*读取温度*/uiReadTemperature()uia=0,b=0,t=0;floattt=0;Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号WriteOneChar(0x44); /启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号WriteOneChar(0xBE); /读取温度存放器a=ReadOneChar(); /读低8位b=ReadOneChar(); /读高8位t=b;t<<=8;t=t|a;if(t&0xf800) t=t+1;fuhao=1; elsefuhao=0;tt=t*0.0625;t=tt*10+0.5; /放大10倍输出并四舍五入return(t);/*读取温度*/voidcheck_wendu()uif;f=ReadTemperature();/获取温度值并减去DS18B20的温漂误差qian=f/1000;bai=(f%1000)/100; /得到十位数字shi=(f%1000)%100)/10;/得到个位数ge=(f%1000)%100)%10;/得到小数位/*显示开机初始化等待画面*/voidDisp_init()P0 = 0x7f; /显示-P2 = 0x7f;Delay(100);P2 = 0xdf;Delay(100); P2 = 0xf7;Delay(100);P2 = 0xfd;Delay(100);P2 = 0xff; /关闭显示/*显示温度子程序*/voidDisp_Temperature() /显示温度if(qian=0)if(fuhao=1)P0=0x7f; /10111111elseP0=0xff;P2=0xfd;Delay(10);P2 = 0xff;elseif(qian!=0)P0 =ledqian;P2 = 0xfd;Delay(10);P2 = 0xff;if(bai=0)&&(qian=0)P0=0xff; /P2=0xf7;Delay(10);P2=0xff;elseif(bai=0)&&(qian!=0)P0=ledbai;P2=0xf7;Delay(10);P2=0xff;elseif(bai!=0)P0=ledbai; /P2=0xf7;Delay