




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文(设计)中文题目基于单片机的电子万年历英文题目THEELECTRONICCALENDARBASEDONSCM专业班级09电子信息工程2班提交日期2013515摘要随着科学技术的不断发展,人们的生活水平不断提高,传统的万年历已经不足以满足人们的需求。随着万年历的多功能化,社会上出现了各种各样的电子万年历,其中,单片机的电子万年历有着巨大的市场潜力。本设计着重描述的就是基于AT89C52的单片机的电子万年历。本文首先论证各主要模块芯片的选择,随后介绍了本系统所应用的各个接口模块的主要功能及工作过程。本设计是通过软硬件相结合来进行各模块功能的实现。电子万年历以C语言为主体进行软件编写,使程序的可读性和可移植性更高。系统通过DS18B20采集温度信息、LCD1602小液晶显示数据,可以显示当前日期、时间、星期、温度,并附有以峰鸣器为提示的闹铃功能。关键词单片机电子万年历日期接口模块C语言THEELECTRONICCALENDARBASEDONSCMABSTRACTWITHTHEDEVELOPMENTOFSCIENCEANDTECHNOLOGY,PEOPLESLIVINGSTANDARDSIMPROVE,THETRADITIONALCALENDARHASBEENINSUFFICIENTTOMEETPEOPLESNEEDSASTHECALENDARBECOMEMULTIFUNCTIONAL,ALLKINDSOFELECTRONICCALENDARHASAPPEAREDINOURSOCIETY,ESPECIALLYTHEELECTRONICCALENDAR,WHICHISBASEDONSCM,HASAHUGEPOTENTIALTHISDESIGNFOCUSESONTHEDESCRIPTIONOFTHEELECTRONICCALENDARISBASEDONAT89C52SCMTHISTEXTDEMONSTRATESTHESELECTIONABOUTTHECHIPSOFEACHMAINMODULESFIRST,ANDTHENINTRODUCESMAINFUNCTIONSANDWORKINGPROCESSOFEACHINTERFACEMODULE,WHICHISAPPLYTOTHESYSTEMTHISDESIGNISBYACOMBINATIONOFHARDWAREANDSOFTWAREREALIZATIONOFEACHMODULEFUNCTIONTHEELECTRONICCALENDARUSESCLANGUAGEASTHEMAINPROGRAM,INORDERTOMAKETHEPROGRAMSREADABILITYANDPORTABILITYBEHIGHERTHESYSTEMCOLLECTSTEMPERATUREINFORMATIONBYDS18B20,ANDDISPLAYDATABYLCD1602,ITCANDISPLAYTHECURRENTDATE,TIME,WEEK,TEMPERATURE,TOGETHERWITHABUZZERALARMFUNCTIONFORTHETIPSKEYWORDSCMTHEELECTRONICCALENDARDATEINTERFACEMODULECLANGUAGE目录1绪论211课题研究目的和意义212万年历的国内外发展状况概况213本研究的技术要求314本研究指导思想32芯片的选择和论证321单片机芯片的选择方案和论证322显示模块选择方案和论证423温度传感器的选择方案和论证424键盘模块的选择方案和论证525时钟芯片的选择方案和论证526电路设计最终方案决定53硬件模块图64系统硬件仿真和软件调试工具641PROTUESISIS简介642KEILC51UVISION2简介75本研究中的主要模块851主控模块(AT89C52模块)852DS1302时钟模块953DS18B20温度模块1452LCD1602显示模块1953时间可调模块236实验结果247设计总结26结束语27鸣谢28参考文献29附录130附录2311绪论11课题研究目的和意义随着人们的生活水平不断提高,工作节奏不断加快,人们对时间的准确把握要求越来越高,倘若因为其他原因而忘记了时间,这将会带来巨大的损失。虽然在日常生活中,各种设备如手表、手机等给我们提供了准确的时间信息,但是在大多数场合却仅仅局限于个人的使用范围之内。在家居生活中,在社会工作中,一款高挂于墙上设计独特的电子万年历不仅能为我们提供准确的时间信息,而且美化了环境,给单调的工作、生活带来了现代化气息,因而成为了许多人的必备之选。随着电子万年历多功能化,它在各种领域的使用越来越广泛,给人们的生活、学习、工作带来了极大的方便。电子万年历具有设计美观、功能多样、直观清晰、信息量大等优点,正成为家庭、商场、公共场所等新的消费热点,有着巨大的市场潜力。12万年历的国内外发展状况概况从现代电子技术发展历程来看,大致可以分为三个典型阶段(1)20世纪70年代,在集成电路制作方面,MOS工艺得到广泛的应用。可编程逻辑技术及其器件已经问世,计算机作为一种运算工具已经在科研领域得到广泛应用。在70年代后期,CAD的概念已现雏形,这一阶段人们开始利用计算机辅助进行集成电路版图编辑、PCB布局布线等工作。(2)20世纪80年代,集成电路设计进入了CMOS(互补场效应管)时代,复杂可编程逻辑器件已经进入商业应用,相应的辅助设计软件也已投入使用,而在80年代末期,出现了FPGA(FIELDPROGRAMMABLEGATEARRAY),CAE和CAD技术的应用更为广泛,它们在PCB设计方面的原理图输入、自动布局布线及PCB分析,以及逻辑设计、逻辑仿真、布尔方程综合和化简等方面担任了重要角色。特别是各种硬件描述语言HDL(HARDWAREDESCRIPTIONLANGUAGE)的出现、应用和标准化方面的重大进步,为EDA(ELECTRONICDESIGNAUTOMATION,电子设计自动化)技术必须解决的电路建模、标准文档及仿真测试奠定了基础。(3)进入20世纪90年代,随着硬件描述语言的标准化得到进一步的确立,计算机辅助工程、辅助分析和辅助设计在电子技术领域获得了更加广泛的应用,与此同时,电子技术在通信、计算机及家电产品生产中的市场需求和技术需求,也极大地推动了全新的电子设计自动化技术的应用和发展。特别是集成电路设计工艺步入了超深亚微米阶段,百万门以上的大规模可编程逻辑器件的陆续面世,以及基于计算机技术的面向用户的低成本大规模ASIC设计技术的应用,促进了EDA技术的形成。20世纪末期以来,电子设计技术获得了飞速的发展。现代电子技术产品几乎渗透到社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。多功能数字钟不管在性能还是在样式上都发生了质的变化,有电子闹钟、数字闹钟等等。单片机在多功能数字钟中的应用已是非常普遍的,人们对数字钟的功能及工作顺序都非常熟悉。基于单片机的数字钟的设计,采用灵活的编程,可以轻松的完成对数字钟的功能扩展。另外是以基于数字电路的多功能数字钟。数字钟的时钟显示则由最初的单个数码管显示,随着科技的发展,数码管则逐渐被液晶显示所替代。在不断满足人们日益需求的同时,其功能更是再不断扩展。数字钟的发展同样进入了新的阶段,更直观,更易于操作,功能更多,更实用的电子钟将不断的进入人们的生活。市场的强烈需求极大地推动了现代电子技术的发展,产品的集成化程度越来越高,同时产品更新换代的节奏也变得越来越快。13本研究的技术要求通过查询多方面的信息,本研究设计了一款读取方便、显示直观,功能多样、电路简洁、成本低廉的电子万年历。本研究要求设计的电子万年历不仅能显示时间、星期、公历日期信息,还能实现整点报时、掉电计时、实时温度显示等功能。14本研究指导思想本研究先对系统所需要的主要芯片进行选择和论证,确定了选用AT89C52单片机作为系统的主要控制芯片,时钟芯片DS1302提供时钟,DS18B20温度传感器实现实时温度显示,而显示部分采用的是LCD1602显示屏。接着简要的介绍了系统的调试工具,而重点是对相应主要模块的硬件进行详细的讲解。比如AT89C52、DS1302、DS18B20和LCD1602A等芯片的引脚功能和工作原理。有利于读者对各模块的理解。在最后给出全局程序和电路原理图,让读者理清整个设计的来龙去脉。2芯片的选择和论证21单片机芯片的选择方案和论证方案一采用FTC10F04单片机,还带有非易失性FLASH程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。其主要特点是8KBFLASHROM,可擦除1000次以上,数据保存10年。方案二采用AT89C52单片机作为系统的控制中心,它在结构上把CPU、存储器、定时器、I/O接口电路集成在一块大规模的集成电路芯片上,具有集成度高、体积小、控制功能强、功耗低、低电压、便于携带等优点。所以选择采用方案二为主要方案,方案一为备用方案。22显示模块选择方案和论证方案一采用LED数码管动态扫描,虽然LED数码管价格适中,对于显示数字也比较合适,然而需要显示多位数字和字母时,编程就会变得很复杂,而且占用的单片机口线多。方案二采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示方案三采用LCD液晶显示屏,LCD液晶显示屏尽管价格比较贵,但它的显示功能强大,可显示大量字符,显示多样,清晰可见,需要的接口线少。所以采用LCD液晶显示屏作为显示。23温度传感器的选择方案和论证方案一使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。方案二采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。所以采用数字式温度传感器DS18B20测量温度。24键盘模块的选择方案和论证在对日期和时间进行切换,对日期和时间进行调节校准过程中,系统需要产生激励电流,因此需要用按键。方案一使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。方案二使用矩阵式键盘。矩阵式键盘是由行线和列线构成,按键位于行、列交叉点,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适用于按键较多的场合。由于本系统需要的按键不多,所以采用独立式键盘。25时钟芯片的选择方案和论证方案一直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案减少了芯片的使用,节约了成本。不过由此产生的误差较大,作为一个电子万年历,首要技术要求就是要能准确及时,因此不选择此种方法来提供时钟。方案二采用DALLAS公司生产的DS1302时钟芯片来实现时钟,DS1302芯片是一种高性能的时钟芯片,它可以对年、月、日、星期、时、分、秒进行计数,精度高,使用寿命长,能在低电压下工作,而且它可以利用双电源供电,当主电源掉电时芯片能继续工作,满足本设计所要求的掉电继续计时功能。所以采用DS1302提供时钟。26电路设计最终方案决定综上各方案所述,对此次作品的方案选定采用AT89C52作为主控制系统DS1302提供时钟;数字式温度传感器;LCD液晶显示屏作为显示模块,按键采用独立式键盘。3硬件模块图本系统以集成芯片为主,以C语言为开发语言,通过对硬件进行软件编程实现所需要的功能。系统的模块图如图31所示,以下的内容就是根据模块逐步实现的。图31系统模块图模块说明DS1302时钟模块可以输出其当前日期及时间键盘输入电路可以调整日期,时间及闹钟的设置DS18B20温度模块可以测量当前室内的温度峰鸣器闹铃模块可以做闹钟提醒显示电路则显示当前的系统运行情况4系统硬件仿真和软件调试工具本系统的硬件仿真工具采用单片机专用仿真工具PROTUESISIS,软件调试则采用KEILC51UVISION2开发平台。41PROTUESISIS简介PROTEUSISIS是英国LABCENTER公司开发的电路分析与实物仿真软件。它运行于WINDOWS操作系统上,可以仿真、分析SPICE各种模拟器件和集成电路,该软件的特点是(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调DS1302时钟模块(89C52)主控模块键盘输入电路显示电路峰鸣器闹铃模块DS18B20温度模块试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(2)支持主流单片机系统的仿真。目前支持的单片机类型有68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KEILC51UVISION2等软件。(4)具有强大的图绘制功。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。42KEILC51UVISION2简介单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,KEIL软件是目前最流行开发MCS51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持KEIL即可看出。KEIL提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UVISION)将这些部份组合在一起。运行KEIL软件需要PENTIUM或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么KEIL几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。5本研究中的主要模块51主控模块(AT89C52模块)AT89C52是一个低电压,高性能CMOS8位单片机,片内含8KBYTES的可反复擦写的FLASH只读程序存储器和256BYTES的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和FLASH存储单元,AT89C52单片机在电子行业中有着广泛的应用。其主要特点如下兼容MCS51指令系统8KB可反复擦写大于1000次)FLASHROM;32个双向I/O口;256X8BIT内部RAM;3个16位可编程定时/计数器中断;时钟频率024MHZ;2个串行中断,可编程UART串行通道;2个外部中断源,共8个中断源;2个读写中断口线,3级加密位;低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。图511AT89C52封装图52DS1302时钟模块DS1302简介DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM。通过简单的串行接口与单片机进行通信,实时时钟/日历电路提供秒分时日月年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线。1RES复位,2I/O数据线,3SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1MW。DS1302是由DS1202改进而来,增加了以下特性双电源管脚用于主电源和备份电源供应,VCC1为可编程涓流充电电源,附加七个字节存储器,备份电源可由大容量电容(1F)替代。它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。主要性能如下实时时钟具有能计算2100年之前的秒,分,时,日,星期,月,年的能力。318位暂存数据存储RAM串行I/O口方式使得管脚数量最少宽范围工作电压20V55V工作电流20V时,小于300NA读/写时钟或RAM时,有两种传送方式单字节传送和多字节传送(字符组方式)8脚DIP封装或可选的8脚SOIC封装简单的3线串行I/O接口与TTL/COMS兼容(VCC5V时)可选工业级温度范围40OC85OCDS1302结构(1)DS1302的引脚如图521所示。VCC2VCC1X1SCLKX2I/OGNDRST图521DS1302的引脚图(2)引脚功能如表51所示。表51引脚功能表引脚号引脚名称功能1VCC2主电源引脚2,3X1,X2振荡源,外接32768KHZ晶振4RST复位/片选端5GND接地6I/O串行数据输入/输出端(双向)7SCLK串行时钟输入端8VCC1备用电源DS1302工作原理串行时钟芯片主要由寄存器、控制寄存器、振荡器、实时时钟以及RAM组成。为了对任何数据传送进行初始化,需要将RST置为高电平且将具有地址和控制信息的8位数据(控制字节)装入移位寄存器。数据在SCLK的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输入数据。时钟脉冲的个数在单字节方式下为8加8(8位地址加8位数据),在多字节突发模式方式下为8加最多可达248的数据。控制命令字节与寄存器(1)控制命令字节控制命令字节的格式如表5218273645表52控制命令字节的格式表D7D6D5D4D3D2D1D01RAM/CKA4A3A2A1A0RD/W控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据位5至位1指示操作单元的地址最低有效位(位0)为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。(2)日历、时钟寄存器DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据为BCD码形式。其日历、时间寄存器及其控制字如表524所示。寄存器的选择由命令字而定,日历,时钟各个寄存器与控制字对照表如表53所示。表53日历、时钟寄存器与控制字对照表D7D6D5D4D3D2D1D0寄存器名称1RAM/CKA4A3A2A1A0RD/W秒寄存器1000000分寄存器1000001小时寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器1000111慢充电寄存器1010000时钟突发寄存器1011111最后一位RD/W为0表示要进行写操作,为1表示进行读操作。表54为主要寄存器命令字、取值范围以及各位内容对照表。表54DS1302的日历、时钟寄存器表命令字各位内容寄存器名称写操作读操作取值范围765430秒寄存器80H81H0059CH10SECSEC分寄存器82H83H0059010MINMIN小时寄存器84H85H0112或002312/24010A/PHRHR日寄存器86H87H0128,29,30,0010DATEDATE31月寄存器88H89H011200010MMONTH星期寄存器8AH8BH01070000DAY年寄存器8CH8DH010910YEARYEAR写保护寄存器8EH8FHWP0000慢充电寄存器90H91HTCSTCSTCSTCSDSDSRSRS时钟突发寄存器BEHBFH特殊位的说明CH时钟暂停位。当此位设置为1时,振荡器停止,DS1302处于低功耗空闲状态,这时芯片消耗电流将小于100NA当此位为0时,振荡器启动,时钟开始启动。12/2412或24小时方式选择位。为1时选择12小时方式,在12小时方式下,位5是AM/PM选择位,此位为1时表示PM。为0时选择24小时方式,在24小时方式下,位5是第2个小时位(2023时)。WP写保护位。写保护寄存器的开始7位(06)置为0,在读操作时总是读出0。在对时钟或RAM进行写操作之前,位7(WP)必须为0,当它为高电平时,写保护位防止对任何其他寄存器进行写操作。TCS控制慢充电的选择,为了防止偶然因素使DS1302工作,只有1010模式才能使慢速充电工作。DS二极管选择位。如果DS为01,那么选择一个二极管;如果DS为10,则选择两个二极管;如果DS为11或00,那么充电器被禁止,与TCS无关。RS选择连接在VCC2与VCC1之间的电阻,如果RS为00,那么充电器被禁止,与TCS无关。选择的电阻如表55所示。表55RS与所选电阻对照表RS位电阻器典型值00无无01R12K10R24K11R38K由上所述,根据涓流充电寄存器的不同编程,可得到不同的充电电流。其充电电流具体计算公式如下R05EDCVI式中,50V为VCC2脚所接入的工作电压,VD为二极管正向压降07V,R为寄存器0和1位编码决定的电阻值,VE为VCC1脚所接入的电压。(3)RAM寄存器DS1302与RAM相关的寄存器分为两类,一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31字节,命令控制字为FEH(写)、FFH(读)。RAM寄存器与控制字对照如表56。表56RAM区寄存器与控制字对照表D7D6D5D4D3D2D1D0寄存器名称1RAM/CKA4A3A2A1A0RD/WRAM01000000RAM11000001RAM301111110RAM突发1111111(4)复位和时钟控制通过将RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC25V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。(5)数据输入/输出数据输入是在输入写命令字的8个SCLK周之后,在接下来的8个SCLK周期中的每个脉冲的上升沿输入数据,数据从0位开始。如果有额外的SCLK周期,它们将被忽略。数据输出是在输出读命令字的8个SCLK周之后,在接下来的8个SCLK周期中的每个脉冲的下降沿输出数据,数据从0位开始。需要注意的是,第一个数据位在命令字节后的最后一位之后的第一个下降沿被输出。只要RST保持高电平,如果有额外的SCLK周期,将重新发送数据字节,即多字节传送。时序图如图522所示。图522时序图DS1302电路设计图图523DS1302电路设计图53DS18B20温度模块概述美国DALLAS公司生产的单线数字温度传感器DS18B20,可把温度信号直接转换成串行数字信号供微机处理。由于每片DS18B20含有唯一的硅串行数,所以在一条总线上可挂接任意多个DS18B20芯片。从DS18B20读出的信息或写入DS18B20的信息,仅需要一根口线(单线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。DS18B20可提供912位温度读数,构成多点温度检测系统而无需任何外围硬件。DS18B20的工作原理1DS18B20的性能单线接口仅需一根口线与MCU连接进行通信。多个DS18B20可以并联在惟一的3线上,实现多点组网功能。无需外围元件可通过数据线供电,电压范围为3055V。零待机功耗。测温范围55125。固有测温分辨率为05。通过编程可实现912位的数字读数方式。用户可自设定非易失性的报警上下限值。支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。报警搜索命令可识别哪片DS1820超温度限。负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2DS18B20的内部结构64位ROM的结构如图57所示图5764位ROM的结构图8位检验CRC48位序列号8位工厂代码(10H)开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前56位的CRC校验码,这也是多个DS18B20可以采用一线进行通信的原因。非易失性温度报警触发器TH和TL,可通过软件写入用户报警上下限。高速暂存存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的E2PROM。高速RAM包含9字节存储器,其结构如图543所示。前两个字节包含测得的温度信息。第3和第4字节是TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节是配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时按此寄存器中的分辨率将温度转换为相应精度的数值。该字节各位的定义如表58所示。低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如表59所示(DS18B20出厂时被设置为12位)。温度LSB温度MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC图543高速暂存RAM结构图表58配置寄存器TMR1R211111表59DS18B20分辩率的定义规定表R1R0分辩率/位温度最大转换时间009937501101875101137511127501字节2字节3字节4字节5字节6字节7字节8字节9字节TH用户字节1TL用户字节2E2PROM由表59可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。高速暂存RAM第68字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以00625/LSB形式表示。温度值格式如图544。LS字节MS字节当符号位S0时,直接将二进制位转换为十进制;当S1时,先将补码变换为原码,再计算十进制值。表510是对应的一部分温度值。表510DS18B20温度与测得值对应表温度/OC数据输出(二进制)数据输出(十六进制)125000001111101000007D0H8500000101010100000550H25062500000001100100010191H10125000000001010001000A2H0500000000000010000008H000000000000000000000H051111111111111000FFF8H101251111111101011110FF5EH2506251111111001101111FE6FH551111110010010000FC90HDS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若TTH或T/调用头文件DEFINEUCHARUNSIGNEDCHAR/宏定义用UCHAR来代表UNSIGNEDCHARDEFINEUINTUNSIGNEDINT/宏定义用UINT来代表UNSIGNEDINTSBITIOP13/定义DS1302数据引脚SBITRSTP14/定义DS1302复位引脚SBITSCLKP12/定义DS1302时钟引脚SBITRSP10/定义LCD1602数据/命令选择引脚SBITENP11/定义LCD1602使能端引脚SBITMOSHIP17/定义模式键SBITJIAP31/定义按键加SBITJIANP34/定义按键减SBITNZP37/定义闹钟键SBITBEEPP15/定义蜂鸣器输出端SBITDQP20/定义DS18B20数据段UINTTMPUCHARCODETAB10“0123456789“/定义09ASCLL码数组UCHARCODETAB_XINGQI73“MON“,“TUE“,“WED“,“THU“,“FRI“,“SAT“,“SUN“/定义星期数组UCHARCODETAB_ALARM216“ALARMCLOCKOFF“,“ALARMCLOCKON“CHARSECOND,MINUTE,HOUR,DATE,MONTH,YEAR,DAY,KEY,SHI,FEN,NUM,XINGQI/定义年月日时分秒数据变量UINTTEMPH3800,TEMPL500UINTVALUE/定义数据变量(用于数据转换前暂时存贮)BITALARMCLOCK,XIANSHICLOCKBITS1,S2,S3,S4,S5,S6,S7,S8,S9,S10,KAI1VOIDDELAYUINTZ/延时子程序UINTXUCHARYFORXZX0XFORY110Y0YVOIDDELAY1302UINTZFORZZZ0ZVOIDDELAY_18B20UNSIGNEDINTI/DS18B20延时子延时WHILEI/初始化函数VOIDINIT_DS18B20VOID/DS18B20初始化UNSIGNEDCHARX0DQ1/DQ复位DELAY_18B208/稍做延时DQ0/单片机将DQ拉低DELAY_18B2080/精确延时大于480USDQ1/拉高总线DELAY_18B2014XDQ/稍做延时后如果X0则初始化成功X1则初始化失败DELAY_18B2020READONECHARVOID/读一个字节UNSIGNEDCHARI0UNSIGNEDCHARDAT0FORI8I0IDQ0/给脉冲信号DAT1DQ1/给脉冲信号IFDQDAT|0X80DELAY_18B204RETURNDATVOIDWRITEONECHARUNSIGNEDCHARDAT/写一个字节UNSIGNEDCHARI0FORI8I0IDQ0DQDATDELAY_18B205DQ1DAT1/读取温度READTEMPERATUREVOIDUNSIGNEDCHARA0UNSIGNEDCHARB0UNSIGNEDINTT0INIT_DS18B20WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0X44/启动温度转换DELAY_18B20100INIT_DS18B20WRITEONECHAR0XCC/跳过读序号列号的操作WRITEONECHAR0XBE/读取温度寄存器等(共可读9个寄存器)前两个就是温度AREADONECHARBREADONECHAR/传感器返回值除16得实际温度值/为了得到2位小数位,先乘100,再除16,考虑整型数据长度,/技巧处理后先乘25,再除4,除4用右移实现TB256A25RETURNT2VOIDLCDCOMUCHARCOM/LCD1602写入地址RS0P0COMDELAY5EN1DELAY5EN0DELAY5VOIDLCDDATAUCHARDAT/LCD1602写入数据RS1P0DATDELAY5EN1DELAY5EN0DELAY5VOIDLCDINIT/LCD1602初始化EN0LCDCOM0X38LCDCOM0X0CLCDCOM0X06LCDCOM0X01VOIDWRITEUCHARDAT/写数据UCHARISCLK0DELAY13021FORI0I1VOIDWRITESETUCHARCMD,UCHARDAT/DS1302写入数据RST0DELAY13021SCLK0DELAY13021RST1DELAY13021WRITECMDWRITEDATSCLK1DELAY13021RST0UNSIGNEDCHARREAD/读数据UCHARI,DATDELAY13021FORI0I1IFIO1DAT|0X80SCLK1DELAY13021SCLK0DELAY13021RETURNDATUNSIGNEDCHARREADSETUCHARCMD/DS1302读出数据UCHARDATRST0DELAY13021SCLK0DELAY13021RST1WRITECMDDATREADSCLK1DELAY13021RST0RETURNDATVOIDINITDS1302/DS1302初始化WRITESET0X8E,0X00WRITESET0X80,0/10TEMPHBEEPBEEPELSEIFTMP410VALUE/数据转换IFS10LCDDATATABYEAR/10/显示年十位LCDDATATABYEAR10/显示年个位ELSELCDDATA/显示空白实现闪烁LCDDATALCDDATA/显示/VALUEREADSET0X89/读取月MONTHVALUE/转换月IFS20LCDDATATABMONTH/10/显示月十位LCDDATATABMONTH10/显示月个位ELSELCDDATA/显示空白实现闪烁LCDDATALCDDATA/显示/VALUEREADSET0X87/读取日DATEVALUE/转换日IFS30LCDDATATABDATE/10/显示日十位LCDDATATABDATE10/显示日个位ELSELCDDATA/显示空白实现闪烁LCDDATAVALUEREADSET0X8B/读取星期DAYVALUE/转换星期LCDCOM0X8C/写入要显示的地址IFS40FORI0I410VALUE/转换小时LCDCOM0XC0IFS50LCDDATATABHOUR/10/显示小时十位LCDDATATABHOUR10/显示小时个位ELSELCDDATA/显示空白实现闪烁LCDDATALCDDATA/显示VALUEREADSET0X83/读分钟MINUTEVALUE/转换分钟IFS60LCDDATATABMINUTE/10/显示分钟十位LCDDATATAB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 月亮趣味测试题及答案
- 红河卫生职业学院《现代统计方法》2023-2024学年第二学期期末试卷
- 浙江工贸职业技术学院《湿地工程规划设计》2023-2024学年第二学期期末试卷
- 辽宁经济职业技术学院《汽车机械基础》2023-2024学年第二学期期末试卷
- 青岛工学院《色彩基础训练I》2023-2024学年第二学期期末试卷
- 池州职业技术学院《幼儿园环境创设与指导》2023-2024学年第二学期期末试卷
- 大理护理职业学院《环境毒理学》2023-2024学年第二学期期末试卷
- 采购分包交付合同(2篇)
- 2025年健康养生食品行业健康食品添加剂市场细分与消费趋势报告
- 2025年即时配送企业配送路径优化与成本控制关键点研究报告
- 阜阳混凝土框架结构高层住宅项目实体检验及材料送检专项方案
- 心内科用药安全管理课件
- 2023年江苏省无锡市梁溪区小升初语文试卷
- 赣美2011版三年级美术下册《瓜果飘香》教案及教学反思
- 2023年贵州省六盘水市钟山区数学六下期末达标检测试题含解析
- 2023年黑龙江省高校毕业生三支一扶计划招募考试真题
- 执行力案例分享与解析课件
- 新加坡介绍-课件
- 电路理论知到章节答案智慧树2023年同济大学
- 北科大2023年微机原理期末试卷
- 金蝶云星空 V7.2产品培训-财务-标准成本分析
评论
0/150
提交评论