数字时钟课程设计报告.docx

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

数字时钟课程设计报告.docx

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

数字时钟课程设计报告.docx

数字时钟课程设计报告

郑州航空工业管理学院

EDA技术及应用课程设计说明书

 

2013届电子信息工程专业1313084班级

 

题目数字时钟设计

学号131308424

姓名

指导教师

 

二О一五年6月26日

一、数字时钟原理

一个完整地时钟应由三部分组成:

秒脉冲发生电路、计数显示部分和时钟调整部分.

1.1秒脉冲发生电路原理:

一个时钟地准确与否主要取决于秒脉冲地精确度.为了保证计时准确我们对系统时钟48MHz进行了48000000分频,从而得到1Hz地秒脉冲.

1.2计数显示部分原理:

显示部分是用数码管LED实现地,这里使用地是共阳极地数码管如图所示8个数码管,其中左边两个数码管用来显示时地个位和十位、中间地显示分地个位和十位、最右边两个显示分地个位和十位.

1.3时钟调整部分原理:

校时电路里定义key[0]、key[1]和k3、k4用于控制时钟地计时开始、清零和调整功能中地时地加1、分地加1处理,从而完成对现在地时间调整.本实验电路校时电路在此完成了暂停、清零、时调整和分调整.

 

二、数字时钟硬件设计

芯片图

程序地调试工作都是在电脑上完成地,通过程序地输入、原理图地建立、管脚分配、编译、仿真、再下载到芯片进行运行.

R26、R27、R2、R29、R30、R31、R3、R33、限流电阻,电路中采用共阳极连接地七段数码管,通过程序地控制扫描驱动来显示时钟地时-分-秒.

程序中地按键设定为K1暂停、K2清零、K3调时、K4调分.

元件清单:

元件

参数

个数

电阻(R1-R10)

10k

10

电阻(R11)

50Ω

1

电阻(R12-R25)

1K

14

电阻(R26-R33)

200Ω

8

独石电容(C1-C7)

104

6

电解电容(C7)

10uF/50V

1

按键(S1-S7)

弹式

4

三极管(Q1-Q8)

S9013

9

晶振

X0-105BHC

1

芯片

EPM7064AEL144

1

三、数字时钟地Verilog实现:

管脚地分配:

程序:

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

inputclk,k3,k4,;//输入时钟

input[1:

0]key;//输入按键

output[7:

0]dig;//数码管选择输出引脚

output[7:

0]seg;//数码管段输出引脚

reg[7:

0]seg_r;//定义数码管输出寄存器

reg[7:

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])

begin

dout1<=key;

dout2<=dout1;

dout3<=dout2;

end

always@(negedgekey_done[0])

begin

keyen=~keyen;//将琴键开关转换为乒乓开关

end

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

always@(posedgeclk)//count[17:

15]大约1ms改变一次

begin

case(count[17:

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

3'd0:

disp_dat=hour[3:

0];//秒个位

3'd1:

disp_dat=hour[7:

4];//秒十位

3'd2:

disp_dat=4'ha;//显示"-"

3'd3:

disp_dat=hour[11:

8];//分个位

3'd4:

disp_dat=hour[15:

12];//分十位

3'd5:

disp_dat=4'ha;//显示"-"

3'd6:

disp_dat=hour[19:

16];//时个位

3'd7:

disp_dat=hour[23:

20];//时十位

endcase

case(count[17:

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

3'd0:

dig_r=8'b11111110;//选择第一个数码管显示

3'd1:

dig_r=8'b11111101;//选择第二个数码管显示

3'd2:

dig_r=8'b11111011;//选择第三个数码管显示

3'd3:

dig_r=8'b11110111;//选择第四个数码管显示

3'd4:

dig_r=8'b11101111;//选择第五个数码管显示

3'd5:

dig_r=8'b11011111;//选择第六个数码管显示

3'd6:

dig_r=8'b10111111;//选择第七个数码管显示

3'd7:

dig_r=8'b01111111;//选择第八个数码管显示

endcase

end

always@(posedgeclk)

begin

case(disp_dat)

4'h0:

seg_r=8'hc0;//显示0

4'h1:

seg_r=8'hf9;//显示1

4'h2:

seg_r=8'ha4;//显示2

4'h3:

seg_r=8'hb0;//显示3

4'h4:

seg_r=8'h99;//显示4

4'h5:

seg_r=8'h92;//显示5

4'h6:

seg_r=8'h82;//显示6

4'h7:

seg_r=8'hf8;//显示7

4'h8:

seg_r=8'h80;//显示8

4'h9:

seg_r=8'h90;//显示9

4'ha:

seg_r=8'hbf;//显示-

default:

seg_r=8'hff;//不显示

endcase

if((count[17:

15]==3'd2)&sec)

seg_r=8'hff;

end

//计时处理部分

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

begin

if(!

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

begin

hour=24'h0;//是,则清零

end

elseif(keyen)//是暂停吗

begin

if(!

k3)

begin

if(hour[23:

16]==8'd35)

begin

hour[19:

16]=0;

hour[23:

20]=0;

end

else

begin

if(hour[19:

16]==9)

begin

hour[19:

16]<=0;

hour[23:

20]<=hour[23:

20]+1;

end

else

hour[19:

16]<=hour[19:

16]+1;

end

end

elseif(!

k4)

begin

if(hour[11:

8]==9)

begin

hour[11:

8]<=0;

if(hour[15:

12]==5)

hour[15:

12]<=0;

else

hour[15:

12]<=hour[15:

12]+1;

end

else

hour[11:

8]=hour[11:

8]+1;

end

end

else

begin

hour[3:

0]=hour[3:

0]+1'b1;//秒加1

if(hour[3:

0]==4'ha)

begin

hour[3:

0]=4'h0;

hour[7:

4]=hour[7:

4]+1'b1;//秒地十位加一

if(hour[7:

4]==4'h6)

begin

hour[7:

4]=4'h0;

hour[11:

8]=hour[11:

8]+1'b1;//分个位加一

if(hour[11:

8]==4'ha)

begin

hour[11:

8]=4'h0;

hour[15:

12]=hour[15:

12]+1'b1;//分十位加一

if(hour[15:

12]==4'h6)

begin

hour[15:

12]=4'h0;

hour[19:

16]=hour[19:

16]+1'b1;//时个位加一

if(hour[19:

16]==4'ha)

begin

hour[19:

16]=4'h0;

hour[23:

20]=hour[23:

20]+1'b1;//时十位加一

end

if(hour[23:

16]==8'h24)

hour[23:

16]=8'h0;

end

end

end

end

end

end

endmodule

三、课程设计总结

在完成了本次课程设计后感想与收获颇多,我了解地数字时钟地基本原理,并添加了一些简单地校时功能,在原有地程序基础上进行了一些修改,使程功能更加完善.从本次课程设计中获得了很多,增强了动手实验能力,对quartus2这个工具软件也有了更深地了解.总之,在本次设计中积累了经验,学习了新地知识.

 

 

成绩指导教师签名

指导教师评

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

当前位置:首页 > 工程科技 > 城乡园林规划

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

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