版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于单片机的温度控制系统设计摘要随着微机测控技术的快速发展和广泛应用,以单片机为核心的温度采集控制系统的开发和应用,极大地提高了生产生活中的温度控制水平。本设计讨论了以STC89C52微控制器为主控单元,DS18B20为温度传感器的温度控制系统。控制系统可实时存储相关温度数据,记录当前时间。系统设计了相关的硬件电路和相关的应用程序。硬件电路主要包括STC89C52单片机最小系统、温度测量电路、实时时钟电路、LCD液晶显示电路和通信模块电路。系统程序主要包括主程序、温度读取子程序、温度计算子程序、按键处理程序、LCD显示程序和数据存储程序等。关键词 STC89C52单片机; DS18B20;显示
2、电路; DS1302; LCD1602液晶屏目录TOC o 1-3 h z u HYPERLINK l _Toc289603971 一、引言5 HYPERLINK l _Toc289603972 ( 1 )研究课题背景5 HYPERLINK l _Toc289603973 ( 2 )研究目的和意义 PAGEREF _Toc289603973 h HYPERLINK l _Toc289603974 二、硬件电路的设计6 HYPERLINK l _Toc289603975 ( 1 )系统设计框架6 HYPERLINK l _Toc289603976 ( 2 )单片机最小系统电路8 PAGEREF
3、_Toc289603976 h HYPERLINK l _Toc289603977 ( 3 ) MCU 7的选择 HYPERLINK l _Toc289603978 至 STC89C52微控制器7 HYPERLINK l _Toc289603979 2、STC89C52单片机时序8 HYPERLINK l _Toc289603980 三、STC89C52 MCU管脚介绍8 HYPERLINK l _Toc289603981 ( 4 )温度传感器电路1 0 HYPERLINK l _Toc289603982 ( 5 )系统供电电路设计1 2 HYPERLINK l _Toc289603983 (
4、 6 )液晶显示电路1 3 HYPERLINK l _Toc289603984 ( 7 )串行通信电路1 4 HYPERLINK l _Toc289603985 ( 8 )按键接口电路1 4 HYPERLINK l _Toc289603986 ( 9 ) DS1302时钟电路1 5 HYPERLINK l _Toc289603987 ( 10 )存储器接口电路1 5 HYPERLINK l _Toc289603988 三、系统软件设计1 6 HYPERLINK l _Toc289603989 ( 1 )计算温度子程序1 6 HYPERLINK l _Toc289603991 ( 2 )按键处理
5、子程序1 7 HYPERLINK l _Toc289603993 ( 3 )计算温度子程序1 9 HYPERLINK l _Toc289603995 ( 4 )显示数据刷新子程序1 9 HYPERLINK l _Toc289603997 四、电路原理及接线 2 0 HYPERLINK l _Toc289603998 5.实物图2 2(1) HYPERLINK l _Toc289603999 组成和功能2 3 HYPERLINK l _Toc289604000 6. 结论2 4 HYPERLINK l _Toc289604001 参考文献2 5 HYPERLINK l _Toc289604002
6、 至2 5 HYPERLINK l _Toc289604003 附件 1 系统相关程序2 6-43一、简介(一)课题研究背景工业控制是计算机的一个重要应用领域。计算机控制系统是为满足这一领域的需要而发展起来的专业技术。主要研究如何将计算机技术、信息技术和自动控制理论应用于工业生产。加工和设计所需的计算机控制系统。随着微机测控技术的快速发展和广泛应用,以单片机为核心的温度采集控制系统的开发和应用,极大地提高了生产生活中的温度控制水平。本设计基于单片机STC89C52温控系统的设计。通过本课程的实践,我们更加明确了单片机的广泛使用和使用,以及它的工作原理。(二)研究目的和意义随着社会的发展,温度的
7、测量和控制变得越来越重要。本文采用单片机STC89C52设计温度实时测控系统。单片机STC89C52可以根据温度传感器DS18B20采集的温度,在液晶屏上实时显示温度,通过控制将温度控制在设定范围内。所有温度数据都通过液晶显示LCD显示。系统可以根据时钟存储相关数据。通过本课程的学习,全面了解计算机控制系统,掌握常规控制算法的使用,掌握简单微机应用系统的软硬设计方法,进一步锻炼学生在微机应用中的实际工作能力. .二、硬件电路的设计(1) 系统设计框架本课题设计了以STC89C52单片机为主控单元,DS18B20为温度传感器的温度控制系统。控制系统可实时存储相关温度数据,记录当前时间。主要包括:
8、电源模块、温度采集模块、关键处理模块、实时时钟模块、数据存储模块、液晶显示模块、通讯模块和单片机最小系统。图 1 系统设计框架(2)单片机最小系统电路本课题设计的温度控制系统设计中,控制核心为STC89C52单片机,为51系列增强型8位单片机。具有32个I/O口和4K FLASH技术的程序存储器,方便省电。瞬间擦写,价格便宜,外接晶振12MHz,一个指令周期1S。使用这台单片机可以完全完成设计任务。最小系统主要包括:复位电路、振荡电路和存储器选择方式(EA引脚的高低电平选择)。电路如下图2所示:图2 单片机最小系统(3)单片机的选择本课题设计的温度控制系统的主控芯片为STC89C52单片机,其
9、特点如下:一、STC89C52单片机介绍目前,51系列单片机已广泛应用于工业测试领域,因此我们可以连接众多单片机应用领域的各类语音接口,形成具有综合语音输出能力的综合应用系统,增强人-机器对话功能。 STC89C52单片机是宏晶科技生产的单片机,将单片机的各种部件集成在一个小芯片上。每个微控制器包括: 一个 8 位微处理器 CPU;一个 512K 切片数据存储器 RAM; 4K切片程序存储器; 4个8位并行I/O接口P0-P3,每个接口可输入或输出;两个定时器/计数器;五个中断源的中断控制系统;全双工UART的串行I/O端口;片上振荡器和时钟产生电路,但需要外部石英晶体和微调电容器。最大内容振
10、荡频率为 12MHZ。以上各部分通过外部总线连接。2、STC89C52单片机时序STC89C52微控制器的一个执行器周期由6个状态(s1-s6)组成,每个状态持续2个振荡周期,分为两个节拍P1和P2。因此,一个机器周期由 12 个振荡周期组成。如果使用12MHz晶振,每个机器周期为1us,每个状态周期为1/6us;在某些情况下,算术和逻辑运算发生在 N 期间,而从寄存器到寄存器的传输发生在 P2 期间。对于单周期指令,当指令操作码读取指令寄存器时,指令从S1P2开始执行。如果是双字节指令,则读取同一机器周期的s4中的第二个字节。如果是单字节指令,在51期间仍然读取,但忽略读入的字节操作码,程序
11、数据不加1。指令操作在加法结束时完成。大多数STC89C52指令周期为1-2个机器周期,只有乘除法指令需要2个以上机器周期,需要4个机器周期。对于双字节单机指令,通常在一个机器周期内从程序存储器中读取两个字节,但 Movx 指令除外,它是访问外部数据存储器的单字节、两机器周期指令。在此期间,外部数据存储器被访问并且选通信号跳过两次取指。三、STC89C52 MCU管脚介绍STC89C52单片机的40个引脚中,2个专用于主电源,2个用于外部晶振,4个控制或与其他电源复用连接32个输入输出I/O引脚。 .下面按照引脚功能分为4个部分来描述各个引脚的功能。(1) 电源引脚 Vcc 和 VssVcc(
12、40脚):接+5V电源正极;Vss(20脚):接+5V电源正极。(2) 外部晶振引脚 XTAL1 和 XTAL2XTAL1(引脚 19):连接到外部石英晶体的一端。在MCU部分,它是一个反相放大器的输入端。当本放大器使用外部时钟时,对于 HMOS MCU,此引脚接地;对于CHOMS MCU,该引脚用作外部振荡信号的输入端。XTAL2(引脚 18):连接到外部晶振的另一端。在单片机部分,它连接到芯片振荡器的反相放大器的输出端。使用外部时钟时,对于 HMOS 单片机,该引脚用作外部振荡信号的输入端。对于 CHMOS 芯片,此引脚保持开路且未连接。(3) 控制信号或引脚与其他电源复用有四种形式的控制
13、信号或与其他电源的复用引脚,如RST/VPD、ALE/P、PSEN和EA/VPP。(一个)。 RST/VPD(9脚):RST为RESET,VPD为备用电源,所以该脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚出现两个机器周期的高电平,可实现复位操作,使单片机复位到初始状态。当 VCC 发生故障、降低到低电平规定值或掉电时,该管脚可接备用电源 VPD(+5V)给部分 RAM 供电,保证 RAM 中的数据不丢失。(乙)。 ALE/P(pin 30):访问外部存储器时,ALE(内容地址锁存信号)作为信号每机器周期输出两次,用于锁存端口P0上出现的低电压(C)。 PSEN(引脚 29)
14、:片外程序存储器读选通输出,低电平有效。当从外部程序存储器读取指令或常量时,PESN 在每个机器周期被置位两次,以通过数据总线端口读回指令或常量。访问外部数据存储器时,PESN 信号将不存在。(D)。 EA/Vpp(31脚):EA是访问外部程序存储器的控制信号,低电平有效。当 EA 端保持高电平时,单片机访问 4KB 的芯片程序存储器(MS-52 子系列为 8KB)。如果超过这个范围,会自动切换到执行外部程序存储器中的程序。当 EA 端保持低电平时,无论芯片是否有程序存储器,它都只访问外部程序存储器。对于包含 EPROM 的单片机,此引脚用于在 EPROM 编程时连接 21V 编程电源 Vpp
15、。(4) 输入/输出 (I/O) 引脚 P0 端口、P1 端口、P2 端口和 P3 端口(A).P0口(3922脚):P0.0P0.7统称为P0口。在没有外接存储器和扩展I/O接口的情况下,可作为准双向8位输入/输出接口使用。当连接外部程序存储器或扩展 I/O 端口时,P0 端口为地址/数据时分复用端口。它提供一个8位分时双向数据总线。对于带有EPROM的单片机,在EPROM编程时,从P0口输入指令字节,检查程序时,输出指令字节。(乙)。 P1口(pin 1pin 8):P1.0P1.7统称为P1口,可用作准双向I/O接口。对于MCS-52子系列单片机,P1.0和P1.1还有第二个作用:P1.
16、0作为定时器/计数器2的计数脉冲输入端T2; P1.1 用作定时器/计数器 2 外部控制端子 T2EX。对于 EPROM 编程和程序验证,P0 端口接收输入的低 8 位地址。(C).P2口(引脚2128):P2.0P2.7统称为P2口,一般可用作准双向I/O接口。当外接程序存储器或扩展 I/O 接口且寻址范围超过 256 字节时,P2 端口用于高 8 位地址总线致高 8 位地址。对于 EPROM 编程和程序验证,P2 端口接收输入的 8 位地址。(D).P3口(10-17脚):P3.0-P3.7统称为P3口。是双功能口,可以作为通用的准双向I/O接口,也可以每个位做第二个功能,P3口的每个管脚
17、可以独立定义为输入输出第一个功能或第二个功能。 2个功能。 P3口的第二个功能如下表所示表1 MCU P3.0管脚含义别针第二个功能P3.0RXD(串口输入0)P3.1TXD(串口输出)P3.2INT0(部分中断0请求输入,低电平有效)P3.3INT1(中断 1 请求输入,低电平有效)P3.4T0(定时器/计数器0计数脉冲端子)P3.5T1(定时器/计数器1计数脉冲端子)P3.6WR(部分数据存储器写选通信号输出,低电平有效)P3.7RD(部分数据存储器读选通信号输出,低电平有效)综上所述,MCS-51系列单片机的引脚功能可以归纳为以下两点:1)。单片机功能多管脚少,所以管脚多有第二个功能;2
18、)。单片机对外采用3总线形式,16位地址总线由P2和P0端口组成; P0 端口作为数据总线进行时分复用。(4) 温度传感器电路本课题的温度传感器采用单线数字温度传感器DS18B20。传感器输出信号通过 4.7K 上拉电阻直接连接到单片机的 P1.0 引脚。DS18B20温度传感器是应用美国达拉斯(DALLAS)半导体公司推出的单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D转换器、存储器等集成在一块小型集成电路芯片上。本设计中温度传感器选用单线数字器件DS18B20,是经过多方面比较和考虑后决定的,主要有以下几个原因:(1)系统特点:测温范围为-55至+125,测温精度为0.5;温度
19、转换精度为912位可变,温度转换值可直接转换为16位二进制数。串行输出; 12位精度转换最长时间为750ms;可通过数据线供电,超低功耗。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,价格越来越低。一只DS18B20的体积和普通三极管差不多,价格也只有十元左右。(3)系统复杂性:由于DS18B20是单总线设备,微处理器与其接口时只需要占用一个I/O口,一条总线上可以连接几十个DS18B20。测温无需外部元件,因此,与模拟传感器相比,可大大减少布线数量,降低系统复杂度,减少施工量。(4)系统的调试和维护:由于引线的减少,大大简化了系统的界面,给
20、系统的调试带来了方便。同时,由于DS18B20为全数字元件,故障率极低,抗干扰能力强,减少了系统的日常维护工作。DS18B20 温度传感器只有三个外部引线:单线数据传输总线端口 DQ、外部电源线 VDD 和公共地线 GND。 DS18B20有两种供电方式:一种为数据线供电,此时VDD接地。它在空闲时通过部分电容从数据线获取能量来完成温度转换,相应的完成温度转换的时间较长。在这种情况下,使用微控制器的 I/O 端口来上拉 DS18B20 总线。另一种是外接供电方式(VDD接+5V),对应完成测温的时间更短。本设计采用外接供电方式实现DS18B20传感器与单片机的连接,其接口电路如图4所示。图 4
21、 温度传感器接口(5) 系统电源电路设计本系统使用的电源稳压芯片为LM2596。开关稳压器是降压型电源管理单片机,可输出3A的驱动电流。输入电压为+5v,输入电压为+ 24v 。线性和负载调节特性。该器件集成了频率补偿和固定频率发生器,开关频率为150KHz。与低频开关稳压器相比,它可以使用更小的滤波元件。该器件还有一些其他特点:在一定的输入电压和输出负载条件下,输出电压误差可以保证在4%以内,振荡频率误差在15%以内;仅可使用80A的待机电流,实现外部断电;带自主保护电路(两级降频限流保护和异常断电过温完整保护电路)在本温控系统中,其电源电路设计如下图10所示。图 5 系统电源模块(6)液晶
22、显示电路本课题设计的温控系统采用128*64液晶屏作为显示模块,其接口示意图如下图6所示:图6 LCD接口电路(7) 串行通信电路本项目设计的通信采用普通串行通信,协议转换芯片采用MAX232A。接口示意图如下图7所示:图6 串行通信接口电路(8) 按键接口电路本项目使用的键盘模块的接口示意图如下图8所示:图 8 键盘模块电路(9) DS1302时钟电路本课题设计的时钟采用时钟芯片DS1302,其接口原理图如下图9所示:图 9 时钟接口电路(10) 内存接口电路本项目设计的存储器采用AT24C256,其接口原理图如下图10所示:图 10 内存电路3.系统软件设计系统软件主要采用C语言,进行改造
23、,实现单片机的各项功能。主程序初始化模块,然后调用读取温度、处理温度、显示、键盘等模块。循环查询方式用于显示和控制温度。主程序的主要功能是实时显示和控制温度,读取和处理DS18B20测量的当前温度值,调用各个子程序。程序流程如图 10 所示。程序流程图。开始初始化开始初始化启动启动DB18B20读温度计算温度LCD显示图 10 系统程序流程图(1) 温度计算子程序读取温度子程序的主要功能包括初始化,判断DS18B20是否存在,如果存在则进行一系列读取操作,不存在则返回。其程序流程图如图11所示。 开始 初始化 DS18B20存在?不 读取温度值 ROM操作指令 读取温度值 ROM操作指令 返回
24、 存储操作指令是的图 11 读取温度流程图(2) 按键处理子程序关键处理子程序主要负责参数的设置。主程序每循环一次对按键进行扫描,判断是否有输入按键被按下,然后进行一系列按键输入操作。其程序流程图如图12所示。 开始RNTER键是 否按下RNTER键是 否按下不是的ENTER-FLAGENTER-FLAG为1是的不是否由是否由ENTER按下是的ENTER子程序ENTER子程序flag=1不是否由是否由UP按下是的UP子程序UP子程序是否由DOWN按下是否由DOWN按下是的DOWNDOWN子程序不 DISPLAY显示不退出子程序(退出子程序(RET)返回主程 序图 12 温度转换流程图3) 计算
25、温度子程序温度计算子程序将RAM中读取的值转换为BCD码,判断温度值是正值还是负值。程序流程图如图 13 所示。 开始温度零下?温度值取补码置“”标志计算小数位温度BCD值计算整数位温度BCD值 结束置“+”标志NY图 13 计算温度子程序(4) 显示数据刷新子程序如果显示数据刷新子程序对显示缓冲区中的显示数据进行刷新操作,当最高显示位为0时,符号显示位移入下一位。程序流程图如图 14 所示。温度数据移入显示寄存器温度数据移入显示寄存器十位数0?百位数0?十位数显示符号百位数不显示百位数显示数据(不显示符号) 结束NNYY图 14 数据刷新子程序电路原理及接线实物图其组成和功能如下:安装在万能
26、板上的二路温控器如下图(没有成品印制板底板照片),由液晶屏、单片机、二路DS18B20传感器、时钟组成电路、存储电路、报警电路、键盘。它的主要功能是:实时测量温度值、当前时间、温度上下限等动态显示在液晶屏上。液晶显示界面2、当前内容的温度范围可以通过键盘进行设置,在液晶屏上显示,如“25-99”,表示内容的温度范围为25摄氏度到99摄氏度。五键按键定义如图3所示。在设置温度上下限时,先按“设置温度”键,液晶屏上的温度下限数据会闪烁,再按“加号”和“减号”键设置值;此时再次按“设定温度”键,进入温度上限设定状态。设置完成后,按“设置温度”键返回正常显示状态。设定的温度上下限数据自动保存到EEPR
27、OM芯片AT24C04中,系统掉电后设定的数据不会丢失,系统重新上电时可以自动加载上一次设定的数据。双通道测温功能可满足两点(可扩展为多点)测温系统。按“通道切换”键切换液晶屏显示的通道温度。多个温度传感器使用一条总线组成传感器网络,只占用单片机的一个IO口。系统上电时,自动检测传感器的数量和每个传感器的序列号,测温程序依次匹配每个传感器,测量温度。系统只需修改程序即可实现多路测温控制。具有温度超限报警功能。当传感器1的测量温度低于温度下限时,1L报警灯亮;当传感器1的温度高于温度上限时,1H报警灯亮;当传感器2的温度低于温度下限时,2L报警灯亮;当传感器2的温度高于温度上限时,2H警示灯亮。
28、采用不间断时钟电路,当前时间显示在液晶屏上。时钟电路有备用电池,系统掉电后时钟仍然运行,系统重新上电时显示当前时间,无需再次调整时间。时钟的初始值可以通过键盘进行调整。具体方法是连续按“设置时间”键,直到“年”、“月”、“日”、“时”、“分”、“秒”的相应位置闪烁,然后按“加号”键和“减”键调整数值,调整完毕后,继续按“设置时间”键进入正常状态。7、系统采用宏晶公司高性能单片机STC89C52。单片机为40引脚双列直插封装,引脚和程序与普通51单片机完全兼容。8.系统使用USB线供电USB线还可以作为程序串口下载线使用,无需其他编程器即可完成软件调试和程序下载,方便易用。结束语通过本毕业论文的
29、项目设计,我们学会了如何在实践中应用所学的书本知识,学会了如何思考整个控制系统的软硬件设计。我们在实践的过程中遇到了一些困难,但是在解决问题的过程中,我学会了团队合作的精神,学会了如何发现问题,分析问题,进而解决问题。这样的课程设计,不仅增强了学习专业课程的兴趣,也给了我们勇气和信心,更重要的是,为我们今后的学习指明了方向。参考1 光迪,朱月修,王秀山 单片机基础航空航天大学,2001(07)。2 蔡美琴,为民等。 MCS-51系列单片机系统及其应用高等教育,2004(06)。3 易纲,等。 MCS-51单片机应用设计M科技大学,1997 年。4瑞幸,胡健等.Protel DXP实战教程机械工
30、业,2003(04)。5 于海生. 计算机控制技术机械工业2007(05)6 谭浩强. C程序设计清华大学。7 康华光. 电子技术基础仿真高等教育1998(08)。8 于锡村 单片机原理与接口技术电子科技大学,2003。至本论文是在导师的悉心指导下完成的。在项目开题和论文写作过程中,老师给了我很多指导。指导老师始终以认真负责、一丝不苟的工作态度阅读和修改文章中的不足之处。他优秀的作风和严谨的学术态度深深地影响了我。在此,我向老师致以最诚挚的敬意和最崇高的敬意!同时,我要感谢我的同学们。是他们和我一起长大,一起学习了几年,才让我取得了今天的成绩。他们在平时的学习和生活中给予我无私的关心和帮助,在
31、此表达我最诚挚的心意。附件一:系统相关程序1、DS18B20底部驱动/ 延迟 N 毫秒/DS1820引脚定义位 TMDAT =P10;void DS1820_DelayCount(无符号字符计数)数据无符号字符计数;计数=计数;而(计数 0)计数-;计数=计数;而(计数 0)计数-;/复位DS18B20无效 DS1820_Reset(无效)TMDAT=0;DS1820_DelayCount(412);TMDAT=1;DS1820_DelayCount(16);/等待DS18B20请求无符号字符 DS1820_Answer(void)数据无符号整数 i;数据无符号字符 j;我=0 xc000;而
32、(TMDAT)一世 - ;如果 (i=0)返回(aban_return);我=0 xffff;j=3;而(TMDAT)一世 - ;如果 (i=0)如果(j=0)返回(aban_return);别的 j; 我=0 xffff; DS1820_DelayCount(16);返回(完成返回);/等待DS18B20请求/读取位位 DS1820_Readbit(void)数据int i=0;位数据;TMDAT=0;i+;i+;i+;i+;TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+;数据=TMDAT;/ DS1820_DelayCount(8);DS1820_DelayCount(32
33、);返回数据;/读取字节无符号字符 DS1820_Readbyte(void)数据无符号字符 i,j,dat=0;for(i=1;i=8;i+)j=DS1820_Readbit();dat=(j1);返回数据;/写一个字节无效 DS1820_Writebyte(无符号字符数据)数据签名 char i=0;数据无符号字符 j;位测试b;对于(j=1;j1;如果(测试b)TMDAT=0;i+;i+;i+;i+;i+;i+;i+;i+;TMDAT=1;/DS1820_DelayCount(8);DS1820_DelayCount(32);别的TMDAT=0;/DS1820_DelayCount(8)
34、;DS1820_DelayCount(32);TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+;/读操作开始无符号字符 DS1820_StartTem(void)EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=EA;返回(aban_return);/ DS1820_Delayms(1);DS1820_Delayms(4);DS1820_Writebyte(0 xcc);/ DS1820_Writebyte(0 x55);/ for(i=0;i8;i+)/DS1820_Writebyte(DS1820_tempi);DS1
35、820_Writebyte(0 x44);EA=EA;返回(完成返回);/读所有传感器int DS1820_ReadTem(void)数据无符号字符 a,b;数据 int y3;数据浮点 y4;数据无符号字符 i;EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return) EA=EA;返回(0 xffff);DS1820_Delayms(4);DS1820_Writebyte(0 xcc); /跳过匹配传感器/DS1820_Writebyte(0 x55); /匹配传感器/ for(i=0;i8;i+)/DS1820_Writebyte(run_in
36、f.system_index.DS1820_tempi);DS1820_Writebyte(0 xbe); /读取温度对于(i=0;i9;i+) run_inf.system_index.DS1820_tempi=DS1820_Readbyte();如果(CRC(9)!= 0) EA=1;返回(0 xffff);/计算CRCa = run_inf.system_index.DS1820_temp0;b = run_inf.system_index.DS1820_temp1;DS1820_Reset();y3 = (b0; i-)rtc_io = temp_0; /* 等价于汇编中的 RRC *
37、/rtc_sc = 1;rtc_sc = 0;温度 = 温度 1;/功能:从DS1302读取1Byte数据无符号字符 uc_RTOutputByte(void)无符号字符 i;rtc_io=1;for(i=8; i0; i-)温度 = 温度 1; /*等价于汇编中的RRC */temp_7 = rtc_io;rtc_sc = 1;rtc_sc = 0;返回(温度);/功能:向DS1302写入数据void write1302(无符号字符 ucAddr,无符号字符 ucDa)位EA;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc = 0;rtc_rs_por
38、t|=rtc_rs_bit;v_RTInputByte(ucAddr); /* 地址,命令 */v_RTInputByte(ucDa); /* 写入 1Byte 数据*/rtc_sc = 1;rtc_rs_port&=(rtc_rs_bit);EA = EA;/功能:读取DS1302某个地址的数据unsigned char read1302(unsigned char ucAddr)无符号字符 ucDa;位EA;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc = 0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr
39、); /* 地址,命令 */ucDa = uc_RTOutputByte(); /* 读取 1Byte 数据*/rtc_sc = 1;rtc_rs_port&=(rtc_rs_bit);EA = EA;返回(ucDa);/功能:设置初始时间无效 Set1302(pTime_S time_temp)无符号字符 i = 0 x80;写1302(0 x8e,0 x00); /* 控制命令,WP=0,写操作*/write1302(i,time_temp-sec);我+=2;write1302(i,time_temp-min);我+=2;write1302(i,time_temp-hou);我+=2;w
40、rite1302(i,time_temp-day);我+=2;write1302(i,time_temp-mon);我+=2;write1302(i,0 x02);我+=2;write1302(i,time_temp-是的);我+=2;写1302(0 x8e,0 x80); /* 控制命令,WP=1,写保护*/功能:读取DS1302的当前时间无效get1302(无效)无符号字符 i,time_bcd_temp6;无符号字符 ucAddr = 0 x81;对于 (i=0;i7;i+)time_bcd_tempi = read1302(ucAddr);/*格式为:秒分小时日月星期日*/ucAddr
41、 += 2;sec=time_bcd_temp0;min=time_bcd_temp1;侯=time_bcd_temp2;天=time_bcd_temp3;mon=time_bcd_temp4;是的=time_bcd_temp6;/连续6字节读取程序void ds1302_read(unsigned char *ptr,unsigned char addr)无符号字符 i;地址=地址*2+0 x0c1;for(i=0;i6;i+) *(ptr+i)=read1302(addr); 地址+=2; /连续6字节写程序无效 ds1302_write(无符号字符 *ptr,无符号字符地址)无符号字符
42、i;地址=地址*2+0 x0c0;写1302(0 x8e,0 x00); /写保护设置低(关闭)for(i=0;i6;i+) 写1302(地址,*(ptr+i); 地址+=2; 写1302(0 x8e,0 x80); /写保护设置高(打开)无效开始1302(无效)无符号字符温度;位EA;ea=EA;EA=0;温度=read1302(0 x81);温度&=0 x7f;写1302(0 x8e,0 x00); /* 控制命令,WP=0,写操作*/write1302(0 x80,温度);write1302(0 x90,0);写1302(0 x8e,0 x80); /* 控制命令,WP=1,写保护*/E
43、A=EA;/DS1302驱动端3.数据存储底层驱动/ATC256引脚定义sbit epr_sd=P33;sbit epr_sc=P32;bdata unsigned char temp1;sbit temp1_0 = temp10;sbit temp1_7 = temp17;/ 启动内存驱动无效诺亚克(无效)epr_sd=1;epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=0;无效问()无符号字符 i=0 xff;epr_sd=1;epr_sc=1;epr_sc=1;epr_sc=1;做一世 - ;如果(epr_sd=0) epr_sc=0; 我=0;while(i!=0)
44、;epr_sd=1;epr_sd=1;epr_sd=1;无效停止()epr_sd=0;epr_sd=0;epr_sd=0;epr_sc=1;epr_sc=1;epr_sc=1;epr_sd=1;epr_sd=1;epr_sd=1;epr_sd=1;/24c256 开始无效的开始()epr_sc=1;epr_sd=1;epr_sd=1;epr_sd=0;epr_sd=0;epr_sc=0;无效 wrby(无符号字符 x) 无符号字符 i;epr_sc=0;温度1=x;for(i=0;i8;i+) /从高位传输数据epr_sd=temp1_7; 温度1=温度11; /左移一位 epr_sc=1;e
45、pr_sc=1; epr_sc=1;epr_sc=1; epr_sc=0; /24c256rdbyunsigned char rdby() /从高位读取数据无符号字符 i;epr_sd=1;epr_sd=1;epr_sd=1;对于(i=0;i8;i+) epr_sc=1;epr_sc=1; 温度1=温度11; temp1_0=epr_sd; epr_sc=0;epr_sc=0;epr_sc=0; 返回(temp1);/24c256 waddr无效 waddr()开始();wrby(0 xa0);问();/24c256 raddr无符号字符 raddr()开始();wrby(0 xa1);问()
46、;temp1=rdby();诺亚克();停止();返回(temp1);无效 w16addr(无符号整数 x)联合无符号整数 int_type;无符号字符 char_type1;u_int_char;无符号 m,n;u_int__type=x; /将x的高位分配给m,将低位分配给nm=u_int_char.char_type0;n=u_int_char.char_type1;wrby(m);问();wrby(n);问();/ 延迟无效 d5ms()无符号字符 a, b;对于 (a=0;a=15;a+)对于 (b=0;b0 x7f;b+);/24c256读取一个字节unsigned char epr_read(unsigned int x)位EA;ea=EA;EA=0; /关闭中断EPR_WEN;d5ms();waddr();w16addr(x);temp1=raddr();EA=ea;/开启中断返回(temp1);/24c256写入一个字节void epr_write(unsigned int f, unsigned char x)位E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新媒体运营内容创作与传播技巧提升手册指导书
- 打造健康生产环境的承诺书3篇范文
- 公益项目信誉保证承诺函(8篇)
- 学校班主任工作规范与班级管理实施手册
- 设备延误交付赔补函4篇
- 演艺场所安全管理与服务规范手册
- 保险理赔业务与处理手册
- 电信业务运营与服务质量手册
- 产业协同项目推进承诺书7篇
- 2026湖南邵阳工业职业技术学院选调3人考试备考题库及答案解析
- 生态牛肉营销方案(3篇)
- 对外投资合作国别(地区)指南-马来西亚(2025年版)
- 建设项目火灾应急演练脚本
- 2025年大学生提干选拔考试历年真题试卷及答案
- 2023年4月22日福建省宁德市事业单位《综合基础知识》笔试试题及答案
- 2023年湖北省教师招聘特岗历年考题
- 中英文课外阅读:黑骏马
- 高中心理健康教育-目标成就未来教学课件设计
- 华为智慧化工园区解决方案-
- GB/T 37942-2019生产过程质量控制设备状态监测
- GB/T 33092-2016皮带运输机清扫器聚氨酯刮刀
评论
0/150
提交评论