基于51系列单片机的多路定时唤醒仪设计论文.doc_第1页
基于51系列单片机的多路定时唤醒仪设计论文.doc_第2页
基于51系列单片机的多路定时唤醒仪设计论文.doc_第3页
基于51系列单片机的多路定时唤醒仪设计论文.doc_第4页
基于51系列单片机的多路定时唤醒仪设计论文.doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

57内蒙古科技大学毕业设计说明书(毕业论文)基于51系列单片机的多路定时唤醒仪设计摘 要时钟是人们生活和生产必不可少的一种工具,尤其在现在讲究效率的年代,更需要时常提醒人们时间。因此,设计一种多路定时唤醒仪也显得十分有意义。本文设计了一款能显示时钟、校对时钟、并且带有三路定时报警的数字时钟。本文对当前电子钟的开发手段进行了比较和分析,最终确定了采用单片机技术实现多路定时唤醒仪。本设计应用at89c52芯片作为核心控制器,使用ds1302实时时钟日历芯片完成时钟的基本功能。另外,本设计还包含6位led数码管显示模块,键盘模块以及单片机基本应用电路。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精度高,操作简单,编程容易。该唤醒仪可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。关键词:电子时钟;多路定时;at89c52;ds1302;唤醒仪 内蒙古科技大学毕业设计说明书(毕业论文)the design of multi-channel wake-up clock based on mcs-51 abstractclock, as a tool, is essential to peoples lives and production. particularly in the current era of efficient, it is necessary to remind people the time. therefore, the design of a multi-channel clock is very meaningful. the paper designs a clock can not only display time, proofread time, but also can wake up by multi-channel.comparing and analysising the development technology of the electron clock, the design determines to use the mcu technology to realize the multi-channel wake-up clock. this design utilizes at89c52 as a core chip and uses ds1302 real-time clock chip to complete the basic function of the clock. in addition, the design also includes six led digital display module, the keyboard module, as well as the basic application of single-chip circuit. the method has the advantage of being simple circuit, reliable performance, good real-time, high precision of the time, simply operation, easy programming. the multi-channel wake-up clock can be applied to the general living and working ,can also be modified to improve performance, add new functions, and brings more convenient to peoples life and work.key words: electronic clock; multi-channel; at89c52; ds1302; wake-up clock目 录摘 要iabstractii第一章 引 言11.1 多路唤醒仪研究的背景和意义11.2 唤醒仪的功能2第二章 多路唤醒仪方案设计32.1 现场可编程门阵列电路实现形式32.2 石英钟专用芯片实现形式32.3 ne555定时器电路实现形式42.4 单片机实现形式52.5 总体方案设计6第三章 系统硬件设计73.1 主要ic芯片选择73.1.1 微处理器选择73.1.2 时钟日历芯片选择93.2 硬件电路设计163.2.1 实时时钟电路设计163.2.2 显示电路设计173.2.3 按键电路设计203.2.4 报警电路设计233.2.5 复位电路设计233.2.6 振荡电路设计25第四章 系统软件设计264.1 主程序设计264.2 子程序设计274.2.1 实时时钟子程序设计274.2.2 显示子程序设计284.2.3 键盘扫描子程序294.2.4 报警子程序设计31结 论32参考文献33附录a 程序35附录b 多功能电子时钟元器件一览表53附录c 多功能电子时钟硬件原理图54致 谢55第一章 引 言现在是一个知识爆炸的新时代。新产品、新技术层出不穷,电子技术的发展更是日新月异。可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。在这快速发展的年代,时间对人们来说是越来越宝贵,在快节奏的生活时,人们往往忘记了时间,一旦遇到重要的事情而忘记了时间,这将会带来很大的损失。因此我们需要一个定时系统来提醒这些忙碌的人。多路定时唤醒仪给人们带来了极大的方便。1.1 多路唤醒仪研究的背景和意义20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透到了社会的各个领域,有力的推动和提高了社会生产力的发展与信息化程度,同时也使现代电子产品性能进一步提升,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌和繁杂容易使人忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或他人造成很大麻烦。平时我们要求上班准时,约会或召开会议必然要提及时间;火车要准点到达,航班要准点起飞;工业生产中,很多环节都需要用时间来确定工序替换时刻。所以说能随时准确的知道时间并利用时间,是我们生活和工作中必不可少的1。想知道时间,手表当然是一个很好的选择,但是,在忙碌当中,我们还需要一个“助理” 及时的给我们提醒时间。所以,计时器最好能够拥有一个定时系统,随时提醒容易忘记时间的人。 最早能够定时、报时的时钟属于机械式钟表,但这种时钟受到机械结构、动力和体积的限制,在功能、性能以及造价上都没办法与电子时钟相比。 电子钟是采用电子电路实现对时、分、秒进行数字显示的计时装置,广泛应用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、0按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。然而,更多时候需要提醒人们时间,甚至一天之内提醒人们不同的时间。因此,研究和设计一款多路定时唤醒仪,有着非常现实的意义。1.2 唤醒仪的功能唤醒仪主要是利用电子技术将时钟电子化、数字化,并且带有多路定时报警功能,拥有时间精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。当今市场上的电子时钟品类繁多,外形小巧别致。也有体型较大的,诸如公共场所的大型电子报时器等。多路定时唤醒仪首先是数字化了的带有三路定时报警的电子时钟,在此基础上,人们可以根据不同场合的要求,在时钟上加置其他功能,比如万年历,环境温度、湿度检测,环境空气质量检测,usb扩展口功能等。本设计唤醒仪主要功能为:1. 具有时间显示功能,24小时制; 2. 能随意设定走时起始时间。对电子钟而言,最基本的功能是具有对时功能,即能随意设定走时起始时间;3. 具有报警功能,唤醒仪能以声或光的形式告警提示实现多路(三路)定时唤醒;4. 掉电后无需重新设置时间和日期。第二章 多路唤醒仪方案设计多路唤醒仪就是一个带有三路定时报警的电子时钟,既可以通过纯硬件实现,也可以通过软硬件结合实现,根据电子时钟里的核心部件秒信号的产生器,通常有以下四种实现形式:采用fpga电路的实现形式、采用石英钟专用芯片的实现形式、采用ne555时基电路的实现形式和基于单片机的实现形式。2.1 现场可编程门阵列电路实现形式现场可编程门阵列(field programmable gate array,fpga),它是在pal、gal、cpld等可编程器件的基础上进一步发展的产物,是20世纪70年代发展起来的一种可编程逻辑器件,是目前数字系统设计的主要硬件基础。fpga在结构上由逻辑功能块排列为阵列,并由可编程的内部连线连接这些功能块,来实现一定的逻辑功能。可编程逻辑器件的设计过程是利用eda开发软件和编程工具对器件进行开发的过程。由于eda技术拥有系统的模拟和仿真功能,可读性、可重复性、可测性非常好,所以利用eda开发fpga是目前比较流行的方式。当然,有时根据需要,也会应用max+plus开发集成环境进行设计。正因为fpga在设计过程中方便、快捷,而且fpga技术功能强大,能够应用其制作诸如基代码发生器、数字频率计、电子琴、电梯控制器、自动售货机控制系统、多功能波形发生器、步进电机定位控制系统、电子时钟等。应用fpga能够将时钟设计分为四种类型:全局时钟、门控时钟、多级逻辑时钟和波动式时钟。多时钟系统能够包括上述四种时钟类型的任意组合 4。2.2 石英钟专用芯片实现形式采用石英钟专用计时芯片实现的电子钟,具有实现简单、计时精度高的特点。石英计时芯片(简称“机芯”)比较多,常见型号的有stp5512f、sm5546a和d60400等。现结合康巴丝石英钟常用的5512f型为例作简单介绍。利用5512f的2秒输出信号作为秒加法电路的计数脉冲,可实现电子时钟。5512f的引脚图如图2.1所示:图2.1 5512f的引脚图其中,引脚7、8为外接晶振及振荡电路,引脚1接电源正极,电源为1.5,引脚3、4原为指针用步进电机线圈的输出驱动,这里可用3脚作为脉冲输出,频率决定于外接晶振的频率。2.3 ne555定时器电路实现形式555定时器是美国signetics公司1972年研制的用于取代机械式定时器的中规模集成电路,因输入端设计有三个5k的电阻而得名。目前,流行的产品主要有4种:bjt两个:555,556(含有两个555);cmos两个:7555,7556(含有两个7555)。采用ne555时基电路或其他振荡电路产生秒脉冲信号,作为秒加法电路的时钟信号或微处理器的外部中断输入信号,可构成电子钟。由555构成的秒脉冲发生器电路见图2.2。图2.2 基于555的秒脉冲发生器输出的脉冲信号v0的频率f为: 式(2.1)可通过调节式2.1中的3个参数,使输出v0的频率为精确的1hz。采用555定时器设计电子时钟,成本低,容易实现。但是受芯片引脚数量和功能限制,不容易实现电子时钟的多功能性。2.4 单片机实现形式单片机是微型机的一个主要分支,它在结构上的最大特点使把cpu、存储器、定时器和多种输入/输出接口电路集成在一块超大规模集成电路芯片上。就其组成和功能而言,一块单片机芯片就是一台微型计算机。单片机具有如下特点:1 有优异的性能价格比;2 集成度高、体积小、有很高的可靠性、控制功能强;3 低功耗、低电压,便于生产便携式产品;4 外部总线增加了i2c、isp等串行总线方式,进一步缩小了体积,简化了结构;5 单片机的系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统。所以单片机的应用非常广泛,在智能仪表、机电一体化、实时控制、分布式多机系统以及人们的生活中均有用武之地。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思路和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种用软件代替硬件的控制技术,是对生产控制技术的一次革命。利用单片机的智能性,可方便地实现具有智能的唤醒仪设计。单片机均具有时钟振荡系统,利用系统时钟借助微处理器的定时器/计数器可实现电子钟功能。然而系统时钟误差较大,电子钟的积累误差也可能较大,所以可以通过误差修正软件加以修正,或者在设计中加入高精度时钟芯片,以精确时间。2.5 总体方案设计在比较了以上四种实现方案之后,考虑单片机货源充足、价格低廉,可软硬件结合使用,能够较方便的实现系统的多功能性,故采用单片机作为本设计的硬件基础。多路唤醒仪至少要包括秒信号发生器、时间显示电路、按键电路、供电电源、报警指示电路等几部分。硬件电路框图参照图2.3。该系统使用at89c52单片机作为核心,通过读取时钟芯片ds1302的数据,完成此唤醒仪的主要功能时钟显示、多路定时报警。使用比较通用的8段共阴数码管,做6位显示,分别显示时、分、秒。图2.3 多路定时唤醒仪硬件系统框图键盘是为了完成时钟的校对和定时时间的设置功能。由于此电子时钟要求具有报警功能,所以设计有报警电路,用发光二极管提醒报警。整个电路使用了两种电源,+5v电源将为整个电路供电。而+3v电源仅作为ds1302的备用电源。当+5v电源被切断后,ds1302启用+3v电源,可以保持ds1302继续工作。从而不会因为断电使系统复位到初始化时间,避免了重新校时的麻烦。第三章 系统硬件设计在选定设计方案以后,要选择合适的器件,设计合适的硬件电路图才能实现多路唤醒仪的具体功能。3.1 主要ic芯片选择3.1.1 微处理器选择目前在单片机系统中,应用比较广泛的微处理器芯片主要为8xc5x系列单片机。该系列单片机均采用标准mcs-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。例如比较常用的at89c2051单片机,带有2kb flash可编程、可擦除只读存储器(e2prom)的低压、高性能8位cmos微型计算机。拥有15条可编程i/o引脚,2个16位定时器/计数器,6个中断源,可编程串行uart通道,并能直接驱动led输出。仅仅是为了完成时钟设计或者是定时报警设置,应用at89c2051单片机完全可以实现。但是将两种功能结合在一片单片机上,就需要更多的i/o引脚,故本设计采用具有32根i/o引脚的at89c52单片机。at89c52单片机是一款低功耗,低电压,高性能cmos 8位单片机,片内含8kb(可经受1000次擦写周期)的flash可编程可反复擦写的只读程序存储器(eprom),器件采用cmos工艺和atmei公司的高密度、非易失性存储器(nuram)技术制造,其输出引脚和指令系统都与mcs-51兼容。片内的flash存储器允许在系统内可改编程序或用常规的非易失性存储器编程器来编程。因此,at89c52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域6。at89c52具有以下主要性能:1. 与mcs51产品指令和引脚完全兼容;2. 8kb可重擦写flash闪速存储器;3. 全静态操作:024hz;4. 1000次擦写周期;5. 三级加密程序存储器;6. 2568字节内部ram;7. 32个外部双向输入/输出(i/o)口;8. 6个中断优先级; 3个16位可编程定时/计数器;9. 可编程串行uart通道;10. 低功耗空闲和掉电模式。此外,at89c52是用静态逻辑来设计的,其工作频率可下降到0hz,并提供两种可用软件来选择的省电方式空闲方式(idle mode)和掉电方式(power down mode)。在空闲方式中,cpu停止工作,而ram、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内ram中的内容,直到下一次硬件复位为止8。图3.1 at89c52芯片pdip封装引脚图at89c52为适应不同的产品需求,采用pdip、tqfp、plcc三种封装形式,本系统采用双列直插pdip封装形式,如图3.1。3.1.2 时钟日历芯片选择常用时钟日历芯片比较在电子时钟设计中,常用的实时时钟芯片有ds12887、ds1216、ds1643、ds1302。每种芯片的主要时钟功能基本相同,只是在引脚数量、备用电池的安装方式、计时精度和扩展功能等方面略有不同。ds12887与ds1216芯片都有内嵌式锂电池作为备用电池; x1203引脚少,没有嵌入式锂电池,跟ds1302芯片功能相似,只是相比较之下,x1203与at89c52搭配使用时占用i/o口较多。ds1643为带有全功能实时时钟的8k8非易失性sram,集成了非易失性sram、实时时钟、晶振、电源掉电控制电路和锂电池电源,bcd码表示的年、月、日、星期、时、分、秒,带闰年补偿。同样,ds1643拥有28只管脚,硬件连接起来占用微处理器i/o口较多,不方便系统功能拓展和维护。故而从性价比和货源上考虑,本设计采用实时时钟日历芯片ds1302。 ds1302简介ds1302是美国dallas公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态ram,采用spi三总线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和ram数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5v。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力,并且可以关闭充电功能。有主电源和备份电源双引脚,而且备份电源可由大容量电容(1f)来替代。需要强调的是,ds1302需要使用32.768khz的晶振。 ds1302引脚说明ds1302引脚图参照图3.2。vcc1为后备电源,vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。ds1302由vcc1或vcc2两者中的较大者供电。当vcc2大于vcc1+0.2v时,vcc2给ds1302供电。当vcc2小于vcc1时,ds1302由vcc1供电。x1、x2为振荡源,外接32.768hz晶振。rst是复位/片选线,通过把rst输入驱动置高电平来启动所有的数据传送。rst输入有两种功能:(1) rst接通控制逻辑,允许地址/命令序列送入移位寄存器;(2) rst提供了终止单字节或多字节数据的传送手段。当rst为高电平时,所有的数据传送被初始化,允许对ds1302进行操作。如果在传送过程中置rst为低电平,则会终止此次数据传送,并且i/o引脚变为高阻态。上电运行时,在vcc2.5v之前,rst必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。i/o为串行数据输入输出端(双向),下文有详细说明。sclk为时钟输入端。图3.2 ds1302芯片引脚图其引脚功能参照表3.1。表3.1 ds1302引脚功能说明引脚号名称功能1vcc1备份电源输入2x132.768khz晶振输入3x232.768khz晶振输出4gnd地5rst控制移位寄存器/复位6i/o数据输入/输出7sclk串行时钟8vcc2主电源输入 ds1302的控制字和读写时序说明在编程过程中要注意ds1302的读写时序。ds1302是spi总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与ds1302通信,首先要先了解ds1302的控制字。ds1302的控制字如表3.2。表3.2 ds1302控制字(即地址及命令字节)bit7bit6bit5bit4bit3bit2bit1bit01rama4a3a2a1a0rd控制字的作用是设定ds1302的工作方式、传送字节数等。每次数据的传输都是由控制字开始。控制字各位的含义和作用如下:1. bit7:控制字的最高有效位,必须是逻辑1,如果它为0,则不能把数据写入到ds1302中。2. bit 6:如果为0,则表示存取日历时钟数据,为1表示存取ram数据;3. bit 5至bit 1(a4a0):用a4a0表示,定义片内寄存器和ram的地址。定义如下:当bit 6位=0时,定义时钟和其他寄存器的地址。a4a0=06,顺序为秒、分、时、日、月、星期、年的寄存器。当a4a0=7,为芯片写保护寄存器地址。当a4a0=8,为慢速充电参数选择寄存器。当a4a0=31,为时钟多字节方式选择寄存器。当bit 6=1时,定义ram的地址,a4a0=030,对应各子地址的ram,地址31对应的是ram多字节方式选择寄存器。4. bit 0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个sclk时钟的上升沿时,数据被写入ds1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个sclk脉冲的下降沿,读出ds1302的数据,读出的数据也是从最低位到最高位。图3.3 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个时钟。这里仅给出单字节读写时序,如图3.3。多字节操作方式与其类似,只是后面跟的字节数不止一个。 ds1302的片内寄存器通过控制字对ds1302片内寄存器进行寻址之后,即可就所选中寄存器的各位进行操作。片内各寄存器及各位的功能定义如表3.3。表3.3 ds1302有关日历、时间的寄存器读寄存器写寄存器bit7bit6bit5bit4bit3bit2bit1bit0范围81h80hch10秒秒00-5983h82h10分分00-5985h84h010时时1-120-23am/pm87h86h0010日日1-3189h88h0010月月1-128bh8ah00000周日1-78dh8ch10年年00-998fh8ehwp0000000ds1302有关日历、时间的寄存器共有10个,时钟/日历包含在其中的7个写/读寄存器内,这7个寄存器分别是秒、分、小时、日、月、星期和年。小时寄存器(85h、84h)的位7用于定义ds1302是运行于12小时模式还是24小时模式。当为12小时制式时,位5为“0”表示am;为“1”表示pm。在24小时制式下,位5是第二个10小时位(2023时)。 秒寄存器(81h、80h)的位7定义为时钟暂停标志(ch)。当该位置为1时,时钟振荡器停止,ds1302处于低功耗状态;当该位置为0时,时钟开始运行。一般在设置时钟时,可以停止其工作,设定完之后,再启动其工作。控制寄存器(8fh、8eh)的位7是写保护位(wp),其它7位均置为0。在任何片内时钟/日历寄存器和ram,在写操作之前,wp位必须为0,否则将不可写入。当wp位为1时,写保护位防止对任一寄存器的写操作。因此,通过置写保护位,可以提高数据的安全性。另外,还有慢速充电控制寄存器和ram寄存器。如表3.4。表3.4 充电控制寄存器和ram寄存器各位定义bit7bit6bit5bit4bit3bit2bit1bit0充电控制寄存器tcstcstcstcsdsdsrsrsram寄存器慢速充电寄存器控制着ds1302的慢速充电特性。寄存器的bit4bit7(tcs)决定是否具备充电性能:仅在编码为1010的条件下才具备充电性能,其他编码组合不允许充电。bit2和bit3选择在vcc2和vcc1之间是一个还是两个二极管串入其中。如果编码ds是01,选择一个二极管;如果编码是10,选择两个二极管;其他编码将不允许充电。该寄存器的bit0和bit1用于选择与二极管相串联的电阻值。其中编码rs=01为2 k,rs=10为4 k,rs=11为8 k,而rs=00将不允许进行充电。因此,根据慢速充电寄存器的不同编码可得到不同的充电电流。其具体计算如公式3.1: 式(3.1)式中:v0所接入的5.0v工作电压;vd二极管压降,一个按0.7v计算;r慢速充电控制寄存器0和1位编码决定的电阻值;vevcc1脚所接入的电池电压。ram寄存器寻址空间一次排列的31字节静态ram可为用户使用,备用电源位ram提供了掉电保护功能。寄存器和ram的操作通过命令字节的bit6加以区别。当bit6为“0”时对ram区进行寻址;否则将对时钟/日历寄存器寻址11。其操作方法与前述相同。具体驱动程序参见附录a。3.2 硬件电路设计硬件设计主要是先搭建硬件平台,然后利用万用表等工具对电路检查,最后应用程序进行功能调试。硬件设计比较费时,需要细心和耐心,也需要熟练掌握电路原理。多路定时唤醒仪要实现其功能,至少要包括时钟发生电路、时间显示电路、按键电路、供电电源、报警指示电路以及单片机基本电路等几部分。3.2.1 实时时钟电路设计系统时钟应用了实时时钟日历芯片ds1302,其连接如图3.4。该硬件电路设计简单,抗干扰能力强。如图,at89c52单片机p2.6直接连接ds1302的rst端,上电后,at89c51的p2.6脚自动输出高电平。p2.4作为串行时钟接口,p2.5作为时钟数据的i/o。ds1302采用双电源供电,平时由+5v电源供电,当+5v掉电之后,由图中bt1(+3v备用电池)供电。特别需要注意x1和x2两端连接的晶振m1,该晶振的频率为32.768khz。图3.4 实时时钟电路该电路除了包含ds1302芯片,还应包括主电源、备用电源、晶振等部分。为了保证电路连接正确、电气连通,在与单片机连接的过程中需要注意以下几点:1. 清楚ds1302与单片机连接的管脚。本设计定义为:ds1302的sclk连接p2.4,i/o连接p2.5,rst连接p2.6。2. 注意电源正负极连接。3. ds1302接32.768khz的晶振。该晶振体型比较小,在焊接时要小心,注意不要将晶振引脚弄断。同时也要尽量使晶振离ds1302的x1、x2引脚近距离焊接。4. 编写ds1302的时钟/日历程序,只要求能够正确显示时间。烧录进单片机,检查电路电源正负极连接是否正确,检查p1.0和p1.1引脚接线是否正确。检查无误后可以上电检查。3.2.2 显示电路设计就时钟而言,通常可采用lcd显示或led显示。对于一般的段式lcd,需要专门的驱动电路,而且lcd显示的可视性较差;对于具有驱动电路和微处理器接口的液晶显示模块(字符或点阵),一般采用并行接口,对微处理器的接口要求较高,占用资源多。另外,at89c52本身没有专门的液晶驱动接口。led结构简单,体积小,功耗低,响应速度快,易于匹配,寿命长,可靠性高,而且显示亮度高,价格便宜,市场上也有专门的时钟显示组合led。故本设计中应用6位8段共阴led实现显示部分,显示面板分布如图3.5。led显示分动态显示和静态显示:动态显示方式的硬件电路简单。但设计上如果处理不当,易造成亮度低,闪烁问题。因此合理的设计既应保证驱动电路易实现,又要保证图像稳定,无闪烁。动态显示采用多路复用技术的动态扫描显示方式,复用的程度不是无限增加的, 因为利用动态扫描显示使我们看到一幅稳定画面的实质是利用了人眼的暂留效应和发光二极管发光时间的长短,发光的亮度等因素。对于一组数码管动态扫描显示需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。同时,段线上输出相应位要显示字符的字型码。这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。静态显示,是由微型计算机一次输出显示模型后,就能保持该显示结果,直到下次发送新的显示模型为止。静态显示驱动程序简单,且cpu占用率低,但每个led数码管需要一个锁存器来锁存每一个显示位的笔段代码,硬件开销大,仅适合显示位数较少的场合。为了在显示部分节省单片机i/o口,故采用动态显示方式。电路图参见图3.6。高效、方便的led显示驱动电路是构成完善的单片机系统必不可少的元素。常用的led显示驱动电路有并行译码方式、串行并行转换方式等。串行并行转换方式显示同样的位数使用单片机的口线大大减少,并且可以让led显示bcd码以外的字符(如a、b、c、d 等),但是,当要显示的位数较多时,仍需占用较多的口线,并且在许多情况下需要串口工作在uart方式,以便进行串行通信,从而限制了这种方式的使用范围。本设计采用并行译码方式,译码后动态显示。4位bcd码数据从其p1.0p1.3和p1.4p1.7并行输出,经2片7段led显示驱动电路cd4511译码后驱动led显示,这样只需向p1.0p1.3和p1.4p1.7写入要显示数字的bcd码,即可显示出相应的数字。p2.0p2.1输出位码,控制要现实的位数。cd4511是一个用于驱动共阴极led(数码管)显示器的bcd码七段码译码器,特点:具有bcd转换、消隐和锁存控制、七段译码及驱动功能的cmos电路能提供较大的拉电流。可直接驱动led显示器。cd4511是一片cmos bcd锁存/7 段译码/驱动器,引脚排列如图 2 所示。其中a b c d为bcd码输入,a为最低位。lt为灯测试端,加高电平时,显示器正常显示,加低电平时,显示器一直显示数码“8”,各笔段都被点亮,以检查显示器是否有故障。bi为消隐功能端,低电平时使所有笔段均消隐,正常显示时,b1端应加高电平。另外cd4511有拒绝伪码的特点,当输入数据越过十进制数9(1001)时,显示字形也自行消隐。le是锁存控制端,高电平时锁存,低电平时传输数据。ag是7段输出,可驱动共阴led数码管。另外,cd4511显示数“6”时,a段消隐;显示数“9”时,d段消隐,所以显示6、9这两个数时,字形不太美观。所谓共阴led数码管是指7段led的阴极是连在一起的,在应用中应接地。限流电阻要根据电源电压来选取,电源电压5v时可使用300的限流电阻。关于cd4511的具体编程方法,请参见第四章4.2.5显示子程序设计部分。图3.5 显示面板led分布图 为了电路能正常显示时间,在连接显示电路之前要明确共阴型8段led的10个管脚与各段发光二极管的对应关系,熟悉cd4511管脚位置,然后才能开始进行连接19。在连接过程中,需要注意以下几点:1. led数码管各管脚与cd4511各管脚的对应关系要十分清楚,所有led数码管与cd4511的连接方式要统一。2. 明确单片机管脚功能。本设计定义了p0口连接两片的cd4511脚,p2.0 p2.2作为位选,通过三极管是否导通来选择要显示的led。3. 编写一段显示程序,烧录进单片机,检查好电源正负端和p0连接是否正确。检查无误后上电,检查显示电路是否正确。3.2.3 按键电路设计根据功能需要,本时钟需要设置以下功能键:校对选择键,加1操作键,减1操作键,闹铃定时选择键,闹铃路数选择键,跳出校对/设置时间按键,闹铃开关键。按照键盘与cpu的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是各个按键相互独立,每个按键占用一个i/o口线,每根i/o口线上的按键不会影响其他i/o口上按键工作状态。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根i/o口,在按键数量较多时,i/o口线浪费较大,且电路结构复杂。矩阵式键盘适合按键较多时使用。当系统所需按键个数较多时,为减少键盘电路占用i/o引脚数目,一般采用矩阵键盘形式。在矩阵键盘电路中,行线是输入引脚,列线是输出引脚(当然也可以将行线作为输出引脚,而列线作为输入引脚)【24】。由于本设计的电子钟最多需要7个按键,若采用矩阵式键盘时会有按键浪费,故采用的是独立式键盘。键盘电路如图3.6。对于内置了上拉电阻的i/o引脚来说,外接上拉电阻没有意义16。如图3.6。图3.6 键盘电路其中k7为带自锁按键,每次按下后,其对应的p2.1管脚接地,从高电平被拉至低电平。只有再次按下,按键弹出,与之连接的单片机管脚才会重新被拉回高电平。k1、k2、k3、k4、k5、k6键为自动复位按键。每次按下后,会自动弹出。单片机管脚只有在按键按下时为低电平,按键弹出后重新恢复高电平。按键功能参见表3.8。表3.8 按键功能表按键键名功能属性k1set模式选择自动复位k2up数值加一操作自动复位k3down数值减一操作自动复位k4out跳出功能选择自动复位k5sset定时选择自动复位k6ss多路选择自动复位k7alarm闹铃开关自锁按键操作说明如下:k1键:该键为自动复位键,在正常显示时间状态下,第一次按下后,开始校对秒,以后每次按下都会分别进入对分、小时。k2键:该键为自动复位键,在校对状态下,每次按动该键,都会使相应校对位进行加1操作。例如:校对小时状态,每按一下,小时位加1,当加至小时最高值23时,再按k4键,小时位回0。调分、秒与之皆相同,只是各位最高值不同。k3键:该键为自动复位键,与k2键类似,不同之处是该键每次按下将使相应校对位进行减1操作。k4键:该键为自动复位键,在校对状态下,按动该键,都会跳出校对或定时状态,正常显示。k5键:该键为自动复位键,与k1键类似,不同之处是该键每次按下调整的是各路定时时间。k6键:该键为自动复位键,在定时状态下,按下该键,可以选择定时的通路每按下一次,改变一次,1、2、3循环。k7键:该键为带自锁按键,按下后闹铃开启,弹出后闹铃关闭。为了确保按键电气连接正确,需要检测其焊接是否正确。按键电路比较简单,故检查起来也很容易。只需用万用便检测单片机引脚和按键是否连接,可用万用表检查单片机接按键的引脚与地是否连通,按下按键再次检查。若按下连通,松开不连通,说明连接正确。3.2.4 报警电路设计报警电路可以直接采用蜂鸣器闹铃,如当前时刻与闹铃时间相同,单片机向蜂鸣器送出高电平,蜂鸣器发声。采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。也可以在编程的时候编写一段音乐程序,待闹铃时间到时,调用该音乐程序给扬声器,便响起音乐。不过该方法只能做一些简单音乐,并且音乐程序会占用很多单片机存储资源。还有一种方法是采用录音放音芯片1420做闹铃,先对录放音设备录入一段音乐,当到设定时间时,单片机控制录放音设备放音。采用录放音电路,铃声可以是预先设定的一段自己喜欢的音乐,符合电器设备人性化的要求。且1420芯片可以分段录音,还具有语音报时功能。另外,也可以购置一块音乐集成电路,加置在单片机和蜂鸣器之间,当单片机连接闹铃电路的管脚送出高电平时,音乐集成电路会给蜂鸣器特定脉冲,使蜂鸣器发声。此类集成电路体积较小,使用方便,不足的是音乐简单、单一。报警电路是本设计中的重点,故采用最简单的方法,用发光二极管代替,为了区分报警的路数,用三种不同颜色的发光二极管来区分。一个发光二极管占用单片机一根i/o口实现一路报警、共需3个i/o口。当i/o引脚为高电平时,发光二极管点亮。3.2.5 复位电路设计复位是单片机的初始化操作,以便使cpu和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,也可按复位键重新启动。复位后,pc内容初始化为0000h,使单片机从0000h单元开始执行程序。单片机复位后,除了pc之外,还对片内的特殊功能寄存器有影响,它们的复位状态如表3.9所示。表3.5 单片机寄存器的复位状态表寄存器复位状态寄存器复位状态pc0000htcon00hacc00hth000hpsw00htl000hsp07hth100hdptr0000htl100hp1、p3ffhscon00hip000000bsbuf不定ie000000bpcon0b(nmos)tmod00h00000b(chmos)单片机复位后不影响内部ram的状态17。89c52单片机复位信号的输入端是rst引脚,高电平有效。其有效时间持续24个时钟周期(2个机器周期)以上。rst端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。上电自动复位是利用电容储电来实现的,如图3.8(a)所示。上电瞬间,rc电路充电,rst端出现正脉冲,随着充电电流的减少,rst的电位逐渐下降。按键手动复位有电平方式和脉冲方式两种。按键电平复位是相当于rst端通过电阻接高电平,如图3.8(b)所示;按键脉冲复位,利用rc微分电路产生正脉冲,如图3.8(c)所示。图3.8 上电复位和按键复位电路出于应用方便,本设计采用按键电平复位电路。实际电路请参见附录b,复位按键为k8。3.2.6 振荡电路设计单片机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。这个脉冲是由单片机控制器中的时序电路发出的。单片机的时序就是cpu在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作。要给单片机提供时序,就需要相关的硬件电路,即振荡器和时钟电路。51单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。利用单片机内部的振荡器,然后在引脚xtal1和引脚xtal2两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30pf左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2mhz-12mhz之间选择。为了减少寄生电容,更好地保证振荡器稳定。可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。第四章 系统软件设计c51单片机可以应用汇编语言和c语言进行编程。汇编语言与机器指令一一对应所以用汇编语言编写的程序在单片机里运行起来效率较高。c语言程序可读性高,更便于理解。本设计使用c语言编程。4.1 主程序设计第一次上电,系统先进行初始化, led显示初始时间“12:00:00”,并开始走时。此刻若按k1键,时钟进入校时状态,秒位闪烁,若继续按k1健,分位、时位一次闪烁,第四次按下时,进入报警时间设置状态。单片机依次开始调时间校正程序、ds1302子程序、报警时间设置子程序、报警子程序,返回

温馨提示

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

评论

0/150

提交评论