基于51单片机的温度日期显示系统.doc_第1页
基于51单片机的温度日期显示系统.doc_第2页
基于51单片机的温度日期显示系统.doc_第3页
基于51单片机的温度日期显示系统.doc_第4页
基于51单片机的温度日期显示系统.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机的温度日期显示系统 【摘要】单片机技术作为计算机技术的一个分支,广泛地应用于工业控制、智能仪器仪表、机电一体化产品、家用电器等各个领域。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子。文中介绍一种可以把当前日期和现场温度同时在液晶显示器上显示的51单片机控制系统,并且已成功通过proteus仿真,提供了良好的人机界面。同时给出了温度采集电路、时钟电路、日期调整和显示电路及家电控制电路;分析了主程序和各子模块程序设计的思路和方法,给出了主程序和部分程序的流程图。 【关键词】S1302、DS18B20、LCD1602、89C51、硬件设计、软件设计O引言现场温度的实时采集在电力、钢铁、化工等工业控制领域有着广泛的应用。传统的方法是通过在现场安装热敏电阻之类的感应器件,将采集的电流或电压信号通过AD转换变成数字信号,送由控制器监控。这样的设计较复杂,且干扰性大。本文设计是一种基于51单片机的,使用Dallas公司的一线制数字温度计DS18B20作为温度传感器,实时时钟芯片DSl302提供当前日期和时间数据的采集,并将实时的日期和温度数据在LCDl602上显示,另外还添加了闹钟功能,定时启动继电器控制家电。系统设计简单、便于控制,而且具有很好的人机界面,可以对当前的时间进行调整。1硬件电路设计硬件电路的设计主要包括作为控制部分的单片机最小系统电路、温度采集电路、时钟电路、设置电路和显示电路及家电控制电路等。系统工作的原理框图如图l所示。按键设置电路89C52CPU控制模块温度采集电路DS1302时钟采集电路LCD显示电路家电控制电路 图1 硬件电路设计 11温度采集电路1、DSl8b20是一线制数字温度计,是美国Dallas半导体公司生产的可组网数字式温度传感器,其具有如下优点:( 1 )采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。( 2 )测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。 ( 3 )在使用中不需要任何外围元件。 ( 4 )持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多点测温。 ( 5 )供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 ( 6 )测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。 ( 7 )负压特性 电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。( 8 )掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它仍可保存分辨率及报警温度的设定值。DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也就被设计者们所青睐。2、DS18B20内部结构(如图2) 主要由4部分组成:64 位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,每个DS18B20的64位序列号均不相同。64位ROM的排的循环冗余校验码(CRC=X8X5X41)。 ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 图2 DS18B20内部结构图3、DS18B20管脚排列图(如图3) 1. GND为电源地;2. DQ为数字信号输入输出端;3. VDD为外接供电电源输入端(在寄生电源接线方式时接地)。 图3 DS18B20管脚排列图 4、温度采集电路 图4 温度采集电路温度采集电路的设计主要有2点:一是供电方式的选择,这里使用+5 V的外部电源供电;二是温度数据的传输,由于只有一根数据线,直接将数据线与单片机的P16口相连接,由单片机通过此数据线读取数据。12时钟电路 1、DS1302特点:DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。2、内部结构及引脚分布图(如图5) 图5 DS1302引脚分布图3、时钟采集电路 图6 时钟采集电路在与微控制器连接时,只需3根数据线就能实现与微控制器的同步串行通信,分别为RST(在读写数据时必须为高电平)、SCLK(串行通信时钟)和IO(数据线)。另外,还要为DSl302提供外接的32 768 Hz晶体振荡器,可接电容或电阻。 13设置电路设置电路的功能主要是把时间和日期设置到当前的时间,可以在系统运行中进行。用3个独立式按键完成,分别接到单片机P3.2、P3.3、P3.4。第1个按钮表示是功能键,按下时表示设置,并且每按一次,在显示器上分别在年、月、日等日期时间上跳转,表示对相应的项进行更改;第2个按钮按下表示对第1个按钮选中的项进行加1操作;第3个按钮按下表示进行减l操作。只有在第1个按钮按下时才允许进行加减操作。其电路如图7所示。 图7 设置电路14显示电路 1、LCD1602特点 1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔 每行之间也有也有间隔 起到了字符间距和行间距的作用,正因为如此 所以他不能显示图形。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 n +5V电压,对比度可调n 内含复位电路n 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能n 有80字节显示数据存储器DDRAMn 内建有160个5X7点阵的字型的字符发生器CGROMn 8个可由用户自定义的5X7的字符发生器CGRAM 2、引脚图(如图8) 字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚) 图8 LCD1602引脚图3、显示电路(如图9) 图9 显示电路 液晶显示器的接口电路有2种:一种是总线式接口电路方式;另一种是非总线式接口电路方式。总线式接口电路方式是把液晶显示器看做外部的数据存储器,访问液晶甚示器就像访问数据存储器的一个单元一样,采用这种方式能充分发挥单片机的总线读写功能,便于升级和扩展。而非总线方式是直接利用IO口进行读写,较灵活,操作简单。这里采用非总线式接口方式。接口时要注意显示器的使能信号E是高电平有效,而单片机的读、写信号是低电平有效,所以要取反。15闹铃家电控制电路 1、继电器特点 (1) 继电器实际上是用低电压、小电流去控制高电压、大电流的一种“自动开关”。在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等(如图10)(2)常开触点和常闭触点:继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。 图10 继电器内部结构2、闹铃家电控制(如图11) 图11 闹铃家电控制 当闹铃响起时,启动继电器,家电形成一个闭合回路,从而起到定时启动控制家电的方法。本系统只拿一个led灯做实验。16单片机最小系统(如图12)单片机最小系统包括时钟电路、电源和复位电路等,是单片机的基本要求。单片机控制整个系统的工作,一方面读取温度传感器的温度数据和日历时钟芯片中的日期等数据,检测是否需要设置,并处理相应的按键。另一方面,控制显示器的工作,将各种数据送到液晶显示器去显示。 图12 单片机最小系统2系统软件设计系统软件设计主要包括主程序设计和温度采集子模块程序设计、日期数据采集子模块程序设计、按键处理子模块程序设计和显示子模块程序设计等。主程序主要完成器件的初始化,并判断有无按键按下,并根据判断的结果调用相应的子模块程序;而温度采集子模块程序和日期数据采集子模块程序完成相应的数据采集、处理和保存,按键处理子模块程序完成日期的设置,而显示子模块程序只要把上述子模块储存的数据送去显示即可。21主程序设计主程序完成器件的初始化和子模块的调用。主程序的流程图(如图13)所示。 图13 主程序流程图22温度采集程序设计DSl8B20内部包含64位的激光ROM和9个字节的暂存RAM,在进行温度采集时,必须首先进行初始化,然后发ROM操作指令,再发存储器操作指令,最后才能传输数据。每次对器件进行读写操作时,必须严格按照DSl8B20的时序要求。其流程图见图14。 图14 温度采集流程图读温度数据包括上面所说的3个过程。因为温度数据在DSl8B20中是以2的补码形式存放的,且低4位为小数部分,4位到10位为整数部分,其余为符号位,因此在读出2个字节的温度数据后,首先求一次补码得到原码,再将数据分离为整数温度值和小数温度值,整数部分的值可通过数据交换指令得到,而小数温度值部分可通过查表得到。因为在液晶显示器上显示的是字符的ASCLL码,因丽还要转换为BCD数,在加30H转换为ASC码。23 日期数据采集程序设计(如图15)对时钟芯片的操作主要包括2个方面:一是将芯片中的日期等数据读出来,二是在进行日期等设置时将设置的数据写入芯片,这也是按键处理时的主要内容。无论是读数据还是写数据,都要满足DSl302对时序的要求。而对芯片各个数据部分的访问是通过地址进行的,且读和写的地址不一样。读出的数据同样要转为AsCII码,然后储存起来,等待送去显示。按键处理子程序主要是处理有设置键按下时对日期进行设置,主要的部分就是将设置数据写入芯片,与日期数据的采集有很多相似之处,不再赘述。 是否调用时间获取子程序DS1302_GetTime 否 是调用Read1302函数,读取各个时间参数,并存放于ReadValue变量中对ReadValue数据进行转换,转换成十进制数,并赋给Time指针中。调用年份转换成可供lcd显示的字段子程序DateToStr时间转换成可供lcd显示的字段子程序TimeToStr结束 图15 数据采集流程图24显示程序设计(如图16) 图16 显示流程图3实验过程中故障分析与故障排除的描述故障一:因为自己的知识有限,所以坦诚的说,源代码都是从网上载的,但是我载了2个程序,一个是运用1602以及18b20和按键处理显示时间以及温度,另一个程序是单运用ds1302和1602显示时间而没有按键处理,所以我做的工作就是这么把这两个程序结合起来,实现显示和调整时间的功能。这里的故障排除过程:目的是在有按键调整时间的程序中,要添加DS1302功能。首先,要在主程序的c文件中,添加#include DS1302.h语句,并在main主函数中,加入 Initial_DS1302();语句,进行DS1302的初始化,并且添加以下语句: Initial_DS1302(); /初始化DS1302 DateToStr(&CurrentTime); /从DS1302读取日期 TimeToStr(&CurrentTime); /从DS1302读取时间显示的程序也要有所改变:display_string(CurrentTime.DateString); /显示日期此时参数传递过程是先将DS1302内部的时间和日期通过DS1302_GetTime函数读取出来存放到Time中,日期通过DateToStr函数将Time中的数据传到DateString数组中,而时间通过imeToStr函数将Ti me中的数据传到TimeString数组中,最后通过display_string函数显示出来。故障二:通过上面两个函数的合并后,发现编译一直出错,如下图所示:后来发现,我只是在前面加入头文件DS1302.h,但是忘记把这个文件放在工程目录下,所以该工程一直找不到,结果一直出错。故障三:当修改完程序后,按下按键时,发现什么反应都没有,后来又在排查了程序,感觉程序都没错,但是就是没反应。偶然之间,发现要长按按键,就可以实现按键调整时间的功能。因为在按键扫描程序中,设置了软件防抖动功能,所以要长按按键,才能调整时间。故障四:温度显示错误。因为时间有限,前面整合两个程序就花了太多的时间,来不及再调整温度显示模块,自己推测,应该是中间函数参数传递出现错误,在主程序的main函数中,显示温度是display_string(00.0C)语句,所以温度一直显示00.0C,事后有时间会再进行参数调整。故障五:在实验开始时,感觉不懂如何运用proteus,就连对C52进行程序烧写时,都不知道如何才能生成Hex文档,万事开头难,只能踏踏实实一步一步学习,后来请教同学才知道在“Options for Target 1”的Output选项中,要将Create HEX Fil选项勾起来才可以。4实验结论以及体会实验结论:1、在该电子钟的设计中修改定时或调整时间时采用了闪烁,在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。其次,时,分,秒显示用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。最后,用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。2、在硬件上,选用DS1302,LCD1602相结合,首先DS1302内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作,这样读取数据简单。其次,选用LCD1602进行显示时,数据位串行输入,接口连线少,低功耗,显示清晰。并且本实验的电子钟即要实现时间的现实,还要实现日期的现实,所以若是运用数码管进行显示的话,就算运用动态显示,所占用的IO口多,并且所需的数码管个数多,硬件复杂。3、proteus是一个非常好用的仿真软件,其具有强大的电路原理图绘制功能,且可以实现模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、键盘、LCD系统仿真等多种功能;和keil联合使用时可以检测所编写的程序的正确与否。将keil和proteus联合起来使用是实现电子设计制作的初步阶段,可避免在实际的硬件操作中因为电路原理图或向单片机烧录的程序有误而造成的难以修改的为题。实验心得:1、通过本次实验,因为之前接触到的电子系统设计不多,所以一开始,感觉难以入手,就算上网载了很多程序,也看不懂。后来请求同学的帮助,了解了要对各种芯片编写程序时首先应找到该芯片的数据手册,根据数据手册上的说明、时序要求及流程图编写对应程序。2、其次,再次巩固了Keil C

温馨提示

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

评论

0/150

提交评论