设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx

上传人:b****5 文档编号:6303618 上传时间:2023-01-05 格式:DOCX 页数:22 大小:38.75KB
下载 相关 举报
设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx_第1页
第1页 / 共22页
设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx_第2页
第2页 / 共22页
设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx_第3页
第3页 / 共22页
设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx_第4页
第4页 / 共22页
设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx

《设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx》由会员分享,可在线阅读,更多相关《设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx(22页珍藏版)》请在冰豆网上搜索。

设计一个电子时钟要求可以显示时分秒用户可以设置时间.docx

设计一个电子时钟要求可以显示时分秒用户可以设置时间

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、libraryieee;--通过10M分出所需频率

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityfenpinis

port(

clk_10M:

instd_logic;

clk_10000:

outstd_logic;

clk_100:

outstd_logic;

clk_1:

outstd_logic

);

endentity;

architecturesub1offenpinis

signalQ_1:

std_logic_vector(8downto0);

signalQ_2:

std_logic_vector(6downto0);

signalQ_3:

std_logic_vector(6downto0);

signalclk10000:

std_logic;

signalclk100:

std_logic;

signalclk1:

std_logic;

begin

process(clk_10M)

begin

ifclk_10M'eventandclk_10M='1'then

ifQ_1=500then

Q_1<="000000000";

clk10000<=notclk10000;

ifQ_2=100then

Q_2<="0000000";

clk100<=notclk100;

ifQ_3=100then

Q_3<="0000000";

clk1<=notclk1;

elseQ_3<=Q_3+1;

endif;

elseQ_2<=Q_2+1;

endif;

elseQ_1<=Q_1+1;

endif;

endif;

endprocess;

clk_10000<=clk10000;

clk_100<=clk100;

clk_1<=clk1;

endsub1;

 

2、libraryieee;--扫描数码管

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityxianshiis

port(clk_10000:

instd_logic;

jian4:

instd_logic;

moshi:

inintegerrange0to4;

a0,a1,a3,a4,a6,a7:

inintegerrange0to9;

sg11:

outstd_logic_vector(6downto0);

bt11:

outstd_logic_vector(7downto0));

end;

architectureoneofxianshiis

signalcnt8:

std_logic_vector(2downto0);

signala:

integerrange0to15;

signallight:

std_logic;

signalflash:

integerrange0to2;

signalcount1,count2:

integerrange0to10;

begin

p1:

process(cnt8,light,a0,a1,a3,a4,a6,a7)

begin

casecnt8is

when"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;

whenothers=>null;

endcase;

endprocessp1;

p2:

process(clk_10000)

begin

ifclk_10000'eventandclk_10000='1'thencnt8<=cnt8+1;

endif;

endprocessp2;

p3:

process(a)

begin

caseais

when0=>sg11<="0111111";

when1=>sg11<="0000110";

when2=>sg11<="1011011";

when3=>sg11<="1001111";

when4=>sg11<="1100110";

when5=>sg11<="1101101";

when6=>sg11<="1111101";

when7=>sg11<="0000111";

when8=>sg11<="1111111";

when9=>sg11<="1101111";

when10=>sg11<="1110111";

when11=>sg11<="1111100";

when12=>sg11<="0111001";

when13=>sg11<="1011110";

when14=>sg11<="1111001";

when15=>sg11<="1000000";

whenothers=>null;

endcase;

endprocessp3;

process(jian4,moshi)

begin

ifmoshi=4then

ifjian4'eventandjian4='1'then

ifflash=2then

flash<=0;

elseflash<=flash+1;

endif;

endif;

endif;

endprocess;

process(clk_10000,flash)

begin

ifclk_10000'eventandclk_10000='1'then

caseflashis

when0=>light<='1';

when1=>ifcount1=2then

count1<=0;light<='1';

elsecount1<=count1+1;light<='0';

endif;

when2=>ifcount2=4then

count2<=0;light<='1';

elsecount2<=count2+1;light<='0';

endif;

endcase;

endif;

endprocess;

end;

3、libraryieee;--跑表开始暂停

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitypaobiaois

port(clk_1:

instd_logic;

jian8:

instd_logic;

shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:

inintegerrange0to9;

shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:

outintegerrange0to9);

endentity;

architecturebhvofpaobiaois

signalshi:

integerrange0to100;

signalfen:

integerrange0to100;

signalmiao:

integerrange0to100;

begin

process(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)

begin

ifjian8='1'then

shi<=shishi1*10+shige1;

fen<=fenshi1*10+fenge1;

miao<=miaoshi1*10+miaoge1;

elsifclk_1'eventandclk_1='1'then

ifmiao=59then

miao<=0;

fen<=fen+1;

elsiffen>59then

fen<=0;

shi<=shi+1;

elsifshi>23then

shi<=0;

elsemiao<=miao+1;

endif;

endif;

endprocess;

miaoge2<=miaorem10;

miaoshi2<=miao/10;

fenge2<=fenrem10;

fenshi2<=fen/10;

shige2<=shirem10;

shishi2<=shi/10;

end;

 

4、libraryieee;--设置当前时间

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitysettimeis

port(moshi:

inintegerrange0to4;

jian4,jian5:

instd_logic;

shishi,shige,fenshi,fenge,miaoshi,miaoge:

outintegerrange0to9);

endentity;

architecturebavofsettimeis

signala:

integerrange0to5;

signalshishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:

integerrange0to9;

begin

process(moshi,jian4)

begin

ifmoshi=1then

ifjian4'eventandjian4='1'then

ifa<5then

a<=a+1;

elsea<=0;

endif;

endif;

endif;

endprocess;

process(moshi,a,jian5)

begin

ifmoshi=1then

ifa=0then

ifjian5'eventandjian5='1'then

ifmiaoge1=9then

miaoge1<=0;

elsemiaoge1<=miaoge1+1;

endif;

endif;

endif;

ifa=1then

ifjian5'eventandjian5='1'then

ifmiaoshi1=5then

miaoshi1<=0;

elsemiaoshi1<=miaoshi1+1;

endif;

endif;

endif;

ifa=2then

ifjian5'eventandjian5='1'then

iffenge1=9then

fenge1<=0;

elsefenge1<=fenge1+1;

endif;

endif;

endif;

ifa=3then

ifjian5'eventandjian5='1'then

iffenshi1=5then

fenshi1<=0;

elsefenshi1<=fenshi1+1;

endif;

endif;

endif;

ifa=4then

ifjian5'eventandjian5='1'then

ifshige1=9then

shige1<=0;

elseshige1<=shige1+1;

endif;

endif;

endif;

ifa=5then

ifjian5'eventandjian5='1'then

ifshishi1=2then

shishi1<=0;

elseshishi1<=shishi1+1;

endif;

endif;

endif;

endif;

endprocess;

miaoge<=miaoge1;

miaoshi<=miaoshi1;

fenge<=fenge1;

fenshi<=fenshi1;

shige<=shige1;

shishi<=shishi1;

end;

5、libraryieee;--秒表功能

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitymiaobiaois

port(clk_100:

instd_logic;

moshi:

inintegerrange0to4;

jian5,jian4:

instd_logic;

fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:

outintegerrange0to9);

endentity;

architecturebhvofmiaobiaois

signalfen,miao,xmiao:

integerrange0to99;

signalstart:

std_logic:

='0';

signalreset:

std_logic:

='0';

begin

process(clk_100,jian5,jian4,moshi,reset,start)

begin

ifmoshi=2then

ifreset='1'then

fen<=0;

miao<=0;

xmiao<=0;

elsifstart='1'then

elsifclk_100'eventandclk_100='1'then

ifxmiao=99then

xmiao<=0;

miao<=miao+1;

elsifmiao>59then

miao<=0;

fen<=fen+1;

elsiffen>23then

fen<=0;

elsexmiao<=xmiao+1;

endif;

endif;

endif;

endprocess;

process(jian4,start)

begin

ifjian4'eventandjian4='1'then

start<=notstart;

elsestart<=start;

endif;

endprocess;

process(jian5,reset)

begin

ifjian5'eventandjian5='1'then

reset<=notreset;

elsereset<=reset;

endif;

endprocess;

xmiaoge<=xmiaorem10;

xmiaoshi<=xmiao/10;

miaoge<=miaorem10;

miaoshi<=miao/10;

fenge<=fenrem10;

fenshi<=fen/10;

end;

 

6、libraryieee;--设置闹钟时间

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitynaozhongsetis

port(moshi:

inintegerrange0to4;

jian4,jian5:

instd_logic;

shishi,shige,fenshi,fenge,miaoshi,miaoge:

outintegerrange0to9);

endentity;

architecturebavofnaozhongsetis

signala:

integerrange0to5;

signalfenshi1,fenge1,miaoge1:

integerrange0to9;

signalshishi1:

integerrange0to9:

=1;

signalshige1:

integerrange0to9:

=2;

signalmiaoshi1:

integerrange0to9:

=0;

begin

process(moshi,jian4)

begin

ifmoshi=3then

ifjian4'eventandjian4='1'then

ifa<5then

a<=a+1;

elsea<=0;

endif;

endif;

endif;

endprocess;

process(moshi,a,jian5)

begin

ifmoshi=3then

ifa=0then

ifjian5'eventandjian5='1'then

ifmiaoge1=9then

miaoge1<=0;

elsemiaoge1<=miaoge1+1;

endif;

endif;

endif;

ifa=1then

ifjian5'eventandjian5='1'then

ifmiaoshi1=5then

miaoshi1<=0;

elsemiaoshi1<=miaoshi1+1;

endif;

endif;

endif;

ifa=2then

ifjian5'eventandjian5='1'then

iffenge1=9then

fenge1<=0;

elsefenge1<=fenge1+1;

endif;

endif;

endif;

ifa=3then

ifjian5'eventandjian5='1'then

iffenshi1=5then

fenshi1<=0;

elsefenshi1<=fenshi1+1;

endif;

endif;

endif;

ifa=4then

ifjian5'eventandjian5='1'then

ifshige1=9then

shige1<=0;

elseshige1<=shige1+1;

endif;

endif;

endif;

ifa=5then

ifjian5'eventandjian5='1'then

ifshishi1=2then

shishi1<=0;

elseshishi1<=shishi1+1;

endif;

endif;

endif;

endif;

endprocess;

miaoge<=miaoge1;

miaoshi<=miaoshi1;

fenge<=fenge1;

fenshi<=fenshi1;

shige<=shige1;

shishi<=shishi1;

end;

 

7、libraryieee;--闹钟喇叭输出

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitynaozhongspeakeris

port(clk_100:

instd_logic;

shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:

inintegerrange0to9;

shishi2,shige2,fenshi2,fenge2,miaoshi2

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1