毕业设计闹钟系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计

课程设计任务书

课程EDA技术课程设计

题目闹钟系统的设计

主要内容、基本要求、主要参考资料等

主要内容:

设计并制作一个带闹钟功能的24小时计时器。它包括以下几个组成部分:

1、显示屏,由4 个七段数码管组成,用于显示当前时间(时:分)或设置的闹钟时间;

2、数字键,实现‘0’—‘9’的输入,用于输入新的时间或新的闹钟时间;

3、TIME(时间)键,用于确定新的时间设置;

4、ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;

5、扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声

基本要求:

1、计时功能:这是本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。

2、闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。

3、设置新的计时器时间:用户用数字键输入新的时间,然后按"TIME"键确认。在输入过程中,输入数字在显示屏上从右到左依次显示。例如,用户要设置新的时间12:34,则按顺序输入“1”,“2”,“3”,“4”,与之对应,显示屏上依次显示的信息为:“1”,“12”,“123”,“1234"。如果用户在输入任意几个数字后较长时间内,例如5 s,没有按任何键,则计时器恢复到正常的计时显示状态。

主要参考资料:

[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.

[2] 康华光主编.电子技术基础模拟部分. 北京:高教出版社,2006.

[3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.

完成期限2011.3.11

指导教师

专业负责人

一、总体设计思想

1.基本原理

数字闹钟电路的基本结构由两个60进制计数和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开始计时。秒计数器的技术

时钟CLK为HZ的标准信号。当数字闹钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号时、分、秒得计时结果通过6个数码管来动态显示。因此,通过模式选择信号KEY1、KEY2控制数字钟的工作状态,使其分别工作于正常计时,调整分、时和设定闹钟分、时5个状态。当数字闹钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为CLK,秒的进位,分的进位;当数字闹钟处于闹钟定时状态时,可以设定小时和分;当计时到所设定的时刻时,驱动扬声器,持续1分钟。

2.设计框图

系统框图主要分为三部分:

第一部分为精准秒脉冲产生电路,这里我们采用频率为32.768KHz的标准晶振搭成精准的秒脉冲产生电路,为电子钟提供精准的秒脉冲输入。

第二部分为FPGA核心控制电路,主要由型号为EP3C25E144C8N的芯片经过编程以后,向译码显示电路提供控制信号。

第三部分为译码显示电路,由4片74LS47驱动4个7段数码管,在核心控制电路输出的控制信号的控制下,显示相应的时、分、秒。具体框图如下图1所示。

图1

二、设计步骤和调试过程

1、总体设计电路

该数字钟可以实现3个功能:计时功能、定点报时功能和重置时间功能,因此有3个子模块:计时、报时(speak)、重置时间(sd1,sd2)。其中计时模块有4部分构成:秒计时器(s1)、分计时器(m1)、时计时器(h1)。秒计时器(s1)是由一个60进制的计数器构成的,。clk为驱动秒计时器的时钟,s1为秒计时器的输出。分计时器(m1)是由一个60进制的计数器构成的,s1为驱动分计时器工作的时钟;m1为分计时器的输出;时计时器(h1)是由一个24进制的计数器构成的, m1为驱动时计时器工作的时钟,h1为时计时器的输出;

报时模块(speak)的功能是定时到时,speak输出高电平,并且持续一段时间。

(1)、秒脉冲产生电路

如下图所示,由32.768KHz的晶振产生经过CD4060分频产生精准的秒脉冲。

图2

(2)、FPGA 核心控制电路

对EP1K30TC144-3进行编程,输出控制信号。

图3

(3)、译码显示电路

如图,由CD4511驱动7段数码管进行显示。

图4

2、模块设计和相应模块程序

(1)、分计时器(second1)

-----------------------分钟十位

m110:process(clk,min2,sec1,sec2,md1,md2)

begin

if clk'event and clk='1' then

if (min1="0101" and min2="1001") and (sec1="0101" and sec2="1001") then min1<="0000";

elsif min1="0101"and min2="1001"and (md1='0' and md2="00")then

min1<="0000";

elsif (min2="1001"and (sec1="0101" and sec2="1001"))

or (min2="1001"and md1='0' and md2="00") then min1<=min1+1;

end if;

end if;--end if;

end process m110;

-----------------------分钟个位

m220:process(clk,sec1,sec2,md1,md2)

begin

if clk'event and clk='1' then

if min2="1001"and (sec1="0101" and sec2="1001") then min2<="0000";

相关文档
最新文档