电子时钟设计(6)_第1页
电子时钟设计(6)_第2页
电子时钟设计(6)_第3页
电子时钟设计(6)_第4页
电子时钟设计(6)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、电子时钟设计基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以通过按键来设置时间。扩展功能要求:秒表功能,闹钟功能,调整数码管的亮度。试验箱设置:1、 选择模式7(见附图1);2、 数码管8左边的跳线选择close(数码管连接关系看课本406页图f-8);整体原理图:管脚分配图:本设计的原理图:报告具体内容:1 设计目的设计一个电子时钟,可以显示时、分、秒,用户可以设置时间。扩展功能为秒表功能,闹钟功能,调整数码管的亮度。2 设计内容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待添加的隐藏文字内容3 count=1; else count if cnt44 then -占空比1:0=4:0 count=1; else count jian1,jian4=jian4, shishi=shishinsp,shige=shigensp, fenshi=fenshinsp, -闹钟例化,闹钟输出接

温馨提示

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

评论

0/150

提交评论