电子时钟设计.doc

上传人:仙人指路1688 文档编号:3989248 上传时间:2023-03-30 格式:DOC 页数:22 大小:286KB
返回 下载 相关 举报
电子时钟设计.doc_第1页
第1页 / 共22页
电子时钟设计.doc_第2页
第2页 / 共22页
电子时钟设计.doc_第3页
第3页 / 共22页
电子时钟设计.doc_第4页
第4页 / 共22页
电子时钟设计.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《电子时钟设计.doc》由会员分享,可在线阅读,更多相关《电子时钟设计.doc(22页珍藏版)》请在三一办公上搜索。

1、电子时钟设计基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以通过按键来设置时间。扩展功能要求:秒表功能,闹钟功能,调整数码管的亮度。试验箱设置:1、 选择模式7(见附图1);2、 数码管8左边的跳线选择CLOSE(数码管连接关系看课本406页图F-8);整体原理图:管脚分配图:本设计的原理图:报告具体内容:一 设计目的设计一个电子时钟,可以显示时、分、秒,用户可以设置时间。扩展功能为秒表功能,闹钟功能,调整数码管的亮度。二 设计内容1. 整体功能分模块设置调表,跑表,闹钟,speaker,秒表,走表模块设置,最后用一个三选一选择器对各模块进行选择,最后输入到扫描模块中进行输出。

2、调表模块:1.通过键1键4对分秒时进行位选择和位加,将调表的输出分别接到跑表和模式选择中,接到跑表中是设置完时间后可以继续计时输出,接到模式选择中,可以通过模式2输出调表设置的时间。闹钟设置:同设置模块,键1键4是对位选跟位加,而闹钟一定要接到speaker中,与输入到speaker中的跑表对比,当走表走到设置的时间时,speaker会发出响声。speaker:将speaker的输出接到板子上的speaker中,当一定要接一个clk输出,speaker才能发出震动输出响声。跑表模块:用键1 来给跑表覆初值,通过输入1HZ的时钟来加数,正常走表的输出要接在模式选择上,通过模式1来进行选择输出走表

3、功能。秒表功能:语言跟走表相似,但开始是,要先对秒表用信号覆初值为0,通过键1来清零,秒表的输出要接在模式选择上,通过模式3对秒表进行输出。模式选择:模式选择的实现是通过一个三选一选择器对各功能进行选择,将输出接到位扫描器上,通过位选和段选来输出。扫描输出:通过对左侧的段选输入对数码管的各段进行显示,通过对右侧各位进行选通来达到位选择输出的目的,用10000HZ的频率来刷频就不会看到输出时输出的转换,亮度调节是对通过改变选通位选信号的不同占空比来达到调节亮度的目的,键5 是用作不同的占空比输出,在调节占空比时是对输入信号低位和高位进行占空比调节,具体见程序代码中。三 电子钟的整体VHDL 语言

4、描述分频器的vhdl语言library ieee;use ieee.std_logic_1164.all; -分频use ieee.std_logic_unsigned.all;entity fenpin isport( clk:in std_logic; clkend_100:out std_logic; clkend_10000:out std_logic; clkend_1:out std_logic); end;architecture behv of fenpin issignal clk1_tmp:std_logic;signal clk100_tmp:std_logic;sign

5、al clk10000_tmp:std_logic;signal cnt5000000:integer range 0 to 5000000;signal cnt50000:integer range 0 to 50000;signal cnt5000:integer range 0 to 500;beginHZ1: process(clk) begin -输出1HZ频率,作为跑表时钟 if clkevent and clk=1 then if cnt50000004999999 then cnt5000000=cnt5000000+1; else cnt5000000=0; clk1_tmp

6、=NOT clk1_tmp ; end if; end if;end process;HZ100: process(clk) begin if clkevent and clk=1 then -输出100HZ频率,作为秒表时钟输入 if cnt5000049999 then cnt50000=cnt50000+1; else cnt50000=0; clk100_tmp=NOT clk100_tmp ; end if; end if;end process;HZ1000: process(clk) -输出1000HZ频率,作为扫描输出时钟 begin if clkevent and clk=1

7、 then if cnt5000499 then Cnt5000=cnt5000+1; else Cnt5000=0; clk10000_tmp=NOT clk10000_tmp ; end if; end if;end process; clkend_1=clk1_tmp; clkend_100=clk100_tmp; clkend_10000Speakerlibrary ieee; -闹钟对时输出响声use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speaker isport ( clk_100: in

8、std_logic; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;-跑表输入与闹钟设置时间输入来对比输出响声 shishi,shige,fenshi,fenge,miaoshi,miaoge:in integer range 0 to 9; speaker_1 : out std_logic); end entity;architecture bhv of speaker isbeginprocess(clk_100,shishi,shige,fenshi,fenge,miaoshi,miaoge

9、,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2) begin if shishi2=shishi and shige2=shige and fenshi2=fenshi and fenge2=fenge and miaoshi2=miaoshi and miaoge2=miaoge then -校对时间,时间相同时输出响声 speaker_1= clk_100; else speaker_1 5 then set= 0; else set if miaoge1 =9 then miaoge1=0; else miaoge1 if miaoshi1

10、 =5 then miaoshi1=0; else miaoshi1 if fenge1 =9 then fenge1=0; else fenge1 if fenshi1 =5 then fenshi1=0; else fenshi1 if shige1 =9 then shige1=0; else shige1 if shishi1 =2 then shishi1=0; else shishi1 null ; end case;end if; end process; miaoge=miaoge1; miaoshi=miaoshi1; fenge=fenge1; fenshi=fenshi1

11、; shige=shige1; shishi 5 then set= 0; else set if miaoge1 =9 then miaoge1=0; else miaoge1 if miaoshi1 =5 then miaoshi1=0; else miaoshi1 if fenge1 =9 then fenge1=0; else fenge1 if fenshi1 =5 then fenshi1=0; else fenshi1 if shige1 =9 then shige1=0; else shige1 if shishi1 =2 then shishi1=0; else shishi

12、1 null ; end case;end if; end process; miaoge=miaoge1; miaoshi=miaoshi1; fenge=fenge1; fenshi=fenshi1; shige=shige1; shishi=shishi1;end bhv;走表的vhdl语言library ieee; -跑表use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk:in std_logic; jian1:in std_logic; shishi1,shige1

13、,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,fen,miao:integer range 0 to 100;beginprocess(clk,jian1,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)

14、begin if jian1=1 thenshi=shishi1*10+shige1; -将表的初始时间赋到信号中fen=fenshi1*10+fenge1;miao=miaoshi1*10+miaoge1;elsif clkevent and clk=1 then if miao=59 then miao=0; -对通过加法器来对分时秒依次相加 fen59 then fen=0; shi23 then shi=0; else miao=miao+1; end if; else null; end if;end process;miaoge2=miao rem 10; -用rem和除号对个位和

15、十位进行取余和取模miaoshi2=miao/10;fenge2=fen rem 10;fenshi2=fen/10;shige2=shi rem 10;shishi2=shi/10;end; 秒表的vhdl语言library ieee; -秒表use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao is -键1作为复位端输入port(clk_100:in std_logic; -秒表要用100HZ频率 jian1:in std_logic; haomiaoshi2,haomiaoge2,fensh

16、i2,fenge2,miaoshi2, miaoge2:out integer range 0 to 9);end entity;architecture bhv of miaobiao issignal haomiaoshi1,haomiaoge1,fenshi1,fenge1, miaoshi1,miaoge1 :integer range 0 to 9 ;signal haomiao,fen,miao:integer range 0 to 100;beginhaomiaoshi1=0;haomiaoge1 =0; -给秒表赋初值为0fenshi1=0;fenshi1=0;miaoshi1

17、=0;miaoge1=0; process(clk_100,jian1,haomiaoshi1,haomiaoge1,fenshi1,fenge1,miaoshi1,miaoge1) beginif clk_100event and clk_100=1 then if jian1=1 then -同跑表功能 haomiao=haomiaoshi1*10+haomiaoge1; fen=fenshi1*10+fenge1; miao=miaoshi1*10+miaoge1; elsif haomiao=99 then haomiao=0; miao59 then miao=0; fen59 th

18、en fen=0; else haomiao= haomiao+1; end if; end if; end process;haomiaoge2=haomiao rem 10;haomiaoshi2=haomiao/10;miaoge2=miao rem 10;miaoshi2=miao/10;fenge2=fen rem 10;fenshi23 then moshi_1 = 0; else moshi_1 a0=pshishi1;a1=pshige1;a3=pfenshi1;a4=pfenge1; a6=pmiaoshi1;a7 a0=sshishi2;a1=sshige2;a3=sfen

19、shi2;a4=sfenge2; a6=smiaoshi2;a7 a0=fenshi;a1=fenge;a3=miaoshi;a4=miaoge; a6=haomiaoshi;a7null; end case; end process; end bhv; 扫描输出加亮度显示vhdl语言library ieee; -扫描显示use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity saomiao is port( clk_1000:in std_logic; jian5:in std_logic; a0,a1,a3,a4

20、,a6,a7:in integer range 0 to 9; dx:out std_logic_vector(6 downto 0); -位控制位输出 wx:out std_logic_vector(7 downto 0); -段控制位输出end entity;architecture bhv of saomiao is signal cnt32 :std_logic_vector(4 downto 0); signal a :integer range 0 to 15; signal cnt3:integer range 0 to 3; signal cnt4:integer range

21、0 to 3; signal count: std_logic;beginb1: process(cnt32,a0,a1,a3,a4,a6,a7) begin case cnt32(4 downto 2) is - 段选输出,count为不同占空比输入 when 000 = wx= 0000000&(count);a wx= 000000&(count)&0;a wx= 00000&(count)&00;a wx= 0000&(count)&000;a wx= 000&(count)&0000;a wx= 00&(count)&00000;a wx= 0&(count)&000000;a wx

22、= (count)&0000000;a null; end case; end process ;b2:process(clk_10000) -加法器来控制段选输出 begin if clk_10000event and clk_10000 =1 then cnt32 dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx dx null; end case; end process ;b4:process (jian5) - 键5 作为信号端对不同亮度进行选择输出 begin if jian5event and jian5=1 then if cnt3 3

23、then cnt3= 0; else cnt3=cnt3+1;end if; end if;end process; b5:process (clk_10000) begin if clk_10000event and clk_10000=1 then if cnt4 =3 then cnt4= 0; else cnt4 if cnt4=0 then count= 1; -占空比1:0=1:3 else count if cnt42 then -占空比1:0=2:2 count=1; else count if cnt43 then -占空比1:0=3:1 count=1; else count if cnt44 then -占空比1:0=4:0 count=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号