您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数字电子技术课程设计报告
2017—2018学年第二学期《数字电子技术课程设计》报告专业班级电子160*姓名***学号************一、设计题目数字时钟设计二、设计任务和要求本课程设计的任务是设计一个数字时钟。主要包含功能如下:1、默认显示格式为12小时显示方式:11-25-36,其中“-”用第三个和第六个七段数码管中的g段闪烁显示;2、对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。本次设计的要求是当进行整点的倒计时5秒时,让LED来闪烁(频率2Hz)进行整点报时的提示。3、设置一个复位键(键盘模块的*键),当按下该键后,所有数码管显示11-59-50,时钟从该时刻开始计时。4、能够利用键盘模块的#键实现时间的调节,即先按下#键,然后再按下键盘中的第一数字键实现小时中的十位调整,再按下一个数字键调整小时的个位,再按下一个数字键调整分钟的十位,以此类推,再次按下#键表示调整完毕,时钟正常开始计时。扩展要求:1、显示格式可调:用键盘的A键实现12小时方式和24小时方式之间的切换;2、秒表:用键盘的B键实现秒表计时功能,即按下B键所有显示清零,然后按下C键并开始秒表计时,左边两个数码管为分钟显示,中间两个数码管为秒显示,右边两个数码管为10毫秒显示(需要用到100Hz频率),再次按下C键停止计时,再次按下键盘的B键返回时钟功能。需要注意的几个问题如下:1、8个七段数码管为片选显示,即8个数码管只有一组abcdefg的输出,具体哪个数码管显示,需要看片选信号选中哪个数码管。片选信号的扫描频率为1KHz。2、LED灯模块的电路原理是当有高电平输入时LED灯就会被点亮,反之不亮。3、系统时钟输入为50MHz;三、模块设计与顶层模块的实现1、分频modulefenpin(clk,clkout1,clkout2,clkout3,clkout4);inputclk;//下载时clk为50MHzoutputclkout1,clkout2,clkout3,clkout4;regclkout1,clkout2,clkout3,clkout4;integercout1,cout2,cout3,cout4;always@(posedgeclk)begincout1=(cout1==32'd50000000)?32'd0:(cout1+32'd1);clkout1=(cout1==32'd50000000)?1'd1:1'd0;//50000000分频cout3=(cout3==32'd25000000)?32'd0:(cout3+32'd1);clkout3=(cout3==32'd25000000)?1'd1:1'd0;//25000000分频cout2=(cout2==32'd50000)?32'd0:(cout2+32'd1);clkout2=(cout2==32'd50000)?1'd1:1'd0;//50000分频cout4=(cout4==32'd500000)?32'd0:(cout4+32'd1);//500000分频clkout4=(cout4==32'd5000000)?1'd1:1'd0;endendmodule仿真波形:2、4*4矩阵键盘扫描:modulekeyboard(clk,rst,qiehuan,kong,B,C,row,key_flag,col,key_value,out1);inputclk;inputout1;input[3:0]row;output[3:0]col;output[3:0]kong;output[1:0]B;output[1:0]C;outputrst;outputkey_flag;output[1:0]qiehuan;reg[1:0]B;reg[1:0]C;reg[1:0]tiao=0;reg[1:0]qiehuan=0;regrst=0;reg[3:0]kong=0;output[15:0]key_value;reg[3:0]col;reg[15:0]key_value;reg[5:0]count;//delay_20msreg[2:0]state=0;//状态标志regkey_flag;//按键标志位regclk_500khz;//500KHZ时钟信号reg[3:0]col_reg;//寄存扫描列reg[3:0]row_reg;//寄存扫描行always@(posedgeclk)beginif(count=50)beginclk_500khz=~clk_500khz;count=0;endelsecount=count+1;endalways@(posedgeclk_500khz)begincase(state)0:begincol[3:0]=4'b0000;key_flag=1'b0;if(row[3:0]!=4'b1111)beginstate=1;col[3:0]=4'b1110;end//有键按下,扫描第一行elsestate=0;end1:beginif(row[3:0]!=4'b1111)beginstate=5;end//判断是否是第一行elsebeginstate=2;col[3:0]=4'b1101;end//扫描第二行end2:beginif(row[3:0]!=4'b1111)beginstate=5;end//判断是否是第二行elsebeginstate=3;col[3:0]=4'b1011;end//扫描第三行end3:beginif(row[3:0]!=4'b1111)beginstate=5;end//判断是否是第三行elsebeginstate=4;col[3:0]=4'b0111;end//扫描第四行end4:beginif(row[3:0]!=4'b1111)beginstate=5;end//判断是否是第一行elsestate=0;end5:beginif(row[3:0]!=4'b1111)begincol_reg=col;//保存扫描列值row_reg=row;//保存扫描行值state=5;key_flag=1'b1;//有键按下endelsebeginstate=0;endendendcaseendalways@(posedgeout1)beginif({col_reg,row_reg}==8'b1110_0111)rst=1;elserst=0;if({col_reg,row_reg}==8'b1110_1101)begintiao=tiao+1;if(tiao==2)tiao=0;endif({col_reg,row_reg}==8'b0111_1110)beginqiehuan=qiehuan+1;if(qiehuan==3)qiehuan=1;endif({col_reg,row_reg}==8'b1011_1110)beginB=B+1;if(B==2)B=0;endif({col_reg,row_reg}==8'b1101_1110)beginC=C+1;if(C==3)C=0;endendalways@(clk_500khzorcol_regorrow_reg)if(tiao==1&&key_flag=1'b1)beginkong=kong+1;if(kong==8)kong=0;endelsekong=0;always@(clk_500khzorcol_regorrow_reg)beginif(key_flag==1'b1)begincase({col_reg,row_reg})8'b1110_1110:key_value=0;8'b1110_1101:key_value=1;8'b1110_1011:key_value=2;8'b1110_0111:key_value=3;8'b1101_1110:key_value=4;8'b1101_1101:key_value=5;8'b1101_1011:key_value=6;8'b1101_0111:key_value=7;8'b1011_1110:key_value=8;8'b1011_1101:key_value=9;8'b1011_1011:key_value=10;8'b1011_0111:key_value=11;8'b0111_1110:key_value=12;8'b0111_1101:key_value=13;8'b0111_1011:key_value=14;8'b0111_0111:key_value=15;endcaseendendendmodule3、控制模块:modulekongzhi(clkout1,clkout3,B1,C1,qiehuan1,rst1,t1,led,B,C,qiehuan,rst);inputclkout1,clkout3,t1;//clkout1输入1赫兹,clkout3输入2赫兹,t1控制闪烁inputrst;input[1:0]B;input[1:0]C;input[1:0]qiehuan;outputled;//led是灯outputqiehuan1;outputB1;outputC1;outputrst1;regled;regqiehuan1;regB1;regC1;regrst1;always@(posedgeclkout1)beginrst1=rst;qiehuan1=qiehuan;B1=B;C1=C;endalways@(posedgeclkout3)beginif(t1==1)led=~led;elseif(t1==0)led=0;//当t1=1时闪烁,否则不闪endendmodule4、计数:modulejishu(clkout1,rst1,B1,C1,qiehuan1,shis,shig,mins,ming,secs,secg,t1,key_flag,key_value,HH24,HL24,HH12,HL12);inputclkout1;//clkout1为1赫兹inputB1,C1,qiehuan1,rst1;inputkey_flag;input[15:0]key_value;input[3:0]HH24,HL24;output[3:0]HH12,HL12;output[1:0]shis;//小时的十位output[3:0]shig;//小时的个位output[2:0]mins;//分钟的十位output[3:0]ming;//分钟的个位output[2:0]secs;//秒的十位output[3:0]secg;//秒的个位outputt1;//返回闪烁的控制变量reg[3:0]HH12,HL12;regt1;reg[5:0]shi;//小时reg[5:0]min,sec;//分钟,秒always@(HH24orHL24)if(key_flag=1’b1&&key_value=12)beginif((HH24*10+HL24)=12)beginHH12=HH24;HL12=HL24;endelseif(((HH24*10+HL24)=13)&&((HH24*10+HL24)=19))beginHH12=4'd0;HL12=HL24-4'd2;endelseif(((HH24*10+HL24)=19)&&((HH24*10+HL24)=21))beginHH12=4'd0;HL12=HL24+4'd8;endelsebeginHH12=HH24-4'd1;HL12=HL24-4'd2;endendalways@(posedgeclkout1)beginif(key_flag=1'b1&&key_value=3)beginshi=11;min=59;sec=50;t1=0;end//执行复位功能elseif(sec==59)begins
本文标题:数字电子技术课程设计报告
链接地址:https://www.777doc.com/doc-3751646 .html