《单片机课程设计智能电子钟的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计智能电子钟的设计.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中北大学单片机课程设计说明书目 录1引言 11.1设计内容和要 11.2 工作原理 22 总体设计 22.1 方案设计 22.2 系统框图 22.3 核心芯片简介32.3.1 DS1302简介 32.3.2 AT89C51简介33 智能电子钟软硬件电路的设计43.1 硬件设计43.1.1 复位电路设计43.1.2 DS1302与单片机的接口设计 53.1.3 LED显示设计53.1.4 电源设计63.1.5 按键开关去抖设计63.1.6 时钟电路的设计73.1.7 电路总原理图设计83.2 软件设计83.2.1 流程图84 protues仿真与调试114.1 电路的仿真114.2软件调试11结
2、论 12参考文献 14附 录 15源程序 15第 I 页 共 20 页1 引言 电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。本设计应用AT89C51芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实
3、时性好,时间精确,操作简单,编程容易。该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。1.1设计内容和要求 以AT89C51单片机为核心,制作一个LCD显示的智能电子钟: (1) 计时:秒、分、时、天、周、月、年。 (2) 闰年自动判别。 (3) 五路定时输出,可任意关断(最大可到16路)。 (4) 时间、月、日交替显示。 (5) 自定任意时刻自动开/关屏。 (6) 计时精度:误差1秒/月(具有微调设置)(7) 键盘采用动态扫描方式查询。所有的查询、设置功能均由功能键K1、K2完成。1.2 工作原理本设计采用市场上流行的时钟芯片
4、DS1302进行制作。DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接口与计算机进行通信,使得管脚数量减少。实时时钟/日历电路能够计算2100年之前的秒、分、时、日、星期、月、年的,具有闰年调整的能力。DS1302时钟芯片的主要功能特性:(1) 能计算2100年之前的年、月、日、星期、时、分、秒的信息;每月的天数和闰年的天数可自动调整;时钟可设置为24或12小时格式。(2) 31B的8位暂存数据存储RAM。(3) 串行I/O口方式使得引脚数量最少。(4) DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需3根线。(5
5、) 宽范围工作电压2.0-5.5V。(6) 工作电流为2.0A时,小于300nA。(7) 功耗很低,保持数据和时钟信息时功率小于1mW控制程序在Keil软件中编写,编译,整个控制电路在Proteus仿真软件中连接调示。2 总体设计方案2.1 方案设计实时时钟芯片具备年、月、日、时、分、秒计时功能和多点计时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机可通过中断或查询方式读取计时数据进行显示,因此计时功能的实现无需占用CPU的时间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部
6、还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据,由于功能完善,精度高,软件程序设计相对简单,且计时不占用CPU时间,因此,在工业实时测控系统中多采用这一类专用芯片来实现实时时钟功能。利用单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时及秒表计时。该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术MCS-51汇编语言程序设计方法,因此,本系统设计采用此种软件控制方法来实现计时。而由于Atmel公司的AT89C51是一种自带4KB Flash存储器的低电压、高性能的CMOS 8位微处理器。该器件采用Atmel高密度非易失
7、存储器制造技术制造,与工业标准的MCS-51指令集和输出引脚相兼容。AT89C51将多功能8位CPU和闪存集成在单个芯片中,是一种高效的微控制器,使用也更方便,寿命更长,可以反复擦除1000次。形成了功能强大、使用灵活和具有较高性能价格比的微控制器。它的功能强大,而且也比较容易购买,故本设计中所选的单片机为AT89C51单片机。2.2 系统框图 按照系统设计功能的要求,初步确定系统由主控模块、时控模块、及显示模块和键盘接口模块共4个模块组成。主控芯片使用51系列AT89C51单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。采用DS1302作为计
8、时芯片,可以做到计时准确。更重要的是,DS1302可以在很小电流的后备电源(2.55.5V电源,再2.5V时耗电小于300nA),而且DS1302可以编程选择多种充电电流来为后备电源进行慢速充电,可以保证后备电源基本不耗电。显示模块采用普通的液晶显示屏(LCD)设计框图如图1.1所示。AT89C51时钟芯片DS1302按键 电源LED显示电路定时电路图2.2 设计方案框图2.3 核心芯片简介2.3.1 DS1302简介 DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V
9、。时钟可工作在24小时格式或12小时(AM/PM)格式。 DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。2.3.2 AT89C51简介 AT89C51是一种带4K字节FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性
10、能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3 智能电子钟软硬件电路的设计3.1 硬件设计该设计的硬件电路由主控部分(单片机AT89C51)、计时部分(实时时钟芯片DS1302)、
11、显示部分(八段数码管)、电源部分(三端稳压器7805)、时钟电路5个部分组成。各部分之间相互协作,构成一个统一的有机整体,实现数字时钟的功能。各部分的硬件电路设计如下。设计总电路图见附录一。3.1.1 复位电路设计单片机AT89C51作为主控芯片,控制整个电路的运行。单片机外围需要一个复位电路,复位电路的功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。该设计采用含有二极管的复位电路,复位电路可以有效的解决电源毛刺和电源缓慢下降(电池电压不足)等引起的问题,在电源电压瞬
12、间下降时可以使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。复位电路的设计图如图2所示: 图3.1.1 单片机复位电路图AT89C51具有在系统可编程功能,可以很方便的改写单片机存储器内的程序不需要把芯片中从工作环境中剥离,把AT89C51下载口接入电路,可使电路实现该功能。AT89C51需要接入一个普通12MHz晶振,为其提供稳定的时钟脉冲。该设计中有6个八段数码显示管LED,所以,在单片机AT89C51外围需要接入6个三极管来驱动数码显示管。此外,单片机外围需要接入3个开关,用来调整时钟。单片机外围电路的设计图如图2.2示:3.1.2 DS1302与单片机的接口设计时钟芯片DS130
13、2与单片机AT89C51的接口是由3条线来完成的,单片机AT89C51的P1.0与时钟芯片的数据传输端相连,P1.1用来作为DS1302输入时钟SCLK控制端,P1.2控制DS1302的复位输入端。DS1302接标准32.768KHz石英晶振。DS1302与单片机的接口电路如图2.3所示。图3.1.2 DS1302与AT89C51连接图3.1.3 LED显示设计八段数码显示管有两种,一种是共阳数码管,其内部是由八个阳极相连接的发光二极管组成;另一种是共阴数码管,其内部是由八个阴极相连接的发光二极管组成。二者原理不同但功能相同。本设计的时间显示选用6个共阴八段数码管LED,其外形和内部结构如图3
14、.1.3所示:图3.1.3 八段共阴数码管LED3.1.4 电源设计时钟芯片DS1302有很宽的工作电压范围,其工作电压为2.55.5V。单片机AT89C51的工作电压范围相对较窄,为4.05.5V,所以本设计中,给电路接入三端稳压器7805,利用它的稳压功能给电路提供稳定的+5V电压,使电路的工作保持很高的可靠性。在电路中接入一个发光二极管作为指示灯,可以很方便地指示电源与电路是否接通。该设计的电源部分如图2.5所示。图3.1.4 电源电路图3.1.5 按键开关去抖设计按键开关在电路中的连接如图所示。按键未按下时,A点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递
15、按键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图2.6所示,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。图2.6 键操作和键抖动消除抖动的不良后果的方法有硬、软件两种。为了节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。根据抖动特性,在第一次检测到按键按下后,执行一段延时510ms让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后,也要给510
16、ms的延时,待后延抖动消失后才转入该键处理程序。3.1.6 时钟电路的设计使用串行接口时钟芯片DS1302设计时钟电路。该设计方案以单片机AT89S51为主控芯片,以串行时钟芯片DS1302为核心计时芯片,组成数字时钟电路。该电路不但能准确地计时、附加其它功能,而且,其三线接口可以节省接口资源,在断电后不丢失时间和数据信息。该设计方案的接口电路如图2.7所示。 图3.1.6 DS1302接口电路3.1.7 电路总原理图设计图3.1.7 总原理图3.2 软件设计电子时钟的程序主要包括3个方面的内容:一是DS1302从单片机中读取数据进行计数,二是利用按键进行时间的调整,三是单片机中读取DS130
17、2中的数据驱动LED数码管显示时间。AT89C51单片机主要I/O口的分配:P10、P11、P12分别接时钟芯片的SCLK、I/O、RST引脚,P13、P14接两个独立按键。3.2.1 流程图 本次设计的系统软件设计主要包括主程序设计和各个计时子模块、和按键控制子模块程序以及报警模块。主程序主要完成器件的初始化,并判断有无按键按下,并根据判断的结果调用相应的子模块程序;计时子模块程序和日历日期数据子模块程序完成相应的数据采集、处理和保存,按键处理子模块程序完成日期和闹钟的设置,其各流程图如下:K等于2显示报警时间报警程序开始K加1程序K等于0显示日期K等于 1显示日期按键程序返回 图3.2.1
18、 主流程图星期减1星期加1减键有效加键有效按键有效,跳出时间调整程序,进入主循环程序日加1减键有效加键有效等待按键程序控制键有效,进入日期调整程序日减1分钟减1分钟加1减键有效加键有效等待按键程序控制键有效,进分钟调整程序减键有效等待按键程序加键有效小时减1小时加1控制键有效,进入小时调整程序等待按键程序控制键有效,进星期调整程序月减1月加1减键有效加键有效等待按键程序控制键有效,进入月调整程序年减1年加1减键有效加键有效等待按键程序控制键有效,进去年调整程序开 始图3.2.1 时间调整程序流程图4 protues仿真与调试4.1 电路的仿真 利用keil软件编写源程序。在protues中画好
19、其电路图如下图3.1所示。图4.1 电路板的仿真图4.2 软件调试在硬件调试完毕的基础上,需要进一步完善程序,也就是进入软件调试阶段。在本设计中,软件调试主要分两大部分:实时时钟日历子程序调试、按键子程序调试。将这两部分调试成功,那么整个设计的软件部分也就基本完成了。目前设计过程中容易造成元件和仪器仪表的损坏,而借助Keil和Proteus进行单片机系统的开发,可以节省设计成本,提高设计速度。Keil软件包是一个功能强大的开发平台,它包括项目管理器、CX51编译器、AX51宏汇编器、BL51/LX51连接定位器、RTX51实时操作系统、Simulator软件模拟器及Monitor51硬件目标调
20、试器。它是一种集成化程度高的文件管理编译环境,主要功能为编译C语言源程序,汇编程序或混合语言源程序,连接和定位目标文件和库,创建HEX文件,调试目标程序等。Keil是目前最好的51单片机开发工具之一。Keil支持软件模拟仿真(Simulator)和用户目标调试(Monitor51)两种工作模式。前者不需要任何单片机硬件即可完成用户程序仿真、调试,后者利用硬件目标板中的监控程序可以直接调试目标硬件系统。Proteus是一个完整的嵌入式系统软件、硬件设计仿真平台,它包括原理图输入系统ISIS、带扩展的Prospice混合模型仿真器、动态元件库、高级图形分析模块和处理器虚拟系统仿真模型VSM。ISI
21、S是Proteus系统的中心,具有超强的控制原理设计环境。ProteusVSM最重要的特点是能把微处理器软件作用在处理器上,并和该处理器的任何模拟和数字元件协同仿真,仿真执行目标码就像在真正的单片机系统上运行一样,VSM CPU模型能完整仿真I/O接口、中断、定时器、通用外部设备口及其他与CPU有关的外部设备,甚至能仿真多个处理器。5 结论 本次课程设计是继前两次课程设计以来的又一次课程设计,因此在这次的设计中我感觉比之前也得心应手了不少,单片机的课程设计需要结合各方面的知识与总结。这次的课程设计在小组内进行,我们分工明确,从绘制原理图开始就是我们从平时的学习生活中得出来的经验总结,到最后的程
22、序编写,程序仿真知道最后仿真成功的那一刻我深深体会到成功多么的来之不易。在这次的调试过程中,我们多次遇到了难以解决的问题,但我们并没有气馁,重新分析,检查遗漏,很多时候都是因为我们粗心造成的,问题得以解决,我们的心情也会大为愉快,后来我们每个步骤都小心谨慎,设计进度也就大大加快。我也明白了课程设计就是对我们学习成果的一个总结,这次给我最大的收获就是让我知道了对待任何事物必须要有严谨的态度,我们只有学会基础知识才能进一步掌握更深的学问。第 17 页 共 19 页参考文献1 辜承林,陈乔夫. 电机学.华中科技大学出版社.20102 徐玮. C51单片机高效入门. 机械工业出版社.20073 黄明强
23、.DS1302在单片机系统中的应用J.保定师范专科学校学报,2004,17(2)4孙雪梅,范久臣.实时时钟芯片在单片机系统中的应用J.沈阳教育学院学报,2005,7(2)附 录源程序用C语言编写:#include#includeLCD.huchar keydown()uchar i = 0;uchar key = P2 & 0x0f;if(P2&0x0f) != 0x0f)delayMs(10);if(P2&0x0f) != 0x0f)key = P2 & 0x0f;while(P2&0x0f) != 0x0f);switch(key)/Key14 接P2.47case 0x0e: retur
24、n 1;case 0x0d: return 2;case 0x0b: return 3;case 0x07: return 4;return 0;/* 显示时钟 */void showClock()uchar i = 0;LCDclear();for(; i= 6)break;TR0 = 1; void main() uchar mode = 0;/0:显示Logo,1:显示时间uchar i = 0;uchar movelen;uchar logo = welcome!;uchar move = Tt could be better,but Im busy.; /貌似最长只能40字节/uch
25、ar move = (*_*);movelen = sizeof(move)-1;setDateTime(2013,9,12,18,23,14);LCDinit();LCDclear();showLogo(logo);while(1)switch(keydown()case 1: mode = ! mode;if(mode = 1)showClock();elseshowLogo(logo);break;case 2:if(mode = 1)changeClock();break;default: break;if(mode = 1)refreshPage();elsedisplayStr(move,1,15-i);displayStr( ,1,15+movelen-i);i+;i = i%(15+movelen+1);delayMs(200);