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

下载本文档

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

文档简介

1、-PAGE . z. - - . -可修- .电子科技职业技术学院Shaan*i electronic science and technology vocational college课程设计报告题 目 基于单片机的电子时钟设计和实现班 级 电子信息1507姓 名 聪指导教师 聂弘颖时 间2017年10月30日第一章 系统设计要求1.1 根本功能1能够显示时分秒2能够调整时分秒1.2 扩展功能1能够任意设置定时时间2定时时间到闹铃能够报警3实现了秒表功能第二章硬件总体设计方案本次设计时钟电路,使用了AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,

2、使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进展定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、显示屏即可满足设计要求。2.1系统功能实现总体设计思路此设计原理框图如图2-1所示,此电路包括以下四个局部:单片机,键盘,闹铃电路及显示电路。闹铃电路51单片机独立键盘数码管显示图2-1 设计原理框图经多方论证硬件我个人采用AT89C51单片机和7SED八位共阳极数码管等来实现单片机电子时钟的功能。详细元器件列表如表2.1所示:表2.1 详细元器件列表AT89c511片7SED八位共阳极数码管1片NPN三极管1个104p电容6个30

3、p电容2个10K电阻6个560欧姆电阻8个200欧姆电阻1个100欧姆电阻6个2.2各局部功能实现单片机发送的信号通过程序控制最终在数码管上显示出来。单片机通过输出各种电脉冲信号来驱动控制各局部正常工作。为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。单片机通过控制闹铃电路来完成 定时闹钟的功能。2.3系统工作原理设计的电路主要由四模块构成:单片机控制电路,显示电路、闹铃电路以及校正电路。详细电路功能图如图2-2: 图2-2 详细电路功能图本设计采用C语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位

4、,小时计数器按23翻0规律计数。时、分、秒的计数结果经过数据处理可直接送显示器显示。当计时发生误差的时候可以用校时电路进展校正。设计采用的是时、分、秒显示,单片机对数据进展处理同时在数码管上显示。2.4时钟各功能分析及图解电路各功能图解分析1 时钟运行图仿真开场运行时,或按下key4键时,时钟从12:00:00开场运行,其中key2键对分进展调整,key3对小时进展调整,key6可以让时钟暂停。时钟运行图如图 2-3 所示: 图2-3 时钟运行图2秒表计时图当按下key1键进入秒表计时状态,key6是秒表暂停键,可按key4键跳出秒表计时状态。如图2-4: 图2-4 秒表计时图3闹铃设置图及运

5、行图当按下key5,开场定时,分别按key2调分,key3调时设置闹铃时间,然后按下key4键恢复时钟运行状态(图2-5)当闹铃设置时间到时,蜂鸣器将发出10秒中蜂鸣声图2-6。 图2-5 闹铃时间设置图 图2-6 闹铃运行图该数字钟是用一片AT89C51单片机通过编程去驱动8个数码管实现的。通过6个开关控制,从上到下6个开关KEY1-KEY6的功能分别为:KEY1,切换至秒表;KEY2,调节时间,每调一次时加1;KEY3, 调节时间,每调一次分加1;KEY4,从其它状态切换至时钟状态;KEY5,切换至闹钟设置状态,也可以对秒表清零;KEY6,秒表暂停.控制键分别与P1.0P1.5口连接其中:

6、A通过P2口和P3口去控制数码管的显示如下图P2口接数码管的ag端,是控制输出编码,P3口接数码管的18端,是控制动态扫描输出B从P0.0输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,假设有乐曲可以去驱动扬声器实现。电路功能使用说明1各个控制键的功能:可对时间进展校准调节只能加;按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加、分加键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开场计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开场、复位;清零键可以对闹钟清零。AT89C51单片机,通过编写程

7、序对数码显示进展控制。八个7段数码管显示时钟和秒表信号。第三章软件总体设计方案3.1 主程序流程图:开场定时器及中断定时器初始化执行时钟秒表闹铃设定程序是否设定参数执行显示程序NY软件程序从开场执行,先通过初始化各个存放器,经过扫描按键来决定是否设定参数来执行相应功能的程序,进而在数码管上显示。如图3-1:图3-1 主程序流程图分数值time.minute加1time.second归零Tcount加1返回主程序实数值time1.boun加1time1.mintet归零Time1.bour23时数值time1.hour归零Tount1=100秒数值time1.second加1second归零执行

8、闹钟程序p0.0=1判断时间与闹钟时间是否一致闹钟程序是否行完全Time1.second=60Time.minute=60恢复初值保护3.2 总中断程序流程图3-2 中断流程图时间的显示通过此中断程序来控制,并且通过与设定的时间进展比拟来判断是否让闹铃工作。程序中包含时间的设定,如设定tcount来使秒等工作,进而来控制分和时。如上图图3-2。秒表中断程序流程秒表功能通过另一个程序来实现。通过保护主程序的数据来进展秒表功能。程序中需要设置秒表的具体显示方法。如图3-3:恢复初值保护10ms计数器加1恢复初值保护秒计数器加1,10ms计数器归零,即sec+,ms=0Sec60Ms100输出字码,

9、中断完毕,返回上级主程序分计数器加1,秒计数器归零,即minit+,sec=0 N Y N Y图3-3秒表中断程序流程图B.按键程序流程程序初始化时十位归零alarms【7】=0分时位归零alarms4=0分十位归零输出时钟时十位加一输出闹钟时个位加一,延时输出时钟十位加一输出时钟十个位加一输出时钟分个位加一,延时输出闹钟时分位加一输出闹钟时十位加一输出闹钟分个位加一,延时时十位归零判断标志位是否为零Alarms42Alarms72Alarms【3】0Dat169Dat17Alarms69Dat139Dat142判断标志是否为零判断时i加键是否按下判断分加键是否按下图3-4为时钟和闹钟的调节,

10、程序过扫描来判断按键是否按下进展时间和闹钟的调节。图3-4按键程序流程图图3-5为进入中断和清零图,程序过扫描来判断按键是否按下进展执行相应的中断来事实现相应的功能。判断分加键tminute是否按下,P1.1=0判断秒表miaobiao1是否按下按下,P1.0=0,tgsdhPP1.0=0判断清零键miaobiao2是否按下,P1.3=0进入秒表中断,执行秒表中断程序返回上级主程序清零所有的计数器,各个显示的字码。图3-5 中断和清零程序流程图3.3控制电路的C语言源程序根据流程图,经过认真分析得出控制电路的源程序如下:-. z.#include#define uchar unsigned c

11、har#define uint unsigned int#define delay_time 3/*宏定义*/uchar k,dat=0,0,0,0,0,0,0,0;uint tcount,t,u;uchar dat1=0,0,0,0,0,0,2,1;uchar dat2=0,0,0,0,0,0,0,0;uchar alarms=0,0,0,0,0,0,0,0;uchar dis_bit=0*80,0*40,0*20,0*10,0*08,0*04,0*02,0*01;unsigned char code SEG711=0*C0,/*0*/ 0*F9,/*1*/ 0*A4,/*2*/ 0*B0,

12、/*3*/ 0*99,/*4*/ 0*92,/*5*/ 0*82,/*6*/ 0*F8,/*7*/ 0*80,/*8*/ 0*90,/*9*/ 0*BF,/*-*/ ;/*数字显示数组*/sbit miaobiao1=P10;sbit tminute=P11;sbit thour=P12;sbit miaobiao2=P13;sbit alarm=P14;sbit P0_0=P00;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;/*端口定义*/uchar ms=0;uchar flag=0;uchar sec=0;uchar minit=0;struct

13、timeuchar second;uchar minute;uchar hour;time1; uchar n,i;void delay(n) while(n-)for(i=120;i0;i-); /*延时子程序*/ void modify(void) EA=0; if(thour=0) if(flag=0) dat16+;delay(280); if(dat169) dat16=0;dat17+;else if(dat171)&(dat163) dat17=0; dat16=0; if(flag=1) alarms6+;delay(300); if(alarms69) alarms6=0;a

14、larms7+; if(alarms72) alarms7=0; dat6=alarms6; dat7=alarms7; if(tminute=0) if(flag=0) dat13+;delay(280); if(dat3=9) dat14+;dat13=0;if(dat145) dat14=0; if(flag=1) alarms3+;delay(300); if(alarms39) alarms4+;alarms3=0; if(alarms45) alarms4=0; dat3=alarms3;dat4=alarms4; if(miaobiao1=0)TR0=0;ET0=0;TR1=1;

15、ET1=1; if(miaobiao2=0) TR0=1;ET0=1;TR1=0;ET1=0; dat20=0; dat21=0; dat23=0; dat24=0; dat26=0; dat27=0; ms=0; sec=0; minit=0; if(P1_5=0) TR0=0;ET0=0;TR1=0;ET1=0; if(alarm=0)TR0=0;ET0=0;TR1=0;ET1=0;flag=1; dat0=0; dat1=0;dat2=10; dat3=0;dat4=0;dat5=10;dat6=0;dat7=0; EA=1;/*按键扫描*/void init(void)TMOD = 0

16、*11; TH0 = 0*DB;TL0 =0*FF;TH1=0*DB;TL1=0*FF; ET0 = 1; /10msET1=1;/TR1=1; TR0=1; tcount=0;ms=0;sec=0;minit=0;EA = 1;/*初始化*/void test(void)for(k=0;k23) time1.hour=0; dat5=10; dat2=10; dat0=dat10; dat1=dat11; dat3=dat13; dat4=dat14; dat6=dat16; dat7=dat17; flag=0; P0=0*01;if(alarms7=dat17)&(alarms6=dat

17、16)&(alarms4=dat14)&(alarms3=dat13)&(dat11=100) ms=0; sec+; dat23=sec%10; dat24=sec/10; if(sec=60) sec=0; minit+; dat26=minit%10; dat27=minit/10; dat5=10; dat2=10; dat0=dat20; dat1=dat21; dat3=dat23; dat4=dat24; dat6=dat26; dat7=dat27; EA=1;-. z.第四章 总结 经过一周的单片机课程设计,我已根本完成课题要求。功能上根本达标:时钟的显示,秒表显示,定时功能,调时功能。时钟显示功能,准确度完全可以满足日常生活显示时间的需要;秒表功能,可以满足比赛计时的需要;调时功能,方便快捷;定时功能准确可靠,还有扩展成音乐闹钟的余地。硬件设施符合要求,软件设计可以配合硬件实现要求功能。但是由于时间比拟短,出现局部缺乏:使用定时和秒表功能时时间显示功能停顿运行。经讨论只是软件局部还不完善。不过,我相信,如果时间充足,将软件改良,我完全可以很好实现所有功能。 另外,在本次设计的过程中,我发现很多的问题,虽然以前没有做过这样的设计

温馨提示

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

评论

0/150

提交评论