西安交通大学实验报告数字钟设计

合集下载

数字电子时钟实习报告

数字电子时钟实习报告

一、实习目的本次实习旨在通过设计和制作数字电子时钟,加深对数字电路基本原理、电子元器件性能及电路设计方法的理解。

通过实际操作,掌握数字电子钟的设计、制作、调试和故障排除等技能,提高动手能力和创新意识。

二、实习内容1. 数字电子钟电路设计(1)电路组成:数字电子钟主要由振荡器、分频器、计数器、译码显示、报时电路和校时电路等部分组成。

(2)电路设计:采用555定时器构成振荡器产生1Hz的脉冲信号,通过分频器得到1Hz的秒脉冲信号。

计数器采用异步十进制计数器74LS90,实现秒、分、时的计数。

译码显示采用共阳极LED数码管,显示当前时间。

报时电路由门电路和蜂鸣器构成,实现整点报时功能。

校时电路由按键和计数器构成,实现手动校时功能。

2. 元器件选型(1)振荡器:选用555定时器,其频率稳定,易于调整。

(2)分频器:选用CD4060,具有分频功能,可方便地实现秒、分、时的计数。

(3)计数器:选用74LS90,具有异步计数功能,可方便地实现秒、分、时的计数。

(4)译码显示:选用共阳极LED数码管,显示清晰,功耗低。

(5)报时电路:选用门电路和蜂鸣器,实现整点报时功能。

(6)校时电路:选用按键和计数器,实现手动校时功能。

3. 电路制作与调试(1)电路制作:根据电路原理图,焊接电路板,连接元器件。

(2)电路调试:首先检查电路连接是否正确,然后逐个模块进行调试。

调试过程中,注意观察数码管显示是否正常,报时是否准确,校时是否方便。

三、实习过程1. 设计电路原理图:根据数字电子钟的功能和性能要求,设计电路原理图。

2. 选择元器件:根据电路原理图,选择合适的元器件。

3. 制作电路板:根据电路原理图,制作电路板。

4. 焊接元器件:将元器件焊接在电路板上。

5. 电路调试:逐个模块进行调试,确保电路功能正常。

6. 故障排除:在调试过程中,若出现故障,分析原因,进行修复。

四、实习结果1. 成功设计并制作了数字电子钟,实现了秒、分、时的计数,整点报时和手动校时等功能。

西安交通大学数电实验报告

西安交通大学数电实验报告

数电实验实验名称:数字钟设计班级:姓名:学号:一、实验简介数字钟设计的关键在于产生秒脉冲、对秒脉冲计数并产生分和小时以及动态显示时、分、秒信息。

二、实验要求1)在开发板上运行有关程序2)设计一个完整的数字钟,小时和分钟用数码管显示,秒用发光二极管闪烁显示,每秒显示一次。

如有可能,请增加校时功能。

三、实验内容1.工程文件代码:module DigitalClock(input clk,input clr,input [1:0]en,input [5:0]data,output regsecled,output reg [6:0]atg,output reg [3:0]an);reg [3:0]led1,led2,led3,led4; reg [16:0]clkdiv;reg [3:0]hour1;reg [3:0]hour2;reg [3:0]min1;reg [3:0]min2;reg [26:0]q1;reg [3:0]digit;reg [7:0]sec;reg [1:0]s;integer i;initial beginhour2=1;hour1=2;min2=1;min1=2;sec=0;led4=hour2;led3=hour1;led2=min2;led1=min1;secled=0;clkdiv=0;endalways @(*)beginan=4'b1111;s<=clkdiv[16:15];an[s]=0;case(s)0: digit<=led4;1: digit<=led3;2: digit<=led2;3: digit<=led1;default: digit<=led4;endcasecase(digit)0: atg = 7'b0000001;//01: atg = 7'b1001111;//12: atg = 7'b0010010;//23: atg = 7'b0000110;//34: atg = 7'b1001100;//45: atg = 7'b0100100;//56: atg = 7'b0100000;//67: atg = 7'b0001111;//78: atg = 7'b0000000;//89: atg = 7'b0000100;//9'hA: atg = 7'b0000001;//10-10 to be revised'hB: atg = 7'b1001111;//11-10'hC: atg = 7'b0010010;//12-10'hD: atg = 7'b0000110;//13-10'hE: atg = 7'b1001100;//14-10'hF: atg = 7'b0100100;//15-10default: atg = 7'b0000001;endcaseendalways @(posedgeclk)beginclkdiv<= clkdiv+1;end(时钟程序)always @(posedgeclk or posedgeclr)beginif(clr == 1)beginsec<=0;q1<=0;hour1<=0;hour2<=0;min1<=0;min2<=0;led4=0;led3=0;led2=0;led1=0;end(分钟调节模块)else if(en==2'b00)beginif(q1 == 50000000)beginq1<=0;secled=1;led4=hour2;led3=hour1;led2=min2;led1=min1;sec<=sec+1;if(sec == 59)beginsec<=0;min1<=min1+1;if(min1 == 9)beginmin1<=0;min2<=min2+1;endif(min1==9&&min2==5)beginmin1<=0;min2<=0;hour1<=hour1+1;if(hour1==9)beginhour1<=0;hour2<=hour2+1;endif(hour2==2&&hour1==3)beginhour1<=0;hour2<=0;endendendendelse if(q1==25000000)beginsecled=0;q1<=q1+1;endelseq1<=q1+1;end(小时调节模块)else if(en==2'b01)//change minbeginif (data<60)beginfor(i=0;i<6;i=i+1)beginif(data-i*10<10)beginmin1<=data-10*i;min2<=i;i=6;endendled4=hour2;led3=hour1;led2=min2;led1=min1;endendelse if(en==2'b10)//change hourbeginif(data<24)beginfor(i=0;i<3;i=i+1)beginif(data-i*10<10)beginhour1<=data-10*i;hour2<=i;i=3;endendendled4=hour2;led3=hour1;led2=min2;led1=min1;endendendmodule2.约束文件代码:NET "atg[0]" LOC = M12;NET "atg[1]" LOC = L13;NET "atg[2]" LOC = P12;NET "atg[3]" LOC = N11;NET "atg[4]" LOC = N14;NET "atg[5]" LOC = H12;NET "atg[6]" LOC = L14;NET "an[0]" LOC = K14;NET "an[1]" LOC = M13;NET "an[2]" LOC = J12;NET "an[3]" LOC = F12;NET "clk" LOC = B8;NET "clr" LOC = G12;NET "secled" LOC = M5;NET "en[1]" LOC = N3;NET "en[0]" LOC = E2;NET "data[5]" LOC = F3;NET "data[4]" LOC = G3;NET "data[3]" LOC = B4;NET "data[2]" LOC = K3;NET "data[1]" LOC = L3;NET "data[0]" LOC = P11;四、实验心得体会相比之前的几次上机实验,这次的实验代码花的时间要多一些,不过这次实验同样成就感也要高一些,毕竟数字钟和生活关联比较大,这让我初步了解了Verilog语音和生活中我们所用的一些电子器件的联系。

西安交通大学数字电子技术实验报告

西安交通大学数字电子技术实验报告

西安交通大学数字电子技术实验报告实验三、ISE基础实验预习:(1)安装ISE13.4软件。

(2)按照视频文件“Verilog语言输入法D_Flip_Flop.exe”进行演练。

实验内容和步骤:下载开发板相关器件的Datasheet,了解其性能。

按照P249附录A“FPGA实验预习报告模板”中的内容和步骤,完成D触发器的设计、综合、实现、仿真和下载全过程,熟悉ISE编程环境和用Adept下载编程文件的方法。

1.在G盘用自己的学号建立文件夹,进入用自己学号建立的文件夹后,再建立本次实验的文件夹,及本次实验所建工程的文件夹,文件夹名可以起名为:D_Flip_Flop、My_FirstISE、或Experiment_1、或Test_1,等等。

2.建立工程文件。

3.输入D触发器的Verilog程序。

4.编写D触发器的约束文件。

5.综合、实现及生成编程文件。

6.基于ISim的行为仿真。

7.采用Adept软件下载*.bit 程序到开发板。

8.测试D触发器的逻辑功能。

通过D触发器设计熟悉ISE软件后,自己设计一个门电路,例如与非门,重复以上ISE 软件的使用步骤。

验收:1.按照老师布置的逻辑门电路设计Verilog语言程序、约束文件、下载、仿真。

要能说明任一时刻输入输出的逻辑关系。

2.能够用开发板演示所设计的逻辑功能。

实验程序1.VERILOG工程文件module D_Flip_Flop(input clk,input set,input D,input clr,output reg q //注意:always模块中的输出必须是寄存器型变量);always @(posedge clk or posedge clr or posedge set)beginif(clr) q<=0;else if(set) q<=1;else q<=D;endendmodule2.约束文件NET "clk" LOC ="B8"; //时钟NET "D" LOC ="N3"; //SW7NET "set" LOC ="L3"; //SW1NET "clr" LOC ="P11"; //SW0NET "q" LOC ="G1"; //LD73.仿真文件module test_D_Flip_Flop;// Inputsreg clk;reg set;reg D;reg clr;// Outputswire q;// Instantiate the Unit Under Test (UUT) D_Flip_Flop uut (.clk(clk),.set(set),.D(D),.clr(clr),.q(q));initial begin// Initialize Inputsclk=0;set=1;D=0;clr=0;// Wait 100 ns for global reset to finish #100;// Add stimulus hereEndalways#10clk=~clk;always#12D=~D;always#33clk=~clk;always#42set=~set;endmodule仿真结果:实验四、组合逻辑电路实验Ⅰ(2学时)组合逻辑Ⅰ:(1)使用VERILOG设计一个新的逻辑功能(比如四输入或门、或非门、与或非门等等),并在开发板上验证,比如:进实验室前编写好VERILOG源文件、约束文件和仿真文件(见4.1.2,P101(2))。

大学数字钟实训报告

大学数字钟实训报告

一、摘要本次实训旨在通过设计和制作一个数字时钟,加深对数字电子技术理论知识的理解,提高动手实践能力。

在实训过程中,我们学习了数字钟的原理、电路设计、元件选择、焊接调试等技能。

最终,我们成功制作出了一个具有时、分、秒显示功能的数字时钟,并通过实际运行验证了其功能。

二、实训目的1. 掌握数字电子钟的原理和设计方法。

2. 熟悉常用数字电路元件的功能和特性。

3. 提高动手实践能力,培养创新意识。

4. 增强团队协作精神,提高沟通能力。

三、实训内容1. 数字钟原理数字钟是一种将时间信息转换为数字信号,并通过数码管显示的电子计时设备。

其基本原理是利用石英晶体振荡器产生稳定的时钟信号,通过计数器进行计数,并通过译码器和数码管显示时间。

2. 电路设计本次实训采用以下电路设计:(1)时钟信号产生:利用555定时器产生1Hz的时钟信号。

(2)秒计数器:采用CD4060计数器,实现秒的计数。

(3)分计数器:采用CD4518计数器,实现分的计数。

(4)时计数器:采用CD4518计数器,实现时的计数。

(5)译码器:采用CD4511译码器,将计数器的输出信号转换为数码管所需的信号。

(6)数码管显示:采用共阴极七段数码管,显示时、分、秒。

3. 元件选择本次实训选用的元件如下:(1)时钟信号产生:555定时器、电阻、电容。

(2)计数器:CD4060、CD4518。

(3)译码器:CD4511。

(4)数码管显示:共阴极七段数码管。

(5)其他元件:电阻、电容、电位器、晶体管、开关等。

4. 焊接调试(1)按照电路图进行元件焊接。

(2)检查电路连接是否正确,并进行初步调试。

(3)调整电位器,使数码管显示正确的时间。

(4)测试电路功能,确保时、分、秒显示准确。

四、实训总结1. 通过本次实训,我们掌握了数字电子钟的原理和设计方法,熟悉了常用数字电路元件的功能和特性。

2. 在实训过程中,我们提高了动手实践能力,培养了创新意识。

3. 团队协作精神得到了加强,沟通能力得到提高。

最新西安交通大学电子系统设计c51单片机数字钟实验

最新西安交通大学电子系统设计c51单片机数字钟实验

n单片机数字钟实验报告姓名:高航班级:信息43学号:2140502058PART 1 实验目的在单片机c51实验板上编程实现2017年日历和实时时钟:1.时-分-秒(2位-2位-2位)显示;2.可通过按键置入时间值(参照电子表设置时间工作模式);3.可通过按键控制在LED上从右向左滚动显示年_月_ 日3次,如:2013_01_20空空2013_01_20 ;4.实现每日闹铃提醒功能,闹铃时间可用按键设置。

闹铃采用提示音表示;5.实现秒表功能;6.实现定时器功能(预置定时时间,按键启动,倒计时,计到0响提示音;7.设计实现音乐提示音;8.能够在短时间按要求修改。

PART 2 实验流程图1.总流程图2.设置时间/日期/闹钟模块dis()3.音乐模块music()PART 3 实验代码代码使用资源:Program Size: data=102.0 xdata=0 code=2420 #include<reg51.h>#include<absacc.h>#define uint unsigned int#define uchar unsigned charuchar t0h,t0l,timeaaa;uchar code FREQH[] = {0x01, //0的时候没有音符0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音12345670xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音2345670xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF}; //超高音1234567 uchar code FREQL[] = {0x01, //0的时候没有音符0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音12345670x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音2345670x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16}; //超高音1234567 uchar code tiger[]={3,2,2, 6,2,2, 7,2,2, 5,2,2,3,2,2, 6,2,2, 7,2,2, 5,2,2,7,2,2, 1,3,2, 2,3,4,7,2,2, 1,3,2, 2,3,4,2,3,1, 3,3,1, 2,3,1, 1,3,1, 7,2,2, 5,2,2,2,3,1, 3,3,1, 2,3,1, 1,3,1, 7,2,2, 5,2,2,6,2,2, 2,2,2, 5,2,4, 6,2,2, 2,2,2, 5,2,4,0,0,0};sbit aa=P1^6;unsigned char time[]={0,0,0x08,0,0,0x08,0,0} ; //时间显示数组unsigned char timeZ[]={0,0,0x08,0,0,0x08,0,0} ;//闹钟显示数组unsigned char timeD[]={0,0,0x08,0,0,0x08,0,0} ;//倒计时显示数组unsigned char timeN[]={0,0,0x08,0,0,0x08,0,0} ;//秒表显示数组unsigned char dateset[]={0,0,0x08,0,0,0x08,0,0} ;//riqishezhi显示数组unsigned char code num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//数字unsigned char date[]={0,0,0,0,0,0,0,0,0,0,0,0,0x08,0,0,0x08,0,0,0,0,0,0,0,0};//日期显示unsigned char sec=0,min=0,hour=0,day=24,mon=10,j,t,a,p;int year=2017;unsigned char secZ=0,minZ=1,hourZ=0;unsigned char secD,minD,hourD;unsigned char tsec,secN,minN,tsecm;*****************************LED显示延时函数********************************void delay(unsigned char p){unsigned char i,j;for(;p>0;p--)for(i=5;i>0;i--)for(j=120;j>0;j--);}*******************************获取按键函数***********************************unsigned char getkeycode(void){unsigned char line=0x00; /*行码*/unsigned char col=0x00; /*列码*/unsigned char scancode=0x01; /*行扫描码*/unsigned char keycode; /*键号*/XBYTE[0x8000]=0xff;col=XBYTE[0x8000]&0x0f; /*从列端口读入四位列码*/if (col==0x00)keycode=0x00;else{while((scancode&0x0f)!=0) /*取scancode的低四位,没变为全0,循环*/{line=scancode; /*行号*/XBYTE[0x8000]=scancode; /*给行赋扫描码,第一行为0x01*/if((XBYTE[0x8000]&0x0f)==col) /*检测按键所在的行跳出循环*/break;scancode=scancode<<1; /*行扫描码左移一位,转下一行*/}col=col<<4; /*把列码移到高四位*/keycode=col|line;}return keycode;}*******************************时间显示函数***********************************void timedis(){XBYTE[0X9000]=0;for (j=0;j<8;j++){time[0]=num[sec%10];time[1]=num[sec/10];time[3]=num[min%10];time[4]=num[min/10];time[6]=num[hour%10];time[7]=num[hour/10];delay(1);XBYTE[0X8000] =0x01<<j;XBYTE[0X9000] =time[j];}} //time show*******************************闹钟显示函数***********************************void timedisZ(){XBYTE[0X9000]=0;for (j=0;j<8;j++){timeZ[0]=num[secZ%10];timeZ[1]=num[secZ/10];timeZ[3]=num[minZ%10];timeZ[4]=num[minZ/10];timeZ[6]=num[hourZ%10];timeZ[7]=num[hourZ/10];delay(1);XBYTE[0X8000] =0x01<<j;XBYTE[0X9000] =timeZ[j];}}*******************************秒表显示函数***********************************void timedisN(){while(1){for(;tsec==20;){tsec=0;secN++;if(secN==60){minN++;secN=0;}}if(getkeycode()==0x84)break;XBYTE[0X9000]=0;for (j=0;j<8;j++){timeN[0]=num[tsec%10];timeN[1]=num[tsec/10];timeN[3]=num[secN%10];timeN[4]=num[secN/10];timeN[6]=num[minN%10];timeN[7]=num[minN/10];delay(1);XBYTE[0X8000] =0x01<<j;XBYTE[0X9000] =timeN[j];//if(getkeycode()==0x84)break;}} } //秒表*****************************倒计时显示函数***********************************void timedisD(){while(1){if(minD==0&&secD==0)break;XBYTE[0X9000]=0;for (j=0;j<8;j++){timeD[0]=num[secD%10];timeD[1]=num[secD/10];timeD[3]=num[minD%10];timeD[4]=num[minD/10];timeD[6]=num[hourD%10];timeD[7]=num[hourD/10];delay(1);XBYTE[0X8000] =0x01<<j;XBYTE[0X9000] =timeD[j];}}}*******************************日期显示函数***********************************void datedis(){unsigned char i,j,k;for (i=0;i<17;i++){ for(k=0;k<20;k++)for (j=0;j<8;j++){ date[13]=num[day/10];date[14]=num[day%10];date[16]=num[mon/10];date[17]=num[mon%10];date[11]=num[year%10];date[10]=num[(year%100)/10];date[9]=num[(year%1000)/100];date[8]=num[year/1000];XBYTE[0X8000] = 0x80>>j;XBYTE[0X9000] = date[i+j];delay(1);}}} //date show//downto zero bibii****************************年月日设置显示函数*******************************void datedis1(){XBYTE[0X9000]=0;for (j=0;j<8;j++){dateset[6]=num[year%10];dateset[7]=num[(year%100)/10];dateset[3]=num[mon%10];dateset[4]=num[mon/10];dateset[0]=num[day%10];dateset[1]=num[day/10];delay(1);XBYTE[0X8000] =0x01<<j;XBYTE[0X9000] =dateset[j];}}*******************************时间设置函数***********************************void set(){unsigned char i=0;{for(i=0;i<3;){timedis();if (getkeycode()==0x11){ delay(100);i++;}if (getkeycode()==0x21){ delay(100);switch (i){case 0: sec++;if(sec==60){sec=0;}break;case 1: min++;if(min==60){min=0;}break;case 2: hour++;if(hour==24){hour=0;}break;default: break;} }} }} //时间设置//timeset*******************************闹钟设置函数***********************************void setZ(){unsigned char i=0;{for(i=0;i<3;){timedisZ();if (getkeycode()==0x11){ delay(100);i++;}if (getkeycode()==0x21){ delay(100);switch (i){case 0: secZ++;if(secZ==60){secZ=0;}break;case 1: minZ++;if(minZ==60){minZ=0;}break;case 2: hourZ++;if(hourZ==24){hourZ=0;}break;default: break;} }} }} //alarm set*******************************日期设置函数***********************************void setdate(){unsigned char i=0;{for(i=0;i<3;){datedis1();if (getkeycode()==0x11){ delay(100);i++;}if (getkeycode()==0x21){ delay(100);switch (i){case 0: day++;if(day==32){day=0;}break;case 1: mon++;if(mon==13){mon=0;}break;case 2: year++;break;default: break;} }} }}*****************************定时器0中断函数*********************************void timer() interrupt 1{t++; //计数溢出后t++if(getkeycode()==0x82){tsec=0;secN=0;minN=0;}if(getkeycode()!=0x22){tsec++;}if (t==20)//1s{if (getkeycode()==0x48){ while(1){set();break;}}//进入时间设置if (getkeycode()==0x14){ while(1){setdate();break;}}//日期设置sec++; t=0;secD--;if(secD==(-1)){secD=59;minD--;}if(minD==(-1)){minD=59;}if(sec==60){sec=0;min++;}if(min==60){min=0;hour++;}if(hour==24){hour=0;day++;}if((day==32)&&(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)){d ay=1;mon++;}if((day==31)&&(mon==4||mon==6||mon==9||mon==11)){day=1;mon++;}if(year%4==0&&year%400!=0&&mon==2&&day>=30){day=1;mon++;}if(year%4!=0&&mon==2&&day>=29) {day=1;mon++;}}}void reset (void){t=0;TMOD=0x01; //模式选择TL0=0xb0;TH0=0x3c; // TH1=(65536-9216)/256; TL1=(65536-9216)%256;PT0=0; //定时器优先ET0=1; // 定时器中断允许TR0=1;//开始定时EA=1; //cpu允许stop} //time go on*****************************定时器1中断函数*********************************void t0int() interrupt 3 {TR1 = 0; //先关闭T0aa = ~aa; //输出方波, 发音TH1 = t0h; //下次的中断时间, 这个时间, 控制音调高低TL1 = t0l;TR1 = 1; //启动T0}void delayaaa(uchar t) {uchar a;while(t--) //四重循环, 共延时t个1/4拍{/* for(c=193;c>0;c--)for(b=114;b>0;b--) //114*/for(a=10;a>0;a--){timedis();}}//延时期间, 可进入T0中断去发音//timedis(); 没用TR1 = 0; //关闭T0, 停止发音}void singachar() {TR1=0;TH1 = t0h; //控制音调TL1 = t0l;TR1 = 1; //启动T0, 由T0输出方波去发音delayaaa(timeaaa);//控制时间长度即节拍}void song(uchar *str){uchar k,i;i = 0;timeaaa=1;while(timeaaa){k = str[i] + 7 * (str[i + 1]);//第i个是音符, 第i+1个是第几个八度t0h = FREQH[k]; //从数据表中读出频率数值t0l = FREQL[k]; //实际上, 是定时的时间长度timeaaa = str[i + 2]; //读出时间长度数值节拍时间i+= 3;singachar();if(getkeycode()==0x22)break;//stop noise}}void music(void){TMOD = 0x01; //置T0定时工作方式1ET1= 1; //开T0中断EA = 1; //开CPU中断while(1){song(tiger);aa=1;if(getkeycode()==0x22)break;delayaaa(20);//timedis();}}*********************************MAIN函数************************************ void main(){reset();while(1){timedis();if(getkeycode()==0x88){setZ();} //闹钟设置if(getkeycode()==0x28){for(p=0;p<3;p++){datedis();}} //日期if(getkeycode()==0x18){secD=20;minD=0;timedisD();if(minD==0&&secD==0){music();}}//倒计时if(getkeycode()==0x44){minN=0;tsec=0;secN=0;timedisN();}//秒表if(secZ==sec&&minZ==min&&hourZ==hour) {music();}}}************************************OVER**************************************PART 4 实验心得实验虽然已经验收完毕,但收获却是弥足珍贵。

数字钟 实验报告

数字钟 实验报告

数字钟实验报告数字钟实验报告1. 引言数字钟是一种以数字形式显示时间的装置,广泛应用于日常生活中。

本实验旨在通过搭建数字钟电路并进行实际测试,了解数字钟的工作原理和实现方式。

2. 实验材料和方法实验材料:电路板、电子元件(集成电路、电阻、电容等)、数字显示屏、电源、万用表等。

实验方法:按照电路图连接电子元件,将数字显示屏连接到电路板上,接通电源后进行测试。

3. 实验步骤3.1 搭建电路根据提供的电路图,将电子元件按照正确的连接方式搭建在电路板上。

确保连接的准确性和稳定性。

3.2 连接数字显示屏将数字显示屏连接到电路板上的指定位置,注意极性的正确性。

3.3 接通电源将电路板连接到电源上,确保电源的稳定输出。

3.4 进行测试打开电源,观察数字显示屏上的显示情况。

通过调整电路中的元件,如电容和电阻的数值,观察数字显示屏上的时间变化。

4. 实验结果在实验过程中,我们成功搭建了数字钟电路,并进行了多次测试。

通过调整电路中的元件数值,我们观察到数字显示屏上的时间变化。

数字钟准确地显示了当前的时间,并且实时更新。

5. 讨论与分析通过本次实验,我们了解到数字钟的工作原理是通过电路中的集成电路和元件来控制数字显示屏的显示。

数字钟的精确性和稳定性取决于电路的设计和元件的质量。

在实际应用中,数字钟通常会采用更加精确的时钟芯片来保证时间的准确性。

6. 实验总结本次实验通过搭建数字钟电路并进行测试,使我们更加深入地了解了数字钟的工作原理和实现方式。

通过调整电路中的元件,我们观察到数字显示屏上的时间变化,验证了数字钟的准确性和实时性。

在今后的学习和工作中,我们将更加注重电路设计和元件的选择,以提高数字钟的精确性和稳定性。

7. 参考文献[1] 电子技术基础教程,XXX,XXX出版社,2010年。

[2] 数字电路设计与实验,XXX,XXX出版社,2015年。

8. 致谢感谢实验室的老师和同学们对本次实验的支持和帮助。

他们的耐心指导和积极讨论使本次实验取得了圆满成功。

数字钟实验报告5篇范文

数字钟实验报告5篇范文第一篇:数字钟实验报告数字钟实验报告班级:电气信息i类112班实验时间:实验地点:指导老师:目录一、实验目的-----------------3二、实验任务及要求--------3三、实验设计内容-----------3(一)、设计原理及思路3(二)、数字钟电路的设计--------------------------4(1)电路组成---------4(2)方案分析---------10(3)元器件清单------11四、电路制版与焊接---------11五、电路调试------------------12六、实验总结及心得体会---13七、组员分工安排------------19一、实验目的:1.学习了解数码管,译码器,及一些中规模器件的逻辑功能和使用方法。

2.学习和掌握数字钟的设计方法及工作原理。

熟悉集成电路的引脚安排,掌握各芯片的逻辑功能及使用方法了解面包板结构及其接线方法。

3.了解pcb板的制作流程及提高自己的动手能力。

4.学习使用protel软件进行电子电路的原理图设计、印制电路板设计。

5.初步学习手工焊接的方法以及电路的调试等。

使学生在学完了《数字电路》课程的基本理论,基本知识后,能够综合运用所学理论知识、拓宽知识面,系统地进行电子电路的工程实践训练,学会检查电路的故障与排除故障的一般方法锻炼动手能力,培养工程师的基本技能,提高分析问题和解决问题的能力。

二、实验任务及要求1.设计一个二十四小时制的数字钟,时、分、秒分别由二十四进制、六十进制、六十进制计数器来完成计时功能。

2.能够准确校时,可以分别对时、分进行单独校时,使其到达标准时间。

3.能够准确计时,以数字形式显示时、分,发光二极管显示秒。

4.根据经济原则选择元器件及参数;5..小组进行电路焊接、调试、测试电路性能,撰写整理设计说明书。

三、实验设计内容1、设计原理及思路 3.1数字钟的构成数字钟一般由振荡器、分频器、计数器、译码器、显示器、较时电路、报时电路等部分组成,这些都是数字电路中应用最广的基本电路3.2原理分析数字钟实际上是一个对标准频率(1hz)进行计数的计数电路。

数电数字钟实验报告

数电数字钟实验报告篇一:西安交大数电数字钟实验报告西安交通大学数字电子技术实验报告数字钟设计姓名:**学院:**学院班级:**22学号:212******5一、实验名称基于Verilog HDL设计的多功能数字钟二、试验任务及要求实验要求以Verilog HDL语言为手段,设计多功能数字钟。

多功能数字钟应该具有的功能有:显示时—分—秒、整点报时、小时和分钟可调等基本功能。

整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59分跳转到00分时,小时增加1小时,小时的范围为0~23时。

在实验中为了显示与编写方便,该设计采用一个位24位二进制码[23:0]cnt记录时间,每四位记录一个数,从高到低分别为时针十位、时针个位、分针十位、分针个位、秒针十位、秒针个位。

实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是1Hz时钟信号,但是扫描需要一个比较高频率的信号,因此为了得到准确的1Hz信号,必须对输入的系统时钟50Mhz进行分频。

关于调整时间功能,该设计采用四个按钮调整对应位的数值,从而调整时间。

三、实验条件该实验以Verilog HDL语言为手段,以Xilinx ISE Design Suite 13.4_1软件实现源程序的综合与仿真,并用BASYS2开发板作为目标器件。

四、设计过程1. 列写多功能数字钟设计--层次结构图2.拟定数字钟的组成框图,在Xilinx ISE Design Suite 13.4_1软件中,使用Verilog语言输入,采用分层次分模块的方法设计电路;3.设计各单元电路并进行仿真;4.对数字钟的整体逻辑电路图,选择器件,分配引脚,进行逻辑综合;5.下载到Basys2实验平台上,实际测试数字钟的逻辑功能。

五、 Verilog代码module clock(input clk,input en,input key1,input key2,input key3,input key4,output sec,output wire[7:0] seg,output wire[3:0] digit);wire[3:0] num0,mum1,num2,num3;disp u0(clk,num0,mum1,num2,num3,seg,digit);clk_gen u1(clk,en,key1,key2,key3,key4,sec,num0,mum1,num2,nu m3);endmodule//////////////////////////////////// module disp(input clk,input [3:0] num0,input [3:0] num1,input [3:0] num2,input [3:0] num3,output reg[7:0] sm_seg,output reg[3:0] an);reg[1:0] s;reg[3:0] digit;reg[16:0] clkdiv;always@(*)beginan=4'b1111;s an[s]=0;case(s)0:digit1:digit2:digit3:digit default:digit endcasecase(digit)4'h0 : sm_seg = 8'hc0;// "0" 4'h1 : sm_seg = 8'hf9;// "1" 4'h2 : sm_seg = 8'ha4;// "2" 4'h3 : sm_seg = 8'hb0;// "3" 4'h4 : sm_seg = 8'h99;// "4" 4'h5 : sm_seg = 8'h92;// "5" 4'h6 : sm_seg = 8'h82;// "6" 4'h7 : sm_seg = 8'hf8;// "7" 4'h8 : sm_seg = 8'h80;// "8" 4'h9 : sm_seg = 8'h90;// "9" default : sm_seg = 8'hff;// "x" endcase endalways@(posedge clk)clkdiv Endmodule/////////////////////////////////////////// module clk_gen(input clk,input en,input bt0,input bt1,input bt2,input bt3,output reg sec,output [3:0] num0,output [3:0] num1,output [3:0] num2,output [3:0] num3);reg[25:0] ctr;reg[3:0] mytime[3:0];reg[7:0] s;assign num0=mytime[0];assign num1=mytime[1];assign num2=mytime[2];assign num3=mytime[3];always@(posedge clk)beginctr if(ctr==-1)beginctr sec endend//wire sen;//assign sen=(sec)|(bt0)|(bt1)|(bt2)|(bt3);always@(negedge sec)if(!en)beginif(bt0)beginmytime[0] if(mytime[0]==9) mytime[0] else if(bt1)beginmytime[1] if(mytime[1]==5) mytime[1] else if(bt2)beginmytime[2] if(mytime[2]==9) mytime[2] else if(bt3)beginmytime[3] if(mytime[3]==2) mytime[3] end elsebegins if(s==59)篇二:数电课程实验报告——数字钟的设计《数字电子技术》课程设设计题目:班级学号:学生姓名:指导教师:时间:计报告数字钟的设计 XX年12月27日~XX年1月2日《数字电子技术》课程设计任务书一、设计题目:数字钟的设计二、设计任务与要求:1.时钟显示功能,能够以十进制显示“时”、“分”、“秒”。

数字时钟的设计实习报告

数字时钟的设计实习报告一、实习目的本次实习旨在通过设计一个数字时钟,使学生掌握数字电路的设计方法,熟悉集成电路的使用,提高对单片机的学习和应用能力,培养学生的软硬件开发能力。

二、实习内容1. 设计一个数字时钟,能够显示时分秒。

2. 掌握数字时钟的设计方法。

3. 熟悉集成电路的使用方法。

4. 培养学习、设计、开发软、硬的能力。

三、实习过程1. 首先,我们对数字时钟的设计进行了需求分析,明确了数字时钟的功能和要求。

数字时钟应能够显示时分秒,采用24小时标准计时制。

2. 接下来,我们进行了数字时钟的设计方案制定。

数字时钟主要由单片机、LED数码管、按键等部分构成。

单片机负责控制整个系统,LED数码管用于显示时间,按键用于调整时间。

3. 然后,我们进行了数字时钟的硬件设计。

我们选择了AT89C52单片机作为核心控制器,6个共阳极的高亮度LED数码管用于显示时间,还选择了两个按键用于调整时间。

4. 在硬件设计的基础上,我们进行了数字时钟的软件设计。

我们编写了程序,使单片机能够控制LED数码管显示时间,并能够通过按键调整时间。

5. 最后,我们对数字时钟进行了测试和调试,确保其功能的正确性和稳定性。

四、实习心得通过本次实习,我们掌握了数字时钟的设计方法,熟悉了集成电路的使用方法,提高了对单片机的学习和应用能力。

我们在设计过程中,学会了如何分析需求、制定方案、设计硬件和软件,并通过测试和调试,确保设计的正确性和稳定性。

此外,我们还学会了如何协作和沟通,提高了团队协作能力。

在设计过程中,我们遇到了很多问题,但通过互相讨论和请教老师,我们逐一解决了问题,取得了实习的成功。

五、实习成果本次实习,我们成功设计了一个数字时钟,能够显示时分秒,并具有时间调整功能。

数字时钟的硬件电路稳定运行,软件程序正确无误。

六、实习展望在今后的学习和工作中,我们将继续深入学习数字电路和单片机的相关知识,提高自己的设计能力和开发水平。

我们还将把在实习中学到的知识和技能应用到实际项目中,为我国电子行业的发展做出贡献。

数字时钟毕业设计:具有整点报时及校时功能的数字钟系统设计

本科毕业设计论文题目:具有整点报时及校时功能的数字钟系统设计系别: 电气与信息工程系专业:电气工程及其自动化班级:学号学生姓名:指导教师:2015 年 6 月2摘要摘要现代社会的快节奏生活让人们对时间观念越来越重视,对时间的精确性要求也越来越高,这就催生了数字电子时钟的飞速发展。

数字钟就是采用数字电路来实现对“时”、“分”、“秒”数字显示的计时装置。

数字钟的精度、稳定度都优于老式机械钟。

本次设计利用中规模器件实现数字时钟系统,由555定时器构成多谐振荡电路产生振荡脉冲由计数器计数再经译码器译码后产生驱动数码显示器的信号,使数码显示器呈现出“时”“分”“秒”对应的计时数字;电路还增加了校正电路和整点报时电路,对时钟进行校时和校分,使其准确的工作,在整点的时候发出警报。

数字钟及扩大其应用,有着非常现实的意义。

在此次设计中,应用Protel99se软件进行相关电气原理图的绘制和PCB的制作,采用了74LS系列的芯片实现数字钟的计时、译码各部分功能,辅助以必要的电路,实现高效、准确、使用简便的数字电子时钟系统。

本次对数字时钟的研究,使我对数字电子技术有了更深刻的了解和掌握,更促进了我对理论知识和实践相结合的认识,为以后在专业上的发展奠定了基础。

关键词:数字时钟,数字电路,中规模器件I西安交通大学城市学院本科生毕业设计(论文)IIABSTRACTABSTRACTThe fast rhythm of social life now let people take more and more attention to the concept of time, the accuracy of time requirements also more and more high, this has given rise to the rapid development of digital clock. Digital clock is a digital circuit is used to realize the ‘‘hour” ‘‘minute” ‘‘second” digital display timer. The digital clock precision, stability is superior to the old mechanical clock.This design using MSI devices to achieve a digital clock system, is composed of 555 timer composition multivibrator circuit oscillation pulse is counted by the counter and decoder produces driving digital display signal, the digital display shows "hour", " minute", "second" corresponding to the digital timing; circuit also increases the correction circuit and the whole point timekeeping circuit, the clock, school and school, make its accurate work, when the whole point of alerts.In the design, application Protel99se software related electrical schematic drawing and PCB production. Using a series of 74 chips implementation of digital electronic clock timing, decoding function of each part, auxiliary to the necessary circuit, efficient, accurate and easy to use digital electronic clock system. The study of the digital clock, so I have a more profound understanding and grasp of digital electronic technology, but also to promote the understanding I of theoretical knowledge and practical combination of, laid the foundation for the future development of the professional.KEY WORDS: Gigital clock, Gigital circuit, Medium scale componentsIII西安交通大学城市学院本科生毕业设计(论文)IV目录目录摘要 (I)ABSTRACT.......................................................... I II 1绪论.. (1)1.1课题背景 (1)1.2选题的目的和意义 (1)1.3主要工作 (2)2数字时钟系统的工作原理 (3)2.1数字时钟设计的基本要求 (3)2.2数字时钟的工作原理 (3)3数字时钟系统的设计 (5)3.1振荡电路的设计 (5)3.2分频电路的设计 (7)3.3时分秒计时电路的设计 (10)3.4译码显示电路的设计 (14)3.5校时校分电路的设计 (17)3.6整点报时电路的设计 (18)4数字时钟系统的绘制、制作和调试 (20)4.1数字时钟的绘制过程 (20)4.2数字时钟的制作过程 (21)4.3数字时钟的调试过程和问题总结 (22)5总结与展望 (24)5.1设计的结论与感想 (24)5.2设计的不足与展望 (24)致谢 (26)参考文献 (28)外文翻译 (35)V西安交通大学城市学院本科生毕业设计(论文)VI绪论1绪论数字钟是一种用数字集成电路或专用芯片做成的计时器,即利用数字电路技术来实现对时、分、秒计时和控制的电子装置,与传统的机械时钟相比而言,数字钟具有更高的精确性和直观性,由于数字集成电路的发展和的相关芯片的广泛使用,并且数字钟无机械装置,也具有更长的使用寿命,这些优点使得数字钟的使用范围远远的超过了老式钟表,而且极大的扩展了钟表原先的具有报时功能,如定时自动警报功能、按时响铃、对程序的自动控制、定时广播、定时通断动力设备、甚至用于各种电气设备的定时自动启用等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安交通大学实验报告
数字钟设计
一、设计内容与要求
1、在basys2开发板上运行有关程序。

2、设计一个完整的数字钟,小时和分钟用数码管显示,秒用发光二极管闪烁显示,每秒闪烁一次。

3、增加清零和校时功能。

二、总体设计思路
1、采用421BCD计数,并在一个模块中实现时钟功能的Verilog程序。

2、由主时钟(50MHZ)分频得到秒信号,记秒到60时分加1,秒清零,几时到60时,时加1,分清零,记时到24时,时清零。

3、由四个数码管显示小时和分钟,LED M5作为秒信号显示。

4、通过数码管下方对应的两个的两个开关进行校时,按下时对应分或时加一。

5、通过开关P11实现清零,高电平时时钟清零。

三、源代码
module Clock(
input wire clk,
input wire clr,
input wire set1,
input wire set2,
output Second_Flash,
output reg [6:0] a_to_g,
output reg [3:0] an
);
//中间变量定义
//reg [3:0] LED0_num,LED1_num,LED2_num,LED3_num;
reg [1:0] s;
reg [3:0] digit;
reg [16:0] clkdiv; //(1FFFF)*20ns=2.6ms
reg [26:0] q1; //设一足够长的计数器
reg sec;
reg [3:0] Second_L;
reg [3:0] Second_H;
reg [3:0] Minute_L;
reg [3:0] Minute_H;
reg [3:0] Hour_L;
reg [2:0] Hour_H;
//动态数码管扫描显示
always @ ( * )
begin
an = 4'b1111; //禁止所有数码管显示
s <= clkdiv[16:15]; //间隔2.6ms使能An
an[s] = 0; //根据s使能数码管其中之一
case (s) //根据s取对应的数码管上要显示的数据
0: digit <= Hour_H[2:0];
1: digit <= Hour_L[3:0];
2: digit <= Minute_H[3:0];
3: digit <= Minute_L[3:0];
default: digit <= Hour_H[2:0];
endcase
case (digit) // 7段译码表
0: a_to_g = 7'b0000001;
1: a_to_g = 7'b1001111;
2: a_to_g = 7'b0010010;
3: a_to_g = 7'b0000110;
4: a_to_g = 7'b1001100;
5: a_to_g = 7'b0100100;
6: a_to_g = 7'b0100000;
7: a_to_g = 7'b0001111;
8: a_to_g = 7'b0000000;
9: a_to_g = 7'b0000100;
'hA: a_to_g = 7'b0001000;
'hB: a_to_g = 7'b1100000;
'hC: a_to_g = 7'b0110001;
'hD: a_to_g = 7'b1000010;
'hE: a_to_g = 7'b0110000;
'hF: a_to_g = 7'b0111000;
default: a_to_g = 7'b0000001; // 0
endcase
end
// 主时钟计数: 50MHz的时钟,周期为20ns,计数到1ffffh时的时长2621420ns,约2.6ms
always @ (posedge clk)
begin
clkdiv <= clkdiv + 1;
end
// 时钟程序:计数到50000000为1s,计秒得分always @ (posedge clk or posedge clr )
begin
if (clr )
q1 <= 0;
else if (Second_L>=10)
begin
Second_L<=0;
Second_H<=Second_H+1;
end
else if(Second_H>=6)
begin
Second_L<=0;
Second_H<=0;
Minute_L<=Minute_L+1;
end
else if (Minute_L>=10)
begin
Minute_L<=0;
Minute_H<=Minute_H+1;
end
else if(Minute_H>=6)
begin
Minute_L<=0;
Minute_H<=0;
Hour_L<=Hour_L+1; end
else if(Hour_L>=10)
begin
Hour_L<=0;
Hour_H<=Hour_H+1;
end
else if(Hour_L>=4&&Hour_H>=2)
begin
Hour_L<=0;
Hour_H<=0;
end
else if(set1&&q1==10000000)
begin
q1<=0;
Hour_L<=Hour_L+1;
end
else if(set2&&q1==10000000)。

相关文档
最新文档