设计一个能显示时、分、秒的简易数字钟Word格式.docx
- 文档编号:12998566
- 上传时间:2022-10-02
- 格式:DOCX
- 页数:9
- 大小:39.83KB
设计一个能显示时、分、秒的简易数字钟Word格式.docx
《设计一个能显示时、分、秒的简易数字钟Word格式.docx》由会员分享,可在线阅读,更多相关《设计一个能显示时、分、秒的简易数字钟Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
秒模块是一个以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=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 一个 显示 简易 数字