课程设计(论文)基于单片机的电子钟设计.doc

上传人:laozhun 文档编号:3993607 上传时间:2023-03-30 格式:DOC 页数:18 大小:119KB
返回 下载 相关 举报
课程设计(论文)基于单片机的电子钟设计.doc_第1页
第1页 / 共18页
课程设计(论文)基于单片机的电子钟设计.doc_第2页
第2页 / 共18页
课程设计(论文)基于单片机的电子钟设计.doc_第3页
第3页 / 共18页
课程设计(论文)基于单片机的电子钟设计.doc_第4页
第4页 / 共18页
课程设计(论文)基于单片机的电子钟设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《课程设计(论文)基于单片机的电子钟设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的电子钟设计.doc(18页珍藏版)》请在三一办公上搜索。

1、设计题目:电子时钟设计专 业:电子信息工程技术班 级:姓 名:学 号:指导教师:摘要20 世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社 会的各个领域, 有力地推动了社会生产力的发展和社会信息化程度的提高, 同时也使现代 电子产品性能进一步提高,产品更新换代的节奏也越来越快. 现代生活的人们越来越重视起了时间观念, 可以说是时间和金钱划上了等号. 对于那 些对时间把握非常严格和准确的人或事来说, 时间的不准确会带来非常大的麻烦, 所以以 数码管为显示器的时钟比指针式的时钟表现出了很大的优势. 数码管显示的时间简单明了 而且读数快,时间准确显示到秒.而机械式的依赖于晶体震

2、荡器,可能会导致误差. 数字钟是采用数字电路实现对时分秒数字显示的计时装置.数字钟的精度,稳定度远远超过老式机械钟.在这次设计中,我们采用 LED 数码管显示时,分,秒, 以 24 小时计时方式,根据数码管动态显示原理来进行显示,用 12MHz 的晶振产生振荡脉 冲,定时器计数.在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调 整.数字钟是其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大 消费的喜爱,因此得到了广泛的使用. 随着现代生活的推进,电子时钟在人们的生活中已经普及,本课题的主要内容就是结合单片机的强大功能,在一块普通的电子时钟集成多种功能,方便人们的日

3、常生活,该功能是通过单片机、8段数码管以及一些简单辅助电路实现的。随着生活中电子表使用的普遍,该设计的可行性已变的可能,所以本设计是在结合生活实际运用的基础上而做出的,而单片机更是电子电路中运用最普遍的芯片,所以该毕业设计在这两大主题的基础上结合keil与protues等软件的功能。该设计硬件结构简单,软件设计条理清晰,是一个很实用及很常见的多功能时钟。由于之前没有独立做过单片机实现多功能电子时钟方面的内容,所以在做设计时总会遇见很多问题,本次设计是在结合老师的指导及同学的帮助下完成的,并通过本人在网上所查的大量资料及单片机设计中常见的电路而构思出来的。关键字: 数字电子钟 单片机前言单片机也

4、被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片计算机即单片微型计算机。RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性

5、的一种。这次任务设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。本设计采取单片机STC89C52、按键开关与8段数码显示管显示模块相结合实现不同多种功能,此外还有一些简单的辅助电路,例如屏灯电路及上电复位及手动复位电路,这些简单的辅助电路加上单片机及按键开关,显示系统共同构成了整个硬件设计,8段数码管是通过单片机的控制来实现显示信息的,通过网上固定的显示编码,随时间的变化,要显示的时间变量随之变化,通过显示程序实时调用显示数组中与之对应的编码实现实时显示,最后与程序一同烧进单片机,在上电复位等相关的辅助电路下,从而完成整个设计。这个构思是结合单片机的原理及应用等书籍上常见的辅助

6、电路加上数码管的接口电路及接口技术而设计出来的,硬件电路比较简单。软件方面采用结构化的C51作为编程语言,通过按键检测调用不同的功能函数实现电子时钟的不同功能,结构化,模块化较高,流程比较清晰。单片机电子时钟,是利用单片机技术实现计时、时间显示、时间调整、定时调整、闹铃等功能。完成该项目能够有效的训练大家的单片机应用能力,电子时钟的设计过程中,除了应用单片机前六课题的基础知识外,还使用了外部中断技术、定时器中断技术、键盘查询及动态显示技术,希望大家通过该项目的设计,对单片机应用技术有一个较深的认识。目录 一、任务目的:1二、设计要求:11)设计并制作出具有如下功能的数字钟:12)电路应有功能:

7、13)电子时钟工作原理:1三、系统方案选择:21)单片机选型:22)元件清单列表:23) 计时方案:34)定时方案:35)显示方案:36)系统方案确定:37)系统设计构思:3四、系统硬件设计:41)硬件电路设计方案:42)系统硬件描述:43)系统硬件模块说明:44)电子钟设计电路图:5五、系统软件设计:7六、系统调试与运行:14七、任务小结:14八、参考文献:14一、任务目的:单片机电子时钟,是利用单片机技术实现计时、时间显示、时间调整、定时调整、闹铃等功能。完成该项目能够有效的训练大家的单片机应用能力,电子时钟的设计过程中,除了应用单片机前面的基础知识外,还使用了外部中断技术、定时器中断技术

8、、键盘查询及动态显示技术,锻炼独立设计、制作和调试应用系统的能力,深入领会单片机应用系统的硬件设计、模块化程序设计及软硬件调试方法等。二、设计要求: 1)设计并制作出具有如下功能的数字钟:1、 自动计时,由6个数码管显示时、分、秒。2、 具备校准功能,可以设置当前时间。3、 具备定时启动闹钟功能,可以设置启动闹钟时间。2)电路应有功能: 单片机电子时钟计 时 功 能计 时 调 整定 时 显 示定 时 调 整定 时 闹 铃计 时 显 示 3)电子时钟工作原理: 一般电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有

9、校时功能和报时功能。因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小

10、时的累计。译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。而该电子时钟由89C52,BUTTON,七段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。三、系统方案选择:1)单片机选型:选用MCS-51系列AT89C52RC2)元件清单列表:序号名称数量序号名称数量1单片机AT89S511片92.7K电阻7

11、只212M晶振1个10104瓷片电容4只3共阳数码管6只1130P瓷片电容2只4PNP管85507只12200电阻1只574LS2441片13560电阻8只6蜂鸣器1个1410K电阻12只7微动按键5个15100电阻4只810UF电容1只3) 计时方案:利用AT89C52内部定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能够使读者对当前所学知识进行综合应用,应此采用此方案。4)定时方案:利用AT89C52外部中断进行控制设定时间。利用外部中断0来完成调整选择功能。利用外部中断1完成定时显示,当前时间显示的切换。5)显示方案:有两种:1、利用串行口扩展LED,

12、实现LED静态显示。此方案占用单片机资源少,且静态显示显示亮度高,但硬件复杂。2、利用单片机并行I/O端口,实现LED动态显示。此方案无须外扩接口芯片,但占用资源较多,且需占用CPU时间。 经过对该项目的分析,这里采用动态显示方案。6)系统方案确定: 综合上述方案分析,本系统选用AT89C52RC单片机作为主控制器,采用单片机内部定时器实现计时、动态LED显示和外部中断控制显示闹铃。7)系统设计构思:1主流程是取时间参数,显示时间参数。2利用T0中断来完成计时、比较定时时间、驱动闹铃。3利用T1中断完成动态显示中,调整时间闪烁效果的定时。4利用外部中断0来完成调整选择功能。5利用外部中断1完成

13、定时显示,当前时间显示的切换6K3、K4键完成时间参数的循环加1操作。四、系统硬件设计:AT89C52RC 1)硬件电路设计方案:LED显示模块按键控制模块 2)系统硬件描述:1 控制器用AT89C52 , 12M晶振2 数码管动态扫描驱动P2口3 数码管段码驱动P1口4 闹铃驱动P1.05 调整键K1P3.2(外部中断0, 正常、调时、调分、调秒)6 定时/正常切换键K2P3.37 时间参数低位加1键K3P3.48 时间参数高位加1键K4P3.5 3)系统硬件模块说明:1. 按键模块在该模块中,采用四个按键作为电子时钟的控制输入,通过按键来实现时钟的时间设置、定时、秒表功能。电路中将四个按键

14、的一端接公共地,而单片机的P2口默认为高电平,一旦按键被按下,则该按键对应的额管脚被拉低,通过软件扫描按键即可知道用户所要实现的功能,调用相应的按键子程序来完成该操作。按键的去抖动由软件来实现。2. 单片机复位电路模块当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST持续为高电平,单片机就处于循环复位状态。根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电复位要求接通电源后,自动实现复位操作。上电后,保持RST一段高电平时间。3. 单片机晶振电路模块 石英晶体也连接在晶振引脚的输入和输出之间,等效为

15、一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容, 接地点就是分压点。以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看, 形成一个正反馈以保证电路持续振荡。4. 闹铃电路模块 发声部分由电源,10K欧、2.7K欧电阻,PNP三极管,蜂鸣器五部分组成。蜂鸣器由PNP三极管驱动,当BZ管脚(P1.0)为高时,三极管be级没电压差,三极管截止;反之,三极管导通,有电流流经蜂鸣器,蜂鸣器发声。5. 时间显示模块 时间显示部分的电路也很简单,由六个共阳七段数码管加上一个74LS244译码驱动电路组

16、成。在显示过程中,单片机将要显示的数字传递给74LS244芯片,同时通过位选选通要显示的数码管。74LS244芯片实现将BCD码数字转换为七段数码管段选码通过其输出端输出,同时提供约500mA的电流驱动数码管点亮。 4)电子钟设计电路图:电子钟硬件设计电路五、系统软件设计:明确任务要求,完成方案设计和硬件电路制作后,进入系统软件设计阶段。我们采用自顶向下、逐步细化的模块化设计方法。系统源程序如下:/单片机电子时钟/实现计时、时间显示、时间调整、定时调整、闹铃等功能/文件名:DZSZ.c#include #include #define uchar unsigned char #define u

17、int unsigned int #define seg7_data P0 /七段数码管显示数据 #define wx P2 /6 个数码管位选 P2.0-P2.5-低电平#define N1 2 #define N2 10 /*-数字钟端口定义-*/sbit ks=P32; /时、分、秒选择键-外部中断 0 sbit kd=P33; /定时/时间切换键-外部中断 1 sbit kl=P34; /时间低位加 1 键-软件扫描 sbit kh=P35; /时间高位加 1键-软件扫描 sbit spk=P10; /响铃控制-低电平 /*-全局变量定义-*/uchar H=0,M=0,S=0,T_C

18、ount=0; uchar H_Set=11,M_Set=11,S_Set=11; uchar *Sp=&S,*Mp=&M,*Hp=&H; /时间指针 uchar Select2Seg=0; /调时闪烁位号 uchar Select2Seg_=0; /定时闪烁位号 uchar *Select2SegP; /闪烁位号指针 uchar H_h=0,H_l=0,M_h=0,M_l=0,S_h=0,S_l=0; /时分秒的各位的数值-用于显示 uchar SaveH_h=0,SaveH_l=0,SaveM_h=0,SaveM_l=0,SaveS_h=0,SaveS_l=0; /时分秒的各位的数值-用于

19、调时间时的数据保护 uchar light=0; bit Key3Down=1; /允许 KEY3 按键值增加1 的标志(个位加一) bit Key4Down=1; /允许 KEY4 按键值增加1 的标志(十位加一) bit SetTime=0; /定时标志 1 为定时 /*-蜂鸣器报警函数-*/ void SPK(void) if(SetTime=0) spk=0; /定时到,响铃响 void TunOffSPK(void) /关闭响铃 spk=1; /*-外部中断 0 初始化函数-*/ void init_INT0(void) EA=1; /开放中断总允许控制 EX0=1; /开放外部中断

20、0允许位 PX0=0; /外部中断0为低优先级中断 IT0=1; /设置外部中断为下降沿触发方式 /*-T0初始化为 50mS 定时,并启动-*/ void init_t0() TMOD=(TMOD&0xF0)|0x01; /定时器T0,方式 1:16位定时 TH0=0x3C; /定时50ms初值 TL0=0xB0; EA=1; /开放中断总允许控制 ET0=1; /允许T0中断 PT0=1; /设定定时器T0为高优先级中断 TR0=1; /启动定时器T0 /*-外部中断 1 初始化函数-*/ void init_INT1(void) EA=1; /开放中断总允许控制EX1=1; /开放外部中

21、断1允许位PX1=0; /外部中断1为低优先级中断IT1=1; /设置外部中断为下降沿触发方式 /*-T1初始化为 50mS 定时,并启动-*/void init_t1(void) TMOD=(TMOD&0x0F)|0x10;/定时器 1,方式 1:16位定时 TH1=0x3C; /定时50ms初值 TL1=0xB0; EA=1; /开放中断总允许控制 ET1=1; /允许T1中断 PT1=0; /设定定时器T1为高优先级中断 TR1=1; /启动定时器T1 /*-外部中断 0 子函数-*/void Int0(void) interrupt 0 using 2 /位号闪烁控制函数 if(Set

22、Time) Select2SegP=&Select2Seg_; /定时,对应位号闪烁 else Select2SegP=&Select2Seg; if(+(*Select2SegP)=4) *Select2SegP=0; /位号为4时返回到位号1状态 TunOffSPK(); /*-T0 定时 1S 中断子程序 1函数-*/ void Timer0() interrupt 1 using 1 /时间显示控制函数 TH0=0x3C; TL0=0xB0; if(T_Count+)=20) /循环20次得到1秒 S+; T_Count=0; if(S=60) /秒计时重复60次为1分钟 M+; S=

23、0; if(M=60) /分钟计时重复60次为1小时 H+; M=0; if(H=24) /小时计时重复24次则重新计时 H=0; if(H=H_Set)&(M=M_Set)&(S=S_Set) /到达已定时时间,响铃响 SPK(); /*-外部中断 1 子函数-*/ void Int1(void) interrupt 2 SetTime=SetTime; /关定时 *Select2SegP=0; /位闪烁 TunOffSPK(); /*-T1 定时 50mS 中断子程序 1函数-*/ void Timer1() interrupt 3 using 3 TH1=0x3C; TL1=0xB0;

24、if(light+8) light=0; /*-数码管数据定义-*/ uchar code DIY_data=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xFF; /0-9,-,不亮 uchar code WX_data=0xfe,0xFd,0xfb,0xf7,0xef,0xdf; /自左到右分别是面板(自右到左 1-6个数码管) /*-数码管循环显示,N 为位序号,D为数据序号-*/ void DSP_Data(uchar N,uchar D) uchar i=N,j=D; seg7_data=DIY_dataN; /数码管

25、显示 wx=WX_dataD; /数码管显示选通 /*-软件延时 N mS函数-*/void DLYmS(uchar N) uchar k=125; for(;N0;N-) for(;k0;k-); void testKey2(void) if(SetTime) Sp=&S_Set;Mp=&M_Set;Hp=&H_Set; /闹铃定时时,显示111111并闪烁 Select2SegP=&Select2Seg_; else Sp=&S; Mp=&M; Hp=&H; Select2SegP=&Select2Seg; /*-检测 KEY3(调整时间个位键)子函数-*/ void Scan_kl(vo

26、id) if(kl=0)&( Key3Down=1) Key3Down=0; testKey2(); TunOffSPK(); switch(*Select2SegP) case 0:break; case 1:SaveS_h=*Sp/10; /保护 秒 十位 *Sp+=1; *Sp=SaveS_h*10+*Sp%10; break; case 2:SaveM_h=*Mp/10; /保护 分 十位 *Mp+=1; *Mp=SaveM_h*10+*Mp%10; break; case 3:SaveH_h=*Hp/10; /保护 时 十位 *Hp+=1; if(SaveH_h3) *Hp=Save

27、H_h*10; break; default:break; if(kl=1) Key3Down=1; /*-检测 KEY4(调整时间十位键)子函数-*/ void Scan_kh(void) if(kh=0)&( Key4Down=1) Key4Down=0; testKey2(); TunOffSPK();switch(*Select2SegP) case 0:break; case 1:SaveS_l=*Sp%10; /保护 秒 个位 *Sp+=10; if(*Sp=60)*Sp=SaveS_l; break; case 2:SaveM_l=*Mp%10; /保护 分 个位 *Mp+=10

28、; if(*Mp=60)*Mp=SaveM_l; break; case 3:SaveH_l=*Hp%10; /保护 时 个位 *Hp+=10; if(SaveH_l3) if(*Hp/101) *Hp=SaveH_l; else if(*Hp/102)*Hp=SaveH_l; break; default:break; if(kh=1)Key4Down=1; /*-6位LED显示函数-*/ void Display(void) testKey2(); if(*Select2SegP!=1|light4) /秒显示 DSP_Data(*Sp%10,0); /数码管循环显示 DLYmS(N1);

29、 DSP_Data(*Sp/10,1); /数码管循环显示 DLYmS(N1); if(*Select2SegP!=2|light4) /分钟显示 DSP_Data(*Mp%10,2); /数码管循环显示 DLYmS(N1); DSP_Data(*Mp/10,3); /数码管循环显示 DLYmS(N1); if(*Select2SegP!=3|light4) /小时显示 DSP_Data(*Hp%10,4); /数码管循环显示 DLYmS(N1); DSP_Data(*Hp/10,5); /数码管循环显示 DLYmS(N1); Scan_kl(); /调整时间个位键 Scan_kh(); /调

30、整时间十位键 /*-主函数-*/void main() uchar i; init_t0(); /中断的初始化和启动 init_t1(); init_INT0(); init_INT1(); while(1) Display(); /6位LED显示 六、系统调试与运行: 系统调试包括硬件调试和软件调试两部分,硬件调试一般需要利用调试软件来进行,软件调试也需要通过对硬件的测试和控制来进行,因此软、硬件调试是不可能绝对分开的。 软件调试的任务是利用开发工具在线仿真调试,发现并纠正错误。这里可利用软件Keil C51和PROTEUS来完成软件的调试。硬件调试的主要任务是排除硬件故障,其中包括设计错误

31、和连接错误。这里主要用到的工具是万用表,因为设计错误可以基本排除,所以,检查连接错误是关键。 最后,将生成的可执行文件“电子时钟.hex”下载到单片机中,然后再电路上运行,不断修改直到正确运行。七、任务小结: (1)通过完成电子钟的设计和制作调试,掌握单片机应用系统的设计过程。(2)学习自顶向下的模块化程序设计方法,构建出程序设计的整体框架,在细化设计流程的基础上,合理分配系统变量资源。(3)在调试运行之前,一定要将源程序分析透彻,这样将会有助于以后的故障分析,快速地找到故障并改正。八、参考文献:【1】王静霞 单片机应用技术(C语言版) 北京:电子工业出版社【2】马忠梅 单片机的C语言应用程序设计(修订版) 北京:北京航空航天大学出版

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号