1、吉林师范大学毕业论文(设计)论文分类号:密 级:公开基于单片机的多功能数字钟电路的设计学院、专业:信息技术学院电子信息工程姓名学号:郑子鹏(201145010207)年 级 班:2011级2班指导教师:华 杰(副教授)2015年1月2日吉 林 师 范 大 学本科毕业论文(设计)任务书论文题目:基于单片机的多功能数字钟电路的设计姓 名:郑子鹏(201145010207)年级、专业:2011级2班、电子信息工程指导教师:华 杰(副教授)起止时间:2014年9月10日至2015年1月2日选题研究的主要内容:论文研究的是多功能数字钟的设计,使得数字钟具有走时、预置时间和日期、整点报时、自动区分瑞年是大
2、小月、闹铃、生日提醒以及测温等功能。设计中将AT89C51单片机作为主控核心,利用DS1302进行时间和日历的记时,DS18B20进行测温,然后将信息通过电信号交由AT89C51单片机通过LCD1602进行显示,报时功能通过蜂鸣器实现。结果形式:论文结果形式:填论文或论文和硬件作品或论文和软件等选题研究的意义及可行性论证:意义: 随着生活节奏的加快,人们的时间观念越来越强,因此数字钟成了人们生活中不可或缺的一部分。而传统的时钟功能单一,只有走时的功能。因此为了满足人们的需要,在数字钟原有的基础上研究多功能数字钟是很有必要的。单片机具有微型化、可靠性高 、耗电低、环境要求不高、灵活性好等优点,以
3、其极高的性价比,广泛应用于仪器仪表中,而且功能也比电子或数字电路更加强大。基于单片机的多功能时钟设计,可以使时钟更加完善。而且单片机的集成性,也使时钟设计方便,外表美观。因此基于单片机的多功能数字钟的研究具有重要意义。可行性: 随着人们时间观念的加强,数字钟在人们的生活中也是越来越重要。而原先只能记时没有闹铃等功能的数字钟已经无法满足人们的需要了,因此设计多功能数字钟对人们带来的方便是毋庸置疑的。 本多功能数字钟将采用单片机作为主控核心,通过其他芯片的辅助,结构简单,功能实用,价格低廉,在现实生活中能给人们带来极大方便。进度安排:第一阶段(2014年9月30日-2014年10月8日):确定论文
4、题目,查阅资料,确定毕业论文提纲;第二阶段(2014年10月9日-2014年10月15日):10月15日进行开题报告,答辩合格后进行毕业论文的相关设计工作,开始撰写毕业论文的初稿;第三阶段(2014年10月16日-2014年11月20日):论文初稿撰写,指导教师指导与检查;第四阶段(2014年11月20日-2014年11月28日):中期检查,学院抽取20%的学生论文进行检查;第五阶段(2014年11月29日-2014年12月31日):完善设计、修改论文第二稿和第三稿,准备答辩;第六阶段2015年1月2日:论文答辩。研究所需条件: 计算机,Keil软件,Proteus软件,网络。指导教师对选题的
5、评语: 签字: 年 月 日院学术委员会意见:签字:年 月 日吉 林 师 范 大 学本科毕业论文(设计)指导记录姓 名郑子鹏院、年级信息技术学院,2011级专业电子信息工程指导教师华 杰职 称副教授论文题目基于单片机的多功能数字钟电路的设计指导时间郑子鹏院、年级信息技术学院,2011级专业电子信息工程2014.10.92014.10.122014.10.152014.10.192014.10.242014.10.312014.11.202014.11.302014.12.102014.12.31集成电路实验室集成电路实验室集成电路实验室集成电路实验室集成电路实验室集成电路实验室集成电路实验室集成
6、电路实验室集成电路实验室集成电路实验室如何在图书馆网站上查找论文相关资料根据查找的资料,初步确定论文题目老师对选题的可行性进行分析,确定论文题目根据论文题目进行资料查阅在老师的指导下,根据论文题目刷选资料根据整理的资料,老师对相关问题进行解答老师对论文初稿进行审核,并指出不足之处老师对修改后的论文进行审核,并确定论文初稿老师对论文初稿进行完善指导,对不完善的地方进行改正老师对论文进行最终审核,准备答辩吉 林 师 范 大 学本科毕业论文(设计)答辩记录姓 名郑子鹏院、年级信息技术学院,2011级专业电子信息工程指导教师华 杰职 称副教授时间2015.1.2地 点10325记录人成绩论文题目基于单
7、片机的多功能数字钟电路的设计主要内容 论文研究的是多功能数字钟的设计,使得数字钟具有走时、预置时间和日期、整点报时、自动区分瑞年是大小月、闹铃、生日提醒以及测温等功能。设计中将AT89C51单片机作为主控核心,利用DS1302进行时间和日历的记时,DS18B20进行测温,然后将信息通过电信号交由AT89C51单片机通过LCD1602进行显示,报时功能通过蜂鸣器实现。答辩过程记录1、 问:温度传感器DS18B20的测温范围及精度是多少? 答:测温范围-55C-+125C,精度为1C。2、 问:液晶显示器LCD1602中的1602是什么意思? 答:每行显示16位,一共两行。3、 问:对于多功能数字
8、钟的多功能你是如何理解的? 答:多功能数字钟的多功能具体是针对生活中不同情况的功能开发,本论文只研究了多功能数字钟的测温功能。而本系统具有很好的扩展性,根据不同的情况,我们可以增加或者改变多功能数字钟的功能。例如:测甲烷浓度,噪声等。这样的多功能数字钟才能更好的满足人们生活的需求,才有研究价值。 指导教师评语:教师签字: 年 月 日答辩委员会评语: 答辩委员会主任签字: 年 月 日学院主管领导意见:签字: 年 月 日不要删除行尾的分节符,否则将会出现页码格式错误!此行不必删除,打印不显示。吉林师范大学信息技术学院本科毕业论文基于单片机的多功能数字钟电路的设计郑子鹏(吉林师范大学信息技术学院20
9、11级 2班 吉林四平 136000)指导教师: 华 杰(副教授)中文摘要在这个多元化的社会上,人们的时间概念越来越强,对于时间的精准性以及数字钟功能的要求也越来越高。老式钟表简单的走时功能已经因为人们多样化的需求而被淘汰,因此,对多功能数字钟的研究势在必行。本文所研究的多功能数字钟是基于51单片机,外加LCD1602显示模块,按键模块,DS1302时钟模块,DS18B20温度采集模块以及蜂鸣器发声模块等五大硬件部分。利用C语言编写软件部分,分为时钟模块,温度模块,显示模块,按键模块以及发声模块等不同子程序来对硬件模块进行处理,实现走时、预置时间和日期、整点报时、自动区分瑞年是大小月、闹铃、生
10、日提醒以及测温等功能,在现实生活中给人们带来很大的方便。关键词多功能数字钟;DS1302;LCD1602;DS18B20;蜂鸣器。IDesign circuit of multifunctional digital clock based MCUZheng Zi peng (Class 2 Grade2011 in College of Information&Technology,Jilin Normal University, Jilin Siping 136000)Directive Teacher: Hua Jie (vice-Professor)Abstract In this pl
11、uralistic society, peoples concept of time is growing, as well as the requirements for precision digital time clock functions are also increasing. Vintage watches simply because people go when the function has diversified needs to be eliminated, and therefore, the study of multi-function digital clo
12、ck is imperative. This paper is based on 51 microcontroller, plus LCD1602 display module, key module, DS1302 clock module, DS18B20 temperature acquisition module and the buzzer five modules and other components of the hardware part. Use C language software part, divided clock module, temperature mod
13、ule, display module, the key modules and sound modules, different routines for processing hardware module, travel time, preset time and date, the whole point of time, automatically distinguish Swiss on the size of months, alarm, birthday reminders, and temperature and other functions, in real life,
14、to bring great convenience.Keywords: multifunctional digital clock; DS1302; LCD1602; DS18B20; buzzer.II-不要删除行尾的分节符,此行不会被打印III目 录中文摘要IAbstractII第1章 绪论11.1多功能数字钟的研究背景11.2多功能数字钟的发展状况11.3多功能数字钟研究的目的及意义2 1.4论文的主要内容2第2章多功能数字钟的总体设计32.1多功能数字钟的组成模块32.2多功能数字钟的功能介绍3 2.2.1时间和日历的显示3 2.2.2时间和日期的手动设置4 2.2.3温度的采集及显
15、示4 2.2.4闹钟的设置4第3章多功能数字钟电路的硬件设计53.1系统硬件总图53.2AT89C51的介绍53.3时钟模块的介绍63.4温度模块的介绍83.5LCD显示模块的介绍83.6晶振电路和复位电路的介绍9第4章多功能数字钟的软件设计114.1设计框架图114.2源程序代码114.3keil软件程序的调试224.4proteus仿真224.5应用前景展望及改进24参考文献25致谢26千万不要删除行尾的分节符,此行不会被打印。在目录上点右键“更新域”,然后“更新整个目录”。打印前,不要忘记把上面“Abstract”这一行后加一空行12第1章 绪论1.1 多功能数字钟的研究背景在现实生活中
16、,时间对于人们来说已经越来越重要了。人们有时候会因为忙碌工作而把一些重要的日子忘了,如生日、纪念日等,在有约的时候不能迟到。对于只能显示时间及日期的传统时钟,功能简单而无法满足人们的需求。因此,人们在生活中拥有一个集记时、走时、报时、定时等功能于一体的多功能数字钟是很重要的。他可以为我们提醒时间,少错过重要的事。多功能数字钟的开发具有重大意义,它能给人们的生活带来很大的便利。现代的数字钟需要在硬件及软件方面工体提升,以加强数字钟的功能,方便人们的生活。其硬件电路由时钟模块、温度检测模块、按键模块、显示模块以及报警模块等部分组成。利用C语言编写程序使硬件电路尽量简单稳定,减小来自环境的干扰,尽可
17、能减小元器件精度不够而带来的误差,然而数字钟依然可以得到改进和提高如选用精度更高的元器件。与以前的时钟相比,多功能数字钟走时更准确,使用寿命更长,功能更强大,因此受到人们的喜爱而得到广泛的使用。数字钟的基本功能是记时,走时,广泛应用电影院,火车站,汽车站等公共场所。而数字钟的单一功能不能再满足人们多元化的生活需要了。因此急切需要研究出多功能数字钟,以能满足生活中不同场所下各种不同的需要。例如:在时钟的基础上添加温湿度检测,噪声的检测,而在工业生产中,可以通过温度的变化来控制锅炉是否加热,在量产的产业中,我们可以在时钟的基础上加上计数功能。1.2 多功能数字钟的发展状况 改革开放以后,数字钟和数
18、字电路在我国同时发展起来。经过30多年的发展,集成电路产业形成了百家左右的规模。其中北京大唐、华大、深圳华威等几家设计公司的销售额度超过亿元。许多外国的著名公司也都纷纷来中国建立集成电路的设计公司。 目前,我们要走的是尽量完善数字钟的各种功能,并且根据不同的使用场合来开发出各种功能,使其摆脱普通时钟功能简单的局限,得到大众的接受,从而广泛的应用于现实生活以及工业生产中,给人们带来方便。 多功能数字钟相对于一般时钟来说,功能更强,外观新颖等优点而占据了大部分市场。而其走时精准,为生活中忙碌的人们提供了精准的时间,使人们对时间有了高度的把握,从而不会因时间问题出事。1.3 多功能数字钟研究的目的及
19、意义传统的的时钟功能简单,无法满足人们的需求,因此,人们开始研究多功能数字钟的目的是为了更好地满足人们生活需求。而在现实生活中,时间对于人们来说很重要,在火车站、汽车站以及工业生产车间等地方。而在生产车间里,生产的东西各不相同,因此有些特别的技术需求。例如:有的产品生产是量化的,因此人们需要一个能计数的工具,这里我们可以在时钟的基础上加上计数功能。因此,根据应用的环境来研究不同功能的数字钟,这样才能使其更好的满足人们生活及生产的需要。因此,多功能数字钟的各种功能还待研究,使其在生活及生产的各方面得到人们的认可,真正成为人们的小助手。1.4 论文的主要内容论文研究的是多功能数字钟的设计,使得数字
20、钟具有走时、预置时间和日期、整点报时、自动区分瑞年是大小月、闹铃、生日提醒以及测温等功能。论文设计中,利用温度传感器DS18B20对温度进行检测,通过时钟芯片中的数据对时间进行更新。AT89C51单片机利用程序来读取温度传感器和时钟芯片内的寄存器数据,通过程序将数据转换成点阵字模,然后传输给LCD1602液晶显示器,利用其内部的点阵将其显示在屏幕上。闹铃功能则由蜂鸣器实现,而时间及日期的更改可通过按键模块实现。第2章 多功能数字钟的总体设计2.1 多功能数字钟的组成模块多功能数字钟的硬件部分由五个模块组成,温度采集模块采集外部温度,时钟模块更新时间,显示模块则是将温度传感器采集到的温度以及时钟
21、芯片的时间日期显示出来,方便观察,按键模块设置时间日期以及闹铃,发声模块则是由蜂鸣器组成,利用其发声的特点达到闹铃的目的。这五个硬件模块通过核心控制器单片机的控制有效的结合起来,通过单片机内部程序的调节,将五个硬件模块有效的结合在一起,从而达到时钟的显示、温度的采集与显示以及闹铃等目的。2.2 多功能数字钟的功能介绍 多功能数字钟是通过硬件电路搭建和软件配合显示时间的装置。硬件部分利用DS1302时钟芯片作为时钟模块,通过软件设定和读取芯片里的时间,是时间得到更新,然后通过软件将读取的时间通过显示模块LCD1602液晶显示器上显示出来。通过DS18B20的温度感应部分将温度数据采集到,然后经过
22、程序读取出来,再经过程序将其转换为点阵字模在液晶显示器上显示。通过按键模块设置时间以及闹铃。当时间达到设定值时,利用蜂鸣器发声,告诉人们设置的时间已到,该做自己安排的事情了。2.2.1 时间和日历的显示在显示模块的设计过程中,我考虑了两种方案:第一、通过八段数码管显示,在这种显示方案中,采用动态显示的方法点亮数码管,利用74HC138译码器控制数码管的八个笔端,然而考虑到年、月、日、星期、时、分、秒以及温度全部显示需要的数码管太多,如果采用此方案,硬件电路将会很复杂,因此放弃这种方案;第二、通过LCD1602液晶显示器显示,利用每个点阵的亮与不亮来显示需要显示的内容。LCD1602是指显示器上
23、可以显示两行,每行为十六个字符。这个方案相对于第一种方案来说使用更加方便,多种控制指令可以控制显示器的各种显示功能:光标的左右移动以及清屏等。于是我采用了第二种方案,通过LCD1602进行显示,在程序复杂一些的情况下简化了硬件电路的设计。 2.2.2 时间和日期的手动设置 按键的变化通过电路转换成高低电平的变化,单片机通过引脚电平的高低来判断按键是否按下。P2.0脚到P2.3脚为按键引脚,四个按键的功能为设置键,加数键,减数键以及以为键。在程序中判断哪个按键按下,然后实现对应按键的功能,从而达到设置时间和日期的目的。但是,按键按下的时候会有抖动,因此在程序中要进行按键去抖操作。2.2.3 温度
24、的采集及显示温度传感器内部有两个温度系数晶振,它们分别为提供脉冲,让温度传感器内部的两个减计数器进行计数。在阀门打开时开始计数,两个减数计数器的预置值同时开始减1。当减数计数器1的预置值减到0的时候,温度寄存器内的值将自动加1,预置值重装,重新开始计数;而当减数计数器2的预置值减到0的时候,停止计数。此时温度寄存器内的值就是当前测得的温度值。这样就完成了测温的过程。然后单片机通过程序将测得的温度读取出来,经过程序的转化变化为点阵字模,让其可以在LCD1602上显示出来。这样就完成了温度的显示过程。2.2.4 闹钟的设置P2.0到P2.3四个端口为按键端口,在按键没动作的时候,四个端口的电平都为
25、高,而在按键有动作时,对应的端口电平就会被拉低。因此,在判断是否有按键按下时,我们只需判断每个端口的电平即可,十分方便。然而,在按键闭合和释放的过程中,都要经过一定的时间才能达到稳定,在这段时间内,端口电平会在高、低电平之间处于一种不稳定的状态,这种状态我们称为抖动。为了消除因抖动而带来的影响,在程序中需要一个去抖操作,就是在按键电平变化时加上一个10ms左右的延时。由于本系统中按键较少,因而没有采用矩阵按键二十采用了独立按键,这样每个按键占用一个I/O口线,每个按键工作时都是互不影响的。第3章 多功能数字钟电路的硬件设计3.1 系统硬件总图图3-1多功能数字钟电路图3.2 AT89C51的介
26、绍图3-2AT89C51引脚图如图3-2所示为单片机的40个引脚,各引脚功能如下:VCC:AT89C51 电源正端输入,接+5V。GND:电源地端。P0口:P0口是一个8位漏极开路双向I/O口。在数据输出时,外接上拉电阻才能使“1”信号正常输出。P1口:P1口是准双向口,它只能作为通用I/O接口使用。P2口:P2口是准双向口,两种用途:通用I/O接口和高八位地址线。P3口:P3口除了作为准双向通用I/O接口使用外,它的每根线都具有第二功能。XTAL1:系统时钟的反相放大器输入端。XTAL2:系统时钟的反相放大器输出端。在XTAL1 和XTAL2 之间接上一个晶振就可以运行了。为了系统更加稳定,
27、且避免因噪声干扰而容易死机,可以用一个小电容将两个引脚与地连上。RESET:复位输入引脚。EA/VPP:片外程序存储器选用端。ALE/PROG:地址锁存信号输入端。P3口各引脚的第二功能:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。3.3 时钟模块的介绍1、DS1302的性能特性实时时钟,拥有对年、月、日、时、分、秒计时的功能,同时还具有对闰年 补偿的功
28、能;用于存放临时数据的RAM;最少引脚的串行I/O;2.55.5V 电压工作范围;当在2.5V电压下工作时,每小时的耗电量小于300nA;具有便捷多样的传输方式;3线接口简单;可选的慢速充电的能力。 DS1302时钟芯片供电方式有两种:一种是主电源供电,而在主电源掉电的情况下,则由备用电源为其供电,使其能够继续工作。而在备用电源供电 的情况下,时钟芯片只有走时的功能,而不能进行读写操作。当两个电源同时供电时,DS1302会选择电压较高的那个为电源,而拒绝电压较小的电源为其供电。DS1302时钟芯片的引脚示意图如图3-3所示。图3-3 DS1302 引脚示意图 如图3-3所示,VCC1为主电源引
29、脚,VCC2为备用电源引脚,X1与X2外接晶振,RST为复位/片选线,I/O引脚为串行数据输入/输出端(双向),SCLK引脚为串行数据输入端。2、DS1302数据操作原理时钟芯片与单片机的数据传输是双向的,时钟芯片的动作由单片机控制。单片机通过向时钟芯片发送控制字来控制时钟芯片的动作。如果控制字节的第八位是逻辑0,就不能往时钟芯片写入数据。如果第七位是0 ,就可以对日历时钟数据进行存取。第六位到第二位是操作单元的地址。第一位控制读写操作,为1进行读操作,为0进行写操作。总是从第一位开始输出控制字节。暂停时钟:当我们在进行时钟调整的时候,需要对时钟芯片进行时钟暂停操作。而在时钟的秒寄存器的控制位
30、中,其第八位就是时钟暂停位。要想时钟暂停,将时钟暂停位置1即可。当其为0时,时钟将开始启动。12-24/AM-PM记时方式:12或者24小时方式定义位为小事寄存器的第八位,当其为高电平时,选择的是12小时制,为低电平时,选择的是24小时制。3.4 温度模块介绍温度传感器DS18B20有三个引脚,分别是电源正,地以及数据传输端。其测温范围在-55C到+125C之间,为其3到5V电压就能正常工作。它支持“一线总线”接口,这种方式能大大挺高系统的抗干扰性。图3-4DS18B20接线图如图3-4所示为DS18B20的接线图,它的1,3脚分别是电源地和电源正,中间的2脚是DS18B20的数据输入/输出端
31、,单片机正是通过这个引脚与DS18B20进行数据传输的。3.5 LCD显示模块的介绍LCD1602主要技术参数:显示容量:162个字符。芯片工作电压:4.5-5.5V。工作电流:2.0mA(5.0V)。模块最佳工作电压:5.0V。字符尺寸:2.954.35(WH)mm。引脚功能说明:第1脚:VSS为电源地。第2脚:VDD为电源正。第3脚:液晶显示器对比度调整端。接地时对比度最高。第4脚:寄存器选择。置高选择数据寄存器,否则选择指令寄存器。第5脚:读写信号线。置高进行读操作,否则进行写操作。第6脚:使能端。当其产生下降沿时,液晶模块执行命令。第7-14脚:8位双向数据线。第15脚:背光源正极。第
32、16脚:背光源负极。其接线如图3-5所示:图3-5 液晶显示模块的硬件接线图3.6 晶振电路和复位电路的介绍1、晶振电路 单片机的运行速度由其内部时钟频率决定,而晶振的好坏则决定了其时钟频率。因此晶振电路对单片机来说十分重要,它对单片机的正常运行起到了决定性作用。时钟电路分为内部时钟、外部时钟两种方式。本文采用的就是内部时钟方式。电路图如下:图3-6晶振电路2、复位电路 AT89C51单片机有一个复位引脚RST,它的作用是将单片机系统复位。其复位方式有2种,上电复位、按钮复位。两种方式的原理都是一样的,就是使RST引脚得到高电平。如图3-7:当系统上电时,电容会有一个短暂的充电过程,而这个短暂
33、的过程中,复位引脚为高电平,系统完成复位。当按钮按下时,RST复位引脚与电源短接,被拉高复位。但要想成功复位,必须要保证按钮按下时间达到两个机器周期。电路图如下:图3-7复位电路第4章 多功能数字钟的软件设计4.1 设计框架图图4-1设计框架图 此图清楚的表现出了多功能数字钟的组成部分以及数据传输情况。DS1302时钟芯片以及DS18B20温度采集模块与单片机之间数据传输是双向的。按键模块只需要将数据传送给单片机,由单片机出来得到的数据就行,而不需要单片机给它们发送数据,因此数据是从它们传送向单片机,是单向传输。LCD1602显示模块及发声模块不会传输数据给单片机,它们只需要接受来自单片机的数
34、据,根据数据的不同来显示以及发声就行,因此数据是由单片机发送给它们,是单向传输。4.2 源程序代码#include#include#define uchar unsigned char#define uint unsigned int #define TIME (0X10000-50000)#define FLAG 0XEF /闹钟标志 /引脚连接图sbit rst=P35;sbit clk=P34;sbit dat=P33;sbit rs=P15;sbit rw=P16;sbit e=P17;sbit DQ=P14; /温度输入口sbit P3_2=P32;sbit ACC_7=ACC7;/
35、全局变量及常量定义uchar i=20,j,time116;uchar alarm2,time215,time3; uchar code Day=31,28,31,30,31,30,31,31,30,31,30,31;uint code table1=64260,64400,64524,64580,64684,64777,64820,64898,64968,65030,65058,65110,65157,65178,65217;/发声部分的延时时间uchar code table2=0x82,1,0x81,0xf4,0xd4,0xb4,0xa4,0x94,0xe2, 0xe1,0xd4,0xb
36、4,0xc4,0xb4,4,0; /LCD自建字 uchar code tab=0x18,0x1b,5,4,4,5,3,0, 0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,/年 0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,0x00,/月 0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00;/日 /*温度小数部分用查表法*/Uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06, 0x07,0x08,0x08,0x09
37、,0x09;/闹钟中用的全局变量uchar th1,tl1; uchar temp_data2=0x00,0x00; / 读出温度暂放 bit flag; /18b20存在标志位 /*11微秒延时函数*/delay(uint t)for(;t0;t-);/*18B20复位函数*/ow_reset(void)uchar i; DQ=1;_nop_();_nop_();DQ=0;delay(50);/550usDQ=1; delay(6);/66usfor(i=0;i0;i-)/DQ=1;_nop_();_nop_();DQ=0;_nop_();_nop_();_nop_();_nop_();_n
38、op_();/5usDQ=val&0x01;/最低位移出delay(6);/66usval=val/2; /右移一位DQ=1;delay(1);/*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void) uchar i,value=0;for(i=8;i0;i-)DQ=1;_nop_();_nop_();value=1;DQ=0;_nop_();_nop_();_nop_();_nop_();/4usDQ=1;_nop_();_nop_();_nop_();_nop_();/4usif(DQ)value|=0x80;delay(6);/66usDQ=1;re
39、turn(value);/*读出温度函数*/read_temp() ow_reset();/总线复位 if(!flag)/判断ds1820是否存在 若ds18b20不存在则返回?return;write_byte(0xCC);write_byte(0x44);/发转换命令 delay(70); write_byte(0xCC);write_byte(0xBE);/发读命令 temp_data0=read_byte();/温度低8位temp_data1=read_byte();/温度高8位ow_reset();write_byte(0xCC);write_byte(0x44);/发转换命令/*温
40、度数据处理函数*/work_temp()uchar n=0,m;if(temp_data1127)/负温度求补码temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;time213=ditabtemp_data0&0x0f+0;time212=.;m=(temp_data0&0xf0)4)|(temp_data1&0x0f)4);if(n)m-=16;time29=m/100+0;time211=m%100;time210=time211/10+0;time211=time211%10+0;if(time29=0)/最高位为0时
41、都不显示time29=0x20;if(n)/负温度时最高位显示-time29=-;if(time210=0)if(n)time210=-;time29=0x20;elsetime210=0x20;if(time211=0&time213=0)time211=time212=0x20;delay1ms(uchar time) /延时1ms uchar i,j; for(i=0;itime;i+)for(j=0;j250;j+);enable()/LCD驱动部分rs=0;rw=0;e=0;delay1ms(3);e=1;write(uchar i)P0=i;rs=1;rw=0;e=0;delay1
42、ms(2);e=1;write1(uchar data *address,m)uchar i,j; for(i=0;im;i+,address+)j=*address;write(j);/LCD显示lcdshow()P0=0XC; /显示器开、光标关enable();P0=0x80;/写入显示起始地址enable();write1(time1,16);P0=0xc1;/写入显示起始地址enable();write1(time2,15);zijianzi()/自建字uchar i;P0=0x40;enable();for(i=0;i32;i+)write(tabi);delay1ms(2);writetime(uchar address)/DS1302读写子程序uchar i;clk=0;_nop_();rst=1;_nop_();for(i=0;i=1;clk=0;uchar read() uchar i,j=0;for(i=0;i=1;_nop_();clk=0;_nop_();if(dat)j|=0x80;_nop_();clk=1;return(j)