欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    【精编】全自动电热水壶的设计(包含原理图和程序).pdf

    • 资源ID:83140211       资源大小:501.69KB        全文页数:53页
    • 资源格式: PDF        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【精编】全自动电热水壶的设计(包含原理图和程序).pdf

    单片机控制电热水壶温度的设计中文摘要随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计论述了一种以 STC89C52 单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。系统设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52 单片机最小系统,测温电路、实时时钟电路、LCD液晶显示电路以及通讯模块电路等。系统程序主要包括主程序,读出温度子程序,计算温度子程序、按键处理程序、LCD显示程序以及数据存储程序等。关键词 STC89C52单片机;DS18B20;显示电路目 录一、引言.4(一)课题研究的背景.4(二)课题研究的目的和意义.5二、硬件电路的设计.5(一)系统设计的框架.5(二)单片机最小系统电路.6(三)单片机的选型 .61.STC89C52 单片机简介.62.STC89C52 单片机时序.73.STC89C52 单片机引脚介绍.7(四)温度传感器电路.9(五)系统电源电路的设计.10(六)LCD 显示电路 .11(七)串口通讯电路 .12(八)按键接口电路 .13(九)DS1302 时钟电路 .13(十)存储器接口电路.13三、系统软件设计.14(一)计算温度子程序.15(二)按键处理子程序.15(三)计算温度子程序.16(四)显示数据刷新子程序.17四、结束语.18参考文献.19致谢.20附件 1:系统原理图.21附件 2:系统相关程序.22一、DS18B20 底层驱动程序 .22二、DS1302 时钟底层驱动程序.27三、数据存储底层驱动程序.33一、引言(一)课题研究的背景工业控制是计算机的一个重要应用领域,计算机控制系统正是为了适应这一领域的需要而发展起来的一门专业技术,它主要研究如何将计算机技术、通过信息技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统。随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计就是基于单片机STC89C52温度控制系统的设计,通过本次课程实践,我们更加的明确了单片机的广泛用途和使用方法,以及其工作的原理。(二)课题研究的目的和意义随着社会的发展,温度的测量及控制变得越来越重要。本文采用单片机STC89C52设计了温度实时测量及控制系统。单片机STC89C52 能够根据温度传感器DS18B20 所采集的温度在液晶屏上实时显示,通过控制从而把温度控制在设定的范围之内。所有温度数据均通过液晶显示器 LCD显示出来。系统可以根据时钟存储相关的数据。通过该课程的学习使我们对计算机控制系统有一个全面的了解、掌握常规控制算法的使用方法、掌握简单微型计算机应用系统软硬的设计方法,进一步锻炼同学们在微型计算机应用方面的实际工作能力。二、硬件电路的设计(一)系统设计的框架本课题设计的是一种以STC89C52 单片机为主控制单元,以DS18B20为温度传感器的温度控制系统。该控制系统可以实时存储相关的温度数据并记录当前的时间。其主要包括:电源模块、温度采集模块、按键处理模块、实时时钟模块、数据存储模块、LCD显示模块、通讯模块以及单片机最小系统。图 1 系统设计框架(二)单片机最小系统电路在课题设计的温度控制系统设计中,控制核心是STC89C52 单片机,该单片机为51 系列增强型 8 位单片机,它有 32 个 I/O 口,片内含 4K FLASH 工艺的程序存储器,便于用电的方式瞬间擦除和改写,而且价格便宜,其外部晶振为12MHz,一个指令周期为1S。使用该单片机完全可以完成设计任务,其最小系统主要包括:复位电路、震荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图 2 所示:图 2 单片机最小系统(三)单片机的选型本课题设计的温度控制系统主控制芯片选型为STC89C52 单片机,其特点如下:1.STC89C52单片机简介目前,51 系列单片机在工业检测领域中得到了广泛的应用,因此我们可以在许多单片机应用领域中,配接各种类型的语音接口,构成具有合成语音输出能力的综合应用系统,以增强人机对话的功能。STC89C52 单片机是深圳宏晶科技有限公司生产的一种单片机,在一小块芯片上集成了一个微型计算机的各个组成部分。每一个单片机包括:一个8 位的微型处理器 CPU;一个 512K的片内数据存储器RAM;4K片内程序存储器;四个8 位并行的I/O 接口 P0-P3,每个接口既可以输入,也可以输出;两个定时器/记数器;五个中断源的中断控制系统;一个全双工UART的串行 I/O 口;片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接。最高允许振荡频率是12MHZ。以上各个部分通过内部总线相连接。2.STC89C52单片机时序 STC89C52单片机的一个执器周期由6 个状态(s1 s6)组成,每个状态又持续 2 个震荡周期,分为 P1和 P2两个节拍。这样,一个机器周期由12个振荡周期组成。若采用12MHz的晶体振荡器,则每个机器周期为1us,每个状态周期为16us;在一数情况下,算术和逻辑操作发生在 N期间,而内部寄存器到寄存器的传输发生在P2期间。对于单周期指令,当指令操作码读人指令寄存器时,使从S1P2 开始执行指令。如果是双字节指令,则在同一机器周期的 s4 读人第二字节。若为单字节指令,则在51 期间仍进行读,但所读入的字节操作码被忽略,且程序计数据也不加1。在加结束时完成指令操作。多数STC89C52 指令周期为 12 个机器周期,只有乘法和除法指令需要两个以上机器周期的指令,它们需4个机器周期。对于双字节单机器指令,通常是在一个机器周期内从程序存储器中读人两个字节,但 Movx指令例外,Movx指令是访问外部数据存储器的单字节双机器周期指令,在执行 Movx指令期间,外部数据存储器被访问且被选通时跳过两次取指操作。3.STC89C52单片机引脚介绍STC89C52 单片机的 40 个引脚中有 2 个专用于主电源引脚,2 个外接晶振的引脚,4 个控制或与其它电源复用的引脚,以及32 条输入输出 I/O 引脚。下面按引脚功能分为4 个部分叙述个引脚的功能。(1)电源引脚 Vcc 和 Vss Vcc(40 脚):接+5V电源正端;Vss(20 脚):接+5V电源正端。(2)外接晶振引脚XTAL1和 XTAL2 XTAL1(19 脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS 单片机,该引脚接地;对于CHOMS 单片机,该引脚作为外部振荡信号的输入端。XTAL2(18 脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS 单片机,该引脚作为外部振荡信号的输入端。对于 CHMOS 芯片,该引脚悬空不接。(3)控制信号或与其它电源复用引脚控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN 和 EA/VPP等 4 种形式。(A)RST/VPD(9 脚):RST即为 RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。当 VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部 RAM 供电,以保证 RAM 中的数据不丢失。(B)ALE/P(30 脚):当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低(C)PSEN(29脚):片外程序存储器读选通输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期 PESN 两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN 信号将不出现。(D)EA/Vpp(31 脚):EA为访问外部程序储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片内程序存储器4KB(MS 52子系列为 8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当EA 端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM 的单片机,在 EPROM 编程期间,该引脚用于接 21V的编程电源 Vpp。(4)输入/输出(I/O)引脚 P0口、P1口、P2口及 P3口(A).P0 口(39 脚22 脚):P0.0P0.7 统称为 P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8 位输入/输出接口。当接有外部程序存储器或扩展I/O 口时,P0口为地址/数据分时复用口。它分时提供8 位双向数据总线。对于片内含有EPROM 的单片机,当EPROM 编程时,从 P0 口输入指令字节,而当检验程序时,则输出指令字节。(B).P1 口(1 脚8 脚):P1.0P1.7 统称为 P1口,可作为准双向I/O 接口使用。对于 MCS 52 子系列单片机,P1.0 和 P1.1 还有第 2 功能:P1.0 口用作定时器/计数器 2 的计数脉冲输入端 T2;P1.1 用作定时器/计数器 2 的外部控制端 T2EX。对于 EPROM 编程和进行程序校验时,P0口接收输入的低8位地址。(C).P2 口(21 脚28 脚):P2.0P2.7 统称为 P2口,一般可作为准双向I/O 接口。当接有外部程序存储器或扩展I/O 接口且寻址范围超过256 个字节时,P2口用于高 8 位地址总线送出高 8 位地址。对于 EPROM 编程和进行程序校验时,P2口接收输入的 8 位地址。(D).P3 口(10 脚17 脚):P3.0P3.7 统称为 P3口。它为双功能口,可以作为一般的准双向 I/O 接口,也可以将每1 位用于第 2 功能,而且 P3 口的每一条引脚均可独立定义为第 1 功能的输入输出或第2 功能。P3口的第 2 功能见下表表 1 单片机 P3.0 管脚含义综 上所 述,MCS 51系 列 单片 机 的引 脚 作用 可 归纳 为 以下两点:1).单片机功能多,引脚数少,因而许多引脚具有第2 功能;引脚第 2 功能P3.0 RXD(串行口输入端0)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(部数据存储器读选通信号输出端,低电平有效)2).单片机对外呈 3 总线形式,由 P2、P0口组成 16 位地址总线;由 P0口分时复用作为数据总线。(四)温度传感器电路采用一线制数字温度传感器DS18B20 来作为本课题的温度传感器。传感器输出信号进4.7K 的上拉电阻直接接到单片机的P1.0 引脚上。DS18B20温度传感器是美国达拉斯(DALLAS)半导体公司推出的应用单总线技术的数字温度传感器。该器件将半导体温敏器件、A/D 转换器、存储器等做在一个很小的集成电路芯片上。本设计中温度传感器之所以选择单线数字器件DS18B20,是在经过多方面比较和考虑后决定的,主要有以下几方面的原因:(1)系统的特性:测温范围为-55+125,测温精度为士 0.5;温度转换精度912 位可变,能够直接将温度转换值以16 位二进制数码的方式串行输出;12 位精度转换的最大时间为 750ms;可以通过数据线供电,具有超低功耗工作方式。(2)系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20 的体积与普通三极管相差无几,价格只有十元人民币左右。(3)系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1 个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少工程的施工量。(4)系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调试带来方便。同时因为DS18B20 是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。DS18B20 温度传感器只有三根外引线:单线数据传输总线端口DQ,外供电源线 VDD,共用地线 GND。DS18B20有两种供电方式:一种为数据线供电方式,此时VDD接地,它是通过内部电容在空闲时从数据线获取能量,来完成温度转换,相应的完成温度转换的时间较长。这种情况下,用单片机的一个I/O 口来完成对 DS18B20 总线的上拉。另一种是外部供电方式(VDD接+5V),相应的完成温度测量的时间较短。在本设计中采用外部供电方式实现DS18B20 传感器与单片机的连接,其接口电路如图4 所示。图 4 温度传感器接口(五)系统电源电路的设计本系统采用电源稳压芯片是LM2596,该开关电压调节器是降压型电源管理单片集成电路,能够输出 3A的驱动电流,输入电压是+5v,输入电压是+24v,同时具有很好的线性和负载调节特性。该器件内部集成频率补偿和固定频率发生器,开关频率为150KHz,与低频开关调节器相比较,可以使用更小规格的滤波元件。该器件还有其他一些特点:在特定的输入电压和输出负载的条件下,输出电压的误差可以保证在 4%的范围内,振荡频率误差在15%的范围内;可以用仅80A的待机电流,实现外部断电;具有自我保护电路(一个两级降频限流保护和一个在异常情况下断电的过温完全保护电路)在该温度控制系统中,其电源电路设计如下图10 所示。图 5 系统电源模块(六)LCD显示电路本课题设计的温度控制系统是采用液晶屏128*64 作为显示模块,其接口原理图如下图 6 所示:图 6 液晶显示接口电路(七)串口通讯电路本课题设计的通讯采用的是常见的串口通讯,协议转换芯片是采用MAX232A,其接口原理图如下图 7 所示:图 6 串口通讯接口电路(八)按键接口电路本课题设计采用的键盘模块,其接口原理图如下图8 所示:图 8 键盘模块电路(九)DS1302时钟电路本课题设计的时钟是采用时钟芯片DS1302,其接口原理图如下图9所示:图 9 时钟接口电路(十)存储器接口电路本课题设计的存储器采用的是AT24C256,其接口原理图如下图十所示:图 10 存储器电路三、系统软件设计系统的软件主要是采用C语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘等模块。用的是循环查询方式,来显示和控制温度,主程序的主要功能是负责温度的实时显示、读出并处理DS18B20 的测量的当前温度值并负责调用各子程序,其程序流程如图 10 系统程序流程图。开始初始化图 10 系统程序流程图(一)计算温度子程序读出温度子程序的主要功能包括初始化,判断 DS18B20是否存在,若存在则进行一系列的读操,作若不存在则返回。其程序流程图如图11 所示。启动 DB18B20 读温度计算温度LCD 显示图 11 读温度流程图(二)按键处理子程序按键处理子程序主要是负责参数的设置,主程序每循环一次都要对按键进行扫描,判断是否有输入键按下则进行一系列的按键输入操作。其程序流程框图如图12所示。图 12 温度转换流程图(三)计算温度子程序计算温度子程序将RAM 中读取值进行 BCD 码的转换运算,并进行温度值正负的判定,其程序流程图如图13 所示。图 13 计算温度子程序(四)显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高显示位为 0 时将符号显示位移入下一位。程序流程图如图14。开始温度零下?温度值取补码置“”标志计算小数位温度 BCD 值计算整数位温度 BCD 值结束置“+”标志N Y 图 14 数据刷新子程序四、结束语通过此次毕业论文的课题设计,我们学会了怎样把所学的书本知识应用于实践中去,并学会了如何去思考整个控制系统的软硬件设计。实践过程中我们遇到了一些困难,但在解决问题的过程中,我们学会了团队合作精神和怎样发现问题、分析问题,进而解决问题。此次课程设计不仅增强了我们学习专业课的兴趣,而且给了我们勇气和信心,更重要的是它为我们以后的学习指明了方向。温度数据移入显示寄存器十位数 0?百位数 0?十位数显示符号百位数不显示百位数显示数据(不显示符号)结束N N Y Y 参考文献1 李广弟,朱月秀,王秀山.单片机基础北京航空航天大学出版社,2001(07).2 蔡美琴,张为民等.MCS-51 系列单片机系统及其应用高等教育出版社,2004(06).3 张毅刚,等.MCS-51单片机应用设计 M.哈尔滨工业大学出版社,1997.4 刘瑞星,胡健等.Protel DXP 实用教程机械工业出版社,2003(04).5 于海生.计算机控制技术机械工业出版社 2007(05).6 谭浩强.C程序设计清华大学出版社.7 康华光.电子技术基础模拟部分高等教育出版社 1998(08).8 余锡存.单片机原理与接口技术西安电子科技大学出版社,2003.致谢本论文是在我的指导老师密切关心和悉心指导下完成的。老师在课题开题期间和论文写作的过程中给予了我许多指导,导师总是以认真负责、一丝不苟的工作态度阅读并修改文章中不足的地方,他优良的作风和严谨治学的态度深深影响着我,至此,向恩师致以最真挚的感谢和最崇高的敬意!同时我要感谢我的同学,特别是我的室友们,正是他们在这几年里陪我一起成长,一起学习,才让我有了今天的成绩。他们在平时的学习和生活中他们给予了我无私的关怀和帮助,在此表示我最诚挚的谢意。附件 1:系统原理图附件 2:系统相关程序一、DS18B20 底层驱动程序/延时 N ms/DS1820 引脚定义sbit TMDAT =P10;void DS1820_DelayCount(unsigned char Coun)data unsigned char Count;Count=Coun;while(Count0)Count-;Count=Coun;while(Count0)Count-;/复位 DS18B20 void DS1820_Reset(void)TMDAT=0;DS1820_DelayCount(412);TMDAT=1;DS1820_DelayCount(16);/等待 DS18B20 应答unsigned char DS1820_Answer(void)data unsigned int i;data unsigned char j;i=0 xc000;while(TMDAT)i-;if(i=0)return(aban_return);i=0 xffff;j=3;while(TMDAT)i-;if(i=0)if(j=0)return(aban_return);else j-;i=0 xffff;DS1820_DelayCount(16);return(done_return);/等待 DS18B20 应答/读取位bit DS1820_Readbit(void)data int i=0;bit dat;TMDAT=0;i+;i+;i+;i+;TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+;dat=TMDAT;/DS1820_DelayCount(8);DS1820_DelayCount(32);return dat;/读取字节unsigned char DS1820_Readbyte(void)data unsigned char i,j,dat=0;for(i=1;i=8;i+)j=DS1820_Readbit();dat=(j1);return dat;/写一个字节void DS1820_Writebyte(unsigned char dat)data signed char i=0;data unsigned char j;bit testb;for(j=1;j1;if(testb)TMDAT=0;i+;i+;i+;i+;i+;i+;i+;i+;TMDAT=1;/DS1820_DelayCount(8);DS1820_DelayCount(32);else TMDAT=0;/DS1820_DelayCount(8);DS1820_DelayCount(32);TMDAT=1;i+;i+;i+;i+;i+;i+;i+;i+;/读操作开始unsigned char DS1820_StartTem(void)EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=Ea;return(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);DS1820_Writebyte(0 x44);EA=Ea;return(done_return);/读所有传感器int DS1820_ReadTem(void)data unsigned char a,b;data int y3;data float y4;data unsigned char i;EA=0;DS1820_Reset();if(DS1820_Answer()=aban_return)EA=Ea;return(0 xffff);DS1820_Delayms(4);DS1820_Writebyte(0 xcc);/跳过匹配传感器 /DS1820_Writebyte(0 x55);/匹配传感器 /for(i=0;i8;i+)/DS1820_Writebyte(run_inf.system_index.DS1820_tempi);DS1820_Writebyte(0 xbe);/读取温度 for(i=0;i9;i+)run_inf.system_index.DS1820_tempi=DS1820_Readbyte();if(CRC(9)!=0)EA=1;return(0 xffff);/计算 CRC a=run_inf.system_index.DS1820_temp0;b=run_inf.system_index.DS1820_temp1;DS1820_Reset();y3=(b0;i-)rtc_io=temp_0;/*相当于汇编中的 RRC*/rtc_sc=1;rtc_sc=0;temp=temp 1;/功能:从 DS1302读取 1Byte 数据unsigned char uc_RTOutputByte(void)unsigned char i;rtc_io=1;for(i=8;i0;i-)temp=temp 1;/*相当于汇编中的 RRC*/temp_7=rtc_io;rtc_sc=1;rtc_sc=0;return(temp);/功能:往 DS1302写入数据void write1302(unsigned char ucAddr,unsigned char ucDa)bit ea;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc=0;rtc_rs_port|=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)unsigned char ucDa;bit ea;ea=EA;EA=0;rtc_rs_port&=(rtc_rs_bit);rtc_sc=0;rtc_rs_port|=rtc_rs_bit;v_RTInputByte(ucAddr);/*地址,命令*/ucDa=uc_RTOutputByte();/*读 1Byte 数据*/rtc_sc=1;rtc_rs_port&=(rtc_rs_bit);EA=ea;return(ucDa);/功能:设置初始时间void Set1302(pTime_S time_temp)unsigned char i=0 x80;write1302(0 x8e,0 x00);/*控制命令,WP=0,写操作*/write1302(i,time_temp-sec);i+=2;write1302(i,time_temp-min);i+=2;write1302(i,time_temp-hou);i+=2;write1302(i,time_temp-day);i+=2;write1302(i,time_temp-mon);i+=2;write1302(i,0 x02);i+=2;write1302(i,time_temp-yea);i+=2;write1302(0 x8e,0 x80);/*控制命令,WP=1,写保护*/功能:读取 DS1302当前时间void get1302(void)unsigned char i,time_bcd_temp6;unsigned char ucAddr=0 x81;for(i=0;i7;i+)time_bcd_tempi=read1302(ucAddr);/*格式为:秒 分 时 日 月星期 年*/ucAddr+=2;sec=time_bcd_temp0;min=time_bcd_temp1;hou=time_bcd_temp2;day=time_bcd_temp3;mon=time_bcd_temp4;yea=time_bcd_temp6;/连续 6 字节读出程序void ds1302_read(unsigned char*ptr,unsigned char addr)unsigned char i;addr=addr*2+0 x0c1;for(i=0;i6;i+)*(ptr+i)=read1302(addr);addr+=2;/连续 6 字节写入程序void ds1302_write(unsigned char*ptr,unsigned char addr)unsigned char i;addr=addr*2+0 x0c0;write1302(0 x8e,0 x00);/写保护置低(关闭)for(i=0;i6;i+)write1302(addr,*(ptr+i);addr+=2;write1302(0 x8e,0 x80);/写保护置高(打开)void Start1302(void)unsigned char temp;bit ea;ea=EA;EA=0;temp=read1302(0 x81);temp&=0 x7f;write1302(0 x8e,0 x00);/*控制命令,WP=0,写操作*/write1302(0 x80,temp);write1302(0 x90,0);write1302(0 x8e,0 x80);/*控制命令,WP=1,写保护*/EA=ea;/DS1302 驱动程序结束三、数据存储底层驱动程序/ATC256 引脚定义sbit epr_sd=P33;sbit epr_sc=P32;bdata unsigned char temp1;sbit temp1_0=temp10;sbit temp1_7=temp17;/存储器驱动程序开始void noack(void)epr_sd=1;epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=0;void ask()unsigned char i=0 xff;epr_sd=1;epr_sc=1;epr_sc=1;epr_sc=1;do i-;if(epr_sd=0)epr_sc=0;i=0;while(i!=0);epr_sd=1;epr_sd=1;epr_sd=1;void stop()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 start void start()epr_sc=1;epr_sd=1;epr_sd=1;epr_sd=0;epr_sd=0;epr_sc=0;void wrby(unsigned char x)unsigned char i;epr_sc=0;temp1=x;for(i=0;i8;i+)/从高位开始传送数据 epr_sd=temp1_7;temp1=temp11;/左移一位 epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=1;epr_sc=0;/24c256 rdby unsigned char rdby()/从高位开始读出数据 unsigned char i;epr_sd=1;epr_sd=1;epr_sd=1;for(i=0;i8;i+)epr_sc=1;epr_sc=1;temp1=temp11;temp1_0=epr_sd;epr_sc=0;epr_sc=0;epr_sc=0;return(temp1);/24c256 waddr void waddr()start();wrby(0 xa0);ask();/24c256 raddr unsigned char raddr()start();wrby(0 xa1);ask();temp1=rdby();noack();stop();return(temp1);void w16addr(unsigned int x)union unsigned int int_type;unsigned char char_type1;u_int_char;unsigned m,n;u_int_char.int_type=x;/将 x 的高位赋给 m,低位赋给 n m=u_int_char.char_type0;n=u_int_char.char_type1;wrby(m);ask();wrby(n);ask();/延时void d5ms()unsigned char a,b;for(a=0;a=15;a+)for(b=0;b00H;0.0625*2=0.125-01H;0.0625*3=0.1875-01H;0.0625*4=0.25-02H;0.0625*5=0.3125-03H;以此类推.;程序名称:HtoB;功能:十六进制转 BCD;入口参数:A;出口参数:R7 HtoB:MOV B,#064H;100 DIV AB;a/100 MOV R7,A;MOV A,#0AH XCH A,B DIV AB SWAP A ORL A,B RET;程序名称:INIT_TEMP;功能:初始化 DS18B20,确定 DS18B20是否是存在的;入口参数:无;出口参数:FLAG INIT_TEMP:SETB P_DS18B20 NOP CLR P_DS18B20 ;主机发出延时537 微秒的复位低脉冲 MOV R0,#6BH MOV R1,#04H TSR1:DJNZ R0,$MOV 40,#6BH DJNZ R1,TSR1 SETB P_DS18B20;然后拉高数据线,释放总线进入接受状态 NOP NOP NOP MOV R0,#32H TSR2:JNB P_DS18B20,TSR3 ;等待 DS18B20回应 DJNZ R0,TSR2 LJMP TSR4 ;延时TSR3:SETB FLAG ;置标志位,表示 DS1820存在 LJMP TSR5 TSR4:CLR FLAG;清标志位,表示 DS1820不存在 LJMP TSR7 TSR5:MOV R0,#06BH TSR6:DJNZ R0,TSR6;时序要求延时一段时间TSR7:SETB P_DS18B20 RET;程序名称:READ_TEMP;功能:读取 DS18B20的数据;入口参数:TEMPERATURE_L,TEMPERATURE_H;出口参数:无READ_TEMP:SETB P_DS18B20 LCALL INIT_TEMP;先复位 DS18B20 JB FLAG,TSS2 RET ;判断 DS1820是否存在?若 DS18B20不存在则返回TSS2:MOV A,#0CCH;跳过 ROM 匹配 LCALL WRITE_18B20 MOV A,#44H ;发出温度转换命令 LCALL WRITE_18B20 LCALL DISPLAY ;等待 AD转换结束,12 位的话 750 微秒 LCALL INIT_TEMP ;准备读温度前先复位 MOV A,#0CCH;跳过 ROM 匹配 LCALL WRITE_18B20 MOV A,#0BEH ;发出读温度命令 LCALL WRITE_18B20 LCALL READ_18B20 ;将读出的温度数据保存到35H/36H RET 程序名称:WRITE_18B20;功能:将 A保存的数值写入DS1820中,;入口参数:A 寄存器;出口参数:无WRITE_18B20:MOV R2,#8 ;一共 8 位数据,串行通信CLR CWR1:CLR P_DS18B20 MOV R3,#07 DJNZ R3,$RRC A ;循环右移MOV P_DS18B20,C MOV R3,#3CH DJNZ R3,$;23*2=46微妙SETB P_DS18B20 NOP DJNZ R2,WR1;A里面一共是8 位,所以要送8 次SETB P_DS18B20;释放总线RET;程序名称:READ_18B20;功能:读取 18B20中的数据,由于是串行通信,每次读取一个,循环8 次读取;入口参数:TEMPRATURE_L;出口参数:无READ_18B20:MOV R4,#4 ;将温度高位和低位从DS18B20中读出MOV R1,#TEMPERATURE_L RE00:MOV R2,#8 ;数据一共有8 位RE01:CLR C SETB P_DS18B20 NOP NOP CLR P_DS18B20 NOP NOP NOP SETB P_DS18B20 MOV R3,#09RE10:DJNZ R3,RE10 MOV C,P_DS18B20 MOV R3,#3CHRE20:DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV R1,A DEC R1 DJNZ R4,RE00 RET;程序名称:SCAN_KEY;功能:扫描键盘;入口参数:DIS_BUF_G,DIS_BUF_S,DIS_BUF_B;出口参数:KEY_BUF_G,KEY_BUF_S,kEY_BUF_BSCAN_KEY:JB K_ENTER,QUIT ;如果又 Enter 键入,则开始键盘输入LCALL K_DELAY JB K_ENTER,QUIT CLR ENTER_FLAG ;每次进来都赋值输入标志,设置为0 MOV KEY_BUF_G,DIS_BUF_G;将当前的温度赋值给KEY_BUF MOV KEY_BUF_S,DIS_BUF_S MOV KEY_BUF_B,DIS_BUF_BK_LOOP:JB ENTER_FLAG,QUIT;如果输入完成,ENTER_FLAG 则为 1,退出键盘程;序JB K_ENTER,KUPCALL PRO_ENTERKUP:JB K_UP,KDOWN CALL PRO_UPKDOWN:JB K_DOWN,LOOPA CALL PRO_DOWNLOOPA:LCALL DISPLAY SJMP K_LOOPQUIT:RET;程序名称:PRO_ENTER;功能:确认键盘输入和退出键盘输入;入口参数:ENTER_FLA

    注意事项

    本文(【精编】全自动电热水壶的设计(包含原理图和程序).pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开