电子钟设计

上传人:aa****6 文档编号:38701801 上传时间:2018-05-06 格式:DOC 页数:16 大小:209.50KB
返回 下载 相关 举报
电子钟设计_第1页
第1页 / 共16页
电子钟设计_第2页
第2页 / 共16页
电子钟设计_第3页
第3页 / 共16页
电子钟设计_第4页
第4页 / 共16页
电子钟设计_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《电子钟设计》由会员分享,可在线阅读,更多相关《电子钟设计(16页珍藏版)》请在金锄头文库上搜索。

1、 电子钟设计一、设计目的1、掌握单片机实际系统的开发步骤。2、进一步掌握单片机的中断系统及其服务程序的编写方法。3、掌握定时系统、计数初值的计算。4、掌握硬件设计并熟悉 AT89C52 的功能及引脚。5、掌握单片机基于 C 语言程序的设计、编写及调试的方法。二、设计要求1、通过键设置当前时间(时分秒) 。2、若是四位显示可通过键切换显示当前时间:时分或分秒。3、可设定闹钟,到时响铃,一个发光管闪烁(1 秒/次)有复位键停止响铃。4、可切换显示闹钟和当前时间。三、硬件电路设计 本系统主要包括 STC89C52 单片机部分,数码管显示部分,独立按键控制部分,闹钟报警部分,指示灯部分等。系统结构框图

2、如图 3-1 所示。图 3-1 系统结构框图23.1 STC89C52 单片机最小系统89C52 共有四个八位的并行双向口,即有 32 根输入输出口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器组成。 VCC(40 引脚):电源电压 VSS(20 引脚):接地STC89C52 引脚图如图 3-2 所示。P0 端口(P0.0P0.7,3932 引脚):P0 口是一个漏极开路的 8 位双向 I/O口。作为输出端口,每个引脚能驱动 8 个 TTL 负载,对端口 P0 写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0 口也可以提供低 8位地址和 8 位数据的复用总线。此时,P0

3、 口内部上拉电阻有效。在 Flash ROM编程时,P0 端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1 端口(P1.0P1.7,18 引脚):P1 口是一个带内部上拉电阻的 8 位双向I/O 口。P1 的输出缓冲器可驱动(吸收或者输出电流方式)4 个 TTL 输入。对端口写入 1 时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1 口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。P1 口特点是输出锁存器,输出时没有条件。输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出 1。 此外,P1.0 和 P1.1 还可以

4、作为定时器/计数器 2 的外部技术输入(P1.0/T2)和定时器/计数器 2 的触发输入(P1.1/T2EX)P3 口为准双向口。可以字节访问,也可以位访问。P3.0-RXD,串行输入口。P3.1-TXD,串行输出口。P3.2-INT0,外部中断 0 的请求。P3.3-INT1,外部中断 1 的请求。P3.4-T0,定时器/计数器 0 外部计数脉冲。P3.5-T1,定时器/计数器,1 外部计数脉冲。P3.6-WR,外部数据存储器写选通。P3.7-RD,外部数据存储器读选通。RST(9 引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。ALE(30

5、 引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。XTAL1(19 引脚):振荡器反相放大器和内部时钟发生电路的输入端。3XTAL2(18 引脚):振荡器反相放大器的输入端。图 3-2 STC89C52 引脚图3.2 上电按钮复位电路复位是单片机的初始化操作,其主要作用是把 PC 初始化为 0000H。除了进入系统的正常初始化之外,当由于程序运行出错或操作失误使系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。除使 PC 归零外,复位操作还对其他一些专用寄存器有影响。通常因为系统运行等的需要,常常需要人工按钮复位,复位电路如图 3-3 所示。只需

6、要一个常开按钮开关并联于上电复位电路,按下开关一定时间就能使 RES 引脚端高电平,从而使单片机复位。复位脉冲应保持宽度大于 2 个机器周期,复位脉冲过后,有内部下拉电阻保证RST 端为低电平(无效) 。上电复位电路如图 3-3 所示。图 3-3 上电按钮复位电路43.3 振荡电路CPU 工作时都必须有一个时钟脉冲。本次单片机最小系统采用的是 12MHz晶振,由 STC89C52 单片机内部电路产生时钟脉冲。有两种方式可以向单片机提供时钟脉冲:一是外部时钟方式,即使用外部电路向单片机提供时钟脉冲;二是内部时钟方式,即使用晶振由 STC89C52 单片机内部电路产生时钟脉冲。一般常用第二种方法,

7、本次设计也采用内部时钟方式,应尽量保证振荡器稳定和可靠地工作。晶振电路连接如图 3-4 所示。图 3-4 振荡电路3.4 数码管显示电路数码管通过 74HC573 芯片的驱动电路来驱动,采用共阴极接法。位选由一片 74HC573 芯片控制,数码管显示出的字形,取决于单片机对位选通电路的控制。因为设计选择的是一个四位一体的数码管,所以要想使数码管点亮,则应给对应位码一个值,将需要显示的数码管的选通控制打开,该位就显示出字形。但由于是数码管是动态扫描且演延时时间较短所以我们看到的是四个数码管同时显示。3.5 按键电路按键电路由 4 个开关组成。4 个开关分别设置当前时间(时分秒) 、切换显示当前时

8、间、设定闹钟时间、切换显示闹钟时间和当前时间。在电路板上分别与 P3.2, P3.3,P3.4,P3.5 相连。按键电路如图 3-5 所示。图 3-5 按键电路53.6 报警电路报警电路由 PNP 三极管,蜂鸣器以及电阻构成,当定时时间到时蜂鸣器鸣叫 4s,提醒人们此项程序结束。报警电路如图 3-6 所示。图 3-6 报警电路3.7 系统电路原理图硬件清单:STC89C52 单片机 ,2 片 74HC573 锁存器芯片,4 位数码管一排,独立按键 4 个,蜂鸣器 1 个,电阻三个,发光二极管 2 个,电容一个。系统电路原理图如图 3-7 所示。图 3-7 系统电路原理图6四、软件设计4.1 主

9、程序设计主程序是时钟系统的主体,用独立按键来控制时分和分秒的切换,当前时间和闹钟的切换以及对当前时间和闹钟的调整。根据功能对硬件功能进行分配:本系统由 P0 口做段码口,P2 口做位码口,P3.0 为启停键,P3.1,P3.2 为调时键,其中 P3.1 为取码键(选择要调的位) ,P3.2 为加一键(对选的位进行加 1操作) 。流程图如图 4-1 所示。图 4-1 主函数流程图4.2 子程序设计(1)按键扫描子程序按键扫描子程序主要是由 if 函数实现的,通过延时实现去抖。用 while 循环等待按键释放,通过独立按键控制要求功能的实现。P3.0 为启停键,P3.1,P3.2 为调时键,其中

10、P3.1 为取码键(选择要调的位) ,P3.2 为加一键(对选的位进行加 1 操作) 。流程图如图 4-2 所示。 7图 4-2 按键扫描流程图(2)数码管的动态显示子程序本设计选用共阴极数码管,当某个发光二极管的对应的引脚加入高电平时对应的二极管就会发光。因此要显示想要的字形就应使该字形的相应段码点亮,实际上就是单片机把要显示的数转化为数码管段码来显示,此数据为字符的段码,但要注意扫描的速度。8显示当前调节时间时调节模式键按下?按下次数M=1?显示当前时间分秒返回NYYY开始按下次数M=2?按下次数M=3?按下次数M=4?显示当前调节时间分显示调节闹钟时间时显示调节闹钟时间分显示当前时间时分

11、显示时间切换键按下?NNNNYYY图 4-3 数码管的动态显示子程序流程图9五、源程序#include unsigned char led12=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00; /数码管段码 unsigned char led212=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87, 0xff,0xef,0xc0,0x80; unsigned char a8; unsigned char second=0,minute=0,hour=0; unsigned char minu

12、te1=0,hour1=0; unsigned char b4=0xfe,0xfd,0xfb,0xf7; /缓存 unsigned char k=0; unsigned int temp; / 记录毫秒为秒的变量 unsigned char X,N,M,S_flag;/模式,更新时间的种模式加上正常模式 S_flag 标志 sbit dula=P20; sbit wela=P21; sbit K1=P30; sbit K2=P31; sbit K3=P32; sbit K4=P33; sbit BEEP=P26; void delay(unsigned n) /0.2 毫秒 int x,y;f

13、or(x=0;x 0) hour-; else hour=23; while(!K3); break; case 2: /模式-调分 if(K2=0) delay(10); if(K2=0) if(minute0) minute-; else minute=59; while(!K3); break; case 3: /模式-闹钟调时 if(K2=0) delay(10); if(K2=0) if(hour10)hour1-;else hour1=23; while(!K3); break;case 4: /模式-闹钟调分 if(K2=0) delay(10); if(K2=0) if(min

14、ute10)minute1-;else minute1=59; while(!K3); break; void main() init();while(1) key_prc();display(); 程序结果:上电后,蜂鸣器响 5 秒,然后数码管显示的是正常时间。第一次摁下 S1,数码管显示的是时的设置;第二次摁下 S1,数码管显示的是分钟的设置;第三次摁下 S1,数码管显示的闹钟的时的设置;第四次摁下 S1,数码管显示的是闹钟的分钟设置;第五次摁下,数码管显示的正常时间。S2、S3 分别控制减加,S4 是控制的是时钟的时分、分秒和闹钟的时分、分秒的模式转换。六、设计总结通过本次单片机小学期的

15、实践,让我认识到了理论与实践相结合的重要性,本次小学期是软件与硬件相结合来实现时钟的设计,那我简单的对本次设计进行一下总结。时钟的设计先根据硬件连线图把各个零件焊接到板子上,然后运用学过的C 语言把时钟设计程序编写出来,时钟的设计分为以下几个步骤:主程序,时16钟显示,闹钟显示,按键切换模式,数码管显示,秒闪烁,延迟时间等。通过这几个主要步骤来实现时钟的功能,编写程序后把程序下载到已焊接好的板子上,实现软件和硬件的结合。上电后,按下电路板的开关键,四段数码管开始从 0000 显示,此时的数码管所显示的为分钟值和秒值,前两个数码管显示分钟,后两个数码管显示秒值,每隔一秒,数码管所显示的内容加 1

16、,当显示到 59 秒后,再过一秒,显示分钟的前两个数码管显示值加 1,显示秒的后两个数码管清零,并重新从零开始显示.所以我们必须先学会如何使用 protel 软件。这次课程设计之后,使我明白了,做任何事情都要认真仔细,不然的话,你会花更多的时间才会做好。课程设计有利于提高动手能力,能把所学的书本知识运用到实际生活中去,同时也丰富了业余生活,加深对知识的理解。而且本次单片机小学期遇到了很多困难,比如软件编好之后只能实现部分功能,我们不得不反复进行调试和查阅各种资料,最终在老师和同学的帮助下我们才编写出了正确的程序。这次小学期让我体会到了团队合作的重要性,让我明白理论是实践的基础,首先要有丰富的理论知识才能更好的运用到实践中去,从而实现理论与

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号