《自动电子钟.doc》由会员分享,可在线阅读,更多相关《自动电子钟.doc(12页珍藏版)》请在金锄头文库上搜索。
1、题目要求1.用24小时制进行时间显示;2.能够显示小时、分钟;3.每秒钟要有秒闪烁指示;4.上电后从“00:00”开始显示。设计题目自动电子钟设计过程(包括:设计方案上机设计与仿真结果硬件实验方案,及实验结果收获和体会)程序由1s信号进程、60s计数进程、60min计数进程、24小时计数进程以及显示控制进程组成。先有clk时钟信号产生1s信号,60计数进程通过1s时钟信号实现60秒计数。60min计数进程由1s时钟触发在60s计数进程控制下计数,24小时计数器由1s时钟触发在60s、60min计数进程控制下计数。最后通过显示部分输出。在时、分、秒进程中clr=0时输出为0,因此,在正常计数时,
2、clr=1。系统仿真等见后。评定成绩指导教师评语课程设计等级目录1 课程设计题目内容与要求41.1 设计内容41.2 具体要求42系统设计42.1 设计思路2.2 系统原理(包含:框图等阐述)与设计说明内容3 系统实现6 注:此部分阐述具体实现,包含主要逻辑单元模块源代码等内容4 系统仿真105硬件验证(操作)说明116 总结127参考书目121. 课程设计题目内容与要求1.1设计内容利用各种计数器构成十进制、六十进制、十二进制等。设计一个具有显示功能的自动电子钟,具有24小时计数能用低位的进位输出构成高位的计数脉冲。并能有数字显示。1.2具体要求1.用24小时制进行时间显示;2.能够显示小时
3、、分钟;3.每秒钟要有秒闪烁指示;4.上电后从“00:00”开始显示。2系统设计 2.1 设计思路 通过设计要求,可以分三步来实现:(1)时钟产生部分这部分是实验板上的石英晶体(32768Hz)分频后的8 Hz标准信号,作为一秒信号的输入信号。(2)设定计数部分这部分包含两个六十进制计数器和一个二十四进制计数,主要用来实现时分秒和产生6位时间信号,当clr=1时进入时分秒计数状态。当clr=0时,输出信号为零。(3)显示部分显示部分包括一个多路选择器led、row,一个六进制计数器、一个段译码器和一个位译码器。主要是将设定计数部分产生的6位时间信息送给LED显示出来。Scanclk是六进制计数
4、器的计数脉冲,在该计数脉冲的驱动下,六进制计数器的6个状态000B101B按顺序循环变化,其输出为q20。该q20经译码电路7段译码后产生选通6位数码管之一的scanclk信号。与此同时,q20还作为数据选择电路led、row的选择信号,选择对应位的数据。由于六进制计数器循环计数。2.2 系统原理(包含:框图等阐述)与设计说明内容 P1进程1s信号发生器P2进程秒计数器P3进程分钟计数器P4进程小时计数器P6进程多路选择器7段译码器P5进程LED数码管位选择信号进程P1将8Hz标准信号分频后,产生1s脉冲信号clk1.进程P2描述60s计数器,输出秒十位和个位的BCD码。进程P3描述60min
5、计数器,根据秒计数器的输出值,输出分钟十位和个位的BCD码。进程P4描述12h计数器,根据秒计数器和分钟计数器的输出值,输出小时十位和个位的BCD码。进程P5和进程P6根据进程产生LED数码管的位选择信号,从小时、分钟和秒中,选择一个BCD码给7段译码器。3 .系统实现程序由1s信号进程、60s计数进程、60min计数进程、24小时计数进程以及显示控制进程组成。先有clk时钟信号产生1s信号,60计数进程通过1s时钟信号实现60秒计数。60min计数进程由1s时钟触发在60s计数进程控制下计数,24小时计数器由1s时钟触发在60s、60min计数进程控制下计数。最后通过显示部分输出。在时、分、
6、秒进程中clr=0时输出为0,因此,在正常计数时,clr=1。源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity watch isport(clk,scanclk,clr,m_add,h_add:in std_logic; row:out std_logic_vector(1 downto 0); led:out std_logic_vector(7 downto 0);end watch;architecture a o
7、f watch issignal clk_div:std_logic_vector(2 downto 0);signal clk1:std_logic;signal h1,h0,m1,m0,s1,s0:std_logic_vector(3 downto 0);signal dispcnt:std_logic_vector(1 downto 0);signal num:std_logic_vector(3 downto 0);beginp1:process(clk) -1s信号发生器 begin if(clkevent and clk=1) then clk_div=clk_div+1; end
8、 if; clk1=clk_div(2);end process p1;p2:process(clk1,clr) -60s计数器 begin if(clr=0)thens0=0000;s1=0000; elsif(clk1event and clk1=1)thenif s0=1001then s0=0000;elses0=s0+1; end if; if(s1=0101)and(s0=1001)then s1=0000;elsif s0=1001thens1=s1+1; end if; end if;end process p2;p3:process (clk1,clr,s1,s0,m_add
9、) -60min计数器 begin if clr=0thenm0=0000;m1=0000;elsif(clk1event and clk1=1)thenif(s1=0101)and(s0=1001)or(m_add=0)thenif(m0=1001)thenm0=0000;elsem0=m0+1;end if;if(m1=0101)and(m0=1001)thenm1=0000;elsif m0=1001thenm1=m1+1;end if;end if;end if;end process p3;p4:process(clk1,clr,m1,m0,s1,s0,h_add) -24小时计数器
10、beginif clr=0thenh0=0000;h1=0000;elsif(clk1event and clk1=1)thenif(s1=0101)and(s0=1001)and(m1=0101)and(m0=1001)or(h_add=0)thenif(h1=0010)and(h0=0100)or(h0=1001)thenh0=0000;elseh0=ho+1;end if;if(h1=0010)and(h0=0100)thenh1=0000;elsif h0=1001thenh1=h1+1;end if;end if;end if;end process p4;p5:process(sc
11、anclk) -动态扫描时钟beginif(scanclkevent and scanclk=1)thenif dispcnt=101thendispcnt=000;elsedispcnt=dispcnt+1;end if;end if;end process p5;p6:process(dispcnt) -选择对应的BCD码beginif dispcnt=00thenrow=00;num=h1;elsif dispcnt=01thenrow=01;num=h0;elsif dispcnt=10thenrow=10;num=m1;elsif dispcnt=11thenrow=11;num=m0; end if;end process p6;with num select -7段显示译码器led“simulator,启动仿真操作;结束后观察仿真波形。1.) 秒进程仿真结果2.)秒、分钟计数仿真结果3)秒、分钟、小时计数仿真结果4.)基本电子钟仿真结果5硬件验证(操作)说明clk ledclrh_vddm_vddScanclk row硬件芯片选择FLEX10K中的EPF10K10LC84-3clk信号为石英晶体(32768Hz)分频后的8 Hz标准信号,作为一秒信号的输入信号