仿广播电台整点报时数字钟设计.doc_第1页
仿广播电台整点报时数字钟设计.doc_第2页
仿广播电台整点报时数字钟设计.doc_第3页
仿广播电台整点报时数字钟设计.doc_第4页
仿广播电台整点报时数字钟设计.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

赣南师院物理与电子信息学院课程设计报告书姓名: 甘松华 班级:电子科学与技术06级 学号: 060803037 时间:2008年12月 设计题目仿广播电台整点报时数字钟设计设计要求设计一数字钟,实现以下功能:1具有时、分、秒计数显示功能,以24小时循环计时;2具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间,并能对计时清零;3具有仿广播电台整点报时的功能,整点报时的同时LED灯花样显示。设计过程一、 系统方案选择和论证1、数字钟系统方案选择和论证本设计的总体组成框图如图1所示:数字钟电路系统由主体电路和拓展电路两大部分组成。其中,主体电路完成数字钟的基本功能,拓展电路完成电路的拓展功能。该系统的工作原理是:震荡器产生的稳定高频脉冲信号,完成数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数进位,小时计数器按“12翻1”规律计数。计数器的输出经译码器送显示器。计时出现误差时可以用校时电路进行校时、校分、校秒。拓展电路必须在主体电路正常运行的情况下才能进行功能拓展。采用译码器接到分计数器和秒计数器相应的输出端,使计数器运行到差十秒整点报时,利用分频器输出的500HZ和1000HZ的信号加到音响电路中,用于模仿电台报时:每当数字钟计时快要正点时发出声响,按照4低音一高音的顺序发出间断声响,以最后一声高音的时刻为正点时刻。LED灯也依次轮流显示。在EDA实验室可以直接通过实验箱上的频率脉冲给该电路图添加所需要的频率,而不需要我们自己设计。下面通过硬件中数字钟所需要的频率来设计电路。实验中需要的是1HZ的脉冲,通过该脉冲使数字钟达到秒信号所需要的频率振荡器分频器校时电路时计数器分计数器秒计数器LED灯花样显示扫描选位信号译码驱动电路时钟显示整点报时图1多功能数字钟系统组成框图1.1振荡器设计方案振荡器是数字钟的核心。振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,一般来说,振荡器的频率越高,计时精度越高方案一:采用由石英晶体与逻辑门及RC组成的多谐振荡电路,以产生符合要求的振荡脉冲。方案二:采用由555集成电路与RC组成多谐振荡器,以产生符合要求的振荡脉冲。方案一采用石英晶体振荡器产生的脉冲频率稳定度高且精度很高,适宜于作为要求高精度的时钟基准脉冲,作为振荡器电路。方案二产生的脉冲频率稳定度相对不高,但在要求不是很高的情况,可以采用方案二。考虑到经济方面的原因,石英晶体震荡不宜采用,所以本实验采用方案二。原理图如图2图2 振荡器原理图这里选用由555构成多谐振荡器,振荡频率为fo=1KHZ由f=;假定C1=0.1uf,得到R1=2K;R2=5.1K;为了能使得到的频率更精确,再加一个阻值为10K的可调电阻。1.2分频器的设计方案分频器的主要功能有两个:一是产生标准秒脉冲信号,二是提供扩展电路所需信号,仿广播电台报时用的1KHz的高音频信号和500Hz的低音频信号等。选用3片中规模集成电路,计数器74LS90可以完成上述功能。因每片为1/10分频,3片级联则可获得所需要的频率信号,即第一片的Q0输出频率为500Hz,第二片的Q3端输出为10Hz,第三片的Q3端输出为1Hz。74LS90是二五十进制计数器,它有两个时钟输入端CP0和CP1。其中CP0和Q0组成一位二进制计数器,CP1和Q3 Q2 Q1组成五进制计数器。若将Q0和CP1相连接,时钟脉冲从CP0输入,则构成十进制计数器,74LS90有两个清零端Ro(1),Ro(2)和两个置9端R9(1),R9(2),它的功能表和管脚示意图如表1所示。Ro(1)Ro(2)R9(1)R9(2)Q3Q2Q1Q0110*000011*00000*111001*0*0计数0*0*0*0*00*表1 74LS90功能表原理图如图3所示,仿真波形如图4所示 图3分频器原理图图4分频器仿真图1.3校时电路的设计方案当数字钟接通电源或者计时出现误差时,需要校正时间。校时是数字钟应具备的基本功能。这里只进行分和小时校时。对校时电路的要求是,在小时校正时不影响分和秒的正常计数;在分校正时不影响秒和小时的正常计数。通过门电路实现对进位和校时信号的选择,用RS触发器做开关,可以通过控制RS触发器开关来选择是正常计时模式或是校时模式。校时电路是由门电路构成的组合逻辑电路,可以完全使校时电路能稳定地工作。图4所示校“时”、校“分”电路。其中S1为校“时”用的控制开关,S2为校“分”用的控制开,他们的控制功能表如表2.3.1所示。校时脉冲采用采用分频器输出的1Hz脉冲。校时电路原理图如图5所示,仿真图如图6所示。S1R1S2R2功能00计数010校分100校时表2图5校时电路原理图图6校时电路仿真图1.4时分秒计数器的设计方案由于考虑到采用各种计数器集成块组成时序逻辑电路,虽然原理简单,但连线繁多,占用芯片非常多的I/O口,电路稳定性较差,而采用VHDL语言构建的模块稳定性好,而且连线少,节省了芯片的I/O口,因此采用VHDL语言构建模块的方法。1.4.1小时计数模块VHDL源程序(HOUR)LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY hour ISPORT(clk,reset: INSTD_LOGIC;daout: out std_logic_vector (5 downto 0);END entity hour;ARCHITECTURE fun OF hour ISSIGNAL count: STD_LOGIC_VECTOR( 5 downto 0);BEGIN daout = count; process ( clk,reset) begin if (reset=0) then count = 000000; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#24#) then count=count + 7; else count=000000; end if; elsif(count 16#24#) then count = count + 1; else count=000000; end if; end if; end process;END fun;小时计数原理图如图7所示,仿真图如图8所示图7小时计数器原理图图8小时计数器仿真图1.4.2分计数模块VHDL源程序(MINUTE)LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY minute ISPORT(clk, clk1,reset,sethour : INSTD_LOGIC;enhour : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity minute;ARCHITECTURE fun OF minute ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk,reset,sethour) begin if (reset=0) then count = 0000000; elsif (sethour=0) then enhour = clk1; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=1011001) then enhour=1; count=0000000; ELSE count=count+7; end if; else count=0000000; end if; elsif(count 16#60#) then count = count + 1; enhour=0 after 100 ns; else count=0000000; end if; end if; end process;END fun;分计数原理图如图9所示,仿真图如图10所示图9分计数器原理图图10分计数器仿真图1.4.3秒计数模块VHDL源程序(SECOND)LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk, reset,setmin : INSTD_LOGIC;enmin : OUTSTD_LOGIC;daout: out std_logic_vector (6 downto 0);END entity second;ARCHITECTURE fun OF second ISSIGNAL count: STD_LOGIC_VECTOR( 6 downto 0);BEGIN daout = count; process ( clk , reset , setmin) begin - enmin=k; if (reset=0) then count = 0000000; elsif (setmin=0) then enmin = clk; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=1011001) then enmin=1; count=0000000; ELSE count=count+7; end if; else count=0000000; end if; elsif (count 16#60#) then count = count+1; enmin=0 after 100 ns; else count=0000000; end if; end if; end process;END fun;秒计数原理图如图11所示,仿真图如图12所示图11秒计数器原理图图12秒计器数仿真图1.5扫描显示模块的设计方案在这里我们采用动态扫描显示方法。通过信号选通器选通计数器的某一位经译码器到相应的那个数码管显示出来,其他各位不显示,在下一选通脉冲到来时选择下一位到数码管显示,如此循环。当这个选通脉冲频率足够大时人眼就感觉不出六个数码管的交替亮灭,从而实现六位数的显示。我们选用的七段译码驱动器(74LS48)和数码管(LED)是共阴极接法(需要输出高电平有效的译码器驱动)。译码显示电路如图13所示。 图13译码显示电路时间设置模块VHDL源程序(SELTIME)LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;ENTITY seltime ISPORT(clk1, reset: INSTD_LOGIC;sec,min : INSTD_LOGIC_VECTOR(6 downto 0);hour : in std_logic_vector (5 downto 0);daout: OUTSTD_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);BEGIN sel = count; process ( clk1,reset) begin if (reset =0) then count = 101) then count = 000; else count daout daout(3) = 0; daout(2 downto 0) daout daout(3) = 0; daout(2 downto 0) daout daout(3 downto 2) = 00; daout(1 downto 0) a,b,c,d,e,f,g; H0 = 1,1,1,1,1,1,0; H1 = 0,1,1,0,0,0,0; H2 = 1,1,0,1,1,0,1; H3 = 1,1,1,1,0,0,1; H4 = 0,1,1,0,0,1,1; H5 = 1,0,1,1,0,1,1; H6 = 1,0,1,1,1,1,1; H7 = 1,1,1,0,0,0,0; H8 = 1,1,1,1,1,1,1; H9 = 1,1,1,1,0,1,1; HA = 1,1,1,0,1,1,1; HB = 0,0,1,1,1,1,1; HC = 1,0,0,1,1,1,0; HD = 0,1,1,1,1,0,1; HE = 1,0,0,1,1,1,1; HF = 1,0,0,0,1,1,1; END TABLE;END;译码驱动电路原理图如图16,仿真图如图17图16译码驱动电路原理图图17译码驱动电路仿真图1.7整点报时及LED花样显示模块的设计方案整点报时及LED花样显示模块VHDL源程序(ALERT)LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY alert ISPORT(clk : INSTD_LOGIC;dain : INSTD_LOGIC_VECTOR(6 DOWNTO 0);speak: OUTSTD_LOGIC;lamp : OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END alert ;ARCHITECTURE fun OF alert ISsignal count : std_logic_vector( 1 downto 0);signal count1: std_logic_vector( 1 downto 0);BEGINspeaker:process (clk)begin speak =10) then count1=00;elsecount1 = count1 + 1;end if; end if;end if;end process speaker;lamper:process(clk)beginif (rising_edge(clk)then if (count = 10) thenif (count =00) thenlamp = 001 ;elsif (count = 01) thenlamp = 010 ;elsif(count=10) then lamp = 100 ;end if;count = count + 1;else count = 00;end if; end if; end process lamper;END fun ;整点报时及LED灯花样显示模块原理图如图18,仿真图如图19所示。 图18整点报时及LED灯花样显示电路原理图图19整点报时及LED灯花样显示电路仿真图1.8总原理图各模块设计确定后,得数字钟总原理图如图20图20数字钟总原理图数字钟总原理仿真图如图21图21数字钟总原理仿真图二、系统安装与调试2.1输入与输出端接口(1)SETMIN,SETHOUR、RESET分别接按键开关;(2)A、B、C、D、E、F、G分别与数码管的a,b,c,d,e,f,g输入端相连;(3)LAMP0,LAMP1,LAMP2分别和LED相接;(4)时钟信号CLK接1HZ,扫描信号CLKDSP接32HZ以上频率信号(含32HZ);(5)扫描片地址信号SEL0,SEL1,SEL2分别和字符点阵显示模块的四位扫描驱动地址SEL0SEL3的低三位相连,最高位地址接“0”,也可以悬空;(6)接口SPEAKER同实验箱的SPEAKER相接;2.2性能测试与分析电路编译完成后下载到Altera公司的EPM7128SLC84-15芯片中.数码显示管显示正常,说明扫描显示模块正确。数码管显示数字从000000开始,秒、分、时显示正确,在输入为1Hz的时钟脉冲下经与标准表对照,秒计时的周期为1秒钟。为了在短时间内测试秒、分、时进位是否正确,加大输入脉冲频率。显示管显示秒、分、时进位正确。数字从000000一直进位到235959后回到0000000,在每小时的59分的51、53、55、57、秒蜂鸣器鸣低音,59秒鸣高音,同时LED灯循环显示,完全符合设计要求中的“仿广播电台整点报时”这一要求。按动SETMIN,SETHOUR分别实现对分和时的调整,手动校时功能正确,两者不相影响。按下RESET键,时间回归到000000,说明计时清零功能正常。2.3结论心得与体会起初设计的时候是考虑用硬件实现,但是真正等到电路设计好准备焊接的时候就发现,这个电路过于复杂,光芯片就多达20多快,还有6个数码管,考虑到大量芯片集成于一块电路板,电路内部易产生干扰;电路过于复杂,在焊接的过程中难免会产生虚焊等焊接错误,所以最终决定软件实现。由于课时还没有学到这种语言,对于初步接触并用设计电路有很大的困难。为了设计的需要,学习了VHDL语言,参考了很多资料,经过对VHDL语言的学习后,有了一定的知识就开始对电路进行设计。毕竟都是自学自用刚开始还是感到很难,经过一段时间的磨合后就越来越熟悉了,在设计中遇到的问题也更容易解决了。经过认真的编写与调式最终在仿真软件上成功运行仿真。本次课程设计中主要用到的是24进制和60进制。计数器需要我们能充分掌握同步和异步之间的区别,以及置数和清零的区别。对它们有了透彻的了解才能够正确地实现所需要的进制。通过这次数字钟的设计,让我深深感受到了数字电路的重要性和实用性,也加深了对数字钟内部电路的认识,大大提高了逻辑思维能力,在逻辑电路的分析与设计上有了很大的进步。同时也让我充分的了解的扫描显示电路的用法,及具体的实

温馨提示

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

评论

0/150

提交评论