设计一个能显示时、分、秒的简易数字钟Word格式.docx

上传人:b****9 文档编号:12998566 上传时间:2022-10-02 格式:DOCX 页数:9 大小:39.83KB
下载 相关 举报
设计一个能显示时、分、秒的简易数字钟Word格式.docx_第1页
第1页 / 共9页
设计一个能显示时、分、秒的简易数字钟Word格式.docx_第2页
第2页 / 共9页
设计一个能显示时、分、秒的简易数字钟Word格式.docx_第3页
第3页 / 共9页
设计一个能显示时、分、秒的简易数字钟Word格式.docx_第4页
第4页 / 共9页
设计一个能显示时、分、秒的简易数字钟Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

设计一个能显示时、分、秒的简易数字钟Word格式.docx

《设计一个能显示时、分、秒的简易数字钟Word格式.docx》由会员分享,可在线阅读,更多相关《设计一个能显示时、分、秒的简易数字钟Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

设计一个能显示时、分、秒的简易数字钟Word格式.docx

秒模块是一个以1HZ的clock信号控制的60进制计数器,并同时产生分进位信号tun。

always@(posedgeclock)begin

if(sec==59) \\当秒等于59时,如果处于计时模式时产生

begin \\一个进位脉冲tun,否则tun信号暂停

sec<

=0;

if(at==0)tun<

=1;

elsetun<

=tun;

end

else \\若秒不等于59,同样如果处于计时模式

begin \\就使tun信号清0,否则tun信号暂停

=sec+1;

if(at==0)

tun<

else

end

分模块也是一个60进制计数器,并产生小时的进位信号mod,但要受到两个控制信号的控制一个是进位信号tun,另一个是t_min的按建信号。

当at=0时,赋值 mt=tun

当at=1时,赋值 mt=(!

tun&

t_min)|(tun&

!

t_min)always@(posedgemt)

begin

if(min==59) \\当min=59时,如果处于计时模式,

begin \\则产生一进位信号mod,否则mod暂停

min<

if(at==0)mod<

mod<

=mod;

else \\当分不等于59,同样,

begin \\如果处于计时模式,则mod清0,否则mod暂停

=min+1;

elsemod<

时模块和分模块相似,是一个24进制计数器,受mod和t_hou信号控制,同理当at=0时,nt=mod

当at=1时,nt=(!

mod&

t_hou)|(mod&

t_hou)

always@(posedgent)begin

if(hou==23)

hou<

=hou+1;

这样就实现了计时模式时控制信号为进位信号,至此已实现时钟的功能,而显示时间的译码管是4位二进制数,须要两个译码管分别显示十位和个位,所以要求出秒、分、时的个位和十位,用以下程序就可实现。

always@(sec)begin

sec1<

=sec%10;

sec2<

=sec/10;

endalways@(min)

min1<

=min%10;

min2<

=min/10;

endalways@(hou)

hou1<

=hou%10;

hou2<

=hou/10;

实验总结:

实验总体来说还是很顺利的,但在调试模拟过程中还是遇到了一些问题,在分频过程中出现了一些问题,虽然七段码正常显示了,但是时间间隔不准确,通过与老师交流,找到了问题所在。

经过重新分频,时间间隔准确,实现了时钟的计时和显示的功能。

结论与心得:

经过几天的设计与思考,最终实现了数字钟的模拟。

期间遇到了许多问题,但最后都一一得到解决。

现将心得体会总结如下:

1,设计初期要考虑周到,否则后期改进很困难。

应该在初期就多思考几个方案,进行比较认证,选择最合适的方案动手设计。

总体设计在整个设计过程中非常重要,应该花较多的时间在上面。

2,方案确定后,才开始设计。

设计时,多使用已学的方法,要整体考虑,不可看一步,做一步。

在整体设计都正确后,再寻求简化的方法。

3,模块之间关系清楚,既利于自己修改,也利于与别人交流,如果程序杂乱无章连自己都看不懂,那还如何改进和扩展。

4,很多难点的突破都来自于与同学的交流,交流使自己获得更多的信息,开拓了思路,因此要重视与别人的交流。

5,应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用了许多理论课上学的内容,本次设计把理论应用到了实践中、同时通过设计,也加深了自己对理论知识的理解和掌握。

程序:

moduleclock9(t_min,t_hou,change,sec1,sec2,min1,min2,hou1,hou2,at,clk20M);

input t_min,t_hou,change,clk20M;

output reg[3:

0]sec1,sec2,min1,min2,hou1,hou2;

outputat;

wiret_min,t_hou;

reg[5:

0] sec,min,hou;

reg tun,mod,at;

integernum;

regclock;

wiremt,nt;

reg[3:

0]secL,secG,minL,minG,houL,houG;

initial

at=0;

tun=0;

mod=0;

min=0;

hou=0;

sec=0;

sec1=0;

sec2=0;

min1=0;

min2=0;

hou1=0;

hou2=0;

always@(posedgeclk20M)begin

if(num>

=9999999)num=0;

elsenum=num+1;

if(num==9999999)clock=1;

elseclock=0;

if(sec==59)begin

//秒为60进制计数器

if(at==0)

//如果处于计时模式,每60秒产生

else //一个分进位信号,否则tun信号暂停

elsebegin

if(at==0)tun<

endend

assignmt=(at==0)?

(!

at&

tun):

t_min);

always@(posedgemt)

if(min==59) //分钟为60进制计数器

beginmin<

//如果处于计时模式,每60分产生一个

else //时进位信号,否则mod信号暂停

else

assignnt=(at==0)?

mod):

t_hou);

always@(posedgent)

if(hou==23) //小时为24进制计数器

secL[3:

0]=sec%10;

secG[3:

0]=sec/10;

minL[3:

0]=min%10;

minG[3:

0]=min/10;

houL[3:

0]=hou%10;

houG[3:

0]=hou/10;

always@(secL)case(secL)

4'

b0000:

sec1=4'

b0000;

b0001:

b0001;

b0010:

b0010;

b0011:

b0011;

b0100:

b0100;

b0101:

b0101;

b0110:

b0110;

b0111:

b0111;

b1000:

b1000;

b1001:

b1001;

endcasealways@(secG)

case(secG)

sec2=4'

endcasealways@(minL)

case(minL)

min1=4'

endcasealways@(minG)

case(minG)

min2=4'

endcase

always@(houL)case(houL)

hou1=4'

always@(houG)case(houG)

hou2=4'

hou2=

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

当前位置:首页 > 经管营销 > 经济市场

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

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