自动电子钟课程设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C接线PIN191
D接线PIN195
E接线PIN192
F接线PIN190
G接线PIN187
case(a)
3'b000:begin SS<=3'b000;e<=hour[7:4];end
3'b001:begin SS<=3'b001;e<=hour[3:0];end
3'b010:begin SS<=3'b010;e<=min[7:4];end
3'b011:begin SS<=3'b011;e<=min[3:0];end
begin
sec1<=0;
min1<=0;
hour1<=0;
end
else //turn为低电平
if(xuanze) //xuanze为高电平,开始计时(功能2)
begin
sec1[3:0]<=sec1[3:0]+1;//对秒计数
if(sec1[3:0]>9)
begin
sec1[3:0]<=0;
sec1[7:4]<=sec1[7:4]+1;
shumaguan11u2(.CLK1000(CLK1000),.Q(Q[6:0]),.SS(SS[2:0]),.sec(x3),.min(x2),.hour(x1));
endmodule
2.功能模块程序设计:
module jshefm(clk1hz,turn,turn1,xuanze,sec1,min1,hour1,sound);
3、译码显示模块仿真
注:因输入数据过多,所以仅选择部分数据进行仿真
第四章管脚锁定及硬件连线
1、管脚锁定如下:
Clk1hz锁定PIN75CLK1000锁定PIN83
Q0锁定PIN196 Q1锁定PIN193
Q2锁定PIN191 Q3锁定PIN195
Q4锁定PIN192 Q5锁定PIN190
Q6锁定PIN187 SS0锁定PIN86
if(min1==0&&sec1<3)
sound=1;
else
sound=0;
end
endmodule
3.译码显示模块程序设计
module shumaguan11(CLK1000,Q,SS,sec,min,hour);
input CLK1000;//CLK1000代表高频率
input[7:0]sec,min,hour;
Shumaguan11为译码显示模块。在CLK1000高频的时钟信号下,六个数码管依次选中且高频循环。小时、分、秒的高位和低位分别被赋给6个数码管,然后分别显示时间。
顶层模块将以上两个模块组合起来,功能模块的输出作为译码显示模块的输入,以达到设计要求。
3.真值表
(1)功能模块
十进制计数器
Clk
Sec1/min1/hour1[3:0]
用2MHZ的高频率来进行动态数码管扫描。由于数码管具有余辉特性和人眼有视觉暂留现象,给人眼的视觉印象就会是连续稳定地显示。因此只要每位数码管显示间隔足够短(即循环频率足够高),数码管就会稳定地显示。本设计使用6个数码管,高频循环选中,相当于显示某一时刻的时间。
2.模块介绍
本设计使用3个模块,一个功能模块,一个译码显示模块,一个顶层模块。
if(sec1[7:4]>5)
begin
sec1[7:4]<=0;/
min1[3:0]<=min1[3:0]+1;//对分计数
if(min1[3:0]>9)
begin
min1[3:0]<=0;
min1[7:4]<=min1[7:4]+1;
if(min1[7:4]>5)
begin
min1[7:4]<=0;
output[6:0]Q;
output[2:0]SS;
reg[2:0]a;
reg[6:0]Q;
reg[2:0]SS;
reg[3:0]e;
always@(posedge CLK1000)
begin
if(a==5)
a<=0;
else
a<=a+1;
end
always@(posedge CLK1000)
begin
9:Q='b1101111;//数码管显示9
endcase
end
endmodule
第三章波形仿真
1.顶层模块波形仿真
(1)置零功能
(2)计时功能
(3)校正功能
校时
较分
(4)整点报时
注:此项功能在计时、校正功能中得以验证
2.功能模块波形仿真
(1)置零
(2)计时
(3)校正
校时
校分
(4)整点报时
注:此项功能可从计时、校正功能中得以验证
2:Q='b1011011;//数码管显示2
3:Q='b1001111;//数码管显示3
4:Q='b1100110;//数码管显示4
5:Q='b1101101;//数码管显示5
6:Q='b1111101;//数码管显示6
7:Q='b0000111;//数码管显示7
8:Q='b1111111;//数码管显示8
input clk1hz,xuanze,turn,turn;
output [7:0] sec1,min1,hour1;
output sound;
reg sound;
reg[7:0] sec1,min1,hour1;
always @(posedge clk1hz)
begin
if(turn) //turn为高电平,置零(功能1)
3'b100:begin SS<=3'b100;e<=sec[7:4];end
3'b101:begin SS<=3'b101;e<=sec[3:0];end
endcase
end
always@(e)
begin
case(e)
0:Q='b0111111;//数码管显示0
1:Q='b0000110;//数码管显示1
第一章设计说明………………………………………………………..........................4
第二章程序设计………………………………………………………………………..4
第三章波形仿真………………………………………………………………………..10
第四章管脚锁定及硬件连线…………………………………………………………..15
hour1[3:0]<=hour1[3:0]+1;//对时计数
if((hour1[7:4]<2)&&(hour1[3:0]>9))
begin
hour1[3:0]<=0;
hour1[7:4]<=hour1[7:4]+1;
end
else if((hour1[7:4]==2)&&(hour1[3:0]>3))
begin
hour1<=0;
end
end
end
end
end
end
end
else //xuanze为低电平,开始校正(功能3)
begin
if(turn1) //turn1为高电平,校正分钟
begin
min1[3:0]<=min1[3:0]+1;
源自文库if(min1[3:0]>9)
begin
min1[3:0]<=0;
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
六进制计数器
Clk
Sec1/min1[7:4]
0000
0001
0010
0011
0100
0000
三进制计数器
Clk
Hour[7:4]
0000
0001
0010
0000
注:以上clk为不同的时钟信号
(2)显示译码模块
Hour1/min1/sec1[7:4]([3:0])
第二章程序设计
1.顶层模块程序设计:
module clock(sound,Q,SS,turnfw,xuanze,turnm,clk1hz,CLK1000);
input xuanze,turnfw,turnm,clk1hz,CLK1000;
output [6:0]Q;
output sound;
output[2:0]SS;
Q
0000
0111111
0001
0000110
0010
1011011
0011
1001111
0100
1100110
0101
1101101
0110
1111101
0111
0000111
1000
1111111
1001
1101111
1010
1000000
CLK1000
SS
000
001
010
011
100
101
000
SS1锁定PIN87 SS2锁定PIN88
sound锁定PIN38 turn锁定PIN39
turn1锁定PIN41 xuanze锁定PIN40
2、硬件连线如下
频率组21接PIN75,H3接PIN83
动态数码管显示模块
S0接线PIN86
S1接线PIN87
S2接线PIN88
A接线PIN196
B接线PIN193
第五章总结……………………………………………………………………………..16
第六章参考文献………………………………………………………………………...17
第一章设计说明
1.设计思路
自动电子钟显示小时、分、秒,秒满60分进1,分钟满60小时进1,小时计满24完成一个循环。其中秒、分、时低位满大于9时向高位进1,秒、分高位大于5时向前变量的低位进1,小时高位大于3时变为0。因为显示在数码管上,所以6个变量的位数应该相同。最大计数值为9,所以选择4位二进制数表示。计时功能、校正功能的变量都有小时和分钟,故用一个开关来选择功能。校正功能的校时、较分也用开关选择,清零功能,用开关实现。整点报时功能,使用蜂鸣器,输出3秒高电平。
min1[7:4]<=min1[7:4]+1;
if(min1[7:4]>5)
begin
min1[7:4]=0;
end
end
end
else //turn1为低电平,校正小时
begin
hour1[3:0]=hour1[3:0]+1;
if((hour1[7:4]<2)&&(hour1[3:0]>9))
begin
jshefm模块为功能模块。在给1hz的时钟信号下,当tu
rn为高电平时,实现清零功能。当turn为低电平时,开始选择计时或校正功能。其中,当xuanze为高电平时,实现计时功能,xuanze为低电平时,实现校正功能。当turn1为高电平时为分校正,当turn1为低电平时对小时校正。校正频率均为1hz。当分为0时,秒小于3时,sound输出高电平,实现整点报时功能。
hour1[7:4]=hour1[7:4]+1;
hour1[3:0]=0;
end
else if((hour1[7:4]==2)&&(hour1[3:0]>3))
begin hour1[3:0]=0;
hour1[7:4]=0;
end
end
end
end
always//整点报时,输出3秒高电平(功能4)
begin
wire[7:0] x1;
wire[7:0] x2;
wire[7:0] x3;
jshefmu1(.hour1(x1),.min1(x2),.sec1(x3),.clk1hz(clk1hz),.turnfw(turnfw),.xuanze(xuanze),.turn1(turn1),.sound(sound));
D接线PIN195
E接线PIN192
F接线PIN190
G接线PIN187
case(a)
3'b000:begin SS<=3'b000;e<=hour[7:4];end
3'b001:begin SS<=3'b001;e<=hour[3:0];end
3'b010:begin SS<=3'b010;e<=min[7:4];end
3'b011:begin SS<=3'b011;e<=min[3:0];end
begin
sec1<=0;
min1<=0;
hour1<=0;
end
else //turn为低电平
if(xuanze) //xuanze为高电平,开始计时(功能2)
begin
sec1[3:0]<=sec1[3:0]+1;//对秒计数
if(sec1[3:0]>9)
begin
sec1[3:0]<=0;
sec1[7:4]<=sec1[7:4]+1;
shumaguan11u2(.CLK1000(CLK1000),.Q(Q[6:0]),.SS(SS[2:0]),.sec(x3),.min(x2),.hour(x1));
endmodule
2.功能模块程序设计:
module jshefm(clk1hz,turn,turn1,xuanze,sec1,min1,hour1,sound);
3、译码显示模块仿真
注:因输入数据过多,所以仅选择部分数据进行仿真
第四章管脚锁定及硬件连线
1、管脚锁定如下:
Clk1hz锁定PIN75CLK1000锁定PIN83
Q0锁定PIN196 Q1锁定PIN193
Q2锁定PIN191 Q3锁定PIN195
Q4锁定PIN192 Q5锁定PIN190
Q6锁定PIN187 SS0锁定PIN86
if(min1==0&&sec1<3)
sound=1;
else
sound=0;
end
endmodule
3.译码显示模块程序设计
module shumaguan11(CLK1000,Q,SS,sec,min,hour);
input CLK1000;//CLK1000代表高频率
input[7:0]sec,min,hour;
Shumaguan11为译码显示模块。在CLK1000高频的时钟信号下,六个数码管依次选中且高频循环。小时、分、秒的高位和低位分别被赋给6个数码管,然后分别显示时间。
顶层模块将以上两个模块组合起来,功能模块的输出作为译码显示模块的输入,以达到设计要求。
3.真值表
(1)功能模块
十进制计数器
Clk
Sec1/min1/hour1[3:0]
用2MHZ的高频率来进行动态数码管扫描。由于数码管具有余辉特性和人眼有视觉暂留现象,给人眼的视觉印象就会是连续稳定地显示。因此只要每位数码管显示间隔足够短(即循环频率足够高),数码管就会稳定地显示。本设计使用6个数码管,高频循环选中,相当于显示某一时刻的时间。
2.模块介绍
本设计使用3个模块,一个功能模块,一个译码显示模块,一个顶层模块。
if(sec1[7:4]>5)
begin
sec1[7:4]<=0;/
min1[3:0]<=min1[3:0]+1;//对分计数
if(min1[3:0]>9)
begin
min1[3:0]<=0;
min1[7:4]<=min1[7:4]+1;
if(min1[7:4]>5)
begin
min1[7:4]<=0;
output[6:0]Q;
output[2:0]SS;
reg[2:0]a;
reg[6:0]Q;
reg[2:0]SS;
reg[3:0]e;
always@(posedge CLK1000)
begin
if(a==5)
a<=0;
else
a<=a+1;
end
always@(posedge CLK1000)
begin
9:Q='b1101111;//数码管显示9
endcase
end
endmodule
第三章波形仿真
1.顶层模块波形仿真
(1)置零功能
(2)计时功能
(3)校正功能
校时
较分
(4)整点报时
注:此项功能在计时、校正功能中得以验证
2.功能模块波形仿真
(1)置零
(2)计时
(3)校正
校时
校分
(4)整点报时
注:此项功能可从计时、校正功能中得以验证
2:Q='b1011011;//数码管显示2
3:Q='b1001111;//数码管显示3
4:Q='b1100110;//数码管显示4
5:Q='b1101101;//数码管显示5
6:Q='b1111101;//数码管显示6
7:Q='b0000111;//数码管显示7
8:Q='b1111111;//数码管显示8
input clk1hz,xuanze,turn,turn;
output [7:0] sec1,min1,hour1;
output sound;
reg sound;
reg[7:0] sec1,min1,hour1;
always @(posedge clk1hz)
begin
if(turn) //turn为高电平,置零(功能1)
3'b100:begin SS<=3'b100;e<=sec[7:4];end
3'b101:begin SS<=3'b101;e<=sec[3:0];end
endcase
end
always@(e)
begin
case(e)
0:Q='b0111111;//数码管显示0
1:Q='b0000110;//数码管显示1
第一章设计说明………………………………………………………..........................4
第二章程序设计………………………………………………………………………..4
第三章波形仿真………………………………………………………………………..10
第四章管脚锁定及硬件连线…………………………………………………………..15
hour1[3:0]<=hour1[3:0]+1;//对时计数
if((hour1[7:4]<2)&&(hour1[3:0]>9))
begin
hour1[3:0]<=0;
hour1[7:4]<=hour1[7:4]+1;
end
else if((hour1[7:4]==2)&&(hour1[3:0]>3))
begin
hour1<=0;
end
end
end
end
end
end
end
else //xuanze为低电平,开始校正(功能3)
begin
if(turn1) //turn1为高电平,校正分钟
begin
min1[3:0]<=min1[3:0]+1;
源自文库if(min1[3:0]>9)
begin
min1[3:0]<=0;
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
六进制计数器
Clk
Sec1/min1[7:4]
0000
0001
0010
0011
0100
0000
三进制计数器
Clk
Hour[7:4]
0000
0001
0010
0000
注:以上clk为不同的时钟信号
(2)显示译码模块
Hour1/min1/sec1[7:4]([3:0])
第二章程序设计
1.顶层模块程序设计:
module clock(sound,Q,SS,turnfw,xuanze,turnm,clk1hz,CLK1000);
input xuanze,turnfw,turnm,clk1hz,CLK1000;
output [6:0]Q;
output sound;
output[2:0]SS;
Q
0000
0111111
0001
0000110
0010
1011011
0011
1001111
0100
1100110
0101
1101101
0110
1111101
0111
0000111
1000
1111111
1001
1101111
1010
1000000
CLK1000
SS
000
001
010
011
100
101
000
SS1锁定PIN87 SS2锁定PIN88
sound锁定PIN38 turn锁定PIN39
turn1锁定PIN41 xuanze锁定PIN40
2、硬件连线如下
频率组21接PIN75,H3接PIN83
动态数码管显示模块
S0接线PIN86
S1接线PIN87
S2接线PIN88
A接线PIN196
B接线PIN193
第五章总结……………………………………………………………………………..16
第六章参考文献………………………………………………………………………...17
第一章设计说明
1.设计思路
自动电子钟显示小时、分、秒,秒满60分进1,分钟满60小时进1,小时计满24完成一个循环。其中秒、分、时低位满大于9时向高位进1,秒、分高位大于5时向前变量的低位进1,小时高位大于3时变为0。因为显示在数码管上,所以6个变量的位数应该相同。最大计数值为9,所以选择4位二进制数表示。计时功能、校正功能的变量都有小时和分钟,故用一个开关来选择功能。校正功能的校时、较分也用开关选择,清零功能,用开关实现。整点报时功能,使用蜂鸣器,输出3秒高电平。
min1[7:4]<=min1[7:4]+1;
if(min1[7:4]>5)
begin
min1[7:4]=0;
end
end
end
else //turn1为低电平,校正小时
begin
hour1[3:0]=hour1[3:0]+1;
if((hour1[7:4]<2)&&(hour1[3:0]>9))
begin
jshefm模块为功能模块。在给1hz的时钟信号下,当tu
rn为高电平时,实现清零功能。当turn为低电平时,开始选择计时或校正功能。其中,当xuanze为高电平时,实现计时功能,xuanze为低电平时,实现校正功能。当turn1为高电平时为分校正,当turn1为低电平时对小时校正。校正频率均为1hz。当分为0时,秒小于3时,sound输出高电平,实现整点报时功能。
hour1[7:4]=hour1[7:4]+1;
hour1[3:0]=0;
end
else if((hour1[7:4]==2)&&(hour1[3:0]>3))
begin hour1[3:0]=0;
hour1[7:4]=0;
end
end
end
end
always//整点报时,输出3秒高电平(功能4)
begin
wire[7:0] x1;
wire[7:0] x2;
wire[7:0] x3;
jshefmu1(.hour1(x1),.min1(x2),.sec1(x3),.clk1hz(clk1hz),.turnfw(turnfw),.xuanze(xuanze),.turn1(turn1),.sound(sound));