万年历课程设计_第1页
万年历课程设计_第2页
万年历课程设计_第3页
万年历课程设计_第4页
万年历课程设计_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

.摘 要本设计应用AT89C52芯片作为核心,采用C语言进行编程,实现以下功能:小时、分、秒、年、月、日、星期的显示和实时温度检测。该设计的电子时钟系统由时钟电路、LCD显示电路、按键调整电路和温度检测电路四部分组成。使用时钟芯片DS1302完成时钟日期的功能,以LCD1602为显示器,同时利用温度传感器DS18B20测量周围环境温度,并且可以依靠按键随时对日期时间进行调整。我们共设计四个按键,一个模式键,也就是我们用来选定被修改的数字的,两个调整键,一个“加”键和一个“减”键,当按下模式键,选定要调整的数字的时候,“加”、“减”可以帮我们调到所需的状态,还有一个复位键,显示精度为1秒。设计还提供三位实时温度检测并显示,其显示精度为0.1。关键词:AT89C52,时钟日历芯片DS1302,温度传感器DS18B20AbstractThe design is applied with AT89C52 chip as the core, use C program language, to achieve the following functions: hours, minutes, seconds, and the year, month, date display, real-time temperature sensing. The design of electronic clock contains electronic clock circuit, LCD display circuit, buttons and temperature detection circuit adjustment circuit four parts. Use the clock date clock chip DS1302 completed features to display by LCD1602, while using the temperature sensor DS18B20 measuring ambient temperature, and rely on keys to adjust at, date, time at any time. We have designed four buttons, one mode key, this key help we chose the number that are need to modify, and two adjustment key, one plus key, one minus key. After press the mode button, select the time to be adjusted, add or sub the number to the desired state, there is a certain key, press the OK button to enter the normal clock mode after adjusted. This design provides both temperature sensing and display real-time. KEY WORDS:AT89C52, Calendar Clock Chip DS1302, Temperature sensor DS18B20目 录前言1第一章 概述2第二章 基于单片机电子时钟的硬件电路设计4第一节 MCU选择及AT89C51简介4第二节 时钟电路的设计8一、DS1302简要说明8二、DS1302引脚说明8三、DS1302控制字和读写时序说明9四、DS1302片内寄存器说明11五、时钟电路的原理12第三节 环境温度采集电路的设计13一、温度传感器的选择13二、DS18B20简介13三、DS18B20控制字和读写时序说明15四、温度采集电路与单片机的连接17第四节 显示电路的设计18一、显示器LCD1602的特点与简介18二、显示电路的与单片机的连接19第五节 按键电路的设计21第六节 复位电路的设计22第三章 基于单片机电子时钟软件设计23第一节 主程序设计23第二节 2实时时钟子程序设计23第三节 环境温度采集子程序设计24第四节 按键子程序设计26第四章 系统调试27第一节 单片机基础电路的调试27第二节 显示电路的调试27第三节 DS1302电路的调试27第四节 环境温度采集的调试27第五节 按键电路的调试27第六节 软件的调试29结论30参考文献31致谢32附录1总设计原理图33附录2带温度显示的电子时钟仿真图34附录3 HD44780字符集35附录4升序按键程序36;.前 言时间是人类生活必不可少的元素,对人们来说时间是那么的宝贵,如果没有时间的观念,人们的生活就会紊乱,社会秩序也将不会有井有条。从古代的水漏到后来的机械钟再到当今的石英钟,都充分体现了时间的重要,同时也代表着科技的发展进步,所以对于我们研究电子时钟和充分发挥时钟的作用将有着重要的意义。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命。随着数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字的精度,远远超过老式钟表,且钟表的数字化给人们的生产生活带来了极大的方便,成为人们生活中不可少的必需品。工农业生产上也有很多的场合要测量环境温度啊、湿度啊。如果扩大时钟原有的功能,比如增加环境温度显示的功能等等,将使电子钟的应用更加广泛。本设计主要为实现一款可正常显示时钟和实时测量的环境温度的多功能电子时钟,并且可以依靠按键随时对日期进行调整,以确保显示的正确性、实时性。该设计采用AT89C52作为核心处理芯片分别对时钟芯片DS1302、温度传感器DS18B20进行读写控制,并将读到的数据送给LCD1602显示出来。第一章 概述从电子时钟的发明到现在已经将近半个世纪了,从最初的德克萨斯仪器推出的4位单片机电子时钟到当今的32位,从当时价钱昂贵且体积大到现在的精致小型,从以前的单一的时间显示到现代的可以显示温度、湿度等更多功能的电子时钟,都积累了众多科学家的努力和心血。温度关系着我们日常生活,关系着我们的身体健康,其结构简单、易行、实用。所以设计这样的一个电子时钟是很有意义的。本文基于课题并对当前电子时钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟的总体方案。本文设计应用AT89C52芯片作为核心,LCD1602显示,使用时钟芯片DS1302完成时钟日期的功能,同时利用温度传感器DS18B20测量周围环境温度,并且可以依靠按键随时对日期、时间进行调整。本课题通过AT89C522单片机来设计电子时钟,采用C语言进行编程,可以实现以下一些功能:小时、分、秒、年、月、日、星期的显示和实时温度检测。本次设计的电子时钟系统由时钟电路,LCD显示电路,按键调整电路四部分组成。51单片机通过软件编程,在LCD1602液晶屏上实现小时、分、秒、年、月、日、星期的显示;利用时钟芯片DS1302来实现计时;通过三个按键开关,一个用于时钟调节模式的选择(模式包括调秒、分、时、年、月、日、星期),按1次下模式键(KEY1)调用调年程序,同时显示程序也响应相应的动作,秒数字开始闪烁,进入调秒模式,再按一次进入调月模式,依次类推分别进入调日、星期,时、分、秒的模式。另外两个用于时钟的调节,其中KEY2为加键,KEY3为减键,在按下模式键后,相应的数字会闪烁,这时我们按下加键或减键,对应的数字就会相应的加一或减一,使我们的多功能电子时钟更方便,更人性化。温度部分的设计我们采用DALLAS公司生产的1wire式数字温度传感器DS18B20,所谓1wire就是单线的意思,也就是该传感器与CPU进行数据传输的时候只需要一条数据线就可以了,甚至他的电源都可以由数据线提供,DS18B20也具备这项功能,他可以从数据线上给自己供电,这样他的外接电路,就非常的简单明了,也节省了不少CPU的硬件资源。本设计就是采用这样的方案,DS18B20的电源是通过一个上拉电阻为自己获取电源的。当然这样的设计简化了我们的硬件外部连线,节省了硬件资源,但是这样的设计也给我们的软件设计(编程)提出了严格的要求,特别是时序的要求,我们用单片机发脉冲来模拟串行通信,每个时钟的间隙和读写的辨别都给我们的编程带来更多的困难。所以我们要严格按照时序,准确的进行读写操作。显示部分我们的用的是LCD1602。为什么要选LCD1602呢?最初我想的是用数码管显示的,数码管的高亮度和编程控制容易的特点使我更受青睐,但是我想要是同时显示年、月、日、时、分、秒,当然还有温度,这算起来就有就有17位的位选端,再加上8段的8个端口的话,就要25位的I/O口,还要有键盘,这显然让我们的CPU无法恭维,如果是分时显示,也不能说是个不错的想法,但是这样的设计就不太人性化了,当然我们还可以考虑扩展I/O口,但是这又加大了编程的难度,相比起来,LCD1602就显的绰绰有余了。他可以同时显示32个字符,用来显示我们的时钟,还有温度就显得更加清晰、自然。所以最终选择LCD1602作为显示器件。第二章 基于单片机的电子时钟硬件设计电子时钟至少包括秒信号发生器、时间显示电路、按键电路、供电电路等四部分,另外,本设计要求该电子钟能够采集温度,所以还需要温度采集电路,硬件电路框图如图2-1。MCU显示器DS1302时钟温度传感器DS18B20键盘+5V电源图2-1 硬件电路框图该系统使用AT89C52单片机为核心微控制器,通过读取时钟日历芯片DS1302和温度传感器DS18B20的数据,完成电子时钟的主要功能时钟/日历和环境温度采集,使用比直观的LCD1602显示,同时显示年月日,星期,时分秒以及环境温度值。键盘是为了完成时钟/日历的校准。整个电路使用了+5V电源供电。 第一节 MCU的选择与AT89C51简介目前在单片机系统中,应用比较广泛的微处理器芯片主要为8XC5X系列的单片机,该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全、性能稳定、体积小、价格底、货源充足、调试和编程方便,所以应用较为广泛。例如AT89C52单片机是一款低功耗、低电压、高性能CMOS8位单片机,片内含8KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEL公司的高密度,非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS-51兼容,片内的FLASH存储器允许在系统内可改编程序或用常规的非易失性存储编程器来编程。因此,AT89C52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域1。AT89C52具有以下主要性能:1.8KB可改编程序FLASH存储器;2.全表态工作 :024HZ;3.256X8字节内部RAM;4.32个外部双向输入,输出(I、O)口;引脚说明如图2-2。图2-2 AT89C52引脚说明引脚功能说明如下2:VCC:电源电压。GND:地。P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据线复用口。作为输出口时,每位能吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端。在访问外部数据储存器或程序储存器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。FLASH编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。FLASH编程和程序校验期间,P1接收低8位地址。P2口:P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序储存器或16位地址的外部数据储存器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据储存器(例如执行MOVXRI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。FLASH编程或校验时,P2亦接收高位地址和其他控制信号。P3口:P3是一个带内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。作为输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。P3除了作为一般的I/O口线外,更重要的用途是它的第二功能,具体功能说明如表2-1。P3口还接收一些用于FLASH闪速存储器编程和程序校的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。表2-1 P3口的第二功能表端口引脚第二功能P3.0RXD(穿行输出口)P3.1TXD(穿行输入口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器0)P3.6WR(外部数据写选通)P3.7RD(外部数据读选通)即使不访问外部存储器,ALE仍以是时钟振荡频率的1/6输出固定的正脉冲信号,因此他可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT80C51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。EA/VPP:外部访问允许。欲使CPU仅访问外部程序储存器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(Vcc端),CPU则执行内部程序储存器中的指令。FLASH储存器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12v编程电压。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。第二节 时钟电路的设计实现电子时钟的功能方案有很多种,常用的有用芯片555实现,直接编程实现,也就是通过编程由单片机内部产生时钟的数据。本设计要求时钟电路能够显示日历和时间,对一般的芯片的实现方法,这难免会给编程带来极大的麻烦,而DS1302就可以自己依靠单独的晶振电路,产生这些数据,并存储到内部的存储器中,而我们要做的工作就是,不断的读出这些数据,并转换成显示器可识别的有效的数据,送到显示器上显示。这样一款强大的时钟芯片,不但占用的硬件资源少,而且其精确性、实时性也是相当的可观。所以本设计选用DS1302来实现时钟电路。一、 DS1302简要说明DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。DS1302的外接晶振采用普通32.768kHz晶振。二、DS1302引脚说明DS1302封装和引脚参照图2-3。图2-3 DS1302封装和引脚DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc22.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。具体的引脚说明如表2-2。表2-2 DS1302引脚功能说明引脚号名称功能1VCC1备份电源输入2X132.768KHZ输入3X232.768KHZ输出4GND地5RST控制移位寄存器/复位6I/O数据输入/输出7SCLK串行时钟8VCC2主电源输入三、 DS1302控制字和读写时序说明 在编程过程中要注意DS1302的读写时序,DS1302是SPI总线驱动方式,它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如表2-3。控制字的作用是设定DS1302的工作方式,传送字节数等。每次数据的传输都是由控制字开始9。1. 第7 位:控制字的最高有效位,如果它为0,则不能把数据写入到DS1302中。2. 第6位:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据。表2-3 DS1302的控制字节1RAM CKA4A3A2A1 A0RD WR第7位第6位第5位第4位第3位第2位第1位第0位3第5位:(A4A0)用A4A0表示,定义片内寄存器和RAM的地址。定义如下:当第6位为0时,定义时钟和其他寄存器的地址。A4A006,顺序为秒、分、时、日、月、星期、年的寄存器。当A4A07,为芯片写保护寄存器地址。当A4A08,为慢速充电参数选择寄存器。当A4A031,为时钟字节方式选择寄存器。 当第6位为1时,定义RAM的地址,A4A0030,对应各子地址的RAM,地址31对应的是RAM多字节方式选择寄存器。4. 第0位(最低有效位):如果为0,表示进行写操作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302.数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。DS1302的数据读写方式有两种,一种是单字节操作方式,一种是多字节操作方式。每次仅写入一个字节数据称为单字节操作,每次对时钟/日历的8字节或31字节RAM进行全体写入或读出的操作称为多字节操作方式。当以多字节方式写时钟寄存器时,必须按数据传送的顺序依次写入8个寄存器。但是,当以多字节方式写RAM时,不必写所有31字节,不管是否写了全部31字节,所写的第一个字节都将传送到RAM。为了启动数据的传输,CE引脚信号应由低变高,当把CE驱动到逻辑1的状态时,SCLK必须为逻辑0,数据在SCLK的上升沿串行输入,无论是读同期还是写周期,也无论传送方式是单字节还是多字节,都要通过控制字指定40字节的哪个将被访问,在开始8个时钟同期把命令字(具有地址和控制信息的8位数据)装入移位寄存器之后,另外的时钟在读操作时输出 数据,在写操作时输入数据,所有的数据在时钟的下降沿变化。所有写入或读出操作都是向芯片发送一个命令字节。对于单字节操作,包括命令字节在内,每次为2个字节,需要16个时钟,对于时钟/日历多字节模式操作,每次为7个字节,需要72个时钟,而对于RAM多字节模式操作,每次则为32字节,需要多达256个时钟,这里仅给出单字节读写时序,如图2-4,多字节操作方式与其类似,只是且而跟的字不止一个。图2-4 DS1302 单字节读写时序四、 DS1302片内寄存器说明通过控制字对DS1302片内的寄存器进行寻址之后,即可就所选中寄存器的各位进行操作。片内各寄存器用各位的功能定义如表2-4。DS1302有关日历、时间的寄存器共有10个,时钟/日历包含在其中的7个写/读寄存器内,这个寄存器分别是秒、分、小时、日、月、星期和年。 小时寄存器(85H、84H)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为12小时制式时,位5为“0”表示AM,为“1”表示PM。在24小时制式下,位5是第二个10小时位(2023时)。表2-4 片内各寄存器各位的功能定义表读寄存器写寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0范围81H80HCH10秒秒005983H82H10分分005985H84H12/24010时时112AM/PM02387H86H0010日日13189H88H0010月月1128BH8AH00000周日178DH8CH10年年00998FFH8EHWP0000000_秒寄存器(81H、80H)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。一般在设置时钟时,可以停止工作,设定完之后,再启动其工作。控制寄存器(8FH、8EH)的位7是写保护位(WP),其它7位均置为0,在任何片内时钟/日历寄存器和RAM,在写操作之前,WP位必须为0位,否则将不可写入。当WP位为1时,写保护位防止对任一寄存器的写操作。因此,通过置写保护位,可以提高数据的安全性。五、 时钟电路与单片机的连接根据DS1302引脚功能说明和程序要求将其按图2-5接入电路。图2-5单片机与时钟芯片DS1302连接图该硬件电路设计简单,抗干扰能力强。如图,AT89C51单片机P1.2直接接DS1302的RST端,上电后,AT89C51的P1.2脚自动输出高电平。P1.0作为串行时钟接口,P1.1作为时钟数据的I/O。DS1302采用双电源供电,平时由+5V电源供电,当+5V电源之后,由图中+3V备用电源供电。特别需要注意X1和X2两端连接的晶振,该晶振频率为32.768KHz。第三节 环境温度采集电路的设计、随着技术的发展,电子时钟不在单一的只用来显示时间,人们在其上面增加了相应的附属功能,比如:多功能闹钟、温度、湿度等等。但在我看来了温度提醒着我们穿衣保暖,关系着我们的身体健康。所以我认为温度是最为实用的外加功能。一、 温度传感器选择在日常生活中和工农业生产中常要用到温度检测及控制,传统的测温元件有热电偶和热电阻,一般用来测量中高温,输出的是电压,将其转换成对应的二进制温度码值,需要较多的硬件支持,硬件电路复杂,软件调试较为复杂,制作成本高。通过编程,DS18B20可以实现912位温度读数,信息经过单线接口送入DS18B20或从DS18B20送出,因此从单片机到DS18B20仅需要一条线。读写和完成温度变换所需要的电源可由数据线本身提供,而无需外部电源。测量范围为-55+125摄氏度,增量为0.5度,电源电压范围为+3V+5.5V。通过编程,用户还可以自行设定报警上下限温度,报警寻找命令可以识别和寻址那些温度超出预设报警界限器件。二、 DS18B20简介DS18B20是DALLAS公司生产的单线式数字温度传感器,具有3引脚TO92小体积封装形式;温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。 每一个 DSl820 包括一个唯一的 64 位长的序号 该序号值存放在DSl820 内部的 ROM(只读存贮器)中 开始8 位是产品类型编码(DSl820 编码均为 10H) 接着的 48位是每个器件唯一的序号 最后 8 位是前面 56 位的CRC(循环冗余校验)码 DSl820 中还有用于贮存测得的温度值的两个 8 位存贮器 RAM 编号为 0 号和 1号 1 号存贮器存放温度值的符号 如果温度为负则 1 号存贮器 8 位全为 1 否则全为 0 。0 号存贮器用于存放温度值的补码 LSB(最低位)的 1 表示 0.5贮器中的二进制数求补再转换成十进制数并除以 2 就得到被测温度值。具体引脚说明如图2-6,功能如表2-5。图2-6 DS18B20引脚与封装表2-5 DS18B20引脚说明序号名称引脚功能1GND接地2DQ数据输入/输出引脚:开漏单总线接口引脚;当被用到寄生电源下,也可向器件提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,此引脚必须接地三、 DS18B20控制字和读写时序说明DS18B20是1-wire单线器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议来对读写数据提出严格的时序要求,AT89C51单片机并不支持单线传输。因此,必须采用软件的方法来模拟单线的协议时序。主机操作单线器件DS18B20必须遵循下面的顺序8。1.初始化单线总线上的所有操作均从初始化开始,初始化过程如下。主机通过拉低单线480us以上,产生复位脉冲,然后释放该线,进入RX接收模式。主机释放总线时,会产生一个上升沿。单线器件DS18B20检测到该上升沿后,延时15-60us,通过拉低总线60-24us来产生应答脉冲,主机接收到从机的应答脉冲后,说明有单线器件在线。2.ROM操作命令一旦总线主机检测对应答脉冲,便可以发起ROM操作命令。共有5位ROM操作命令。详细说明如下表2-6。表2-6 ROM操作命令与说明命令类型命令字节功能说明Read rom33H此命令读取激光ROM的64位,只能用于总线上单个DS18B20的情况下,多挂则会发生冲突Match rom(匹配rom)55H此命令后跟64位ROM序列号,寻址多挂总线上的DS18B20。只有序列号完全匹配的DS18B20才能响应后面的内存操作命令,其他不匹配的将等待复位脉冲。此命令可用于单挂或多挂接总线。Skip rom(跳过rom)CCH此命令用于单挂接总线系统时,可以无需提供64位ROM序列号皆可运行内存操作命令。如果总线上挂多挂DS18B20,并且在此命令后执行读命令,将会发生数据冲突。Scarch rom(搜索rom)F0H主机调用此命令,通过一个排除法过程,可以识别出总线上所有器件的ROM序列号。Alarm rom(警报rom)ECH此命令流程图和scarch rom命令相同,但是DS18B20只有在最近的一次温度测量时满足了告警触发条件,才会响应此命令。3.内存操作命令在成功执行了ROM操作命令之后,才可以使用内存操作命令。主机可以提供6种内存操作命令,如表2-7。4.数据处理DS18B20要求有严格的时序来保证数据的完整。在单线DQ上,存在复位脉冲、应答脉冲、写“1”、写“0”、读“1”、读“0”几种信号类型。其中,除了应答脉冲之外,均由主机产生。而数据位读写则是通过使用读、写时隙实现的。首先了解写时隙。当主机将数据线从高平拉至低电平时,产生2种类型的写时隙:写“1”和“0”。所有写时隙必须在60s以上(即由高拉低后持续60s以上),各个写时隙之间必须保证最短1us的恢复时间。DS18B20在DQ线变低后的15s60s的端口对DQ进行采样,如果为高电平,就为写“1”;如果为低电平,就为写“0”。对于主机产生写“1”时隙的情况,数据线必须先被拉低,然后释放,在写时隙开始后的15s,允许DQ线拉至高电平。对于主机写“0”时隙的情况,DQ线必须被拉至低电平至少保持低电平60s。再来了解一下读时隙。当主机从DS18B20读数据时,把数据线从高电平拉至低电平,产生读时隙。数据线DQ必须保持低电平至少1s,来自DS18B20的输出数据在读时隙下降沿之后15s内有效。因此,在此15s内,主机必须停止将DQ引脚置低。在读时隙结束时,DQ引脚通过外部上拉电阻拉回高电平。所有的读时隙最短必须持续60s,各个读时隙之间必须保证最短1s的恢复时间。表2-7 内存操作命令与说明命令类型命令字节功能说明Write Scratchpad(写暂存器)4EH此命令写暂存器中地址24的3个字节(TH、TL和配置寄存器)在发起复位脉冲之前,3个字节都必须要写。Rrad Scratchpad(读暂存器)BEH此命令读取暂存器内容,从字节0一直读取到字节8。主机可以随时发起复位脉冲以停止此操作。Copy Scratchpad(复制暂存器)48H此命令将暂存器中的内容复制进E2RAM,以便将温度告警触发字节存入非易失内存。如果在此命令后产生读时隙,那么只要器件在进行复制就会输出0,复制完成后,再输出1。Convenrt T(温度转换)44H此命令开始温度转换操作。如果在此命令后主机产生读时隙,那么只要器件在进行温度转换就会输出0,转换完成后在输出1。Recall E2(重调E2存储器)B8H将存储在E2RAM中的温度告警触发值和配置寄存器值重新拷贝到暂存器中,此重调操作在DS18B20加电时自动产生。Read Power Supply(读供电方式)B4H主机发起此命令后每个读数据时隙内,DS1820发信号通知它的供电方式:0为寄生电源方式,1为外部供电方式。所有的读写时隙至少需要60s,且每个独立的时隙之间至少需要1s的恢复时间。在写时序中,主机将在拉低总线15s内释放总线,并向DS18B20写“1”。若主机拉低总线后能保持60s的低电平,则向单总线器件写“0”。DS18B20仅在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能传输数据。特别需要注意的是,与DS18B20配套使用的是频率为11.0592Mhz单片机晶振,这决定了指令运行时间,在软件设计将根据指令运行时间编写各种延时程序。四、 温度采集电路与单片机的连接本设计中使用DS18B20温度传感器进行环境温度采集和转化,其与单片机的连接图如图2-7所示4。图2-7 单片机与DS18B20连接图AT89C51单片机的P3.3脚接DS18B20的I/O脚,作为数据的读入和写出。电阻R11作为DS18B20的I/O口的上拉电阻,在读时隙结束时,I/O引脚将通过此上拉电阻拉回到高电平。要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,电路采用5V电源供电,根据I=U/R=5/4700=1.06mA,所以根据这个原理,可以选用小一点的电阻,只要保证DS18B20的工作电流,当然也可以直接接在电源上,但是为了使信号稳定,一般在电路设计中加上拉电阻。我们选用4.7K。第四节 显示电路的设计显示电路的主要部分就是显示器件,所以显示电路的设计第一步就是显示器件的选择,对我们一般的设计,首选当然是数码管,它具有显示亮度高,编程易的特点,但是它的单独显示使得每一位都要有自己的为选端,也就是说每一位就要占用一个I/O口,本设计要求至少17位的数字显示,再加上8段的8位,就要占用25个I/O口,这显然是让一个单片机是无法承受的。所以我们选用更节省资源的液晶LCD1602作为理想的显示器件。一、 显示器LCD1602特点与简介 液晶显示器的有以下特点:1.液晶显示屏是以若干个5X8或5X11点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。2.主控制驱动电路为HD44780(HITACHI)及其他公司全兼容电路,如SED1278(SEIKOEPSON),KS0066(SAMSUNG),NJU6408(NERJAPANRADIO)。3.具有字符发生器ROM可显示192种字符(160个5X7点阵字符和32个5X10点阵字符,见附录3。4.具有64个字节的自定义字符RAM,可自定义8个5X8点阵字符或4个5X11点阵字符。5.具有80个字节的RAM。7.模块结构紧凑,轻巧,装配容易。8.单+5V 电源供电(宽温型需要一个-7V的电源供电)。9.低功耗,长寿命,高可靠性。LCD1602的引脚功能说明如表2-8。二、 显示电路与单片机的连接就时钟而言,通常采用LCD或LED显示,对LED来说AT89C51本身设有专门的液晶驱动电路,LED结构简单,体积小,功耗低,响应速度快,寿命长,可靠性也高,等优点,而且亮度也高,价格也便宜,但是本时钟设计要一个很直观的显示效果,LED就会除了8段的显示,位选也要占用大量的资源,不易控制。如果选用LCD的 话,显示就比较直观,占用的硬件资源就相对少些。而且对我们研究学习,不在于便宜,是我们要学到更多的知识,本设计采用1602显示,其与单片机的连接如图2-94。图2-9单片机与LCD1602的连接图表2-8 LCD1602的引脚功能说明引脚号符号状态功能1Vss电源地2Vdd+5V逻辑电源3V0液晶驱动电源4RS输入寄存器1数据,0命令5R/W输入读写操作选择1读,0写6E输入是能信号7DB0三态数据总线8DB1三态数据总线9DB2三态数据总线10DB3三态数据总线11DB4三态数据总线12DB5三态数据总线13DB6三态数据总线14DB7三态数据总线15A输入上两行使能信号16K输入下两行使能信号第五节 按键电路的设计根据功能的需要,本时钟需要设置时间,对时间进行实时校准的功能,所以按键是必不可少的。按照键盘与CPU的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是每个按键相互独立的,每个按键占用一个I/O口线,每根I/O口线上的按键不会影响其他I/O口上按键工作状态,独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一个I/O口中,在按键数量较多的时,I/O口浪费较大,且电路复杂。矩阵键盘适合按键较多时使用,由于本设计的电子钟最多需要4个按键,若采用矩阵键盘反而会有点浪费,故采用独立式键盘。键盘的电路图如图2-

温馨提示

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

最新文档

评论

0/150

提交评论