带有温度测试的万年历设计.doc_第1页
带有温度测试的万年历设计.doc_第2页
带有温度测试的万年历设计.doc_第3页
带有温度测试的万年历设计.doc_第4页
带有温度测试的万年历设计.doc_第5页
免费预览已结束,剩余48页可下载查看

下载本文档

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

文档简介

桂林电子科技大学实训说明书用纸编号: (论文)说明书题 目: 基于DS1302的万年历 院 (系): 应用科技学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 2009年 12 月 31 日45摘 要单片微型计算机简称单片机,又成为控制器。它是在一块半导体上,集成了CPU、ROM、RAM、I/O接口、定时器/计数器、中断系统等功能部件,构成了一台完整的数字计算机。单片机在生产生活中的许多方面得到广泛的应用,例如,生活中五彩变幻的霓虹灯,手机通信,温度检测,流量控制等都涉及到单片机。 本文是通过对一个基于单片机的能实现万年历功能电子时钟的设计,系统由主控制器AT89C51、时钟电路DS1302、温度传感器18B20、LCD1602显示、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒和温度的显示。给出了C语言源程序。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。电路由时钟脉冲发生器、时钟计数器和数字显示电路以及时间调整电路组成。用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。构成秒、分、时的计数,实现计时的功能。显示器件选用LCD1602液晶显示。在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。其中还添加了温度和定时响铃提示功能。关键词:单片机;AT89S52; LCD1602;DS1302;计时AbstractReferred to as a monolithic single-chip micro-computer, became controller. It is in a piece of semiconductor, Integrates the CPU, ROM, RAM, I / O interface, Timer / counter, Interruption of system features, Constitute a complete digital computer. Single-chip in the production of many aspects of life has been a wide range of applications, For example, Life-changing colorful lights, Mobile communications, Temperature detection, flow control are related to single-chip microcomputer.The paper mainly presents the hardware and software design of the digital clock using AT89S52, By main control AT89C52、clock circuit DS1302、temperature sensor 18B20、LCD1602 display、keystroke circuit and restore circuit componented, to achieve clock calendar display function can be carried out, hours seconds of the show and real-time temperature display. the source program using C Language is given. Its time for a 24-hour cycle, indicating full-scale to 23:59:59, while there should be at Proofreading functions. Circuit by the clock pulse generator, the clock counter and digital display circuit and the circuit time to adjust. Have a crystal oscillator with the time standard signal, where the use of quartz crystal oscillator. In accordance with 60 seconds to 1 minute, 60 is divided into 1 hour, 24-hour count of 1-day cycle, composed of two 60-band, respectively (seconds, minutes), a 24-ary (time) of the counter. Constitute a second, minute, at the time of counting, the realization of the function of time. Display selection LED1602. Display circuit in the decoding of the driven output, showing that the clear and intuitive digital symbols. Digital clock for travel time will be the phenomenon of error in the circuits are calibrated on the design of the circuit function of time. It also added a temperature and alarm function.Key word: Single-chip microcomputer; AT89S52; LCD1602;DS1302; time 目 录引言11 基于DS1302的万年历简介11.1基本功能11.2主要器件及介绍11.2.1单片机主控模块11.2.2时钟电路模块31.2.3显示模块41.2.4温度检测模块52 电路图及设计原理62.1 电路原理图62.2 主要原理62.2.1定时程序的设计62.2.2实时时钟实现的基本方法72.2.3实现时钟日历显示的设计72.2.4电路按键功能的说明82.3系统的软件设计92.3.1主程序流程图92.3.2时间调整程序流程图103 电路测试部分103.1 硬件测试113.2软件测试113.3测试结果分析与结论124 结论12谢辞14参考文献15附录16引言随着微电子技术的高速发展,单片机在国民经济的个人领域得到了广泛的运用。单片机以体积小、功能全、性价比高等诸多优点,在工业控制、家用电器、通信设备、信息处理、尖端武器等各种测控领域的应用中独占鳌头,单片机开发技术已成为电子信息、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。而电子万年历作为电子类小设计不仅是市场上的宠儿,也是是单片机实验中一个很常用的题目。因为它的有很好的开放性和可发挥性,因此对作者的要求比较高,不仅考察了对单片机的掌握能力更加强调了对单片机扩展的应用。而且在操作的设计上要力求简洁,功能上尽量齐全,显示界面也要出色。数字显示的日历钟已经越来越流行,特别是适合在家庭居室、办公室、大厅、会议室、车站和广场等使用,壁挂式LCD显示的日历钟逐渐受到人们的欢迎。LCD数字显示的日历钟显示清晰直观、走时准确、可以进行夜视,并且还可以扩展出多种功能。 所以,电子万年历无论作为比赛题目还是练习题目都是很有价值。1 基于DS1302的万年历简介1.1 基本功能1.1.1本电路为采用DS1302实现数字钟功能。1.1.2带有闹铃以及闹铃设置功能已经温度测试功能1.1.3通过LCD1602显示时间、星期和温度以及当前时间属性。1.1.4按键切换显示日期(年、月、日)。1.1.5具有掉电保护功能。1.1.6能在早上8点和晚上12点整进行闹铃提醒休息时间和工作时间显示切换。1.2 主要器件及介绍1.2.1单片机主控制模块AT89S52单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。如图所示。内部结构按功能分为8部分:CUP,程序存储器,数据存储器,时钟电路,串行口,并行I/O口,中断系统,定时/计数器。引脚定义及功能(1)电源及时钟引脚Vcc:接+5V 电源Vss:接地XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。(2)控制引脚RST/Vpq:RST是复位信号输入端,Vpd是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源Vcc发生故障而突然下降到一定低电压或断电时,第2功能Vpd将为片内RAM提供电源以保护片内RAM中的信息不丢失。ALE/PROG:地址锁存允许信号输入端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固外程序时,作为编程脉冲输入端。PSEN:程序存储器允许输出端。当片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。EA/Vpp:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。(3)I/O口引脚P0.0P0.7:P0口8位双向I/O口;P1.0P1.7:P1口8位准双向I/O口;P2.0P2.7:P2口8位准双向I/O口;P3.0P3.7:P3口8位准双向I/O口。片外总线结构分为三部分:数据总线 Data Bus(DB),地址总线 Address Bus (AB),控制总线 Control Bus(CB).其管脚接法如图1-1所示 图1-1 AT89S51引脚1.2.2时钟电路模块(如图1-2所示) 图1-2 始终控制电路模块 (1)DS1302的结构及工作原理: DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。(2)引脚功能及结构: 图三所示出DS1302 的引脚排列,其中Vcc1 为后备电源,VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由Vcc1 或Vcc2 两者中的较大者供电。当Vcc2 大于Vcc10.2V 时,Vcc2 给DS1302供电。当Vcc2 小于Vcc1 时,DS1302 由Vcc1 供电。X1 和X2 是振荡源,外接32.768kHz 晶振。RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当RST 为高电平时,所有的数据传送被初始化,允许对DS1302 进行操作。如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc2.5V 之前,RST 必须保持低电平。只有在SCLK 为低电平时,才能将RST 置为高电平。I/O 为串行数据输入输出端(双向),后面有详细说明。SCLK 始终是输入端。(3)数据输入输出(I/O)在控制指令字输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0 开始。同样,在紧跟8 位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位0 位到高位7。DS1302 与CPU 的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。图1-3 DS1302实物图以及管脚排列1.2.3显示模块采用LCD1602液晶显示。LCD1602是工业字符型液晶,能够同时显示16x02(16列2行)即32个字符。由接收电路,缓存电路,控制逻辑,扫描等组成。运用LCD1602进行显示能将题目要求的显示部分同时显示,能一目了然,但其程序要求比较复杂,驱动程序比较繁琐。如图1-4。图1-4 LCD1602模块引脚功能说明引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flag)15BLA背光电源正极16BLK背光 电源负极1.2.4温度检测模块Dallas半导体公司的数字化传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,即单总线器件。一线总线独特而且具有线路简单,体积小的特点,使用户可轻松地组建传感网络,为测量系统的构建引入全新概念。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣的现场温度测量。如:环境控制、设备或过程控制、测温消费电子产品等。(1)DS18B20的引脚介绍(如图1-5)图1-5 DS18B20的引脚介绍2 电路图及设计原理电路原理图图2-1 电路原理图2.2 主要原理2.2.1定时程序设计单片机的定时功能也是通过计数器的计数来实现的,此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲,也就是每经过1个机器周期的时间,计数器加1。如果AT89S52采用的12MHz晶体,则计数频率为1MHz,即每过1us的时间计数器加1。这样可以根据计数值计算出定时时间,也可以根据定时时间的要求计算出计数器的初值。AT89S52单片机的定时器/计数器具有4种工作方式,其控制字均在相应的特殊功能寄存器中,通过对特殊功能寄存器的编程,可以方便的选择定时器/计数器两种工作模式和4种工作方式。定时器/计数器工作在方式0时,为13位的计数器,由TLX(X=0、1)的低5位和THX的高8位所构成。TLX低5位溢出则向THX进位,THX计数溢出则置位TCON中的溢出标志位TFX.当定时器/计数器工作于方式1,为16位的计数器。本设计师单片机多功能定时器,所以MCS-51内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1。2.2.2 实时时钟实现的基本方法时钟的最小计时单位是秒,但使用定时器的方式1,最大的定时时间也只能达到131ms。我们可把定时器的定时时间定为50ms。这样,计数溢出20次即可得到时钟的最小计时单位:秒。而计数20次可以用软件实现。秒计时是采用中断方式进行溢出次数的累积,计满20次,即得到秒计时。从秒到分,从分到时是通过软件累加并进行比较的方法来实现的。要求每满1秒,则“秒”单元中的内容加1;“秒”单元满60,则“分”单元中的内容加1;“分”单元满60,则“时”单元中的内容加1;“时”单元满24,则将时、分、秒的内容全部清零。2.2.3 实现时钟,日历显示设计DS1302可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能.DS1302 有12 个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为BCD 码形式,其日历、时间寄存器及其控制字见表1。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31 个,每个单元组态为一个8 位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM 寄存器,此方式下可一次性读写所有的RAM 的31 个字节,命令控制字为FEH(写)、FFH(读)。详细C程序见附录2.2.4电路按键功能说明本设计有由八个轻触按键组成的小键盘和一个复位键,这些按键可以任意改变当前的状态。按SW1时是转换屏幕显示“年月日”;按下SW2是开/关液晶显示的背光灯;按下SW3是进入调节日期时间模式,在此模式中,按SW5是调节光标右移,按SW6是光标对应的数字加1,按SW7是减1;按SW4是进入闹钟调节模式,更改方法跟改时间一样,而SW8则是在响闹铃是按SW8则跳出闹铃状态。显示数据时,先把要显示的数据送到数据缓冲区SBUF中,再从SBUF中显示。串行口缓冲寄存器SBUF器是可直接寻址的专用寄存器。在物理上,它对应着两个寄存器,一个发送寄存器,一个接收寄存器。CPU写SBUF,就是修改发送寄存器;读SBUF,就是读接收寄存器。接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生写重叠的问题。2.3 系统的软件设计2.3.1主程序流程图图2-2 主程序流程图2.3.2时间调整程序流程图开始控制键有效,进入月调整程序日十(个)位减1减键有效秒十(个)位减1减键有效秒十(个)位加1加键有效加键有效减键有效减键有效等待按键程序控制键有效,进入日调整程序月十(个)位减1等待按键程序月十(个)位加1加键有效年十(个)位加1减键有效加键有效等待按键程序控制键有效,进入年调整程序加键有效等待按键程序控制键有效,进入星期调整程序控制键有效,进入时调整程序控制键有效,进入分调整程序等待按键程序加键有效减键有效分十(个)位加1减键有效加键有效小时十(个)位减1小时十(个)位加1等待按键程序 分十(个)位减1控制键有效,进入秒调整程序等待按键程序星期位减1星期位加1年十(个)位减1按键有效,跳出时间调整程序,进入主循环程序日十(个)位减1 图2-3 时间调整程序流程图3 电路测试部分3.1硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。进行电路板焊接时,注意元器件的管脚不要焊反。焊接的时候要注意不要把不相连的点挂接。焊接的时候烙铁的温度不要太高,焊接的时间不要太长,以免焊盘脱落和在焊接的时候就把器件烧坏。焊接完后好对电路图进行检测,看是否所有器件都是好的,位置都是正确的,看是否有挂接和虚焊的。接上电后应该检测各个器件的的电源跟地脚的电平是否正确。接上电后要触摸芯片查看是否有发烫现象,若有则应立即关掉电源。硬件没有问题后结合软件调试。3.2软件测试电子成年历是多功能的数字型,可以看当前日期、时间,还有温度的仪器。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中主要遇到的问题如下:1烧入程序后,lcd1602显示闪动,而且亮度不均匀。解决:首先对调用的延时进行逐渐修改,可以解决显示闪动问题。其次,由于本作品使作动态扫描方式显示的数字,动态扫描很快,人的肉眼是无法看出,但是调用的显示程序时,如果不在反回时屏蔽掉最后的附值,则会出现很亮的现象,所以在显示的后面加了屏蔽子令,最后解决了此问题。2修改时间、日期时没有农历没有自动对应上。解决:把不相关的程序暂时屏蔽,地农历的子程序独立调试,发现在调用农历自动更新时,对十进制和十六进制处理不好,所以会造成错乱。最后把相应的十进制进行修改,使得可以与十六进制对应,最后解决了此问题.3.3测试结果分析与结论3.3.1 测试结果分析(1)在测试中遇到LCD1602不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏.(2)LCD显示不正常,还有亮度不够,首先使用试测仪对电路进行测试,观察电路是否存在短路现象。查看烧写的程序是否正确无误,对程序进行认真修改。 (3)DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM 数据;D5D1 指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入), D0=1,指定读操作(输出)。在DS1302 的时钟日历或RAM 进行数据传送时,DS1302 必须首先发送命令字节。若进行单字节传送,8 位命令字节传送结束之后,在下2 个SCLK 周期的上升沿输入数据字节,或在下8 个SCLK 周期的下降沿输出数据字节。DS1302 与RAM 相关的寄存器分为两类:一类是单个RAM 单元,共31 个,每个单元组态为一个8 位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM 寄存器,在此方式下可一次性读、写所有的RAM 的31 个字节。要特别说明的是备用电源B1,可以用电池或者超级电容器(0.1F 以上)。虽然DS1302 在主电源掉电后的耗电很小,但是,如果要长时间保证时钟正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V 充电电池。如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。100 F 就可以保证1 小时的正常走时。DS1302 在第一次加电后,必须进行初始化操作。初始化后就可以按正常方法调整时间。3.3.2 测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固。4 结论本次实训我选择的是基于DS1302的万年历。在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识,完成了对万年历的设计,达到了预期的目的。在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用,相互学习、相互讨论、研究,完成了最初的设想。在电路焊接时虽然没什么大问题,但从中也知道了焊接在整个作品中的重要性,电路工程量虽小,但不能心急,一个个慢慢来不能急于求成,反而达到事半功倍的效果。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,理清了思路,终于能够完成它。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我们的耐心,做什么事都在有耐心。此次设计中学到了很多很多东西,这是最重要的。谢 辞应该感谢的人很多,首先感谢学院给我们提供了一个展现自己的舞台,给我们一次难得煅炼的机会,使得我们的动手能力和专业技能都有了很大的提高。在做设计的日子里得到了指导教师的悉心指导,在此向我们的指导教师致以诚挚的谢意。感谢提供相关技术帮助的老师和同学,你们的支持和鼓励使我们对这次的作品完成有了信心和动力,也给了我们很多无私的帮助和支持,我们在此深表谢意。参考文献1.康华光电子技术基础【M】北京:高等教育出版社,2001年2.胡辉. 单片机原理及应用设计【M】.北京:中国水利水电出版社,2005年附 录PCB原理图C程序/* 名称: Init1302* 说明: * 功能: 初始化DS1302* 调用: * 输入: * 返回值: 无*/void Init1302(void)v_W1302(0x8e,0x00); /控制写入WP=0v_W1302(0x90,0xa5);/*v_W1302(0x80,0x00); /秒v_W1302(0x82,0x20); /分v_W1302(0x84,0x15); /时v_W1302(0x86,0x13); /日v_W1302(0x88,0x03); /月v_W1302(0x8a,0x04); /星期v_W1302(0x8c,0x09); /年 */ v_W1302(0x8e,0x80);/* 名称: donetime* 说明: * 功能: 时间处理* 调用: * 输入: * 返回值: 无*/*void gettime(void) uchar d;d=uc_R1302(0x8B);time12=d/16+48;time13=d%16+48;d=uc_R1302(0x81);time10=d/16+48;time11=d%16+48;d=uc_R1302(0x83);time8=d/16+48;time9=d%16+48;d=uc_R1302(0x85);time6=d/16+48;time7=d%16+48;d=uc_R1302(0x87);time4=d/16+48;time5=d%16+48;d=uc_R1302(0x89);time2=d/16+48;time3=d%16+48;d=uc_R1302(0x8D);time0=d/16+48;time1=d%16+48; void SetTime(void)v_W1302(0x8e,0x00);v_W1302(0x80,0x80);v_W1302(0x82,min);v_W1302(0x84,hou);v_W1302(0x86,day);v_W1302(0x88,mon);v_W1302(0x8c,yea);v_W1302(0x80,0x00);v_W1302(0x8e,0x80);*/void get_hour_m_S(void)uchar d;d=uc_R1302(0x8B);/time6=d/16+48;time6=d%16+48;d=uc_R1302(0x81);time4=d/16+48;time5=d%16+48;d=uc_R1302(0x83);time2=d/16+48;time3=d%16+48;d=uc_R1302(0x85);time0=d/16+48;time1=d%16+48;void get_year_m_d(void)uchar d;d=uc_R1302(0x87);time4=d/16+48;time5=d%16+48;d=uc_R1302(0x89);time2=d/16+48;time3=d%16+48;d=uc_R1302(0x8D);time0=d/16+48;time1=d%16+48;void send_week(void) switch(time6)case 1:write_com(0x8c);write_data(M);write_data(o);write_data(n);break;case 2:write_com(0x8c);write_data(T);write_data(u);write_data(e);break;case 3:write_com(0x8c);write_data(W);write_data(e);write_data(d);break;case 4:write_com(0x8c);write_data(T);write_data(h);write_data(u);break;case 5:write_com(0x8c);write_data(F);write_data(r);write_data(i);break;case 6:write_com(0x8c);write_data(S);write_data(a);write_data(t);break;case 7:write_com(0x8c);write_data(S);write_data(u);write_data(n);break;void send_hour_m_s(void)get_hour_m_S();write_com(0x80);write_data( );write_data( );write_data(time0);write_data(time1);write_data(:);write_data(time2);write_data(time3);write_data(:);write_data(time4);write_data(time5);write_data( );write_data( ); send_week();write_data( );void send_year_m_d(void)get_year_m_d();write_com(0x80);write_data( );write_data( );write_data( );write_data(2);write_data(0);write_data(time0);write_data(time1);write_data(-);write_data(time2);write_data(time3);write_data(-);write_data(time4);write_data(time5);write_data( );write_data( );write_data( );/* DS18B20程序模块*/#include#define uchar unsigned char#define uint unsigned intsbit DQ=P17;/定义DS18B20的数据输传口unsigned char num=0;void dsdelay(unsigned int i)/延时函数 while(i-);Init_DS18B20(void)unsigned char x=0;DQ=1; /DQ复位delay(10); /稍做延时DQ = 0; /单片机将DQ拉低delay(10); /精确延时 大于 480usDQ = 1; /拉高总线delay(10);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(10);/读一个字节ReadOneChar(void)unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(10);return(dat);/写一个字节WriteOneChar(unsigned char dat)unsigned char i=0;for (i=8; i0;i-) DQ = 0; DQ = dat&0x01; dsdelay(10); DQ = 1; dat=1;/delay(4);/读取温度ReadTemperature(void)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); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();b=ReadOneChar();t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; /放大10倍输出并四舍五入-此行没用return(t); void Temperature()/主函数unsigned int i=0;/定义整型变量i i=ReadTemperature()-100;/读温度num=i%1

温馨提示

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

评论

0/150

提交评论