多功能数字钟——时分秒
设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。
扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。
二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。
4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。
多功能电子时钟说明书

实现的功能如下:
1、显示时间;
2、调节时间;
3、设置闹钟时间;
4、整点报时(可开可关可随时停止);
扩展功能:
5、简易计算器(可算加减法)计算、秒表(可精确到百分之一秒和十分之一秒,可切换);
7、倒计时(可设置倒计时时间,减到0后蜂鸣器响);
电子时钟的操作方法,如下图:
下面,具体介绍各功能使用方法:
1、计算器功能,如下图:
2、时钟功能,如下图:
3、秒表倒计时功能,如下图:
秒表倒计时功能倒计时功能秒表功能按键1按键2退出秒表倒计时功能按键esc开始计时按键ok十分之一秒百分之一秒按键按键0暂停计时按键继续计时按键ok存储数据1存储数据2存储数据3按键1按键2按键3暂停计时按键按键按键读取数据按键读取数据1读取数据2读取数据3按键1按键2按键3清零清零清零按键按键按键按键按键按键09可以输入数据开始倒计时按键ok减到0蜂按键esc关闭蜂鸣器按键清零按键0
多功能数字钟

电子技术课程设计多功能数字钟学院:专业、班级:姓名:学号:指导老师:2008年12月目录1、设计任务与要求 (2)2、总体框图 (2)3、选择器件 (2)4、功能模块 (3)(1)时钟记数模块 (3)(2)整点报时驱动信号产生模块 (6)(3)八段共阴扫描数码管的片选驱动信号输出模块 (7)(4)驱动八段字形译码输出模块 (9)5、总体设计电路图 (10)(1)仿真图 (10)(2)电路图 (11)(3)管脚图 (11)6、设计心得体会 (12)一、设计任务与要求1、具有时、分、秒记数显示功能,以24小时循环计时。
2、要求数字钟具有清零、调节小时、分钟功能。
3、具有整点报时,整点报时的同时LED灯花样显示。
二、总体框图多功能数字钟总体框图如下图所示。
它由时钟记数模块(包括hour、minute、second 三个小模块)、驱动8位八段共阴扫描数码管的片选驱动信号输出模块(seltime)、驱动八段字形译码输出模块(deled)、整点报时驱动信号产生模块(alart)。
系统总体框图三、选择器件网络线若干/人、共阴八段数码管6个、蜂鸣器、hour(24进制记数器)、minute(60进制记数器)、second(60进制记数器)、alert(整点报时驱动信号产生模块)、seltime(驱动8位八段共阴扫描数码管的片选驱动信号输出模块)、deled(驱动八段字形译码输出模块)。
四、功能模块多功能数字钟中的时钟记数模块、驱动8位八段共阴扫描数码管的片选驱动信号输出模块、驱动八段字形译码输出模块、整点报时驱动信号产生模块。
(1) 时钟记数模块:<1.1>该模块的功能是:在时钟信号(CLK)的作用下可以生成波形;在清零信号(RESET)作用下,即可清零。
VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport(clk,reset:in std_logic;daout:out std_logic_vector(5 downto 0));end entity hour;architecture fun of hour issignal count:std_logic_vector(5 downto 0);begindaout<=count;process(clk,reset)beginif(reset='0') thencount<="000000";elsif(clk' event and clk='1') thenif(count(3 downto 0)="1001") thenif(count<16#24#) thencount<=count+7;else count<="000000";end if;elsif(count<16#23#) thencount<=count+1;else count<="000000";end if;end if;end process;end fun;<1.2>VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk,clk1,reset,sethour:in std_logic;enhour:out std_logicdaout:out std_logic_vector(6 downto 0));end entity minute;architecture fun of minute issignal count:std_logic_vector(6 downto 0); begindaout<=count;process(clk,reset,sethour)beginif(reset='0') thencount<="0000000";elsif(sethour='0') thenenhour<=clk1;elsif(clk' event and clk='1') thenif(count(3 downto 0)="1001") thenif(count<16#60#) thenif(count="1011001") thenenhour<='1';count<="0000000"; else count<=count+7;end if;elsecount<="0000000";end if;elsif(count<16#60#) thencount<=count+1;enhour<='0';elsecount<="0000000";end if;end if;<1.3>VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0)); END entity second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0); BEGINdaout<=count;process(clk,reset,setmin)beginif(reset='0') thencount<="0000000";elsif(setmin='0')thenenmin <=clk;elsif(clk'event and clk='1')thenif(count(3 downto 0)="1001")thenif(count<16#60#)thenif(count="1011001")thenenmin<='1';count<="0000000";ELSE count<=count+7;end if;elsecount<="0000000";end if;elsif(count<16#60#)thencount<=count+1;enmin<='0';elsecount<="0000000";end if;end if;end process;END fun;(2)整点报时驱动信号产生模块该模块功能:在时钟信号(CLK)的作用下可以生成波形,SPEAK输出接扬声器,以产生整点报时发声。
多功能数字钟电路设计

多功能数字钟电路设计1设计内容简介数字钟是一个简单的时序组合逻辑电路,数字钟的电路系统主要包括时间显示,脉冲产生,报时,闹钟四部分。
脉冲产生部分包括振荡器、分频器;时间显示部分包括计数器、译码器、显示器;报时和闹钟部分主要由门电路构成,用来驱动蜂鸣器。
2设计任务与要求Ⅰ以十进制数字形式显示时、分、秒的时间。
Ⅱ小时计数器的计时要求为“24翻1”,分钟和秒的时间要求为60进位。
Ⅲ能实现手动快速校时、校分;Ⅳ具有整点报时功能,报时声响为四低一高,最后一响为整点。
Ⅴ具有定制控制(定小时)的闹钟功能。
Ⅵ画出完整的电路原理图3主要集成电路器件计数器74LS162六只;74LS90三只;CD4511六只;CD4060六只;三极管74LS191一只;555定时器1只;七段式数码显示器六只,74LS00 若干;74LS03(OC) 若干;74LS20 若干;电阻若干,等4设计方案数字电子钟的原理方框图如图(1)所示。
该电路由秒信号发生器、“时,分,秒”计数器、译码器及显示器、校时电路、整点报时电路、闹钟定时等电路组成。
秒信号产生器决定了整个计时系统的精度,故用石英晶体振荡器加分频器来实现。
将秒信号送入“秒计时器”,“秒计时器”采用六十进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用六十进制计数器,每60分钟,发出一个“时脉冲”,该信号经被送到“时计数器”作为“时计数器”的时钟脉冲,而“时计数器”采用二十四进制计数器,实现“24翻1”的计数方式,可实现对一天二十四小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态通过七段式显示译码器译码,通过刘伟LED 七段显示器显示出来。
整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后触发一音频发生器实现整点报时,定时电路与此类似。
校时电路是用“时”、“分”、“秒”显示数5电路设计5.1秒信号发生器秒信号发生器是数字钟的核心部分,它的精度和稳定度决定了数字钟的质量,通常用晶体整荡器产生的脉冲经过整形、分频获得1 Hz的秒脉冲。
多功能数字钟的设计和制作

目录摘要 (1)1数字钟的结构设计及方案选择 (2)1.1振荡器的选择 (2)1.2计数单元的构成及选择 (3)1.3译码显示单元的构成选择 (3)1.4校时单元电路设计及选择 (4)2 数字钟单元电路的设计 (4)2.1振荡器电路设计 (4)2.2时间计数单元设计 (4)2.2.1集成异步计数器74LS390 (5)2.2.2 用74LS390构成秒和分计数器电路 (5)2.2.3用74LS390构成时计数器电路 (6)2.2.4 时间计数单元总电路 (7)2.3译码显示单元电路设计 (7)2.4 校时单元电路设计 (7)2.5整点报时单元电路设计 (1)3 数字钟的实现电路及其工作原理 (9)4电路的搭建与调试 (10)5结束语 (10)参考文献 (11)附录1: (12)摘要数字钟被广泛用于个人家庭及公共场所,成为人们日常生活中的必需品。
诸如定时自动报警、按时自动打铃、定时广播、自动起闭路灯、定时开关烘箱、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意。
数字电子钟,从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
数字电子钟有以下几部分组成:振荡器,分频器,60进制的秒、分计时器和12进制计时计数器,秒、分、时的译码显示部分及校正电路等。
关键词:数字钟 555多谐振荡器计数器 74LS390 74LS48数字电子时钟的设计及制作1数字钟的结构设计及方案选择数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。
主要由振荡器、分频器、计数器、译码器显示器和校时电路组成。
振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,通常使用石英晶体震荡器,然后经过分频器输出标准秒脉冲,或者由555构成的多谐振荡器来直接产生1HZ的脉冲信号。
秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“12翻1”规律计数。
多功能数字钟——校时闹钟

电子电路综合实验陈述之答禄夫天创作——多功能数字钟设计目录设计理念2设计要求3设计目的3设计要求4总体设计概要4振荡器电路4输出波形仿真图如图所示5分频器电路5时间计时单元的设计5译码与显示电路的设计6校时电路的设计6方案一:7方案二:8定时控制电路的设计8·电子系统中罕见实际问题的分析9面包板和芯片的测试9时间计数电路的连接与测试9校正电路9主要芯片介绍10主体电路的装调10时钟结果仿真12面包板的使用及注意事项12实验用到的器件13设计理念20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
数字钟已成为人们日常生活中:必不成少的必须品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场合,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采取了先进的石英技术,使数字钟具有走时准确、性能稳定、集成电路有体积小、功耗小、功能多、携带方便等优点,,因此在许多电子设备中被广泛使用。
电子钟是人们日常生活中经常使用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。
本次设计以数字电子为主,分别对1S时钟信号源、秒计时显示、分计时显示、小时计时显示、整点报时及校时电路进行设计,然后将它们组合,来完成时、分、秒的显示而且有整点报时和走时校准的功能。
并通过本次设计加深对数字电子技术的理解以及更熟练使用计数器、触发器和各种逻辑门电路的能力。
电路主要使用集成计数器、译码集成电路、LED数码管及各种门电路和基本的触发器等,电路使用5号电池共电,很适合在日常生活中使用。
设计要求本课题是设计一个多功能数字钟,以数字形式显示时,分,秒的时间,要求有手动校时分秒的基本功能,以及定时控制,仿广播电台正点报时,自动整点报时或触摸报整点时数的扩展功能。
数字电子钟--数电(带闹钟调节时间和整点报时)

物理与电子工程学院课程设计题目:数字电子钟专业电子信息工程班级12级电信三班学号********学生姓名李长炳指导教师张小英张艳完成日期:2013 年7月数字电子钟前言:数字钟是一个将“时”、“分”、“秒’’显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时闹铃等功能。
一、基本原理时显示器分显示器秒显示器时译码器分译码器秒译码器时计数器分计数器秒计数器振荡器分频器主体电路1.1 振荡电路晶体振荡器的作用是产生时间标准信号。
我采用由门电路或555定时器构成的多谐振荡器作为时间标准信号源。
本系统中的振荡电路选用555定时器构成的多谐振荡器,见图1。
多谐振荡器的振荡频率可由式估算。
图11.2 时、分、秒显示电路模块设计①秒的产生采用74LS160产生60进制的加法计数器,输出端Q0,Q1,Q2,Q3分别接到七段数码管的相应的各端,由上图的555产生的秒脉冲链接秒的两个160的cp,第一片的进位来控制第二片的EP,ET来构成秒。
如下图所示图2注意:两个CP都是连接到555的输出。
②分的产生采用74LS160产生60进制的加法计数器,输出端Q0,Q1,Q2,Q3分别接到七段数码管的相应的各端,由上图的秒产生的进位连接秒的两个160的cp,第一片的进位来控制第二片的EP,ET来构成秒。
如下图所示图3注意:两个CP都是连接的秒的进位的输出。
③小时的产生采用74LS160产生24进制的加法计数器,输出端Q0,Q1,Q2,Q3分别接到七段数码管的相应的各端,由上图的分产生的进位连接秒的两个160的cp,第一片的进位来控制第二片的EP,ET来构成秒。
如下图所示图4注意:两个CP都是连接的秒的进位的输出。
1.3闹钟我设置的闹钟是00:03响的。
会响一分钟,采用与非门和或门组成的电路。
可以得出以下的电路图当达到00:03时就开始响,当不是00:03是就停止了,喇叭一端节地。
多功能数字钟的设计说明

《电子工艺实习》课程设计题目:多功能数字钟设计院别:机电学院专业:机械电子工程姓名:学号:同组人员:指导教师:日期:2011.6.20~2011.7.1多功能数字钟的设计摘要数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,并且可以实现更多的功能,如:定时控制、整点报时、闹钟、触摸报整点时数等,在现实生活中,各种数字钟已得到了非常广泛的使用。
数字钟的设计方法有许多种,例如,可用基于NE555的中小规模集成电路组成数字钟,也还可以利用单片机来实现数字钟等。
这些方法都各有其特点,其中利用中小规模集成电路组建数字钟,原理简单,但由于集成电路集成度有限,对于需要实现较多功能的电路设计比较复杂,对于制作者焊接和布线有较高的要求。
用单片机实现的电子钟具有结构简单,并便于功能的扩展,但需要涉及到汇编以及C语言编写程序,对设计者有较高的要求。
本次设计为用中小规模集成电路组成数字钟。
关键词:数字钟;单片机;集成电路;NE555目录1. 设计要求 (1)2.电路的设计 (2)2.1主体电路的设计 (2)2.1.1秒脉冲电路的设计 (2)2.1.2时分秒计数器的设计 (3)2.1.3 译码与显示电路的设计 (5)2.1.4校时电路的设计 (8)2.1.5整点报时电路的设计 (9)2.2整体电路的设计 (11)3.电路功能测试以及常见问题解决本法 (12)3.1Proteus软件介绍 (12)3.2电路功能测试 (13)4、设计总结 (14)5.元件清单 (15)6.参考文献 (15)1. 设计要求1、设计一台能显示日、时、分秒的数字电子钟,要求用六位数码管显示时间,格式为00:00:00。
2、手动校正功能:能分别进行分、时的校正。
3、整点报时功能。
整点报时电路要求在每个整点鸣叫。
根据设计要求,可建立数字钟系统组成框图,如图2-1所示,数字中电路系统由主体电路和扩展电路两大部分组成,其中,主体电路完成数字钟的基本计数功能,扩展电路完成数字钟的整点报时扩展功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子电路综合实验设计报告——多功能数字钟的设计目录目录 (2)一.实验目的 (3)二.设计要求 (3)三.总体设计概要 (3)四.单元电路设计 (4)4.1振荡器电路 (4)4.2分频器电路 (7)4.3 时间计时单元的设计 (9)4.4译码与显示电路的设计 (13)4.5校时电路的设计 (15)4.6定时控制电路的设计 (17)4.7方案一整体电路图 (18)4.8 模块接线图及仿真结果 (18)4.8.1用EWB软件绘制的单元接线图 (18)4.8.2单元模块仿真 (21)4.8.3整体仿真 (22)五.测试结果分析 (23)六.面包板 (23)七.设计过程中出现的问题 (25)八.实验用到的器件 (25)一.实验目的(1)加深对数字电子技术的理论知识的理解,结合实践进一步加深对单元电路基本功能的掌握和应用。
(2)通过具体数字电路模型,掌握一种常用电子电路仿真的软件,使学生能利用所学理论知识完成实际电路的设计、仿真和制作。
(3)掌握数字钟的基本知识以及所用数字钟相关芯片的功能及使用方法。
(4)了解面包板结构及其接线方法。
(5)熟悉数字钟电路的设计与制作。
二.设计要求本课题是设计一个多功能数字钟,准确计时,以数字形式显示,时、分、秒的时间;小时的计时要求为“12翻1”,分和秒的计时要求为60进位。
三.总体设计概要数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。
由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。
通常使用石英晶体振荡器电路构成数字钟。
数字钟电路系统的组成方框图如下。
四.单元电路设计4.1振荡器电路芯片介绍:555定时器引脚功能:V i1(TH):高电平触发端,简称高触发端,又称阈值端,标志为TH。
V i2(TR):低电平触发端,简称低触发端,标志为TR。
V CO:控制电压端。
V O:输出端。
Dis:放电端。
Rd:复位端。
低触发:当输入电压V i2<31V CC 且V i1<32V CC 时,V TR =0,V TH =0,比较器C 2输出为低电平,C 1输出为高电平,基本RS 触发器的输入端S =0、R =1,使Q =1,Q =0,经输出反相缓冲器后,V O =1,T 截止。
这时称555定时器“低触发”; 保持:若V i2>31V CC 且V i1<32V CC ,则V TR =1,V TH =0,S =R =1,基本RS 触发器保持,V O 和T 状态不变,这时称555定时器“保持”。
高触发:若V i1>32V CC ,则V TH =1,比较器C 1输出为低电平,无论C 2输出何种电平,基本RS 触发器因R =0,使Q =1,经输出反相缓冲器后,V O =0;T 导通。
这时称555定时器“高触发”。
555定时器控制功能表555定时器内部结构Vi1(TH)Vi2Vco...(a) 555的逻辑符号(b) 555的引脚排列555定时器逻辑符设计:振荡器是数字钟的核心。
振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。
一般来说,振荡器的频率越高,计时精度越高。
电路图如图。
本课程设计采取用555定时器构成的多谐振荡器。
由555定时器和外接元件R1、R2、C1构成多谐振荡器,脚2与脚6直接相连,如图所示。
电路没有稳态,仅存在两个暂稳态,电路亦不需要外加触发信号,利用电源通过R1、R2向C 充电,以及C 通过R2向放电端 Ct 放电,使电路产生振荡。
输出信号的时间参数是: T =tw1+tw2, tw1=0.7(R1+R2)C , tw2=0.7R2C× <32V CC<32V CC >32V CC × <31V CC>31V CC×L H H HL H 不变 L导通 截止 不变 导通输出波形仿真图如图所示4.2分频器电路芯片介绍:74LS90是异步二—五—十进制加法计数器,它既可以作二进制加法计数器,又可以作五进制和十进制加法计数器。
图17-3为74LS90引脚排列,表17-1为功能表。
通过不同的连接方式,74LS90可以实现四种不同的逻辑功能;而且还可借助R0(1)、R0(2)对计数器清零,借助S9(1)、S9(2)将计数器置9。
其具体功能详述如下:(1)计数脉冲从CP1输入,QA作为输出端,为二进制计数器。
(2)计数脉冲从CP2输入,QDQCQB作为输出端,为异步五进制加法计数器。
(3)若将CP2和QA相连,计数脉冲由CP1输入,QD、QC、QB、QA作为输出端,则构成异步8421码十进制加法计数器。
(4)若将CP1与QD相连,计数脉冲由CP2输入,QA、QD、QC、QB作为输出端,则构成异步5421码十进制加法计数器。
(5)清零、置9功能。
a) 异步清零当R0(1)、R0(2)均为“1”;S9(1)、S9(2)中有“0”时,实现异步清零功能,即QDQCQBQA=0000。
b) 置9功能当S9(1)、S9(2)均为“1”;R0(1)、R0(2)中有“0”时,实现置9功能,即QDQCQBQA =1001。
74LS90引脚排列图74LS90功能表设计:分频器的功能主要有两个:一是产生标准秒脉冲信号;二是提供功能扩展电路所需要的信号,如仿电台报时用的1KHz的高音频信号和500KHz的低音频信号等。
因此,可以选用3片我们较熟悉的中规模集成电路计数器74LS90可以完成上述功能。
因每片为1/10分频,3片级联则可获得所需要的频率信号,即每1片Q0端输出频率为500Hz,每2片Q3输出为10Hz,每3片的Q3端输出1Hz。
分频器设计电路4.3 时间计时单元的设计方案一:分和秒计数器:分和秒计数器都是模数M=60的计数器,其计数规律为00—01—…—58—59—00…选74LS92作为十位计数器,74LS90作为个位计数器,再将他们级联组成模数M=60的计数器。
图1 分秒计数器逻辑电路图时计数器:时计数器是一个“12翻1”的特殊进制计数器,即当数字钟运行到12时59分59秒,秒的个位计数器再输入一个秒脉冲时,数字钟应自动显示为01时00分00秒,实现日常生活中习惯常用的计时规律。
选用74LS191和74LS74。
图2 时计数器逻辑电路图方案二:时计数器:U5、U6分别为时计时电路的十位个位计时芯片,将CKB接 Q0实现十进制计数功能,两芯片的R0(1)相接、R0(2)相接,显示12时U6芯片的Q0输出高电平接R0(1),U5芯片的Q1、Q2要实现12翻1必须输出是3也就是0110,所以将U5芯片的Q1、Q2接与门输出再接R0(2)实现对两个芯片的清零操作,但此时仅仅是12翻0.为了实现12翻1必须在翻0的时候对U5芯片产生一个下降沿脉冲信号,所以本电路采用将U5芯片的Q1、Q1接与门输出再和U6芯片的Q0相与,如图1-6所示,然后与U5芯片的进位信号相或,输出接U5的进位脉冲端,这样就可以实现在12翻0前的任何计时,第二个与门输出0,或门打开,脉冲信号正常通过或门进入U5的脉冲输入端,当要12翻0的时候,U5输出0110,U6输出0001,第二个与门输出1将或门封锁,此时两个芯片清零或门那儿产生了一个1-0的下降进位脉冲,使得U5此时变为1 ,实现了12翻1的功能。
选用两片74LS90时计数器电路图分秒计数器芯片介绍:74LS192芯片介绍:74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:图2-174LS192的引脚排列及逻辑符号CPU为加计数时钟输入端,CPD为减计数时钟输入端。
LD为预置输入控制端,异步预置。
CR为复位输入端,高电平有效,异步清除。
CO为进位输出:1001状态后负脉冲输出,BO为借位输出:0000状态后负脉冲输出。
74LS192的功能表如下表:表2-1 74LS192功能表设计:74LS192为十进制计数器,TCU为进位端,其中一个74LS192和与门构成六进制计数。
当秒十位的74LS192计数至6(0110)时,与门发出清零信号使74LS192清零。
同时另一个74LS192也完成清零,这样就完成了60进制计数。
秒和分的计数器结构完全相同。
当秒的十位在清零时也同时向分的个位发一个脉冲,使分加1。
分秒计数器电路图4.4译码与显示电路的设计图3 译码显示当要求输出0-15时,消隐输入“BI”应为高电平或开路;灭零输入“RBI”和测试灯输入“LT”都必须在无效电平状态,即应为高电平。
LED 显示器件有共阳极和共阴极两种。
选用共阴极的5011A数码管作为显示器件。
译码驱动也可选CD4511 ,BCD 码输人。
它的译码输出端为低电平有效,可直接驱动共阳极LED 数码管。
译码74LS48是BCD码到七段显示译码器,它可以直接驱动共阴极数码管。
其中,ABCD分别为输入端,OA OB OC OD OE OF OG分别为输出端接到数码显示管上的abcdefg上。
LTN称为测试数码管信号,LTN=0时,则所有的二极管都发光,称为一个“8”字,表示数码管显示正常,可以正常工作,否则不能。
BIN称为灭灯信号,当BIN=0时,则无论ABCD为何值,均不显示;RBIN称为灭零信号,当RBIN=0时,如果ABCD=0000,则显示管不显示,RBON称为灭零输出端,当ABCD=0000时,则RBON输出为0。
需要显示时,只需将74LS48的显示译码器的输出端接到数码显示管上对应的位置即可。
4.5校时电路的设计当数字钟接通电源或者计数出现误差时,需要校正时间。
校时是数字钟应具备的基本功能。
一般电子手表都具有时,分,秒等校时功能。
为了使电路简单,这里只进行分和小时的校时。
如图所示为校时电路逻辑图。
对校时电路的要求是,在小时校正时不影响分和秒的正常计数;在分校正时不影响秒和小时的正常计数。
校时方式有“快校时”和“慢校时”两种,“快校时”是通过开关控制,使计数器对1Hz的校时脉冲计数。
“慢校时”是用手动产生单脉冲作为校时脉冲。
图示电路为校“时”,校“分”电路。
其中S1为校“分”用的控制开关,S2为校“时”用的控制开关,他们的控制功能如图表示。
校时脉冲采用分频器输出的1Hz脉冲,当S1或S2分别为“0”时可以进行快校时。
如果校时脉冲由单次脉冲产生器提供,则可以进行慢校时。
需要注意的是,校时电路是由与非们构成的组合逻辑电路,开S1或S2为“1”或“0”时,可能会产生抖动,接电容C1,C2可缓解抖动。
所以实际使用时,一般会接一个RS触发器,将其改为去抖动开关电路。
4.6定时控制电路的设计数字钟在指定的时刻发出信号,或驱动音响电路“闹时”(这里用可用指示灯来代替音响电路);或对某装置的电源进行接通或断开“控制”。