版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《基于区块链的碳智能管理平台技术要求》征求意见稿
- 第十一章 第三节 随机事件的概率与古典概型
- 初++中数学完全平方公式+课件+人教版数学八年级上册+
- 2024年购销水泥合同范本
- 部编版历史八年级上册第3课《太平天国运动》课前导学
- 投资收购的协议书2024年
- 建设工程外架劳务分包合同2024年
- 2024年全新借款协议书范本
- 2024年期货代客理财协议书
- 居民住宅房屋租赁合同2024年
- 玉米深加工建设项目可行性研究报告-2024年内蒙古重点项目
- 2024-2030年中国工业地产行业市场深度调研及发展趋势与投资战略研究报告
- 围墙涂料施工方案
- 2024年秋季北师大版七年级上册数学全册大单元整体设计教学课件(新教材)
- 2024年青海省中考英语试卷真题(含答案解析)
- 2024年国铁融资租赁限公司第一批公开招聘(9名)(高频重点提升专题训练)共500题附带答案详解
- 越出站界调车的有关规定课件讲解
- 2024年第九届中小学“学宪法、讲宪法”活动竞赛测试考试题库
- (高清版)TDT 1090-2023 国土空间历史文化遗产保护规划编制指南
- 2024(茅台酒)白酒酿造工职业技能认定-制曲制酒考试题附答案ab卷
- 《背影》评课稿
评论
0/150
提交评论