综合电子设计课程报告单片机温度检测记录系统

上传人:仙*** 文档编号:99820103 上传时间:2022-06-01 格式:DOC 页数:27 大小:1.44MB
收藏 版权申诉 举报 下载
综合电子设计课程报告单片机温度检测记录系统_第1页
第1页 / 共27页
综合电子设计课程报告单片机温度检测记录系统_第2页
第2页 / 共27页
综合电子设计课程报告单片机温度检测记录系统_第3页
第3页 / 共27页
资源描述:

《综合电子设计课程报告单片机温度检测记录系统》由会员分享,可在线阅读,更多相关《综合电子设计课程报告单片机温度检测记录系统(27页珍藏版)》请在装配图网上搜索。

1、单片机温度检测记录系统单片机温度检测记录系统摘要:该温度监控报警与记录系统以AT89C52 单片机为核心,采用新型可编程温度传感器DS18B20进行温度检测,具有抗干扰能力强、温度采集精度高、不需要复杂的调理电路和AD 转换电路等特点。该系统由主机和从机两部分组成,从机的AT89C52 单片机完成数据采集、处理和LCD显示,并通过串口与主机进行通信。主机(电脑)实时监控从机采集的数据状况、通过液晶显示器显示温度/时间图形,同时将数据存到电脑中的D盘目录下的“温度.TXT”文件中,因而在掉电的情况下,系统同样能够记录每一时刻的数据,从而轻松地实现了温度的实时监控和报警。关键词:AT89C52单片

2、机,新型可编程温度传感器DS18B20,实时监控、报警SCM-based temperature detection and recording systemAbstract: The temperature alarm monitoring and recording system based on AT89C52 single chip as the core, using a new programmable temperature sensor DS18B20 temperature detection, has strong anti-interference capability,

3、 temperature of high precision and does not need complex processing circuit and AD converter circuit and so on. The system is composed of master machine and slave machine.and AT89C52 MCU of slave machine complete data acquisition, processing and display on LCD, and through the serial port to communi

4、cate with the host. Host ( computer ) real-time monitor the data collected from the slave engine,and through the LCD display temperature / time graph, at the same time it can store data to the computer D disk directory : temperature . TXT, and in the case of power-down, system can also record every

5、moment of the data, thereby easily realization of temperature real time monitoring and alarm.Keywords: AT89C52 microcontroller, new programmable temperature sensor DS18B20, real-time monitoring and alarm目录1 设计任务与要求11.1 设计任务11.2 技术指标11.3 题目评析12 方案比较与论证22.1 各种方案比较与选择23 系统硬件设计33.1 系统的总体设计33.2 功能模块设计及工作

6、原理的分析43.2.1 时钟显示模块43.2.2 温度传感器模块53.2.3 LCD显示数据模块63.2.4 串口数据传输显示模块73.3 发挥部分的设计与实现93.3.1 年月日时分秒,温度报警上限设置功能93.3.1.1硬件按钮部分93.3.1.2 红外遥控设置模块93.3.2 按键传输串口数据104 系统软件设计117 参考文献167 附录:17231 设计任务与要求1.1 设计任务设计制作一台可检测和记录温度的系统。1.2 技术指标(1) LCD显示实时时钟:年、月、日、时、分、秒;(2) 每30秒采样温度,LCD更新显示温度值;(3) 按键触发存储当前温度和时钟信息(年、月、日、时、

7、分);(4) 按键触发串口传输存储的温度和时钟信息;(5) 温度测量精度:1度。1.3 题目评析本设计题我们小组摒弃了常规做法,加入了两项独特的创新实现方法:(1) 对于数据传送储存显示方面我们不使用24C02存储器,I2C存储器等储存器件,而是直接通过串口将数据传输的电脑中通过VB界面显示数据并将数据记录在电脑硬盘中。(2)在设置时间日期,上限温度上,我们不仅仅采用了硬件按钮控制而且还加入了红外遥控控制。 与此同时,我们的温度测量精度在理论上能达到0.0625.实际运行时也能达到0.1度,而实验所要求的仅为1摄氏度。另外,在DS1302芯片上加入了一个备用电源,使得主电源掉电时,时钟芯片仍然

8、在随着时间的移动而实时更新。因此主电源再次上电时,时钟依然是准确的,而不必重新调过2 方案比较与论证2.1 各种方案比较与选择2.1.1 温度传感器目前使用接触式比较多,主要有热电式传感器,把温度变化转换为电阻变化的叫热电阻传感器,把温度变化转换为热电势变换的叫热电偶传感器。方案1:热电阻传感器具有高温系数,高电阻率,物理特性稳定,良好的线性输出等优点,常用的有pt100和pt100等。方案2:热电偶传感器具有结构简单,测量范围广,热惯性小,准确度高,输出信号远的优点,但价格较高。方案3:新型可编程温度传感器DS18B20,精度高,成本低,易于采集信号。利用热电偶或热敏电阻作为温度传感器,这类

9、传感器至仪表之间通常都要用专用的温度补偿导线,而温度补偿导线的价格很高,并且线路太长,会影响测量精度,这是直接以模拟量形式进行采集的不可避免的问题。采用新型可编程温度传感器DS18B20进行温度检测可以避免热电偶或热敏电阻作为温度传感器所造成的测量精度误差过大等问题,同时DS18B20只需要一个I/O口便可以进行通信,它可以以更低的成本和更高的精确度实现温度检测。所以选择方案3。2.1.2 时钟显示方案1:采用内部时钟计时。方案2:采用外部时钟芯片DS1302。采用内部时钟计时,可以节省IO引脚,降低成本,但是内部振荡器使用阻容震荡,其精度不高,如果使用了串口、或者PWM等对时钟比较敏感的功能

10、,会对时钟造成混乱。采用外部时钟芯片DS1302,不仅仅能对时间进行计时还可以对年、月、日、周进行计时,具有闰年补偿功能而且对于使用串口、或者PWM等对时钟比较敏感的功能,不会产生影响。如果接入外置电子电池的话在系统掉电的情况下还可以继续计时。所以选择方案2。2.1.3 时间温度数据显示方案1:采用数码管显示。方案2,采用LCD显示器显示。采用数码管显示时间温度数据操作方便,但需要用到的数码管数量甚多,占用I/O口较多,浪费I/O口的利用率,且只能显示数字。而使用LCD显示虽然在编程上有一定程度比数码管显示的复杂性高,但其占用的I/O资源较少,且能显示的内容比数码管丰富的多,不仅能显示数值还能

11、显示英文。所以使用方案2.2.1.4 数据的串口传送与储存显示方案1:通过串口将数据传送到另一个单片机系统上显示,采用24C02存储器对数据进行储存。方案2:通过串口将数据传送到PC机上并用VB程序编写的界面显示,采用PC机上的“D盘”对数据进行储存。通过串口将数据从一个单片机传送到另一个单片机上设置较为简单,将数据存储到24C02存储器上,不易于对任意时间温度数据进行提取,而将数据传送到PC机上并用VB界面显示出来不仅美观而且信息量丰富,将数据储存在“D:温度.TXT”目录下不仅存储量大,而且便于直观查看。所以使用方案2。3 系统硬件设计3.1 系统的总体设计本系统以AT89C52 单片机为

12、核心,采用温度传感器DS18B20进行温度检测,将数字温度信息传输到单片机中,在时钟方面采用外部时钟芯片DS1302 ,DS1302 是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时。单片机通过采集温度时间信息后将温度时间数据传送到LCD上显示出来,并将数据通过串口通信通过MAX232传送到电脑中,硬件总体框图如下:AT89C52RCLCD显示外部时钟DS1302数字温度传感器DS18B20MAX232电脑PC串口数据传输采集温度图3-1 硬件总体框图下图为我们的仿真原理图,如下图所示,将程序载入单片机后,LCD显示正常。即时温度为37.3度,而时间为2

13、011年7月16日,14点30分44秒。图3-2 总体原理图3.2 功能模块设计及工作原理的分析3.2.1 时钟显示模块时钟模块采用外部时钟DS1302进行计时,DS1302 是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能

14、力。其管脚图以及此模块仿真图如图3-3(a)及3-3(b)所示。(a) (b)图3-3 DS1302管脚图与时钟模块仿真图各引脚的功能为: Vcc1:备用电源;Vcc2:主电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。 在实物中,我们将vcc1与一颗3V的钮扣电池相连,从而实现时钟实时更新功能。SCLK:串行时钟,输入,控制数据的输入与输出; I/O:三线接口时的双向数据线; CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据

15、传输的方法。 DS1302有下列几组寄存器: DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h8Dh,写时80h8Ch),存放的数据格式为BCD码形式,如下图3-4所示。图3-4 各寄存器详情DS1302 的控制字如图3-5所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302

16、,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。图3-5 DS1302控制字DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。

17、但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。3.2.2 温度传感器模块采用新型可编程温度传感器DS18B20进行温度检测,具有抗干扰能力强、温度采集精度高、不需要复杂的调理电路和AD转换电路等特点,只要将DS18B20的I/O口直接与单片机的I/O相连接即可读取数字温度。DS18B20 内部结构主要由四部分组成: 64位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL 、配置寄存器。DS18B20技术性能描述: 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围 -55+125,固有测

18、温分辨率0.5。其管脚图如图3-6(a),其仿真图如图3-6(b)所示。 (a) (b)图3-6 DS18B20管脚图及其温度检测模块仿真图根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。其时序图如下图3-7:图3-7 DS1302复位时序图DS18B

19、20温度值格式表如下,其中S表示符号位。以下是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。图3-8 DS18B20温度值格式DS18B20中的温度传感器完成对温度的测量,用16位二进制形式表达,举例如下:图3-9 DS18B20温度值16位二进制形式表达另外DS18B20的ROM指令表详见附表1,RAM指令表详见附表2。3.2.3 LCD显示数据模块LM016L液晶模块采

20、用HD44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储

21、显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种。Lm016l的引脚图如图3-10(a)其仿真图如图3-10(b)。(a) (b)图3-10 LCD1602引脚图及其显示模块仿真图其中各引脚功能如下表所示: 表3-1 lm016l引脚功能图引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号

22、线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。714DB0-DB7双向数据总线 7位(其中DB7即最高位,也是busy flag)15BLA背光电源正极16BLK背光电源负极其寄存器选择控制表如下表3-2所示: 表3-2 lm016l寄存器选择控制表RSR/W操作说明00写入指令寄存器(清除屏等)01都busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据3.2.4 串口数据传输显示模块串行接口Serial Interface是指数据一位位地顺序传送,其特点是

23、通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。 RS-232也称标准串口,最常用的一种串行通讯接口。采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。这里我们通过AT89C52的串行传输口TXD,RXD,将温度,时间数据通过MAX232传输到PC上并通过VB界面显示时

24、间温度描绘温度/时间曲线。MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。 MAX232引脚图如图3-11(a)硬件设置如图3-11(b),VB显示界面如图3-12。(a) (b)图3-11 MAX232引脚图及其MAX32仿真图图3-12 单片机温度检测记录系统(vb)如图3-11(a)与3-11(b)所示,其各引脚功能介绍如下:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构

25、成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚GND、16脚VCC(+5v)。 3.3 发挥部分的设计与实现发挥部分包含两个部分。首先是年月日时分秒及其温度报警上限功能设置,另外还有串口

26、数据传输部分的实现。3.3.1 年月日时分秒,温度报警上限设置功能年月日时分秒及其温度报警上限功能设置有两种方法,包括硬件按键设置以及红外遥控设置。3.3.1.1 硬件按钮部分硬件按钮部分设置如图3-13所示,key1:为功能设置进入按钮,key2:为功能切换按钮如图3-14,3-15,3-16,3-17,3-18,3-19,3-20,所示。key3:为加一功能按键。key4:为减一功能按键。在这一部分中,4个按键按下key1即可进入年设置模式,通过key3与key4键进行加一减一操作。设置完年份之后,再按下key2即可进入月份设置操作,继续按下则能相继出现日,时,分,秒及温度上限的设置操作,

27、同理,key3与key4对数值设置进行加减。 图3-13 硬件按钮设置 图3-14 设置年份 图3-15设置月份 图3-16 设置日期 图3-17 设置小时 图3-18 设置分钟 图3-19 设置秒 图3-20 设置温度3.3.1.2 红外遥控设置模块人的眼睛能看到的是可见光,若按波长排列,依次(从长到短)为红、橙、黄、绿、青、蓝、紫,红光的波长范围为 0.62m0.7m,比红光波长还长的光叫红外线。红外线遥控器就是利用波长 0.76m1.5m之间的近红外线来传送控制信号的。红外线的特点是不干扰其他电器设备工作,也不会影响周边环境。调试简单,若对发射信号进行编码,可实现多路红外遥控功能。红外线

28、发射和接收:红外遥控发射器由键盘矩阵、遥控专用集成电路、激励器和红外发光二极管组成。遥控专用集成电路(采用AT89S52 单片机)是发射系统的核心部分,其内部由振荡电路、定时电路、扫描信号发生器、键输入编码器、指令译码器、用户码转换器、数码调制电路及缓冲放大器等组成。它能产生键位扫描脉冲信号,并能译出按键的键码,再经遥控指令编码器得到某键位的遥控指令(遥控编码脉冲),由38KHZ 的载波进行脉冲幅度调制,载有遥控指令的调制信号激励红外二极管发出红外遥控信号。在红外接收器中,采用光电转换器(光电二极管),将接收到的红外光指令信号转换成相应的电信号。由于技术原因与制作成本,红外遥控发射器是利用现成

29、的电视遥控器。接收器将接收到的红外频率数据传输到单片机中,进行处理识别红外控制的按键,从而进行时间温度的设置。3.3.2 按键传输串口数据如下图3-18为串口传输的按键。四个按键分别对应的功能如下:Key3:单次按键传输串口数据,即每触发一次传输一次即时的时间温度数据。Key4:触发一次连续传输即时的串口数据。Key2:停止串口数据传输按钮。图3-18 按键传输串口数据功能键4 系统软件设计主函数开始先进行LCD初始化,时钟芯片初始化,串口初始化,之后通过时间,温度处理函数读取时间,温度的数值,判断是否有按键被按下,如果没有运行时间显示函数,温度显示函数,温度报警函数;如果按键被按下,则进入功

30、能设置函数调节时间和温度上限。总体程序流程图如图4-1所示。开始Lcd初始化,时钟芯片初始化,串口初始化正常显示模式下功能设置显示模式时间处理函数,温度转换处理函数键盘扫描时间显示函温度显示函温度报警函数串口判断传输函数功能设置函数图4-1 总体程序流程图主程序可见附录程序1。4.1 温度传感器流程图 将DS18B20首先要将温度传感器内存初始化,逐字读取传感器RAM中的的温度数据,并将数据转化为十进制的浮点型数据,返回温度值。其流程图如下: 开始初始化温度传感器读取温度传感器RAM内存中的温度数据将温度数据转化为十进制浮点型数据结束,返回温度值 图4-2温度传感器流程图 温度传感器程序见附录

31、程序2。4.2 时钟芯片流程图 判断时间显示是否正确如果不正确外部电路可从新设置时钟之后进入流程(1),如果时间显示正确,(1)读取芯片内部RAM中的提取年、月、日、时、分、秒数据,并将年、月、日、时、分、秒值返回。开始时间显示是否正常外部手动进入内部RAM设置正确时钟NY11从DS1302RAM中提取年、月、日、时、分、秒数据结束,返回年、月、日、时、分、秒值图4-3 时钟芯片流程图 时钟芯片程序见附录程序3。4.3 红外控制程序流程图初始化红外接收管,判断是否接收到红外信号,无则结束,有则判断红外信号是否为有用信号,如有有用信号则返回相应的值。开始初始化红外接收管是否接收到红外信号判断所收

32、到的红外信号,有用信号则返回结束YN 图4-4 红外控制程序流程图红外控制程序见附录程序4。 5 测试结果 如上图为我们所搭的实物图,接通电源后,各个模块均正常工作,LCD显示时间温度正常,串口数据正常传送到PC中显示存储。另外发挥部分的红外遥控器,绿灯为红外遥控的指示灯,在控制时能够正常发亮,显示屏上数据也能随之而变,说明红外遥控器能够正常控制各个功能按钮。 如下图为单片机温度检测记录系统的VB界面,其显示时间温度正常,温度/时间曲线描绘正确,如下图所示。 图5-2 温度/时间曲线图6 系统电路存在的不足和改进的方向电路存在不足之处在于时间温度的串口传输是通过有线进行的,灵活性与局限性较大,

33、如果主系统与从系统距离较大,便使用起来更不方便,改进之处在于,不使用有线传输数据,而是使用无线传输数据,使用功率较大的无线接受发器还可以传送百米甚至几百米以上的距离,在软件方面对无线设置协议便可解决因距离过大而产生的数据出错。另外,可以考虑同时实现本地存储与异地存储的结合使用。困为如果要存储在电脑上,虽然美观而且使用方便,但是其功耗及延时将会比存储在本地上要多得多。所以,这也将是一个改进的方向。7 参考文献1 林立. 单片机原理及应用基于Proteus和Keil C. 北京:电子工业出版社, 20102 刘炳文.Visual Basic 程序设计教程(第四版). 北京:清华大学出版社,2009

34、3 孙传友 孙晓斌. 测感技术基础(第二版). 北京:电子工业出版社,20074张义和 王敏男 许宏昌. 例说51单片机(C语言版)(第三版). 北京:人民邮电出版社, 20107 附录:程序1:#include #include #define uint unsigned int /宏定义 #define uchar unsigned char#includeLM016L.h#includeDS1302.h#includeDS18B20.h#includeKeyScan.h#includeMODE.h#includeOPEN.h#includehwyk.hvoid initck(); /串口

35、初始化函数 void open(); /上电显示 void KeyScan(uchar key5); /键盘扫描 void SetYear_Mode(); /调年void SetMonths_Mode(); /调月void SetDay_Mode(); /调日void SetTime_hour_Mode(); /调时void SetTime_minute_Mode(); /调分void SetTime_second_Mode(); /调秒 void SetTemp_Mode(); /温度上限设置模式 sbit led3=P10;int flag1=0;/*主函数*/void main() in

36、t j=0,i; uchar idata re6;init(); /初始化LCD Set_RTC(l_tmpdate);/初始化时钟芯片 open(); /上电显示函数 write_com(0x01); /清屏 initck() ; /串口初始while(1) time_date(); /时间处理 KeyScan(hwyk(); /键盘扫描 if(flag=0) /正常显示模式下 tempchange(); /温度转换命令 Temp_Display();/显示温度 display(l_tmpdisplay,8);/显示时间 deal(); /温度处理 re0=0xEA; /向串口发送数据 re

37、1=Temp_b();re2=Temp_s();re3=Temp_g();re4=Temp_f();re5=0x00; if(key3=0) /按键发送数据 while(!key3); for(i=0;i6;i+)SBUF=rei;led3=led3;dowhile(!TI);TI=0; /发送结束if(key4=0|flag1=1) /持续发送数据 flag1=1; while(!key4); for(i=0;i0)i-;ds=1;i=4;while(i0)i-;bit tempreadbit(void)/读一位数据函数 uint i;bit dat;ds=0;i+; /i+起延时的作用 d

38、s=1;i+;i+;dat=ds;i=8;while(i0)i-;return(dat);uchar tempreadbyte(void)/读一个字节数据函数 uchar i,j,dat;dat=0;for(i=1;i=8;i+)j=tempreadbit();dat=(j1); /读出的数据最低位在最前面 return(dat);void tempwritebyte(uchar dat) /写一个字节数据函数 uint i;char j;bit testb;for(j=1;j1;if(testb)/写1 ds=0;i+;i+;ds=1;i=8;while(i0)i-;else /写0 ds=

39、0;i=8;while(i0)i-;ds=1;i+;i+;void tempchange(void) /DS18B20开始获取温度并转换 dsreset();delay(1);tempwritebyte(0xcc); /写跳过读ROM指令 tempwritebyte(0x44); /写温度转换指令 uint get_temp() /读取寄存器中存储的温度数据 uchar a,b;dsreset();delay(1);tempwritebyte(0xcc); /跳过RAM,适用于一个从机工作 tempwritebyte(0xbe); /读RAM内部9字节的温度数据 a=tempreadbyte(

40、); /读低8位b=tempreadbyte();/读高8位temp=b;templimit) /当温度超过设定的上限值时 led=0;delay(100);led=1;/*END*END*/int Temp_b() /温度显示函数 int b=0; b=get_temp()/1000;/温度的百位 return b;int Temp_s() /温度显示函数 int b=0;b=get_temp()%1000/100;/温度的十位return b;int Temp_g() /温度显示函数 int b=0;b=get_temp()%1000%100/10;/温度的十个return b;int T

41、emp_f() /温度显示函数 int b=0;b=get_temp()%1000%100%10;/温度的1/10return b;程序3:/*时钟芯片相关程序*/sbit rst=P27;/时钟芯片复位端 sbit sck=P25;/ 时钟信号 sbit io=P26;/ 时钟输入/输出端 void Write_Ds1302_Byte(uchar temp);/写入一个字节 void Write_Ds1302(uchar address,uchar dat);/写入 uchar Read_Ds1302 ( uchar address ); /读取时间 void Read_RTC(void);

42、/读取日历 void Set_RTC(uchar *p);/设定日历 void time_date();/时间数据处理 void display(uchar *lp,uchar lc); /显示时间 uchar code table0=0123456789-;uchar code table2=0123456789:;code uchar write_rtc_address7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c;code uchar read_rtc_address7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d;uchar l_tmp

43、date7=0x00,0x30,0x16,0x13,0x05,0x20,0x11;uchar l_tmpdisplay18,SetTime18,ring_time7; void Write_Ds1302_Byte(uchar temp) /写入一字节数据 uchar i; for (i=0;i=1; /右移一位 sck=1; void Write_Ds1302(uchar address,uchar dat)/写入 rst=0;delay(1); sck=0;delay(1); rst=1; delay(1); /启动 Write_Ds1302_Byte(address);/发送地址 Writ

44、e_Ds1302_Byte(dat);/发送数据 rst=0; /恢复 uchar Read_Ds1302 (uchar address) /读取时间 uchar i,time=0x00; rst=0;delay(1); sck=0;delay(1); rst=1;delay(1); Write_Ds1302_Byte(address); for (i=0;i=1;/右移一位 sck=0; rst=0;delay(1);/以下为DS1302复位的稳定时间 rst=0;sck=0;delay(1);sck=1;delay(1);io=0;delay(1);io=1;delay(1);return

45、 (time); void Read_RTC()/读取 日历 uchar i,*p; p=read_rtc_address; /地址传递 for(i=0;i7;i+)/分7次读取 年月日时分秒星期 l_tmpdatei=Read_Ds1302(*p); p+; void Set_RTC(uchar *P1302)/设定 日历 uchar i,*p; Write_Ds1302(0x8E,0X00); /允许写入 p=write_rtc_address;/传地址 for(i=0;i7;i+)/7次写入 年月日时分秒星期 Write_Ds1302(*p,P1302i); p+; Write_Ds13

46、02(0x8E,0x80);/禁止写入 void time_date()/时间数据处理 Read_RTC();l_tmpdisplay0=l_tmpdate2/16;/时 l_tmpdisplay1=l_tmpdate2&0x0f;l_tmpdisplay2=10;/加入:l_tmpdisplay3=l_tmpdate1/16;/分 l_tmpdisplay4=l_tmpdate1&0x0f;l_tmpdisplay5=10;l_tmpdisplay6=l_tmpdate0/16;/秒 l_tmpdisplay7=l_tmpdate0&0x0f;l_tmpdisplay8=2;/l_tmpdate5/16; /显示2011的2l_tmp

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!