电子综合设计总结报告.doc_第1页
电子综合设计总结报告.doc_第2页
电子综合设计总结报告.doc_第3页
电子综合设计总结报告.doc_第4页
电子综合设计总结报告.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

电子综合设计总结报告课题:多功能电子数字时钟成员:岳雪凌、闫蕾芳、周天琪二零一三年六月二十日于单片机的万年历设计摘 要随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。目前,单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来了诸多方便。 本设计是一个基于STC89C52RC单片机的日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还提供了农历信息,具有调整时间,温度采集,闹钟及个性化的闹铃等功能。系统所用的时钟日历芯片DS1302具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。采用STC89C52RC单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。此系统计时精确,价格低廉,可以广泛应用在生活,学习和工作等任何领域,并且起到重要作用。 关键词:万年历;单片机;时钟芯片;温度芯片;目 录摘 要第一章 引 言1.1 概述1.2 单片机的简介第二章 方案设计与论证2.1 单片机芯片设计与论证2.2 电源模块设计与论证2.3 按键控制模块设计与论证2.4 时钟模块设计与论证2.5 温度采集模块设计与论证2.6 显示模块模块设计与论证第三章 系统的硬件设计3.1 主控芯片AT89S52与最小外围系统3.1.1 AT89S52的概述3.1.2 AT89S52最小系统的设计3.2 时钟芯片DS1302接口设计与性能分析3.2.1 DS1302性能简介3.2.2 DS1302接口电路设计3.3 温度芯片DS18B20接口设计与性能分析3.3.1 DS18B20性能简介3.3.2 DS18B20接口电路设计3.3.3 DS18B20的工作时序3.4 闹钟模块接口设计与性能分析3.4.1 AT24C02器件使用3.4.2 接口电路设计3.5 LCD显示模块3.5.1 LCM1602的特性及使用说明3.5.2 LCM1602与MCU的接口电路3.6 按键模块设计第四章 软件设计4.1 软件总体部分的设计4.2 LCD驱动及液晶显示4.3 按键识别及处理4.4 温度数据采集4.5 时间数据采集4.6 闹钟程序第五章 系统的调试总结参考文献附录A 设计原理图附录B 源程序 第一章 引 言1.1 概述随着电子技术的发展,人类不断研究,不断创新纪录。万年历目前已经不再局限于以书本形式出现。以电脑软件或者电子产品形式出现的万年历被称为电子万年历。与传统书本形式的万年历相比,电子万年历得到了越来越广泛的应用,采用电子时钟作为时间显示已经成为一种时尚。目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们日常生活需求。本文提出了一种基于STC89C52RC单片机的万年历设计方案,利采用一个LCD显示。本方案以STC89C52RC单片机作为主控核心,与时钟芯片DS1302、温度芯片DS18B20、闹钟模块、闹钟设置存储模块、按键、LCD显示等模块组成硬件系统。在硬件系统中设有4个独立按键和一个LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间、星期、温度显示等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2 单片机的简介单片机是一种集成电路芯片。它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统,在单片机程序的控制下能准确、迅速、高效地完成程序设计者事先规定的任务。所以说,一片单片机芯片就具有了组成计算机的全部功能。然而单片机又不同于单板机(一种将微处理器芯片、存储器芯片、输入输出接口芯片安装在同一块印制电路板上的微型计算机),单片机芯片在没有开发前,它只是具备功能极强的超大规模集成电路,如果对它进行应用开发,它便是一个小型的微型计算机控制系统,但它与单板机或个人电脑(PC机)有着本质的区别。不同的单片机有着不同的硬件特征和软件特征,即它们的技术特征均不尽相同,硬件特征取决于单片机芯片的内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要的功能和应用系统所要求的特性指标。这里的技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商的技术手册中得到。软件特征是指指令系统特性和开发支持环境,指令特性即我们熟悉的单片机的寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源的要求等等。开发支持的环境包括指令的兼容及可移植性,支持软件(包含可支持开发应用程序的软件资源)及硬件资源。要利用某型号单片机开发自己的应用系统,掌握其结构特征和技术特征是必须的。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机的应用领域越来越广泛。第二章 方案设计与论证按照系统设计的要求,初步确定系统由电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和闹钟模块共六个模块组成,电路系统构成框图如图2.1所示。STC89C52图2.1 硬件电路框图2.1 单片机芯片设计与论证方案一: 采用STC89C51RC芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM 存储空间,能于3V的超低电压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二:采用STC89C52RC芯片作为硬件核心,采用Flash ROM,能以3V的超低电压工作,而且与MCS-51系列单片机完全兼容,该芯片内部存储器为8KB ROM 存储空间。同样具有STC89C52RC的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。综合考虑,采用STC89C52RC作为主控芯片。2.2 电源模块设计与论证方案一:采用市电经变压器降压成5V电源,为MCU及外部电路提供电源,能提供较为稳定的电压及足够的功率,制作简单,成本较高、笨重,不利于便携设备携带。方案二:采用USB电源线接电脑USB口为系统提供5V电源,携带方便,价格便宜。考虑系统为一个便携式用品,方案一不便于携带,故采用方案二。2.3 按键控制模块设计与论证方案一:采用矩阵键盘,由于按键多可实现数值的直接键入,但在系统中需要CPU不间断的对其端口扫描。方案二:采用独立按键,查询简单,程序处理简单,可节省CPU资源。因系统中所需按键不多,为了释放更多的CPU占有时间,故采用方案二。2.4 时钟模块设计与论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.综合考虑制作难度及精度,故采用方案二。2.5 温度采集模块设计与论证方案一:采用温度传感器(如热敏电阻或AD590),再经AD转换得到数字信号,精度较准,但价格昂贵,电路较复杂。方案二:采用数字式温度传感器DS18B20,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式,但准确度不高,误差最大达2度。综合考虑,采用方案二,用DS18B20温度芯片,采用单总线访问,降低成本、降低制作难度且可节省单片机宝贵的GPIO资源。2.6 显示模块模块设计与论证方案一:采用静态显示方法,静态显示模块的硬件制作较复杂及功耗大,要用到多个移位寄存器,但不占用端口,只需两根串口线输出。方案二:采用动态显示方法,动态显示模块的硬件制作简单,段扫描和位扫描各占用一个端口,总需占用单片机14个端口,采用间断扫描法功耗小、硬件成本低及整个硬件系统体积相对减小。方案三:采用LCD的方法,具有硬件制作简单可直接与单片机接口,显示内容多,功耗小,成本低等优点,LCM1602可显示32个字符,采用LCD的缺点是亮度不够。比较以上三种方案:方案一硬件复杂体积大、功耗大;方案二硬件简单、功耗小;方案三硬件简单,显示内容多,功耗小,成本低等。本系统设计要求达到功耗小、体积小、成本低,显示信息多等要求,权衡三种方案,选择方案三。第三章 系统的硬件设计3.1 主控芯片STC89C52RC与最小外围系统3.1.1 STC89C52RC的概述 STC89C52RC 单片机是以51内核为主的系列单片机,STC单片机是宏晶生产的单时钟/机器周期的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快812倍,内部集成MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机控制,强干扰场合。STC89C52RC单片机引脚如下图:STC89C52RC单片机主要性能高速:1 个时钟/ 机器周期,增强型8051 内核,速度比普通8051 快812 倍宽电压:5.53.8V,2.43.8V(STC12LE5410AD 系列)低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)工作频率:035MHz,相当于普通8051:0420MHz 实际可到48MHz,相当于8051: 0576MHz时钟:外部晶体或内部RC 振荡器可选,在ISP 下载编程用户程序时设置 16K 字节片内Flash 程序存储器,擦写次数10 万次以上 512 字节片内RAM 数据存储器芯片内EEPROM 功能 ISP / IAP,在系统可编程/ 在应用可编程,无需编程器/ 仿真器 10 位ADC,8 通道, STC12C5A16S2 系列为8 位ADC。4 路PWM 还可当4 路D/A 使用 2 个硬件16 位定时器,兼容普通8051 的定时器。4 路PCA 还可再实现4 个定时器硬件看门狗(WDT)高速SPI 通信端口全双工异步串行口(UART),兼容普通8051 的串口先进的指令集结构,兼容普通8051指令集;4 组8 个8 位通用工作寄存器(共32 个通用寄存器);有硬件乘法/ 除法指令通用I/O 口(27/23/15 个),复位后为: 准双向口/ 弱上拉(普通8051 传统I/O 口)。可设置成四种模式:准双向口/ 弱上拉,推挽/ 强上拉,仅为输入/ 高阻,开漏每个I/O 口驱动能力均可达到20mA,但整个芯片最大不得超过55mA。3.1.2 AT89S52最小系统的设计 图3.2单片机最小系统(1) 复位电路上电自动复位通过外部复位电路的电容C5的充电来实现,只要电源VCC的上升时间不超过1ms,就可以实现自动上电复位。(2) 时钟振荡电路考虑系统运行速度,采用12MHZ的石英晶振,并使用两个小电容作为微调电容,具体设计见图3.2。3.2 时钟芯片DS1302接口设计与性能分析3.2.1 DS1302性能简介DS1302是Dallas公司生产的一种实时时钟芯片。它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是十分容易实现的,DS1302的引脚排列及内部结构图如图3.3:DS1302引脚说明: X1,X2 32.768kHz晶振引脚GND 地线RST 复位端I/O 数据输入/输出端口SCLK 串行时钟端口VCC1 慢速充电引脚VCC2 电源引脚 图3.3 DS1302管脚 3.2.2 DS1302接口电路设计1、 时钟芯片DS1302的接口电路及工作原理:图3.4 DS1302与MCU接口电路图3.4为DS1302的接口电路,其中Vcc1为后备电源,Vcc2为主电源。VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2 两者中较大者供电。当VCC2大于VCC1+0.2V时,VCC2给DS1302供电。当VCC2小于VCC1时,DS1302由VCC1供电。DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图3.5所示。表-1为DS1302的控制字,此控制字的位7必须置1,若为0则不能对DS1302进行读写数据。对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。控制字节总是从最低位开始输入/输出的。表-2为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。表1 DS1302的控制字格式 3、数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图3.5所示。 图3.5 DS1302读/写时序图4、DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表2。 表2 DS1302的日历、时间寄存器此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.3 温度芯片DS18B20接口设计与性能分析3.3.1 DS18B20性能简介 1.DS18B20的主要特性DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。现场温度直接以一线总线的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。其性能特点可归纳如下:1) 独特的单线接口仅需要一个端口引脚进行通信;2) 测温范围在-55到125,分辨率最大可达0.0625;3) 采用了3线制与单片机相连,减少了外部硬件电路;4) 零待机功耗;5) 可通过数据线供电,电压范围在3.0V-5.5V;6) 用户可定义的非易失性温度报警设置;7) 报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 8) 负电压特性,电源极性接反时,温度计不会因发热烧毁,只是不能正常工作。2.DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3.6所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.6中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 图3.6 DS18B20测温原理 图3.7温度传感器DS18B20接口电路3.3.2 DS18B20接口电路设计如3.7图所示,该系统中采用数字式温度传感器DS18B20,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,用P2.3与DS18B20的DQ口连接,Vcc接电源,GND接地。3.3.3 DS18B20的工作时序1、复位时序图2、 读时序图图3.9读时序图3、写时序图图3.10 写时序图3.4 闹钟模块接口设计与性能分析此部分硬件上利用AT24C02存储闹钟时间,普通蜂鸣器作为闹铃播放器件。3.4.1 AT24C02器件使用1、AT24C02的特性:1) 与400KHz I2C 总线兼容2) 到6.0 伏工作电压范围3) 低功耗CMOS 技术4) 写保护功能当 WP 为高电平时进入写保护状态5) 自定时擦写周期6) 1,000,000 编程/擦除周期7) 8 脚DIP SOIC 或TSSOP 封装8) 温度范围商业级工业级和汽车级2、AT24C02功能说明AT24C02支持I2C 总线数据传送协议,I2C 总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据,发送或接收的模式通过器件地址输入端A0、A1 和A2 可以实现将最多8个24WC01和24WC02 器件连接到总线上。管脚描述如下:A0 A1 A2 器件地址选择SDA 串行数据/地址SCL 串行时钟 图3.11 AT24C02管图WP 写保护 VCC/VSS +1.8V6.0/地 3、工作时序 1)总线时序 2)写周期时序 图3.12 总线时序 图3.12写周期时序3)起始/停止时序 4)应答时序图3.13 起始/停止时序 图3.14 应答时序5)立即地址读时序图3.15 立即地址读时序3.4.2 接口电路设计 AT24C02与单片机的接口电路如图3.165所示:3.16 AT24C02与MCU的接口电路3.5 LCD显示模块3.5.1 LCM1602的特性及使用说明1、 LCM1602的接口信号说明如表3:表3 LCM1602的接口信号编号引脚符号功能说明编号引脚符号功能说明1VSS电源地9D2DATA I/O2VDD电源正极10D3DATA I/O3VL液晶显示偏压信号11D4DATA I/O4RS数据/命令选择端(H/L)12D5DATA I/O5R/W读/写选择端(H/L)13D6DATA I/O6E使能信号14D7DATA I/O7D0DATA I/O15BLA背光正极8D1DATA I/O16BLK背光负极2、基本操作时序如下:1)读状态:RS=L,RW=H,E=H2)写指令:RS=L,RW=L,D0D7=指令码,E=高脉冲3)读数据:RS=H,RW=H,E=H4)写数据:RS=H,RW=L,D0D7=数据,E=高脉冲3、初始化设置1)显示模式设置如表4:表4显示模式设置2)显示开/关及光标设置如表5:表5 显示开/关及光标设置 3.5.2 LCM1602与MCU的接口电路接口电路如图3.16所示:LCD的D0D7分别接单片机的的P0口,作为数据线,因为P0口内部没有上拉电阻,所以外部另外加上10K的上拉电阻;P2.0P2.2分别接LCD的RS、RW、E三个控制管脚;RV1用来调节LCD的显示灰度;BLK、BLA为背光的阴极和阳极,接上相应电平即点亮背光灯(图中未画出)。 图3.16 LCM1602与单片机接口电路 图3.17 按键电路3.6 按键模块设计如图3.17所示。本系统用到了4个独立按键,此种接法查询简单,程序处理简单,可节省CPU资源, 4个独立按键分别与单片机的P2.4、P2.5、P2.6、P2.7接口相连。S1SET(时间设置键),S2UP键,S3DOWN键,S4SET1(闹钟设置键)。SET键:按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期的校准;UP键:当SET键按下时,UP进行SET选定项(如:小时)的加操作;DOWN键:当SET键按下时,DOWN进行SET选定项(如:小时)的减操作;SET1键:当SET键按下时,此键功能为设置闹钟时间和开关闹钟功能。第四章 软件设计整个软件系统采用C51编程,主要实现以下功能:1) LCD的驱动2) 时间数据的采集3) 闹铃的设置4) 温度的采集5) 按键的识别处理4.1 软件总体部分的设计程序从main()主函数开始运行,随后对LCD、DS18B20、DS1302、闹钟模块等器件进行初始化操作并对标志位赋初值,随后进入while(1)循环中运行按键扫描程序及液晶显示程序,详细程序见附录B。(1) 主程序流程图如图4.1所示:(2)图4.1 主函数流程图4.2 LCD驱动及液晶显示 1、LCD驱动LCD的驱动包括初始化操作、写指令、写数据、显示模块的设定等操作。LCM1602有以下几个基本时序:1)读状态:RS=L,RW=H,E=H2)写指令:RS=L,RW=L,D0D7=指令码,E=高脉冲3)读数据:RS=H,RW=H,E=H4)写数据:RS=H,RW=L,D0D7=数据,E=高脉冲驱动函数是根据这几个基本时序来完成的,下面是LCD的几个主要驱动函数(详细见附录):1)LCD_Write() 功能:LCD写指令/数据2)LCD_Initial() 功能:LCD初始化3)GotoXY(unsigned char x, unsigned char y) 功能:字符显示的位置 4)Print(unsigned char *str) 功能:输出字符串到LCD2、液晶显示模块流程图,如图4.2所示: 图4.2液晶显示模块流程图 图4.3温度采集模块流程图4.3 按键识别及处理本设计中按键采用查询法识别按键,程序简单。本系统中含有四个调整按键,分别命名为SET、UP、DOWN、SET1。在主函数里面查询SET、SET1P两个按键是否按下,UP、DOWN键的功能由SET和SET1键激活。这样设计可以减少CPU的工作量,下面简单介绍本设计中键盘扫描程序(以伪代码的形式),详细见附录B中4.4 温度数据采集由于DS18B20单线通信功能为分时完成,有严格的时隙概念,因此读写时序很重要12。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储操作命令处理数据。根据单总线操作协议,首先要对DS18B20进行初始化,而初始化有严格的时序控制,如图3.6所示,即总线控制器(TX)发出一个复位脉冲(至少480us的低电平),然后释放总线进入接收状态,总线由5.1K上拉电阻上拉为高电平,探测到I/O引脚上的上升沿后,DS18B20等待15us60us后,然后发出一个存在脉冲(60us240us的低电平信号)。下面是几个驱动函数:1)Init_DS18B20(void) 功能:DS18B20初始化2)ReadTemp(void) 功能:读取温度值温度采集模块流程图如图4.3所示。4.5 时间数据采集串行时钟芯片DS1302的主要组成部分:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。为了初始化任何的数据传送,把RST置为高电平且把提供地址和命令信息的8位装入到移位寄存器。数据在SCLK的上升沿串行输入。无论是发生读周期还是写周期,也无论传送方式是单字节传送还是多字节传送,开始8位指定40个字节中的那个将被访问。在开始8个时钟周期把命令字装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加最大可达248的数。DS1302时钟部分子程序主要涉及以下几个主要函数:1)void DS1302InputByte(unsigned char d) 功能:实时时钟写入一字节(内部函数)2)unsigned char DS1302OutputByte(void) 功能:实时时钟读取一字节(内部函数3)Write1302() 功能:DS1302写入数据函数4)Read1302() 功能:读取DS1302某地址的数5)void DS1302_GetTime(SYSTEMTIME *Time) 功能:获取时钟芯片的时钟数据到自定义的结构型数组4.6 闹钟程序这一部分的实现是采用E2PROM存储器来储存闹钟信息,因为它具有掉电仍能保存数据的特性。所以本设计中把闹钟信息写先写入AT24C02存储器中,然后在程序中读出数据与当前时间进行比较,如果相等则发出闹钟警告。如果要对闹钟值进行修改,可通过几个按键进行,系统能根据用户的设定自动更新闹钟信息,图4.4是闹钟程序的流程图:图4.4闹钟程序的流程图第五章 系统的调试调试分为硬件调试和软件调试。硬件调试主要是检查线路板的焊接是否正确、连接是否正确,各模块之间的数据线是否导通。软件调试主要有以下两种方法:1) 将整个联合起来调试,对整个软件的功能进行验证;2)分开调试,也就是将系统分成独立的小模块,然后分别对这些小模块写入程序调试。这样可以提高调试效率,也容易解决调试中出现的问题。本系统采用分开调试方法调试了DS18B20和DS1302两个模块,并用LCD显示出了温度以及公历日期、时间,同时也实现了按键的简单调整;但整体调试的时候没有达到预期效果。总结论文首先对本设计作了简要描述,随后提出了不同的设计方案,经过论证最后确定该设计采用电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和闹钟模块共六个模块组成,接着分别从硬件系统和软件系统两方面对基于单片机的电子万年历设计作了详细论述,另外还简要介绍了一下系统的调试。在整个设计过程中,硬件方面主要设计了STC89C52RC单片机的最小系统、DS1302接口电路、DS18B20接口电路、闹钟及LCD显示;软件方面借助各个渠道的资料,主要设计了阳历数据读取程序、阳历转阴历程序、温度采集程序、闹铃程序以及LCD显示程序;系统的调试主要是通过一块STC89C52RC开发板,再借助于Keil、STC以及少许自己搭建的外围电路实现的;再此过程中,分步调试时显示出了阳历的日期及时间,还有实时温度,集中调试时没有达到预期效果。但在此过程中培养了自己的动手能力。此万年历具有读显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。附:参考文献1.张萌.单片机应用系统开发综合实例M. 北京:清华大学出版社,2007.72.楼然苗.单片机课程设计指导M. 北京:北京航空航天大学出版社,2007.73.沈德金.MCS51系列单片机接口电路与应用程序实例M. 北京:北京航空航天大学出版社,1991.4 4朱思荣51单片机实现公历与农历、星期的转换Z.当当电子网5AT24WC01/02/04/08/16 1K/2K/4K/8K/16K 位串行E2PROMD.广州周立功单片机有限公司6DS1302 Trickle Charge Timekeeping Chip datasheetD7马忠梅,籍顺心等单片机的C语言应用程序设计M北京航空航天大学出版社, 2001年8陈明荧 8051单片机课程设计实训教程M北京:清华大学出版社9何立民单片机高级教程M北京:北京航空航天大学出版社,2003年10.新编单片机原理与应用(第二版).西安电子科技大学出版社,2007.211. 李广弟. 单片机原理及应用M 北京航空航天大学出版社,2004年12.王越明.电子万年历的设计J.黑龙江科技信息,2004年13SCM1602 LCM 使用说明书DB长沙:长沙太阳人电子有限公司14赵亮. 单片机C语言编程与实例M 人民邮电出版社,2003年15. 16.17.附录A 仿真电路图附录B 源程序#include #include intrins.h#include 24c02.h#define uchar unsigned char#define uint unsigned intuchar code tabe1=20 - -;/液晶一直显示的字符uchar code tabe2= : : ;uchar code tabe3=Alarm set:;uchar miao,fen,shi,nian,yue,ri,week,wendu_shi,wendu_ge,wendu_shu,variate,alarm_shi,alarm_fen,alarm_miao;uchar flag=1,count=0,flag_up=0,flag_down=0,flag_alarm=0,alarm_on,alarm_count=0,done=0;uint wendu;/定义IOsbit DQ = P10; /ds18b20温度传送数据IO口sbit ds1302_rst = P11; /1302复位sbit ds1302_io = P12; /数据输入输出sbit ds1302_sclk= P13; /串行时钟sbit alarm_out = P36;sbit lcd1602_rs = P20; / 1602命令、数据选择sbit lcd1602_rw = P21;/ 1602写sbit lcd1602_e = P22; / 1602使能sbit set = P24;/选择按键sbit up = P25;/加sbit down= P26;/减sbit nao = P27;sbit ACC0=ACC0;sbit ACC7=ACC7;/延时void delay(uchar x)uchar y,z;for(z=x;z0;z-)for(y=110;y0;y-);void delay1()_nop_();_nop_();ds18b20_delay(uchar xus) /延时xuswhile(xus-);/*ds18b20温度控制程序*/void ds18b20_init() /DS18B20初始化uchar x=0; DQ=1;ds18b20_delay(8);DQ=0;ds18b20_delay(80);DQ=1;ds18b20_delay(14);x=DQ;ds18b20_delay(20);void write_onechar(uchar dat) /写一字节uchar i;for(i=8;i0;i-)DQ=0;if(dat&0x01=0x01)DQ=1;elseDQ=0;ds18b20_delay(5);DQ=1;ds18b20_delay(1);dat=1;uchar read_onechar()/读一字节uchar value=0,i;for(i=8;i0;i-)value=1;DQ=0;ds18b20_delay(1);DQ=1;if(DQ=1)value|=0x80;elsevalue&=0x7f;ds18b20_delay(4);return value;uint read_wendu() /DS18B20读温度 uchar a=0,b=0;uint wen=0x0000;ds18b20_init();/初始化write_onechar(0xcc);/ 跳过读序号列号的操作write_onechar(0x44);/ 启动温度转换ds18b20_delay(150);ds18b20_init();/初始化write_onechar(0xcc);/跳过读序号列号的操作write_onechar(0xbe);/读取温度寄存器等(共可读9个寄存器) 前两个就是温度ds18b20_delay(150);b=read_onechar();/读取温度值低位a=read_onechar();/读取温度值高位wen=a;wen=(wen0;k-) ds1302_io=ACC0;ds1302_sclk=0; /拉低sclkds1302_sclk=1; /拉高sclkACC=1;uchar read_byte() uchar k; for(k=8;k0;k-) ACC7=ds1302_io;ds1302_sclk=1; /拉高sclkds1302_sclk=0; /拉低sclkACC=1;return ACC; void ds1302_write(uchar add,uchar date)ds1302_rst=0;ds1302_sclk=0; /在rst没拉高之前先把sclk置0ds1302_rst=1;write_byte(add);write_byte(date);ds1302_sclk=1; ds1302_rst=0; uchar ds1302_read(uchar add)uchar temp;ds1302_rst=0;ds1302_sclk=0; /在rst没拉高之前先把sclk置0ds1302_rst=1;write_byte(add);temp=read_byte();ds1302_sclk=1; ds1302_rst=0;return temp;void ds1302_init() /ds1302初始化 ds1302_rst=0;ds1302_sclk=1; ds1302_write(0x8e,0x00);/写允许ds1302_write(0x80,0x58);ds1302_write(0x82,0x56);ds1302_write(0x84,0x23);ds1302_write(0x86,0x21);ds1302_write(0x88,0x12);ds1302_write(0x8a,0x02);ds1302_write(0x8c,0x10);ds1302_write(0x90,0xa5); /充电ds1302_write(0x8

温馨提示

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

评论

0/150

提交评论