《基于单片机的新颖电子时钟系统》由会员分享,可在线阅读,更多相关《基于单片机的新颖电子时钟系统(26页珍藏版)》请在金锄头文库上搜索。
1、 数理与信息工程学院单片机原理及应用期末课程设计 题 目: 基于单片机的新颖电子时钟系统 专 业: 计算机科学与技术 班 级: 计算机 姓 名: 学 号: 指导老师: 成 绩: ( 2009.6 )目 录 第1节 引 言31.1本设计任务和主要内容31.2 系统主要功能3第2节 系统的硬件构成及功能42.1 电子钟的原理框图42.2 AT89C2051单片机及其引脚说明52.3 时分显示部件6第3节 系统的软件设计831 系统主程序设计83.2中断程序设计93.3 程序设计10第4节 系统的调试25结 束 语26参考文献27基于单片机的新颖电子时钟系统数理与信息工程学院 09计算机专升本 胡琼
2、琼指导教师:余水宝 第1节 引 言 时钟是人们日常生活中必不可少的生活用品,无论在何地都需要精确地了解当前的具体时间。现在市场上的时钟类型多种多样,可是它们都存在一个相当大的缺陷,那就是无论是机械钟还是石英钟在晚上都无法实现在无照明的情况下可见的状态。使用的人要想知道当前的时间,就必须先开灯,因此使用起来比较麻烦。此外,无论是机械钟、石英钟还是电子钟,都存在着共同的问题:时间误差。目前单片机在各行各业领域的使用非常广泛,因为它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。运用基于单片机的形式来设计电子时钟会更加的方便有效。针对以上的分析,我们设计了一款采用LED显示器件显示的电
3、子时钟,有效克服了时钟存在的误差问题,并且能在夜间不必其它照明就能看到时间,且以60只发光管实现秒显示,接近于传统的秒针来显示秒的形式,使用者容易接受,而且美观大方。另加七只装饰用的LED灯,使整个时钟显的相当美观新颖,故还可作为室内装饰用。这款电子时钟具有相当大的市场发展前景。1.1本设计任务和主要内容本论文主要是针对单片机控制的电子时钟系统,分别对时钟的时间显示、闹钟报鸣等功能以及系统设备的软、硬件各个部分进行了研究。主要设计要求如下: 用4只LED数码管输出显示时和分。 可通过按键设置闹钟功能,且停闹无须手工操作。 可通过按键设置分校时。 月计时误差小于45秒。 模拟“秒针”行走的“嘀哒
4、”声。 增加停(掉)电保护功能。 提高计时精度,使年计时误差小于30秒。 增加日自动校准功能,使得该电子钟“永无误差”。 可通过按键设置一天两闹(比如早晨、中午各一次)。1.2 系统主要功能电子钟的外观是周边60只发光管顺时旋转来显示秒,中间四只LED数码管用于显示时间,中下方的七只LED灯顺时旋转,供装饰用。 其主要功能有:整点报时;四只LED数码管显示当前时分。当发生停电事件时,由后备电池供电,系统进入低功耗状态,所有显示部件停止显示,这样即延长了电池的寿命,同时又保证了CPU继续计数,不至于因停电而时钟停止运行。当恢复供电后,系统自动恢复工作状态,不影响计时。闹钟功能,设定好所需的时间,
5、时间到时时钟发出蜂鸣声。校时,调整时间差。温度显示功能,检测空气中的温度并显示在四只LED数码管上。时间显示和温度显示交替进行。第2节 系统的硬件构成及功能2.1 电子钟的原理框图它由以下几个部件组成:单片机89C2051、电源、时分显示部件、60秒旋转译码驱动电路。时分显示采用动态扫描,以降低对单片机端口数的要求,同时也降低系统的功耗。时分显示模块、60秒旋转译码驱动电路以及显示驱动都通过89C2051的I/O口控制。电源部分:电源部分有二部分组成。一部分是由220V的市电通过变压、整流稳压来得到+5V电压,维持系统的正常工作;另一部分是由3V的电池供电,以保证停电时正常走时。正常情况下电池
6、是不提供电能的,以保证电池的寿命。图2-1 电子钟系统原理框图2.2 AT89C2051单片机及其引脚说明AT89C2051单片机是51系列单片机的一个成员,是8051单片机的简化版。内部自带2K字节可编程FLASH存储器的低电压、高性能COMS八位微处理器,与Intel MCS-51系列单片机的指令和输出管脚相兼容。AT89C2051构成的单片机系统是具有结构最简单、造价最低廉、效率最高的微控制系统,省去了外部的RAM、ROM和接口器件,减少了硬件开销,节省了成本,提高了系统的性价比。AT89C2051是一个有20个引脚的芯片,引脚配置如图2-2所示。与8051相比,AT89C2051减少了
7、两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚下,因而芯片尺寸有所减小。AT89C2051芯片的几个主要引脚功能为: 图2-2 AT89C2051引脚配置 图2-3 CD4017引脚图RST 复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。XTAL1 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2 来自反向振荡放大器的输出。P1口 8位双向I/O口。引脚P1.2P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入
8、(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1口也可接收编码数据。P3口 引脚P3.0P3.5与P3.7为7个带内部上拉的双向I/0引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问。P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用输入。P3口也可用作特殊功能口,其功能见表1。P3口同时也可为闪速存储器编程和编程校验接收控制信号。表1 P3口特殊功能P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2(外部中断0)P3.
9、3(外部中断1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)2.3 时分显示部件由于系统要显示的内容较简单,显示量不多,所以选用数码管既方便又经济。LED有共阴极和共阳极两种。如图2-6所示。二极管的阴极连接在一起,通常此公共阴极接地,而共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;不加电压则暗。为了保护各段LED不被损坏,需外加限流电阻。图2-6 LED数码管结构原理图众所周知,LED显示数码管
10、通常由硬件7段译码集成电路,完成从数字到显示码的译码驱动。本系统采用软件译码,以减小体积,降低成本和功耗,软件译码的另一优势还在于比硬件译码有更大的灵活性。所谓软件译码,即由单片机软件完成从数字到显示码的转换。从LED数码管结构原理可知,为了显示字符,要为LED显示数码管提供显示段码,组成一个“8”字形字符的7段,再加上1个小数点位,共计8段,因此提供给LED数码管的显示段码为1个字节。各段码位与显示段的对应关系如表2。表2 各段码位的对应关系段码位D7D6D5D4D3D2D1D0显示段dpgfedcba当用数据口连接LED数码管adp引脚时,不同的连接方法,各段码位与显示段有不同的对应关系。
11、通常数据口的D0位与a段连接,D1位与b段连接,D7位与dp段连接,依次连接,如表2所示,表3为用于LED数码管显示的十六进制数和空白字符与P的显示段码。表3 LED显示段码字型共阳极段码共阴极段码字型共阳极段码共阴极段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3BOH4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF84H71H7F8H07H空白FFH00H880H7FHP8CH73H根据AT89C2051单片机灌电流能力强,拉电流能力弱的特点,我们选用共阳数码管。将AT89C2051的P1.0P1.7分别
12、与共阳数码管的ag及dp相连,高电平的位对应的LED数码管的段暗,低电平的位对应的LED数码管的段亮,这样,当P0口输出不同的段码,就可以控制数码管显示不同的字符。例如:当P0口输出的段码为1100 0000,数码管显示的字符为0。数码管显示器有二种工作方式,即静态显示方式和动态扫描显示方式。为节省端口及降低功耗,本系统采用动态扫描显示方式。动态扫描显示方式需解决多位LED数码管的“段控”和“位控”问题,本电路的“段控”(即要显示的段码的控制)通过P0口实现;而每一位的公共端,即LED数码管的“位控”,则由P3口控制。这种连接方式由于多位字段线连在一起,因此,要想显示不同的内容,必然要采取轮流
13、显示的方式,即在某一瞬间,只让其中的某一位的字位线处于选通状态,其它各位的字位线处于断开状态,同时字段线上输出这一位相应要显示字符的字段码。在这一瞬时,只有这一位在显示,其他几位则暗。在本系统中,字位线的选通与否是通过PNP三极管的导通与截止来控制,即三极管处于“开关”状态。系统的时分显示部件由4只7段共阳LED数码管构成,前两只用于时的显示,后两只用于分的显示。值得一提的是,在设计中需要实现时与分之间的两个闪烁点,为此,将第三只LED数码管倒置摆放,这样就形成了两个很自然的闪烁点。与此同时,为了能使两点显示能够形象的表示时钟“秒”的变化,设计时,将两个点由P1.7单独控制,每隔一秒使P1.7
14、发送一个正脉冲,从而实现了两个点的闪烁显示,闪烁周期为一秒。第3节 系统的软件设计31 系统主程序设计 主程序的功能是完成系统的初始化,在显示时间之前,对系统是否停电状态进行检测;若停电,将系统进入低功耗状态,用电池电压维持单片机计时工作,但此时不显示时间,用节省用电;若不停电,则将时分发送显示。程序流程如图3-1所示。图3-1 系统主程序流程图3.2中断程序设计中断程序(如图3-2所示)完成时间计数,时间调整,误差消除等功能。中断采用AT89C2051内部T0中断实现,定时时间为125ms,当时间到达125ms8,即1分钟时,分计数缓冲器MINBUFFER增加1,到达1小时,则时计数缓冲器HOURBUFFER增加1,并将分、时的个位、十位放入显示缓冲器。当分