《闹钟系统设计许鹤强.doc》由会员分享,可在线阅读,更多相关《闹钟系统设计许鹤强.doc(14页珍藏版)》请在金锄头文库上搜索。
1、东 北 石 油 大 学课 程 设 计课 程 EDA技术课程设计 题 目 闹钟系统设计 院 系 电子科学学院 专业班级 电子信息工程 学生姓名 许鹤强 学生学号 090901140323 指导教师 2013年 3 月8日东北石油大学课程设计任务书课程 EDA技术课程设计题目 闹钟系统的设计专业 电子信息工程 姓名 许鹤强 学号 090901140323主要内容、基本要求、主要参考资料等主要内容:设计并制作一个带闹钟功能的24小时计时器。它包括以下几个组成部分:1、显示屏,由4 个七段数码管组成,用于显示当前时间(时:分)或设置的闹钟时间;2、数字键,实现09的输入,用于输入新的时间或新的闹钟时间
2、;3、TIME(时间)键,用于确定新的时间设置;4、ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;5、扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声基本要求:1、计时功能:这是本计时器设计的基本功能,每隔一分钟计时一次,并在显示屏上显示当前时间。2、闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。3、设置新的计时器时间:用户用数字键输入新的时间,然后按TIME键确认。在输入过程中,输入数字在显示屏上从右到左依次显示。例如,用户要设置新的时间12:34,则按顺序输入“1”,“2”,“3”,“4”,与之对应,显示屏上依次显示的信息为:“1”,“12”,
3、“123”,“1234。如果用户在输入任意几个数字后较长时间内,例如5 s,没有按任何键,则计时器恢复到正常的计时显示状态。主要参考资料:1 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005.2 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006.3 阎石主编.数字电子技术基础. 北京:高教出版社,2003.完成期限 2013.3.8 指导教师 专业负责人 2013年 3月4日一、设计思想1.基本原理数字闹钟电路的基本结构由两个60进制计数器和一个24进制计数器组成,分别对秒、分、小时进行计时,当计时到23时59分59秒时,再来一个计数脉冲,则计数器清零,重新开
4、始计时。秒计数器的计数时钟CLK为1Hz的标准信号。当数字闹钟处于计时状态时,秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号时、分、秒的计时结果通过6个数码管来动态显示。数字闹钟除了能够正常计时外,还应能够对时间进行调整。因此,通过模式选择信号md1、md2控制数字钟的工作状态,即控制数字钟,使其分别工作于正常计时,调整分、时和设定闹钟分、时5个状态。当数字闹钟处于计时状态时,3个计数器允许计数,且秒、分、时计数器的计数时钟信号分别为CLK,秒的进位, 分的进位;当数字闹钟处于调整时间状态时,被调的分或时会一秒一秒地增加;当数字钟处于闹钟定时
5、状态时,可以设定小时和分;当计时到所设定的时刻时,speak将会被赋予时钟信号,持续1分钟。设定按键时钟1Hz按键UPDN功能切换寄存器时钟10Hz时钟计数寄存器闹钟设定寄存器闹钟控制电路模式切换数据选择蜂鸣器扫描技术字符译码扫描时钟320Hz数码显示2.设计框图2、 设计步骤和调试过程YESALARM_BUTTON LEDW2.0TIME_BUTTON SEG77.0CLK SOUND_ALARMRESETCLOCK1、总体设计电路计时器的外部端口根据该数字闹钟的设计要求,我们可得到其外部端口如图所示。各个输入/输出端口的作用如下:(1)CLK为外部时钟信号,RESET为复位信号。(2)当Y
6、ES为高电平时(YES=1),表示用户选择了某个预置数字。(3)当ALARM_BUTTON为高电平时,表示用户按下ALARM键。(4)当TIME_BUTTON为高电平时,表示用户按下TIME键。(5)SEG7是数据动态扫描显示的公共八段数码显示管驱动端,而LEDW则是数码管的位选择端,它经过外接的38译码器译码后接数码管的公共端COM。(6)SOUND_ALARM用于控制扬声器发声,当SOUND_ALARM = 1时,扬声器发出蜂鸣,表示到了设定的闹钟时间。2、模块设计和相应模块程序1) 秒计数模块SECOND60进制,带有进位和清零功能的,输入为1Hz脉冲和低电平有效的清零信号CLR,输出秒
7、个位、时位及进位信号CO。2) 分计数模块MINUTE60进制,带有进位和置数功能的,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位及进位信号CO。3) 时计数模块HOUR24进制,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位。4) 扫描模块SELTIME输入为秒(含个十位)、分、时、扫描时钟CLK1K,输出为D和显示控制信号SEL。5) 整点报时功能模块ALERT输入为分秒信号,输出为高频声控Q1K和Q500。6) 译码显示功能模块DISPLAY输入为D,输出为Q秒模块程序:library ieee;use ieee.std_logic_1164.all;use
8、 ieee.std_logic_unsigned.all;entity SECOND isport(clk,clr:in std_logic;sec1,sec0:out std_logic_vector(3 downto 0);co:out std_logic);end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);Beginif clr=1 thencnt1:=0000;cnt0:=0000;elsif clkevent and
9、clk=1 thenif cnt1=0101 and cnt0=1000 thenco=1;cnt0:=1001;elsif cnt01001 thencnt0:=cnt0+1;elsecnt0:=0000;if cnt10101 thencnt1:=cnt1+1;elsecnt1:=0000;co=0;end if;end if;end if;sec1=cnt1;sec0=cnt0;end process;end SEC;分模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity
10、MINUTE isport(clk,en:in std_logic;min1,min0:out std_logic_vector(3 downto 0);co:out std_logic);end MINUTE;architecture MIN of MINUTE isbeginprocess(clk,en)variable cnt1,cnt0:std_logic_vector(3 downto 0);beginif clkevent and clk=1 thenif en=1 thenif cnt1=0101 and cnt0=1000 thenco=1;cnt0:=1001;elsif c
11、nt01001 thencnt0:=cnt0+1;elsecnt0:=0000;if cnt10101 thencnt1:=cnt1+1;elsecnt1:=0000;co=0;end if;end if;end if;end if;min1=cnt1;min0=1001 thencnt1:=cnt1+1;cnt0:=0000;else cnt0:=cnt0+1;end if;end if;end if;h1=cnt1;h0=cnt0;end process;end hour_arc;扫描模块程序:library ieee;use ieee.std_logic_1164.all;use iee
12、e.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity SELTIME isport(clk:in std_logic;sec1,sec0,min1,min0,h1,h0:in std_logic_vector(3 downto 0);daout:out std_logic_vector(3 downto 0);sel:out std_logic_vector(2 downto 0);end SELTIME;architecture fun of SELTIME issignal count:std_logic_vector(2 downto 0);beginsel=101) thencount=000;elsecountdaout