数字时钟课程设计报告Word文档格式.docx

上传人:b****5 文档编号:17973105 上传时间:2022-12-12 格式:DOCX 页数:10 大小:96.69KB
下载 相关 举报
数字时钟课程设计报告Word文档格式.docx_第1页
第1页 / 共10页
数字时钟课程设计报告Word文档格式.docx_第2页
第2页 / 共10页
数字时钟课程设计报告Word文档格式.docx_第3页
第3页 / 共10页
数字时钟课程设计报告Word文档格式.docx_第4页
第4页 / 共10页
数字时钟课程设计报告Word文档格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数字时钟课程设计报告Word文档格式.docx

《数字时钟课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字时钟课程设计报告Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。

数字时钟课程设计报告Word文档格式.docx

10

电阻(R11)

50Ω

1

电阻(R12-R25)

1K

14

电阻(R26-R33)

200Ω

8

独石电容(C1-C7)

104

6

电解电容(C7)

10uF/50V

按键(S1-S7)

弹式

4

三极管(Q1-Q8)

S9013

9

晶振

X0-105BHC

芯片

EPM7064AEL144

三、数字时钟的Verilog实现:

管脚的分配:

程序:

moduleclock(clk,key,k3,k4,dig,seg)//模块名clock

inputclk,k3,k4,;

//输入时钟

input[1:

0]key;

//输入按键

output[7:

0]dig;

//数码管选择输出引脚

0]seg;

//数码管段输出引脚

reg[7:

0]seg_r;

//定义数码管输出寄存器

0]dig_r;

//定义数码管选择输出寄存器

reg[3:

0]disp_dat;

//定义显示数据寄存器

reg[24:

0]count;

//定义计数寄存器

reg[23:

0]hour;

//定义现在时刻寄存器

regsec,keyen;

//定义标志位

reg[1:

0]dout1,dout2,dout3;

//寄存器

wire[1:

0]key_done;

//按键消抖输出

assigndig=dig_r;

//输出数码管选择

assignseg=seg_r;

//输出数码管译码结果

//秒信号产生部分

always@(posedgeclk)//定义clock上升沿触发

begin

count=count+1'

b1;

if(count==25'

d24000000)//0.5S到了吗?

begin

count=25'

d0;

//计数器清零

sec=~sec;

//置位秒标志

end

end

//按键消抖处理部分

assignkey_done=(dout1|dout2|dout3);

//按键消抖输出

always@(posedgecount[17])

dout1<

=key;

dout2<

=dout1;

dout3<

=dout2;

always@(negedgekey_done[0])

keyen=~keyen;

//将琴键开关转换为乒乓开关

//数码管动态扫描显示部分

always@(posedgeclk)//count[17:

15]大约1ms改变一次

case(count[17:

15])//选择扫描显示数据

3'

d0:

disp_dat=hour[3:

0];

//秒个位

d1:

disp_dat=hour[7:

4];

//秒十位

d2:

disp_dat=4'

ha;

//显示"

-"

d3:

disp_dat=hour[11:

8];

//分个位

d4:

disp_dat=hour[15:

12];

//分十位

d5:

d6:

disp_dat=hour[19:

16];

//时个位

d7:

disp_dat=hour[23:

20];

//时十位

endcase

15])//选择数码管显示位

dig_r=8'

b11111110;

//选择第一个数码管显示

b11111101;

//选择第二个数码管显示

b11111011;

//选择第三个数码管显示

b11110111;

//选择第四个数码管显示

b11101111;

//选择第五个数码管显示

b11011111;

//选择第六个数码管显示

b10111111;

//选择第七个数码管显示

b01111111;

//选择第八个数码管显示

endcase

always@(posedgeclk)

case(disp_dat)

4'

h0:

seg_r=8'

hc0;

//显示0

h1:

hf9;

//显示1

h2:

ha4;

//显示2

h3:

hb0;

//显示3

h4:

h99;

//显示4

h5:

h92;

//显示5

h6:

h82;

//显示6

h7:

hf8;

//显示7

h8:

h80;

//显示8

h9:

h90;

//显示9

ha:

hbf;

//显示-

default:

hff;

//不显示

if((count[17:

15]==3'

d2)&

sec)

seg_r=8'

//计时处理部分

always@(negedgesecornegedgekey_done[1])//计时处理

if(!

key_done[1])//是清零键吗?

hour=24'

h0;

//是,则清零

elseif(keyen)//是暂停吗

k3)

if(hour[23:

16]==8'

d35)

hour[19:

16]=0;

hour[23:

20]=0;

else

if(hour[19:

16]==9)

16]<

=0;

20]<

=hour[23:

20]+1;

else

=hour[19:

16]+1;

elseif(!

k4)

if(hour[11:

8]==9)

hour[11:

8]<

if(hour[15:

12]==5)

hour[15:

12]<

=hour[15:

12]+1;

8]=hour[11:

8]+1;

hour[3:

0]=hour[3:

0]+1'

//秒加1

if(hour[3:

0]==4'

ha)

begin

hour[3:

0]=4'

hour[7:

4]=hour[7:

4]+1'

//秒的十位加一

if(hour[7:

4]==4'

h6)

begin

hour[7:

4]=4'

hour[11:

8]=hour[11:

8]+1'

//分个位加一

if(hour[11:

8]==4'

begin

hour[11:

8]=4'

hour[15:

12]=hour[15:

12]+1'

//分十位加一

if(hour[15:

12]==4'

begin

hour[15:

12]=4'

hour[19:

16]=hour[19:

16]+1'

//时个位加一

if(hour[19:

16]==4'

begin

hour[19:

16]=4'

hour[23:

20]=hour[23:

20]+1'

//时十位加一

end

if(hour[23:

16]==8'

h24)

16]=8'

end

end

end

end

endmodule

三、课程设计总结

在完成了本次课程设计后感想与收获颇多,我了解的数字时钟的基本原理,并添加了一些简单的校时功能,在原有的程序基础上进行了一些修改,使程功能更加完善。

从本次课程设计中获得了很多,增强了动手实验能力,对quartus2这个工具软件也有了更深的了解。

总之,在本次设计中积累了经验,学习了新的知识。

成绩指导教师签名

指导教师评

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

当前位置:首页 > 初中教育 > 英语

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

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