数字时钟Word文件下载.docx
- 文档编号:15846060
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:36
- 大小:414.20KB
数字时钟Word文件下载.docx
《数字时钟Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字时钟Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。
计数满后各计数器清零,重新计数。
计数器的输出分别经译码器送数码管显示。
计时出现误差时,可以用校时电路校时、校分。
控制信号由1×
5矩形键盘输入。
时基电路可以由石英晶体振荡电路构成,假设晶振频率1MHz,经过6次十分频就可以得到秒脉冲信号。
译码显示电路由八段译码器完成。
3.设计流程
4.实验程序
程序初始化
moduleshuzishizhong(Clk0,SEG,DIG,rst,rst_n,sclk,data_io,button);
inputbutton;
//用于选择在数码管上显示时间or日历的按键,按下为高电平
inputrst;
//外部复位键
inputClk0;
//外部输入时钟50Mhz
output[7:
0]SEG,DIG;
outputrst_n;
//ds1302的端口RTCnRST
outputsclk;
//ds1302的输入时钟RTCCLK
inoutdata_io;
//ds1302的io端口RTCIO
reg[12:
0]CNT_R0;
//用于将50Mhz时钟分频为10Khz的寄存器
regClk_10KHz;
//10Khz时钟
reg[21:
0]count;
//用于按键消抖的计数器
regflag=0;
//判断显示时间or日历的标识位,0显示时间,1显示日历
reg[2:
0]SCAN_R;
reg[3:
0]SEG_M[7:
0];
reg[7:
0]SEG_DR;
wire[23:
0]dat_o_TM;
//来着ds1302_drive的存放时间的寄存器
wire[31:
0]dat_o_C;
//来着ds1302_drive的存放日历的寄存器
ds1302_drive(.clock(Clk0),.rst(rst),.rst_n(rst_n),.sclk(sclk),.data_io(data_io),.dat_o_TM(dat_o_TM),.dat_o_C(dat_o_C));
驱动程序初始化
moduleds1302_drive(clock,rst,rst_n,sclk,data_io,dat_o_TM,dat_o_C);
//外部复位按键重新设置数据
inputclock;
//ds1302端口信号
outputrst_n,sclk;
//ds1302的工作时钟
//dat_o_TM信号接六个数码管,分别显示小时,分钟和秒
//dat_o_C信号送到12864显示年,月,日和星期
output[23:
//读出的时间送出显示
output[31:
0]dat_o_C;
//读出的日历送出显示
regrst_n;
regdata;
//data_io的缓存,
regclk_us;
//状态机的时钟8us/period
regclk_2us;
//data_io是双向口,开关link_write管理数据的出入
//link_write为高时,允许输出,为低电平是高阻
reglink_write;
regflag123;
//重新设置日历标志位
reg[4:
0]step1;
//WR_SET任务的状态
0]step2;
//RD_T任务的状态
reg[23:
0]data_out_reg_time;
//存放读出的时间
reg[31:
0]data_out_reg_calender;
//存放读出的日历
regF;
//读任务的标志
regFF;
//写任务的标志
0]reg_CMD=0;
//command
0]reg_SEC=0;
//秒
0]reg_MIN=8'
h30;
//分钟
0]reg_H=8'
h09;
//小时
0]reg_DAY=8'
h03;
//天
0]reg_MONTH=8'
h06;
//月
0]reg_X=8'
h01;
//星期
0]reg_YEAR=8'
h13;
//年
0]register1;
//写操作的指令存器
0]register3;
//读操作读进数据的寄存器
0]register4;
//读操作的指令寄存器
0]state;
//状态机
//===============================================
//初始设置的状态参数
//写状态
parameter
IDLE=4'
b0000,
WR_S=4'
b0001,
WR_Min=4'
b0010,
WR_H=4'
b0011,
WR_X=4'
b0100,
WR_D=4'
b0101,
WR_M=4'
b0110,
WR_Y=4'
b0111;
parameter//状态读
RD_S=4'
b1000,
RD_Min=4'
b1001,
RD_H=4'
b1010,
RD_X=4'
b1011,
RD_D=4'
b1100,
RD_M=4'
b1101,
RD_Y=4'
b1110,
CLOSE_W=4'
b1111;
//WR_SET任务的参数
parameter
step1_f0=5'
b00000,
step1_f1=5'
b00001,
step1_f2=5'
b00010,
step1_f3=5'
b00011,
step1_f4=5'
b00100,
step1_f5=5'
b00101,
step1_f6=5'
b00110,
step1_f7=5'
b00111,
step1_f8=5'
b01000,
step1_f9=5'
b01001,
step1_fa=5'
b01010,
step1_fb=5'
b01011,
step1_fc=5'
b01100,
step1_fd=5'
b01101,
step1_fe=5'
b01110,
step1_ff=5'
b01111,
step1_f10=5'
b10000;
//RD_T任务的参数
step2_f0=5'
step2_f1=5'
step2_f2=5'
step2_f3=5'
step2_f4=5'
step2_f5=5'
step2_f6=5'
step2_f7=5'
step2_f8=5'
step2_f9=5'
step2_fa=5'
step2_fb=5'
step2_fc=5'
step2_fd=5'
step2_fe=5'
step2_ff=5'
step2_f10=5'
//++++++++++++++++++++++++++++++++++++++++++++++
//本模块的时钟20nsX200X2=8us/period,
reg[8:
0]counter;
5.管脚分配
6.实验结果
如图所示实验版通过对左边3和4按键的使用可以实现年月日与时分秒的切换,图左上角的数码管用于显示时钟,对实验程序中如下部分的修改可以改变可以使数码管上的时钟改变用于设定时间。
0]reg_SEC=55;
h59;
h23;
h31;
h12;
h04;
6.实验心得
通过实验,更加了解思维严密性的重要,对于实验要有实事求是的态度.了解VerilogHDL的实际应用中的重要性。
了解分频电路,消抖电路的理论基础。
对于实验,要有严谨的态度,扎实的理论。
附录
/*
数码管输出显示部分,将从ds1302读出的时间、日历显示到数码管上,通过按下button键选择在数码管上显示时间还算日期
*/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 时钟