基于单片机的简易数字温度计的设计_第1页
基于单片机的简易数字温度计的设计_第2页
基于单片机的简易数字温度计的设计_第3页
基于单片机的简易数字温度计的设计_第4页
基于单片机的简易数字温度计的设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、 基于单片机的简易数字温度计设计基于单片机的简易数字温度计的设计张逊摘要 本文介绍了一种基于单片机的简易数字温度计的设计。该设计主要由三个模块组成:温度采集模块,数据处理模块及显示模块。温度采集主要由温度传感器ds18b20来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片stc89c52rc来完成,其负责把ds18b20传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着芯片ds18b20相互通讯。该系统的数字温度计电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字温度计可以测量得温度范围55+125并通过

2、一个四位一体的7段数码管显示出来。 关键词 单片机;数字温度计;温度传感器;stc89c52rc;ds18b20 based on single chip simple digital thermometer design zhangxunabstract this paper introduces a kind of based on single chip simple digital thermometer design. this design mainly consists of three modules: temperature acquisition module, data

3、processing module and display module. temperature acquisition is mainly composed of temperature sensor ds18b20 to complete, it is responsible for the collection of the analog conversion to the corresponding digital quantity in the transfer to the data processing module. data processing by the chip s

4、tc89c52rc to complete, which is responsible for the ds18b20 transfer to the digital quantity in the course of data processing, produce the corresponding display code to display module display; in addition, it also control the chip ds18b20 mutual communication.the system of the digital thermometer ci

5、rcuit is simple, the element used less, low cost, and high measuring accuracy and reliability. the digital thermometer can measure temperature range - 55 + 125 and through a quaternity seven period of digital tube display.keywords single-chip microcontroller; digital thermometer; temperature sensor;

6、 at89c51; ds18b20 目 录1 引言12 设计总体方案22.1设计要求32.2 设计思路42.3 设计方案53 硬件电路设计63.1 温度采集模块33.2 单片机系统73.3 复位电路和时钟电路93.4 数码管显示系统设计113.5 总体电路设计134 程序设计144.1 程序设计总方案154.2 系统子程序设计155面包电路的搭建175.1 硬件的调试175.2 显示结果分析186实物的制作.19结 论20参考文献21附录 程序代码22致谢25491 引言在环境的舒适度测量中,温度、湿度和空气质量是最基本的三个被测量,其中温度的测量最为经常。而且随着生活质量的提高,特别是在科技

7、领域的特殊环境更是经常需要测量高精度的温度,所以数字温度计就成为一种必不可少的测量仪器。数字温度计简称dtm,它是采用数字化测量技术,把连续的温度值转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用1。 传统的液体式刻度温度计功能单一,进度低,容易引起视差和视觉疲劳,不方便携带等原因,因而不能满足数字化时代的需要。采用单片机的数字温度计,将连续的模拟量如温度转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与pc实时通信。数字温度计是诸多数字化仪表的核心与基础2。以数字温度计为核心

8、,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和温度传感器构成的数字温度计作全面深入的了解是很有必要的。最近的几十年来,随着半导体技术、集成电路(ic)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字温度计的快速发展,并不断出现新的类型4。数字温度计从问世以来,经历了不断改进的过程,从最早采用电阻,指针的形式发展到了现在的全固态化、集成化(ic化),数字温度计采用进口芯片组装精度高、高稳定性,误差0.5%, 内电源、微功耗、不锈钢外壳,防护坚固,美观精致。目前,数字温度计的内部核心部件是温度传感器,转换的精度很大程度上影响着

9、数字温度计的精度,因而,以后数字温度计的发展就着眼在高精度和低成本这两个方面3。本文是以简易数字温度计设计为研究内容,本系统主要包括三大模块:温度传感器模块、数据处理模块及显示模块。其中,温度采集采用ds18b20对输入的模拟信号进行转换,控制核心stc89c52rc再对转换的结果进行运算处理,最后驱动输出装置数码管显示数字温度信号11。 2 设计总体方案2.1设计要求 以mcs-51系列单片机为核心器件,组成一个简单的数字温度计。采用单总线输入,能够测量-55125值。电压显示用4位一体的led数码管显示,能够显示小数位。 尽量使用较少的元器件,达到所要的目的。 2.2 设计思路 根据设计要

10、求,选择stc89c52rc单片机为核心控制器件。温度采集采用ds18b20实现,与单片机的接口为p33引脚。电压显示采用4位一体的led数码管。led数码的段码输入,由并行端口p0产生:位码输入,用并行端口p2低四位产生。2.3 设计方案硬件电路设计由5个部分组成; 温度采集电路,stc89c52rc单片机系统,led数码管显示系统、时钟电路、复位电路以及被测量温度输入。硬件电路设计框图如图1所示。 时钟电路 复位电路温度采集电路被测量温度输入显示系统stc89c52 p3 p2 p0 图1 数字温度计系统硬件设计框图3 硬件电路设计3.1 温度采集模块温度是现实世界中的模拟量,能把温度这个

11、模拟量转化成数字量的器件称为温度采集模块(温度传感器)温度采集模块是单片机数据采集系统的关键接口电路,根据所用测温物质的不同和测温范围的不同,有煤油温度计、酒精温度计、水银温度计、气体温度计、电阻温度计、温差电偶温度计、辐射温度计和光测温度计、双金属温度计等等。数字温度计具有抗干扰能力强、转换精度高、价格便宜等优点。与有煤油温度计、酒精温度计、水银温度计、气体温度计的转换速度更快,而且精度更高,比如lm35、ds18b20等,它们具有驱动电路简单,精度高转换速度快等特点,它们可以与单片机系统连接,直接将数字量送到单片机进行分析和显示。用单总采线的接口方式 与微处理器连接时 仅需要一条口线即可实

12、现微处理器与 ds18b20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。3.1.2 ds18b20 主要特性3.1.3 ds18b20 单线数字温度传感器,即“一线器件”,其具有独特的优点:3.1.4 ( 1 )用单总采线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 ds18b20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。3.1.5 ( 2 )测量温度范

13、围宽,测量精度高 ds18b20 的测量范围为 -55 + 125 ; 在 -10+ 85c 范围内,精度为 0.5c 。3.1.6 ( 3 )在使用中不需要任何外围元件。3.1.7 ( 4 )持多点组网功能 多个 ds18b20 可以并联在惟一的单线上,实现多点测温。3.1.8 ( 5 )供电方式灵活 ds18b20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。3.1.9 ( 6 )测量参数可配置 ds18b20 的测量分辨率可通过程序设定 912 位。3.1.10 ( 7 ) 负压特性 电源极性接反

14、时,温度计不会因发热而烧毁,但不能正常工作。3.1.11 ( 8 )掉电保护功能 ds18b20 内部含有 eeprom ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。3.1.12 ds18b20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。3.1.13 ds18b20外部引脚特征 ds18b20芯片有3条引脚,采用to-92,soic,csp式封装,其引脚图如图3所示。图3 ds18b20引脚图下面说明各个引脚功能:ds18b20的管脚排列1. gnd为电源 地; 2. dq为数字信号输入输出端

15、;3. vdd为外接供电电源输入端(在寄生电源接线方式时接地 表1配置寄存器与分辨率关系表其中配置寄存器的格式如下:低五位一直都是1,tm是测试模式位,用于设置ds18b20在工作模式还是在测试模式。在ds18b20出厂时该位被设置为0,用户不要去改动。r1和r0用来设置分辨率,如下图所示:(ds18b20出厂时被设置为12位) 3.1.4 ds18b20的工作方式1寄生电源工作方式(电源从io口上获得)注意:当温度高于 时,不能使用寄生电源,因为此时器件中较大的漏电流会使总线不能可靠检测高低电平,从而导致数据传输误码率的增大。 2外接电源工作方式 ds18b20的内部结构及工作时序ds18b

16、20 内部结构主要由四部分组成: 64 位光刻 rom 、温度传感器、非挥发的温度报警触发器 th 和 tl 、配置寄存器。光刻 rom 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 ds18b20 的地址序列码。 64 位光刻 rom 的排列是:开始 8 位(地址: 28h )是产品类型标号,接着的 48 位是该 ds18b20 自身的序列号,并且每个 ds18b20 的序列号都不相同,因此它可以看作是该 ds18b20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( crc=x8+x5+x4+1 )。由于每一个 ds18b20 的 rom 数据都各不相同,因此微控

17、制器就可以通过单总线对多个 ds18b20 进行寻址,从而实现一根总线上挂接多个 ds18b20 的目的其内部结构如图4所示。图4 ds18b20的内部结构ds18b20的一线工作协议流程是:初始化rom操作指令存储器操作指令数据传输。其工作时序包括:初始化时序写时序读时序初始化时序主机首先发出一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的ds18b20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为高

18、电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。写操作接下来就是主机发出各种操作命令,但各种操作命令都是向ds18b20写0和写1组成的命令字节,接收数据时也是从ds18b20读取0或1的过程。因此首先要搞清主机是如何进行写0、写1、读0和读1的。 写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的

19、ds18b20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0读操作对于读数据操作时序也分为读0时序和读1时序两个过程。读时隙是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让ds18b20把数据传输到单总线上。ds18b20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期

20、内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成ds18b20 和单片机的单线通信ds18b20 单线通信功能是分时完成的,他有严格的时隙概念,如果出现序列混乱, 1-wire 器件将不响应主机,因此读写时序很重要。系统对 ds18b20 的各种操作必须按协议进行。根据 ds18b20 的协议规定,微控制器控制 ds18b20 完成温度的转换必须经过以下 4 个步骤 :()每次读写前对 ds18b20 进行复位初始化。复位要求主 cpu 将数据线下拉 500us ,然后释放, ds18b20 收到信号后等待 16us60us 左右,然后发出 60us240us 的存在低脉

21、冲,主 cpu 收到此信号后表示复位成功。()发送一条 rom 指令()发送存储器指令3.2 单片机系统3.2.1 stc89c52rc性能stc89c52rc是我国宏晶公司生产的低电压,高性能cmos8位微控制器,具有 8k 在系统可编程flash 存储器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得stc89c52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节flash,512字节ram, 32 位i/o 口线,看门狗定时器,内置4kb eeprom,max810复位电路,3个16 位 定时器/计数器,一个6向量2级中断结构,全双

22、工串行口。另外 stc89x52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu 停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35mhz,6t/12t可选。 s1stc89c52rc单片机特性:参数:1. 增强型8051 单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.1 2. 工作电压:5.5v3.3v(5v 单片机)/3.8v2.0v(3v 单片机) 3. 工作频率范围:040mhz,相当于普通

23、8051 的080mhz,实际工作 频率可达48mhz 4. 用户应用程序空间为8k 字节 5. 片上集成512 字节ram 6. 通用i/o 口(32 个),复位后为:p0/p1/p2/p3 是准双向口/弱上拉, p0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 i/o 口用时,需加上拉电阻。 7. isp(在系统可编程)/iap(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(rxd/p3.0,txd/p3.1)直接下载用户程 序,数秒即可完成一片 8. 具有eeprom 功能 9. 具有看门狗功能 10. 共3 个16 位定时器/计数器。即定时器t0、t1、t

24、2 11. 外部中断4 路,下降沿中断或低电平触发电路,power down 模式可 由外部中断低电平触发中断方式唤醒 12. 通用异步串行口(uart),还可用定时器软件实现多个uart 13. 工作温度范围:-40+85(工业级)/075(商业级) stc8952rc功能性能:与mcs-51成品指令系统完全兼容;8kb可编程闪速存储器;寿命:10万次写/擦循环;数据保留时间:10年;全静态工作:0-40mhz;三级程序存储器锁定;512b内部ram;32个可编程i/o口线;3个16位定时/计数器;5个中断源;可编程串行uart通道;片内震荡器和掉电模式6。 3.2.2 stc8952rc各

25、引脚功能stc8952rc提供以下标准功能:8kb的flash闪速存储器,512b内部ram,32个i/o口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,stc8952rc1可降至0hz静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止cpu的工作,但允许ram,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存ram中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。stc8952rc采用pdip和lqfp封装形式,引脚配置如图5所示7。图5 stc89c52rc的引脚图stc89c52rc芯片的各引脚功能为

26、:p0口:这组引脚共有8条,p0.0为最低位。这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是stc89c52rc不带外存储器,p0口可以为通用i/o口使用,p0.0-p0.7用于传送cpu的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89c52带片外存储器,p0.0-p0.7在cpu访问片外存储器时先传送片外存储器的低8位地址,然后传送cpu对片外存储器的读/写数据。p0口为开漏输出,在作为通用i/o使用时,需要在外部用电阻上拉。p1口:这8个引脚和p0口的8个引脚类似,p1.7为最高位,p1.0为最

27、低位,当p1口作为通用i/o口使用时,p1.0-p1.7的功能和p0口的第一功能相同,也用于传送用户的输入和输出数据。p2口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用i/o口使用,它的第一功能和p0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但并不是像p0口那样传送存储器的读/写数据。p3口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同, vcc为+5v电源线,vss接地。ale:地址锁存允许线,配合p0口的第二功能使用,在访问外部存储器时,stc89c52rc的cpu在p0.0-p0.7引脚

28、线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,stc89c52rc自动在ale线上输出频率为1/6震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。/ea:片外存储器访问选择线,可以控制stc89c52rc使用片内rom或使用片外rom,若/ea=1,则允许使用片内rom, 若/ea=0,则只使用片外rom。/psen:片外rom的选通线,在访问片外rom时stc89c52rc自动在/psen线上产生一个负脉冲,作为片外rom芯片的读选通信号。rst:复位线,可以使stc89c52rc处于复位(即初始化)工作状态。通常stc89c52rc复位有自动上电复位和人工

29、按键复位两种。xtal1和xtal2:片内震荡电路输入线,这两个端子用来外接石英晶体和谐振电容,即用来连接stc89c52rc片内osc(震荡器)的定时反馈回路。3.3 复位电路和时钟电路3.3.1 复位电路设计单片机在启动运行时都需要复位,使cpu和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。mcs-51单片机有一个复位引脚rst,采用施密特触发输入。当震荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保时器件复位1。复位完成后,如果rst端继续保持高电平,mcs-51就一直处于复位状态,只要rst恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电

30、自动复位和手动复位两种,图6是51系列单片机统常用的上电复位和手动复位组合电路,只要vcc上升时间不超过1ms,它们都能很好的工作1。图6 复位电路3.3.2 时钟电路设计单片机中cpu每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。cpu执行一条指令的各个微操作所对应时间顺序称为单片机的时序。mcs-51单片机芯片内部有一个高增益反相放大器,用于构成震荡器,xtal1为该放大器的输入端,xtal2为该放大器输出端,但形成时钟电路还需附加其他电路1。 本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要

31、一个晶振和 2个谐振电容即可,如图7所示。图7 时钟电路电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器c1和c2对震荡频率有微调作用,通常的取值范围是3010pf,在这个系统中选择了33pf;石英晶振选择范围最高可选24mhz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12mhz,因而时钟信号的震荡频率为12mhz。3.4 数码管显示系统设计3.4.2 led数码管的选择在应用系统中,设计要求不同,使用的led数码管的位数也不同,因此就生产了位数,尺寸,型号不同的led显示器供选择,在本设计中,选择4位一体的0.56寸红色高亮led数码管

32、,简称“4-led”。本系统中前一位显示温度的负位,在正温度不显示,后三位显示十位,个位还有小数位。4-led显示器引脚如图9所示,是一个共阳极接法的4位led数码显示管,其中11,7,4,2,5,3为4位led各段的公共输出端,12、9、8、6分别是每一位的位数选端,3是小数点引出端,4位一体led数码显示管的内部结构是由4个单独的led组成,每个led的段输出引脚在内部都并联后,引出到器件的外部。图9 4位led引脚对于这种结构的led数码管,它的体积和结构都符合设计要求,由于4位led阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个i/o接

33、口控制)显示。3.4.3 led译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于led数码管,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序3。本设计系统中为了简化硬件线路设计,led译码采用软件编程来实现。由于本设计采用的是共阳极led,其对应的字符和字段码如下表3.3所示。表3.3 共阳极字段码表显示字符共阳极字段码0c0h1f9h2a4h3b4h4b0h599h692h782h880h990h3.4.4 led与单片机接口设计由于单

34、片机的并行口不能直接驱动led数码管,所以,在一般情况下,必须增加驱动电路,使之产生足够大的电流,数码管才能正常工作7。如果驱动电路能力差,即驱动电流不够时,数码管亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,led数码管的驱动电路设计是一个非常重要的部分。因为是共阳数码管这里采用四个pnp的s8550作为驱动电路来驱动每一位在每一位的基极加上1k的限流电阻段选显示引脚连接到p0口,由于p0口的上拉电流能力很弱与上拉电阻并联,这样就可以加大p0口作为输出口的驱动能力,使得数码管能按照正常的亮度显示出数字,还加上了200的限流电阻,驱动电路如图10所示。图10 数码管与单片机接口间的设

35、计3.5 总体电路设计经过以上的设计过程,可设计出基于单片机的数字温度计硬件电路原理图如图11所示。图11数字温度计的原理图此电路的工作原理是:环境或被测物体直接间接接触后被温度传感器检测后,ds18b20产生相应的数字量经过其输出通过p3.3口传送给stc89c52rc,stc89c52rc把接收到的数据经过数据处理,产生高低电平传送给四位led数码管来显示段码,同时它还通过其四位i/o口p2.0、p2.1、p2.2、p2.3产生位选信号控制数码管的亮灭。此外,stc89c52rc还控制着ds18b20。其中,单片机stc89c52rc通初始化和读写操作,读出ds18b20温度传感器转换好的

36、数据,处理转换的数据送给数码管显示出来3。数字温度计的硬件电路已经设计完成,就可以选取相应的芯片和元器件altium.designer软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有硬件电路的制作调试和相应的软件配合,才能把真正的温度显示出来。 4 程序设计4.1 程序设计总方案 根据模块的划分原则,将该程序划分初始化模块,ds18b20子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图12所示。开始初始化调用显示子程序调用ds18b20子程序结束图12 数字温度计主程序框图4.2 系统子程序设计4.2.1 初

37、始化程序所谓初始化,是对将要用到的mcs_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等9。4.2.2 ds18b20子程序ds18b20子程序用来环境的和被测物体温度的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图13所示。开始ds18b20读写操作温度数据处理结果输出处理结果数值转换显示结束图13温度采集流程图4.2.3 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得led显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70hz左

38、右时,能够产生比较好的显示效果,一般可以采用间隔11ms对led进行动态扫描一次,每一位led的显示时间为1ms10。在本设计中,为了简化硬件设计,主要采用软件延时时的方式,通过软件延时程序来实现11ms的延时。5 面包板的电路搭建5.1 所需的器材和电子元件1. 面包板一块2面包板连接线若干根3. stc89c52rc单片机一块4. ds18b20温度传感器一个5. 12mhz晶振一个6. 22pf电容两个710k金属膜电阻两个,1k电阻四个,200八个8. 10uf电解电容一个9. pnp三极管s8550四个10. isp下载器(带杜邦线)11. 四位一体共阳数码管一个5.2 搭建好的面包

39、板硬件电路5.2.1 电路搭建完毕1. 为了方便硬件电路的搭建这里全部采用直插元件,简化电路采用自上电复位图14 搭建好的面包板硬件电路2上电初始化的四个八,图15 初始化时,数码管的显示结果3.初始化完毕后正常显示环境的温度图16 正常显示在环境的温度,数码管的显示结果4.手接触温度传感器,数码管的变化,可以看见温度在上升6硬件电路的制作调试和软件调试6.1硬件电路的制作通过面包搭建的电路能够正常显示温度,并且可以随着被测物体温差的改变而发生相应的改变,足以证明电路设计的可行性接下来我们就可以进行实物的制作了 1.工欲善其事必先利器(作所需的工具器材)(1)焊接工具,电烙铁(含烙铁架)(2)

40、剪线钳(3)吸锡器(4)镊子(5)焊锡丝2.所需元器件(1)万用板一块(本来想制板的没有激光打印机只能用万用版了)(2)stc89c52rc单片机一个(3)ds18b20温度传感器一个(4)一个10k,金属膜电阻,一个4.7k,四个1k,八个200(这里为了减小体积4.7k的1k的200的都是用的贴片电阻)(5)12mhz晶振一个(6)22pf瓷片电容两个,0.1uf的一个,电解电容10uf的一个,470uf的一个(7)自锁开关一个(8)微动开关一个(9)贴片三极管四个(10)四位共阳数码管一个(11)isp下载器一个3.电路的焊接,硬件调试和软件调试(焊接过程没拍照直接看结果了,硬件调试过程

41、很费时这里不再作过多的鳌述,这里只介绍软件的烧录过程)(1)软件的烧录烧录所用的软件为宏晶官网下载的专用下载软件(2)烧录软件的界面和烧录过程(3)烧录完成的界面(4)焊接完毕的成品图和背面图(5)初始化时显示的“8888”(3)初始化结束后的环境温度(4)手接触温度传感器温度在上升由上面的结果可以得知从原理图的设计到程序的设计再到硬件电路的搭建到最后的制作完成的实物,达到了预期想要实现的结果结 论经过一段时间的制作,毕业论文和基于单片机的数字温度计的制作基本完成。但设计中的不足之处仍然存在。这次制作应该是我第一次真正意义上的制作吧,我在面包板上搭建好电路才进行制作的。在此过程中,使我对电路设

42、计,单片机的使用等都有了新的认识,特别是数码管的使用更是深有感触,期间由于自己的粗心导致数码管引脚的连接错误困扰了好几天,网上查资料无果,最后是网上朋友的引导下让我发现了错误,那时的喜悦无以言表。通过这次制作掌握了从产品的需要、方案的设计、功能模块的划分、原理图的设计和实物的制作,积累一定经验。基于单片机的数字温度计使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量温度准确,精度高。系统功能、指标达到了课题的预期要求、未来的电子产品对扩展性要求更高,硬件设计上充分考虑了可扩展性,经过简单的改造引出剩余的i/o可以增加其他功能。本文设计主要实现了数字温度计的测温功能,详细说明了从

43、原理图的设计、电路图的制作调试再到软件的调试。通过本次制作,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了stc89c52rc单片机芯片,与以往的8051单片机相比增加了许多新的功能,由其在线下载方面更为方便,运算能力更强,应用领域也更为广泛。设计中还用到了一线总线技术的温度传感器ds18b20,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次制作,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,硬件电路知识薄弱(没有学习模电数电),对电路的布局方面不够熟练。 对于我来说这次制作并算不了什么,此时的我仅仅只能算是一个复制者,着所有的

44、一切我并不是原创,几乎都是来自书籍和互联网,也许这就是所谓的继承吧,我的目标并不仅仅如此只想做个复制者,我的目标是创造者,一个真正意义创造者,一个真正的创造者他会继承前辈们智慧的结晶,在此基础上不断的创新造福于现在和未来,我深知这一过程的艰难,我还有很漫长的路要走,我不知道我能否成功(一个真正的创造者),可是我从来没想放弃,因为我对电子充满由衷的热爱,以前是,现在是,以后也是,我是以电子制作为快乐的人,在以后道路中,我将更加努力学习电子科学方面的理论知识,做到理论与实践的结合,争取在电子科学领域有所作为。参考文献(1) 绝大部分来自互联网(2) 单片机原理及应用(3) 模拟电子技术基础(康光华

45、)(4) 数电电子技术基础(阎石) 附 录程序代码/ds18b20的读写程序,数据脚p3.3 /温度传感器ds18b20 c程序,采用器件默认的12位转化 /最大转化时间750微秒,显示温度-55到+125度,显示精度 /为0.1度,显示采用4位led共阳显示测温值 /p0口为段码输入,p20p23为位选 /*/#include reg51.h#include intrins.h /_nop_();延时函数用#define disdata p0 /段码输出口#define discan p2 /扫描口#define uchar unsigned char#define uint unsigne

46、d intsbit dq=p33; /温度输入口sbit din=p07; /led小数点控制uint h; uchar flag;/*温度小数部分用查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/uchar code dis_712=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/共阳led段码表 0 1 2 3 4 5 6 7 8 9 不亮 - uchar

47、code scan_con4=0xfe,0xfd,0xfb,0xf7; /列扫描控制字uchar data temp_data2=0x00,0x00; /读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00; /显示单元数据,共4个数据和一个运算暂用/*11微秒延时函数*/void delay(uint t)for(;t0;t-);/*显示扫描函数*/scan()char k; for(k=0;k0; i-) /dq=1;_nop_();_nop_(); dq = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usdq = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位dq = 1;delay(1); /*18b20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uchar i;uchar value = 0;for (i=8;i0;i-)dq=1;_nop_();_nop_();value=1;dq = 0; /_nop_();_nop_();_nop_();_nop_(); /4usdq = 1;_nop_();_nop_();_nop_();

温馨提示

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

评论

0/150

提交评论