基于单片机的同步电子时钟设计_第1页
基于单片机的同步电子时钟设计_第2页
基于单片机的同步电子时钟设计_第3页
基于单片机的同步电子时钟设计_第4页
基于单片机的同步电子时钟设计_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、基于单片机的同步电子时钟设计 摘 要 单片计算机既单片微型计算机。由ram,rom,cup构成,定时,计数和多种接口与一体的微型控制器。他体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51/52系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习,设计的能力。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。数字钟的精度、稳定度远远超过老式

2、机械钟。本设计使用12mhz晶振与单片机at89c52相连接,以at89c52芯片为核心,ds1302为时钟芯片,实现在lcd上显示日期、时间、定时,通过5个按键实现设置日期、进行调时、设定闹铃等功能,在实现各功能时lcd进行相应显示,闹铃或定时时间到时蜂鸣器响。软件部分用c语言实现,分为显示、延迟、调时、闹铃、定时、调整日期等部分。通过软硬件结合达到最终目的。 关键词:单片机,数字钟,ds1302,lcd,c语言 synchronous electronic clock design based on scm abstract a monolithic computer is single

3、chip microcomputer. by ram, rom, cup, timing, counting and multiple interfaces and the integration of the micro controller. he has the advantages of small volume, low cost, strong function, widely used in smart industries, and industrial automation. and 51 series scm is the most typical and the most

4、 representative one. the graduation design through the study, application, to achieve the study, design ability. scm module are the most common digital clock, a digital clock is a kind of digital circuit technology implementation, minutes and seconds timing device, and the mechanical clock compared

5、with higher accuracy and intuitive, and without a mechanical device, has more longer service life, so it has been widely used. a digital clock is adopting digital circuit implementation of hour points and second digital display timer device. a digital clock precision, stability than old mechanical c

6、lock. this design uses a 12 mhz crystal to connect with the machine at89c52, takes at89c52 chips as core,ds1302 chip is used as the lock chip, we are able to show date, time and fix the time,on lcd. we can use 5 key to constitute date, adjust time, enact the bell and set the countdown timer. when th

7、e electric carrying out each function, the lcd shows the tight function .when the alarm clock and the countdown timer were reached, the voice begins. the software part is realized by c language. it was divided into to show, delay, adjust, make bell, in fixed time, and adjust date etc. part. we get t

8、he end purpose combining the software and the hardware. keywords:scm,digital clock, ds1302,lcd,c language 目 录前言1第1章 设计要求与方案选择21.1 设计目的21.2 设计要求21.3各模块方案选择与论证2第2章 总体方案42.1 系统设计的思路42.2 系统硬件描述42.3 系统软件描述52.4 设计流程和预期结果6第3章 系统硬件电路设计与实现73.1 硬件芯片介绍73.1.1 单片机at89c5273.1.2 ds1302简介153.2 系统硬件架构173.2.1 电源部分183

9、.2.2 复位与晶振电路183.2.3 液晶显示电路193.2.4 按键电路19第4章 系统软件设计214.1 软件设计的总体说明214.2主程序流程图21第5章 系统的仿真及调试225.1 系统软硬件调试225.2 系统的仿真235.2.1 仿真软件的简介235.2.2 电子钟系统protues仿真结果24结论26参考文献27致谢28附录29前 言 数字电子时钟,自从它发明的那天起,就成为人类的朋友,给人们的生活、学习、工作、娱乐带来极大的方便。但随着时间的推移,科学技术的不断发展,生活节奏越来越快,基于51/52单片机的多功能电子钟设计竞争日益激烈,人们对时间计量的精度要求越来越高,应用越

10、来越广。可以说时间的准确已成为各行各业安全运行的基础,如果时间出现误差而不能及时校正,会造成一系列严重的后果和经济损失。电子时钟的设计方法有多种,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用对单片机编程来实现电子钟。其中,利用单片机实现的电子时钟具有硬件结构简单、编程灵活、便于功能扩展等特点。由单片机作为数字钟的核心控制器,可以通过它的时钟信号实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。通过键盘可以进行定时、校时功能。输出设备显示器可以用液晶显示技术或者数码管显示技术。多功能电子时钟除了具有时钟的功能外还可以包

11、含与外界时间保持同步,从而人们可以不用担心每次在时钟掉电后,再次得电时需要重新调时。在各个行业生产及日常生活中,对时间同步这一功能始终占据着非常重要的地位。目前,典型的实例是手机和电脑的时间会始终保持运转而不用每次调时,使生活变得更方便,而且具有较强推广应用价值。 第1章 设计要求与方案选择1.1 设计目的设计一种有线连接的可以实现主机同从机通过串行口协议来达到时间同步的同步电子时钟,加深对所学专业知识的认识,提高分析、解决工程实际问题的能力,提高对单片机的应用能力,提高收集文献、资料的能力,从而达到综合运用所学的专业知识进行电子产品设计、制作与调试的能力。1.2 设计要求基本功能:(1) 同

12、步电子时钟的主机时间能与从机时间保持同步(2) 可以显示年月日时分秒(3) 可以实现调时功能(4) 具有定时闹钟功能(5) 具有复位功能(6) 做出实物1.3各模块方案选择与论证根据设计要求,系统可分为单片机模块,液晶显示模块,按键模块,晶振模块,外部时钟控制模块,复位模块,闹铃模块。单片机模块: 采用型号为at89c52的单片机。因为:at89c52是一个低电压,高性能cmos 8位单片机,片内含8k bytes的可反复擦写的flash只读程序存储器和256 bytes的随机存取数据存储器(ram),器件采用atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通

13、用8位中央处理器和flash存储单元,功能强大的at89c52单片机可提供许多较复杂系统控制应用场合。液晶显示模块: 方案一:数码管显示,优点价格便宜,但是不能显示复杂的英文,显示出来很大,布线不易,不美观。方案二:lcd1602,价格适中,可以显示复杂的英文,功耗不大,外观较小,计较符合。方案三:lcd12864,彩屏,可以显示中文和一些图片,但是价格较高,秉着合理利用的原则,不大材小用,决定放弃。时钟模块: 方案一:可以利用单片机自己自带的定时器精确定时,在通过软件控制,这样就减少了硬件的成本,但是这样需要晶振绝对的稳定,而且掉电数据不保存,还没有年月星期的自动调整功能,对程序的要求很高,

14、不易控制. 方案二:ds1302它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能。不必在程序上做太多的处理,与单片机的接口简单,掉电有备用电池用来供电保存数据,所以非常适合要求。 第2章 总体方案 2.1 系统设计的思路本设计采用at89c52单片机芯片配合ds1302时钟芯片为主构成的主机和从机以有线连接而达到时间同步的电子时钟。文中设计了一个显时、调时、定时闹钟以及时间同步功能的电子钟。电子钟使用12mhz晶振与 ds1302时钟芯片相连接, 通过晶振为时钟芯片提供最为基本的脉冲信号的方法实现了在时钟芯片中的计时作用, 再经过单片机的编程作用,而达到在lcd液晶屏上显示

15、年月日时分秒,并可以调时、定时,在定时时间到时有蜂鸣器报警。设计通过主机和从机的配合作用,采用在主机和从机之间用有线连接,签订串行口协议,而实现主机和从机的时间同步功能。该电子钟设有同步(p3.3),闹铃(p3.4),选定(p3.5),加(p3.6),减(p3.7)等五个基本按键。每按一下同步按键可以使主机与从机时间达到同步,按下闹铃键,在达到定时时间时有蜂鸣器报警,按下选定键可以选定年月日时分秒的每一位,再按加、减键,而达到调时效果。2.2 系统硬件描述 基于单片机系统的同步电子时钟基本结构框架如图2-1所示: 图2-1 系统基本结构框图该系统所需要的器件包括单片机at89c52芯片两块,时

16、钟芯片ds1302两块,液晶显示屏lcd1602一块,蜂鸣器一个,12mhz的晶振两个,排针排线若干组,电容电阻若干导线若干,按钮七个。2.3 系统软件描述系统程序实现三部分功能:一、实现年、月、日、时、分、秒的显示和设置;二、实现闹钟部分的显示和设置;三、实现主机和从机之间的时间同步。如图2-2所示: 图2-2 功能整体流程框图2.4 设计流程和预期结果 该设计的主要流程如下:首先阅读大量参考文献,进行设计方案的确定,然后在 protues 上进行原理图的绘制和修改,在电器检查无误的情况下,购买所需要的元器件(元器件应该考虑裕量)。接着把元器件焊接到各个功能电路的模块上,并结合程序进行调试。

17、最后将各个功能的电路程序组合起来,然后再进行总体调试直到成功。 本设计能达到以下结果:(1) 显示年、月、日、时、分、秒,并能通过按键设置。(2) 可以定时闹钟,定时时间达到时,蜂鸣器报警。(3) 可以通过按键来实现主机和从机的时间同步。 第3章 系统硬件电路设计与实现3.1 硬件芯片介绍3.1.1 单片机at89c52 at89c52有40个引脚,32个外部双向输入/输出(i/o)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,at89c52可以按照常规方法进行编程,但不可以在线编程(s系列的才支持在线编程)。其将通用的微处理器和flash存储器结

18、合在一起,特别是可反复擦写的flash存储器可有效地降低开发成本。 兼容mcs51指令系统 8k可反复擦写(1000次)flash rom 32个双向i/o口 256x8bit内部ram 3个16位可编程定时/计数器中断 时钟频率0-24mhz 2个串行中断 可编程uart串行通道 2个外部中断源 共6个中断源 2个读写中断口线 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 at89c52 p为40 脚双列直插封装的8 位通用微处理器,采用工业标准的c51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主ic 内部寄存器、数据ra

19、m及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号ir的接收解码及与主板cpu通信等。主要管脚有:xtal1(19 脚)和xtal2(18 脚)为振荡器输入输出端口,外接12mhz 晶振。rst/vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。vcc(40 脚)和vss(20 脚)为供电端口,分别接+5v电源的正负端。p0p3 为可编程通用i/o 脚,其功能用途由软件定义,在本设计中,p0 端口(3239 脚)被定义为n1 功能控制端口,分别与n1的相应功能管脚相连接,13 脚定义为ir输入端,10 脚和11脚定义为i2c总线控制端口,分别连接n1的sdas

20、(18脚)和scls(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板cpu 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。p0 口 p0 口是一组8 位漏极开路型双向i/o 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8 个ttl逻辑门电路,对端口p0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。在flash 编程时,p0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。p1 口 p1 是一个带内部

21、上拉电阻的8 位双向i/o 口, p1 的输出缓冲级可驱动(吸收或输出电流)4 个ttl 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。与at89c51 不同之处是,p1.0 和p1.1 还可分别作为定时/计数器2 的外部计数输入(p1.0/t2)和输入(p1.1/t2ex),参见表1。flash 编程和程序校验期间,p1 接收低8 位地址。引脚号功能特性p1.0t2,时钟输出p1.1t2ex(定时/计数器2) 表1p2 口 p2 是一个带有内部上拉电阻的8 位双向i/o

22、口,p2 的输出缓冲级可驱动(吸收或输出电流)4 个ttl 逻辑门电路。对端口p2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(iil)。 在访问外部程序存储器或16 位地址的外部数据存储器(例如执行movx dptr 指令)时,p2 口送出高8 位地址数据。在访问8 位地址的外部数据存储器(如执行movx ri 指令)时,p2 口输出p2 锁存器的内容。flash 编程或校验时,p2亦接收高位地址和一些控制信号。p3 口 p3 口是一组带有内部上拉电阻的8 位双向i/o 口。p3 口输出缓冲级可驱

23、动(吸收或输出电流)4 个ttl 逻辑门电路。对p3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3 口将用上拉电阻输出电流(iil)。p3 口除了作为一般的i/o 口线外,更重要的用途是它的第二功能。p3 口还接收一些用于flash 闪速存储器编程和程序校验的控制信号。rst复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。ale/prog当访问外部程序存储器或数据存储器时,ale(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。一般情况下,ale 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

24、要注意的是:每当访问外部数据存储器时将跳过一个ale 脉冲。对flash 存储器编程期间,该引脚还用于输入编程脉冲(prog)。如有必要,可通过对特殊功能寄存器(sfr)区中的8eh 单元的d0 位置位,可禁止ale 操作。该位置位后,只有一条movx 和movc指令才能将ale 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale 禁止位无效。psen程序储存允许(psen)输出是外部程序存储器的读选通信号,当at89c52 由外部程序存储器取指令(或数据)时,每个机器周期两次psen 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次psen信号。ea/vpp外

25、部访问允许。欲使cpu 仅访问外部程序存储器(地址为0000hffffh),ea 端必须保持低电平(接地)。需注意的是:如果加密位lb1 被编程,复位时内部会锁存ea端状态。如ea端为高电平(接vcc端),cpu 则执行内部程序存储器中的指令。flash 存储器编程时,该引脚加上+12v 的编程允许电源vpp,当然这必须是该器件是使用12v 编程电压vpp。xtal1振荡器反相放大器的及内部时钟发生器的输入端。xtal2振荡器反相放大器的输出端。定时器0和定时器1:at89c52的定时器0和定时器1 的工作方式与at89c51 相同。定时器2定时器2 是一个16 位定时/计数器。它既可当定时器

26、使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄存器t2con(如表3)的c/t2 位选择。定时器2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波特率发生器方式,工作方式由t2con 的控制位来选择。定时器2 由两个8 位寄存器th2 和tl2 组成,在定时器工作方式中,每个机器周期tl2 寄存器的值加1,由于一个机器周期由12 个振荡时钟构成,因此,计数速率为振荡频率的1/12。在计数工作方式时,当t2 引脚上外部输入信号产生由1 至0 的下降沿时,寄存器的值加1,在这种工作方式下,每个机器周期的5sp2 期间,对外部输入进行采样。若在第一个机器周期中采到的值为1,

27、而在下一个机器周期中采到的值为0,则在紧跟着的下一个周期的s3p1 期间寄存器加1。由于识别1 至0 的跳变需要2 个机器周期(24 个振荡周期),因此,最高计数速率为振荡频率的1/24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。自动重装载(向上或向下计数器)方式当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器t2con(见表5)的dcen 位(允许向下计数)来选择的。复位时,dcen 位置“0”,定时器2 默认设置为向上计数。当dcen置位时,定时器2 既可向上计数也可向下计数,这取

28、决于t2ex 引脚的值,参见图5,当dcen=0 时,定时器2 自动设置为向上计数,在这种方式下,t2con 中的exen2 控制位有两种选择,若exen2=0,定时器2 为向上计数至0ffffh 溢出,置位tf2 激活中断,同时把16 位计数寄存器rcap2h 和rcap2l重装载,rcap2h 和rcap2l 的值可由软件预置。若exen2=1,定时器2 的16 位重装载由溢出或外部输入端t2ex 从1 至0 的下降沿触发。这个脉冲使exf2 置位,如果中断允许,同样产生中断。定时器2 的中断入口地址是:002bh 0032h 。当dcen=1 时,允许定时器2 向上或向下计数,如图6 所

29、示。这种方式下,t2ex 引脚控制计数器方向。t2ex 引脚为逻辑“1”时,定时器向上计数,当计数0ffffh 向上溢出时,置位tf2,同时把16 位计数寄存器rcap2h 和rcap2l 重装载到th2 和tl2 中。 t2ex 引脚为逻辑“0”时,定时器2 向下计数,当th2 和tl2 中的数值等于rcap2h 和rcap2l中的值时,计数溢出,置位tf2,同时将0ffffh 数值重新装入定时寄存器中。当定时/计数器2 向上溢出或向下溢出时,置位exf2 位。波特率发生器当t2con(表3)中的tclk 和rclk 置位时,定时/计数器2 作为波特率发生器使用。如果定时/计数器2 作为发送

30、器或接收器,其发送和接收的波特率可以是不同的,定时器1 用于其它功能,如图7 所示。若rclk 和tclk 置位,则定时器2工作于波特率发生器方式。波特率发生器的方式与自动重装载方式相仿,在此方式下,th2 翻转使定时器2 的寄存器用rcap2h 和rcap2l 中的16位数值重新装载,该数值由软件设置。在方式1 和方式3 中,波特率由定时器2 的溢出速率根据下式确定:方式1和3的波特率=定时器的溢出率/16定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(c/t2=0)。定时器2 作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(

31、1/12 振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加1。波特率的计算公式如下:方式1和3的波特率=振荡频率/32*65536-(rcp2h,rcp2l)式中(rcap2h,rcap2l)是rcap2h 和rcap2l中的16 位无符号数。定时器2 作为波特率发生器使用的电路如图7 所示。t2con 中的rclk 或tclk=1 时,波特率工作方式才有效。在波特率发生器工作方式中,th2 翻转不能使tf2 置位,故而不产生中断。但若exen2 置位,且t2ex 端产生由1 至0 的负跳变,则会使exf2 置位,此时并不能将(rcap2h,r

32、cap2l)的内容重新装入th2 和tl2 中。所以,当定时器2 作为波特率发生器使用时,t2ex 可作为附加的外部中断源来使用。需要注意的是,当定时器2 工作于波特率器时,作为定时器运行(tr2=1)时,并不能访问th2 和tl2。因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。然而,对rcap2 则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。在访问定时器2或rcap2 寄存器之前,应将定时器关闭(清除tr2)。可编程时钟输出定时器2 可通过编程从p1.0 输出一个占空比为50%的时钟信号,如图8 所示。p1.0 引脚除了是一个标准的i/o

33、口外,还可以通过编程使其作为定时/计数器2 的外部时钟输入和输出占空比50%的时钟脉冲。当时钟振荡频率为16mhz 时,输出时钟频率范围为61hz4mhz。当设置定时/计数器2 为时钟发生器时,c/t2(t2con .1)=0,t2oe (t2mod.1) =1,必须由tr2(t2con.2)启动或停止定时器。时钟输出频率取决于振荡频率和定时器2 捕获寄存器(rcap2h,rcap2l)的重新装载值,公式如下:输出时钟频率=振荡器频率/4*65536-(rcp2h,rcp2l)在时钟输出方式下,定时器2 的翻转不会产生中断,这个特性与作为波特率发生器使用时相仿。定时器2 作为波特率发生器使用时

34、,还可作为时钟发生器使用,但需要注意的是波特率和时钟输出频率不能分开确定,这是因为它们同使用rcap2l和rcap2l。uart at89c52的uart 工作方式与at89c51 工作方式相同。中断at89c52 共有6 个中断向量:两个外中断(int0 和int1),3 个定时器中断(定时器0、1、2)和串行口中断。所有这些中断源如图9 所示。这些中断源可通过分别设置专用寄存器ie 的置位或清0 来控制每一个中断的允许或禁止。ie 也有一个总禁止位ea,它能控制所有中断的允许或禁止。注意表5 中的ie.6 为保留位,在at89c51 中ie.5 也是保留位。程序员不应将“1”写入这些位,它

35、们是将来at89 系列产品作为扩展用的。定时器2 的中断是由t2con 中的tf2 和exf2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除,事实上,服务程序需确定是tf2 或exf2 产生中断,而由软件清除中断标志位。定时器0 和定时器1 的标志位tf0 和tf1 在定时器溢出那个机器周期的s5p2 状态置位,而会在下一个机器周期才查询到该中断标志。然而,定时器2 的标志位tf2 在定时器溢出的那个机器周期的s2p2 状态置位,并在同一个机器周期内查询到该标志。时钟振荡器at89c52 中有一个用于构成内部振荡器的高增益反相放大器,引脚xtal1 和xtal2 分别是该放大器

36、的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图10。外接石英晶体(或陶瓷谐振器)及电容c1、c2 接在放大器的反馈回路中构成并联振荡电路。对外接电容c1、c2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pf10pf,而如使用陶瓷谐振器建议选择40pf10f。用户也可以采用外部时钟。采用外部时钟的电路如图10 右图所示。这种情况下,外部时钟脉冲接到xtal1 端,即内部时钟发生器的输入端,xtal2 则悬空。由于外部时钟信号是通过一

37、个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。flash存储器的编程at89c52单片机内部有8k字节的flash perom,这个flash 存储阵列出厂时已处于擦除状态(即所有存储单元的内容均为ffh),用户随时可对其进行编程。编程接口可接收高电压(+12v)或低电压(vcc)的允许编程信号。低电压编程模式适合于用户在线编程系统,而高电压编程模式可与通用eprom 编程器兼容。at89c52 单片机中,有些属于低电压编程方式,而有些则是高电压编程方式,用户可从芯片上的型号和读取芯片内的签名字

38、节获得该信息。at89c52 的程序存储器阵列是采用字节写入方式编程的,每次写入一个字节,要对整个芯片内的perom 程序存储器写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。编程方法编程前,须按表9 和图11 所示设置好地址、数据及控制信号, at89c52 编程方法如下:1 在地址线上加上要编程单元的地址信号。2 在数据线上加上要写入的数据字节。3 激活相应的控制信号。4 在高电压编程方式时,将ea/vpp 端加上+12v 编程电压。5 每对flash 存储阵列写入一个字节或每写入一个程序加密位,加上一个ale/prog 编程脉冲。每个字节写入周期是自身定时的,通常约为1.5

39、ms。重复15 步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。3.1.2 ds1302简介ds1302的结构及工作原理ds1302 是美国dallas公司推出的一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个318的用于临时性存放数据的ram寄存器。ds1302是ds1202的升级产品,与ds1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力

40、。 引脚功能及结构ds1302的引脚排列,其中vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc1+0.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。x1和x2是振荡源,外接32.768khz晶振。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。rst输入有两种功能:首先,rst接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,rst提供终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许

41、对ds1302进行操作。如果在传送过程中rst置为低电平,则会终止此次数据传送,i/o引脚变为高阻态。上电运行时,在vcc2.0v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。i/o为串行数据输入输出端(双向),后面有详细说明。sclk为时钟输入端。 下图为ds1302的引脚功能图: ds1302封装图ds1302的控制字节ds1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入ds1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取ram数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要

42、进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 数据输入输出(i/o)在控制指令字输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个sclk脉冲的下降沿读出ds1302的数据,读出数据时从低位0位到高位7。ds1302的寄存器ds1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为bcd码形式,其日历、时间寄存器及其控制字见表1。 此外,ds1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与ram相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存

43、器内容。 ds1302与ram相关的寄存器分为两类:一类是单个ram单元,共31个,每个单元组态为一个8位的字节,其命令控制字为c0hfdh,其中奇数为读操作,偶数为写操作;另一类为突发方式下的ram寄存器,此方式下可一次性读写所有的ram的31个字节,命令控制字为feh(写)、ffh(读)。 3.2 系统硬件架构 本设计以模块化的方式来进行硬件电路的设计和调试。单片机的模块化就是把系统分成各个具有独立功能又可以互相衔接的简单模块,将复杂难懂的指令、语法、编程及其电路分解,使设计简单化。本设计的电路模块可以分为稳压电源模块、时钟模块、晶振模块、液晶显示模块、按键模块、蜂鸣器报警模块等。3.2.

44、1 电源部分 图 3-1 稳压电源如图3.1所示,从外部引入4.5v的直流电,为时钟芯片、单片机、复位电路等提供电源。3.2.2 复位与晶振电路 图3-2 复位电路 图3-3 晶振电路如图3.2所示,复位电路主要由型号为10uf的电容, 10k的电阻以及按键s1构成,s1接芯片的相应引脚rst,当开关按下时引脚rst为高电平1,断开时引脚为低电平0。晶振电路中晶振为12mhz与 ds1302时钟芯片相连接, 为时钟芯片提供最为基本的脉冲信号的方法实现了在时钟芯片中的计时作用。实验板的时钟振荡源电路如图3.3所示。该电路提供单片机工作所需的振荡频率,计算定时器初值即需此晶振频率,在通信时也需知道

45、晶振频率,以对波特率进行计算。3.2.3 液晶显示电路 图3-4 液晶显示电路 液晶显示电路部分,通过液晶屏与单片机相连接,再经过进一步的编程,使电子时钟的时间、调时、定时、同步都能够明确的显示出来,使人一目了然。3.2.4 按键电路 图3-5 按键电路电子钟的按键电路设有同步(p3.3),闹铃(p3.4),选定(p3.5),加(p3.6),减(p3.7)等五个基本按键。每按一下同步按键可以使主机与从机时间达到同步,按下闹铃键,在达到定时时间时有蜂鸣报警,按下选定键可以选定年月日时分秒的每一位,再按加、减键,而达到调时效果。 第4章 系统软件设计 4.1 软件设计的总体说明 本系统的程序采用c

46、语言编写,为了便于修改和调试,系统软件采用模块化设计,程序的编写编译在keil软件中完成。 首先对at89c52、ds1302、lcd1602进行初始化,日历和时间信息通过lcd1602显示出来。系统中有五个按键,即:设置键(选定)、切换键(闹钟)、上调键(加)、下调键(减)以及同步键。通过按键选定、加、减键可对系统时间进行修改;当按下闹钟键,系统可调用闹钟程序,并可通过选定、加、减键对闹钟时间进行修改;当按下同步键,主机系统可读取从机系统的时间,并通过lcd显示出来。4.2 主程序流程图 图4-1 主程序流程图 第5章 系统的仿真及调试5.1 系统软硬件调试调试工作分硬件调试和软件调试两部分

47、,调试方法介绍如下:首先,硬件调试主要是先搭建硬件平台,然后利用万用表等工具对电路检查,最后应用程序进行功能调试。硬件调试比较费时,需要细心和耐心,也需要熟练掌握电路原理。然后,可以直接应用一些编辑或仿真软件进行软件调试,比如单片机c51编辑软件keil。该软件提供了一个集成开发环境uvision,它包括c编辑器、宏编辑器、连接器、库管理和一个功能强人的仿真调试器。通过编译、运行,可以检查程序错误。但应用此方法,仍需要十分了解所使用元器件的工作方式和管脚连接方式。存软件调试过程中要仔细耐心,即便是多写或少写一两个字符,都无法编译成功。而有时往往在keil巾编译、运行无错,但烧录到单片机中运行起

48、来就会出错,很可能是编程时管脚或时序编辑得不对。还有一种方式,即应用仿真软件搭建电路的软件平台,再导入程序进行仿真调试。如果电路出错,可以在计算机上方便的修改电路,程序出错可以重新编辑程序,这种方法节时、省力,经济、方便。笔者应用的仿真软件为proteus。总之,调试过程是一个软硬件相结合调试的过程,硬件电路是基础,软件是检测硬件电路和实现其功能的关键。在调试过程中,首先必须明确调试顺序。例如:本设计是在单片机系统基础上建立起米的,所以必须先确定单片机基础电路能否正常工作。为了正确显示时间,接下来还要确定显示电路能否正常工作。硬件调试的过程,也是软件调试的过程。然后,要准备好调试的工具。硬件调

49、试需要万用表、示波器等,软件调试一般需要诸如keil等仿真编辑器。笔者根据自己实际制作该多功能电时钟的经验,将调试过程介绍如下:软件调试时先进行单元测试,分别对各个代码模块进行测试,看其是否实现了规定功能,再把已经测试过的模块组合起来进行测试,一旦不能正确运行,要找出程序中的错误,确定大致的出错位置,研究有关部分的错误程序,找出错误原因,修改设计和代码,以排除错误。我们在程序编写完成后,就可以利用仿真器进行初步调试,观察在计算机里能否通过编译与运行并达到设计的基本要求。在基本符合的情况下,利用仿真器与工作正常的硬件连接进行仿真调试;或用编程器把程序烧写到芯片中,直接观察能否正常运行。如果达不到

50、设计要求或者不能正常运行,可以直接在程序中进行修改。在系统上电开始测量前,要用万用表的电压档对被测电压进行估测,然后以此选择适当的量程,防止电压过大烧坏硬件。首先用万用表按照原理图逐步检查印刷板中各器件的电源及各引脚的连接是否正确,有否断路、短路或者虚焊,尤其是给电路供电的电源部分要重点检查,如果电压没有达到要求,要及时排查给予解决,以免烧坏芯片和其他元器件。系统调试中遇到的问题及解决的方法:1)由于源程序的多处错误,使得仿真无法通过,后经过单步调试,把存在的错误一一排除,通过了软件仿真。2)程序下载到硬件上之后,在检查过程中发现年历中的日期中出现了00日,所以软件编程时出错,经过改正之后重新

51、下载调试正确。3)在烧录芯片的过程中,由于选择烧录文件的错误及芯片自身问题,经过多次多次烧录,才烧录正确。5.2 系统的仿真 5.2.1 仿真软件的简介本电子钟的设计用的pretues仿真软件设计电路并仿真。proteus isis是英国labcenter公司开发的电路分析与实物仿真软件。它运行于windows操作系统上,可以仿真、分析(spice)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和spice电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、rs232动态仿真、i2c调试器、spi调试器、键盘和lcd系统仿真的功能;有各种虚拟仪器,如示

52、波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、avr系列、pic12系列、pic16系列、pic18系列、z80系列、hc11系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如keil c51 uvision2等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和spice分析于一身的仿真软件,功能极其强大。因为pretues仿真软件中所有的情况都是在理想想

53、的条件下,但是与实际电路的工作还是有很大的差别,所以我们必需考虑到实际情况应接入驱动限流等电路它才能被实际所应用。5.2.2 电子钟系统protues仿真结果按下同步按键前:按下同步按键后:此仿真结果的主要实现 (1)将其电源键打开,按下电源开关即开始常工作,lcd液晶显示屏显示年、月、日、时、分、秒。(2)按键说明:复位键,当发现系统运行不正常,进入死循环,显示数值。严重失真时,按复位键,其内部功能为使用单片机复位。强行使单片机从头开始运行,跳出错误区。闹钟显示键,该键接外部中断零(1nt0引脚)。通过中断服务子程序来达到显示闹钟时间的目的。中断程序只进行一秒后返回主程序,显示年、月、日、时、分、秒。调时键(选定)按下此键进入调时子程序,按一下调分钟,两下调时,三下调日期,四下调月份,五下调年份。加键每按一下增加一,减键每按一下减少一,三个键组合在一起完成调时功能。 按闹钟键可以显示定时闹钟时间,并通过按选定、加、减三键可以进行具体日期时间调整,当定时设定后,到预定时间后,时钟会发出连续的蜂鸣声。按同步键可以实现主机和从机的时间同步。 结 论 本文通过对同步电子时钟的设计仿真,使自己对单片机和c语言有了进一步的温故掌握。在设计过程中,吸收了前辈的一些先进的理论成果,我在设计

温馨提示

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

评论

0/150

提交评论