设计一个能显示时、分、秒的简易数字钟

合集下载

毕业设计76简易数显电子钟设计

毕业设计76简易数显电子钟设计

摘要:简易数显电子钟主要有三部分构成:函数信号发生器计时电路整点报时。

晶振提供一个频率稳定准确的32768Hz的信号,经过分频器分频的到1Hz稳定准确的函数信号,做为计数器的脉冲信号,六个计数器串行连接,分别采用十进制和六进制计数(时十位为三进制计数),通过7448译码器和显示器显现出来,计数周期为24小时。

当分钟两位同时为零时通过单稳态触发和0.5Hz函数信号共同作用多谐振荡,通过控制单稳态触发时间来控制多谐震荡时间,从而控制响铃时间。

关键字:晶体振荡器、分频器、译码显示Abstract:The simple number reveals the electron clock mainly to have three parts of constitutions:The function signal generating device timing circuit integral point reports time.The crystal oscillator provides frequency stable accurate 32768Hz the signal.After frequency divider frequency division to 1Hz stable accurate function signal,Does for the counter pulse signal.Six counter serial connections,Uses the decimal base and the senary counting separately (when ten for ternary notation counting).Comes out through 7448 decoders and the monitor appearances,The counting cycle is 24 hours.When at the same time minute two affects the multi-harmonic vibrations together for the zero hour through monostable triggering and the 0.5Hz function signal,Through controls the monostable triggering time to control the multi-harmony shake time,Thus control bell time.Keywords:crystal oscillator、the frequency divider、decoding display目录一.前言 3二.慨述与基本组成 5三.单元模块设计1.电源信号 52.信号发生器 71)晶体振荡电路 82)分频电路 93.计数器 101)分.秒计数器 112)时计数器 124.译码显示电路 135.自动报时电路 16四.主要元器件介绍 181.CD4060 182.555 183.74LS161 24五、系统功能、指标参数 25六、设计总结 26 附录 27前言:电子技术基础课程设计是在“电子技术基础”课程之后,集中安排的重要实践性教学环节。

简易数字钟的设计

简易数字钟的设计

第三单元简易数字钟的设计数字钟是一种用数字显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无需机械传动等优点。

因而得到了广泛的应用。

小到人们日常生活中的电子手表,大到车站、码头、机场等公共场所的大型数字电子钟,数字钟到处可见。

在数字电路的学习中,已经学习过用计数器芯片搭建数字钟。

51单片机内部集成了定时器/计数器,这为构建数字钟带来了方便。

在本单元中,学习如何用51单片机来构建一个功能数字钟。

【任务要求】➢在6个数码管上显示时、分、秒,共6位数字。

➢通过单片机内部定时器控制走时,走时准确。

➢系统有四个按键,功能分别是调整时间,加,减,确定。

在按下调整键时候,显示“时”的两位数码管以1 Hz 频率闪烁。

如果再次按下调整键,则“分”开始闪烁,“时”恢复正常显示,依次循环,直到按下确定键,恢复正常的显示。

在数码管闪烁的时候,按下加或者减键可以调整相应的显示内容。

按键支持短按和长按,即短按时,所修改的数字每次增加1或者减小1,长按时候以一定速率连续增加或者减少10。

【学习知识点】➢数码管的原理,驱动程序的实现。

➢51单片机内部定时器的原理及应用➢独立按键的原理及程序的实现。

【内容安排】第一节:数码管显示原理及应用实现第二节:独立按键检测原理及应用实现第三节:计时的原理及实现第四节:基于定时器的程序改进第五节:数字钟的构建第一节数码管显示原理及应用实现1.1 数码管显示原理数字钟要把时间显示到数字显示装置上,常用的数字显示装置有数码管、液晶、LED、CRT显示器等。

在单片机系统设计中,LED数码管是最基本的显示装置。

在数字钟的设计中我们用数码管对中的小时、分和表来进行显示。

LED数码管能显示各种数字或符号,由于它具有显示清晰、亮度高、寿命长、价格低廉等特点,因此使用非常广泛。

图1.1是几个数码管的图片:a图为单位数码管, b图为双位数码管,c图为四位数码管。

a 单位数码管b 双位数码管c 四位数码管图1.1 数码管图片那么数码管是如何的工作呢?还记得我们小时候玩过的“火柴棒游戏”吗,几根火柴组合起来,可以拼成各种各样的图形,数码管实际上就是利用这个原理做成的。

简易数字钟

简易数字钟

置数
10 Q3 D3 7 9 ET T LD ET P VSS 8
40161功能表
CR LD CP ET 操作状态
0 1 1 x 0 1 x x x 0 异步清零 同步预置 保持
清零
数据输入 置数
使能
1
1

1
计数
ET=ETT&ETP
CO=Q3Q2Q1Q0
6
40161的时序波形图
CR LD
数 据 输 入
•进位信号
+VDD CTP CTT 7 10
+VDD
D3 D2 D1 D0 CP 6 5 4 3 2
D3 D2 D1 D0 CP 6 5 4 3 2
CP •十位为5,并且个位为9才在下一 CP上升沿置零 •十位为5,并且个位为9才使能下 •各级的计数使能信号与置数使能信号,来 一级的计数(进位) 自后一级的进位信号
3
• 分和秒计数器都是模M=60的计数器 • 时计数器是一个24进制计数器
三、时、分、秒计数器的设计
– 其计数规律为00—01—…—58—59—00… – 其计数规律为00—01—…—22—23—00… – 即当数字钟运行到23时59分59秒时,秒的 个位计数器再输入一个秒脉冲时,数字钟 应自动显示为00时00分00秒。
D0 D1 D2 D3 1 CP ET P ET T Q0 Q1 Q2 Q3 CO 12 13 14 15 0 1 2 2 3 8 9
输 出
异步 清零
同步 预置
计数
7
保持
四、构成任意进制计数器
1 +VDD 11 12 13 14 7 10 9 CTP CTT LD 2 Q3 Q2 Q1 Q0 CC40161 D3 D2 D1 D0 6 5 4 3 CP CR 1 7 10 1 0 1 0 & +VDD 11 12 13 14 CTP CTT CR 2 Q3 Q2 Q1 Q0 CC40161 LD 9 1 0 0 1 &

设计制作电子时钟

设计制作电子时钟

设计制作简易数字钟一、设计要求1、设计一振荡源,用于产生1Hz的脉冲信号;2、能完成从00时00分00秒到23时59分59秒走时,并实时显示时、分、秒;3、具有手动校时、校分、校秒功能。

发挥部分:具有正点报时功能。

要求在59分58秒开始报时,持续5秒钟。

二、总体设计方案1、方案选择数字钟实际上是由一个对标准频率(1HZ)进行计数的计数电路为主要部分构成的。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ 时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路来构成数字钟的标准时间基准信号。

数字钟的组成框图如下图所示。

数字钟计时周期是24,因此必须设置24 计数器,秒、分、时由七段数码管显示。

为使数字钟走时与标准时间一致,校时电路是必不可少的。

设计中采用状态机控制校时,通过切换开关用秒脉冲或手动按键产生脉冲先后对“时” “分” “秒”计数器进行校时操作。

2、数字钟的构成(1)数字钟的构成:振荡器、分频器、计数器、译码器、LED数码管显示器等几部分。

附加功能的实现还需采用T’触发器及与门和或门及蜂鸣器组成报时电路。

(2)数字钟的时、分、秒实际上就是由一个24 进制计数器(00-23),两个60 进制计数器(00-59)级联构成。

设计数字钟实际上就是计数器的级联。

(3)芯片选型:由于24进制、60进制计数器均由集成计数器级联构成,且都包含有基本的十进制计数器,从设计简便考虑,芯片选择十进制计数器74LS390。

3、元器件列表:型号74LS00、74LS04、74LS08、74LS21、74LS32、74LS47、74LS74、74LS86、74LS390、CD4068、CD4060、CD4511。

晶体管8050、510欧姆电阻、LED、轻触开关、自锁开关、蜂鸣器、10p电容、晶振32768、10M电阻。

三、系统工作原理1、主计数部分原理图图1主计数部分原理图如图所示,用两个十进制计数器74LS390组成60进制计数器和24进制计数器,分别用于对分、秒和时的计数。

基于FPGA的数字钟设计

基于FPGA的数字钟设计

数字钟的设计一、 设计要求设计一个数字钟,要求用数码管分别显示时、分、秒的计数,同时可以进行时间设置,并且要求在整点的时候能够实现报时功能。

二、 设计原理计数器在正常工作下是对1Hz的频率计数,在调整时间状态下是对调整的时间模块进行计数;控制按键来选择是正常计数还是调整时间,并决定是调整时还是分;时间显示的LED数码管采用动态扫描实现;在整点到达时,还具有整点报时功能。

三、 电路符号数字钟电路符号如下图所示。

CLK2为分频之前的信号,CLR为清零端,CCK 为校时允许端。

MC为分信号调整端,HC为时信号调整端。

HH[3..0]为时高位,HL[3..0]为时低位,MH[3..0]为分高位,ML[3..0]为分低位,SH[3..0]为秒高位,SL[3..0]为秒低位。

DOUT[6..0]是数码管驱动,SEG[5..0]是位选择信号,RING是整点报时信号。

四、 设计方法本设计的电子时钟包括:分频模块、计时模块、校时模块、动态扫描译码显示模块和整点报时模块。

下面通过各个模块的设计来了解电子时钟的构成:一、 分频模块程序附录:module clk2clk1s(clk,clk1s); input clk;output clk1s;reg clk1s;reg [3:0] cnt;always@(posedge clk)if(cnt==4'b1111)beginclk1s<=~clk1s;cnt<=0;endelsecnt<=cnt+1; endmodule波形仿真:二、 计时模块六十进制计数器六十进制计数器程序附录:六十进制计数器模块:module m60(clk,clr,qh,ql,cao);input clk,clr;output cao;output[3:0] qh,ql;reg [3:0] qh,ql;reg cao;always @(posedge clk or negedge clr) beginif(clr==0)beginqh<=4'h0;ql<=4'h0;cao<=0;endelse if(ql==9)beginql<=0;if(qh==5)beginqh<=0;cao<=1;endelse qh=qh+1;endelsebeginql<=ql+1;cao<=0;endendendmodule二十四进制计数器模块:module m24(clk,clr,qh,ql);input clk,clr;output[3:0] qh,ql;reg [3:0] qh,ql;always @(posedge clk or negedge clr) beginif(clr==0)beginqh<=4'h0;ql<=4'h0;endelse if(qh==2)beginql<=ql+1;if(ql==3)beginqh<=0;ql<=0;endendelse if(ql==9)beginqh<=qh+1;ql<=0;endelseql<=ql+1; end endmodule波形仿真:清零清零正常计时三、 校时模块四、 动态译码显示模块CCK 为0不支持校时,有进位信号时产生分(时)脉冲程序附录:1、位扫描信号(HH,HL,MH,ML,SH,SL逐位扫描,并输出)module sel(clk,hh,hl,mh,ml,sh,sl,out);input clk;input [3:0] hh,hl,mh,ml,sh,sl;output [3:0] out;reg [3:0] out;reg [3:0] ss=0;always @(posedge clk)beginif(ss<4'b0101)ss<=ss+1;elsess<=0;endalways @(posedge clk)begincase(ss)4'd0:out<=sl;4'd1:out<=sh;4'd2:out<=ml;4'd3:out<=mh;4'd4:out<=hl;4'd5:out<=hh;endendmodule仿真图:2、段扫描信号(选择数码管点亮哪一位)module seg(clk,seg);input clk;output [5:0] seg;reg [5:0] seg;reg [3:0] ss=0;always @(posedge clk)beginif(ss<4'b0101)ss<=ss+1;elsess<=0;endalways @(posedge clk)begincase(ss)4'd0:seg<=6'b111110;4'd1:seg<=6'b111101;4'd2:seg<=6'b111011;4'd3:seg<=6'b110111;4'd4:seg<=6'b101111;4'd5:seg<=6'b011111;default:seg<=6'b111111;endcaseend3、4—7译码module decode4_7(decodeout,indec); output[6:0] decodeout;input[3:0] indec;reg[6:0] decodeout;always @(indec)begincase(indec)4'd0:decodeout=7'b1111110;4'd1:decodeout=7'b0110000;4'd2:decodeout=7'b1101101;4'd3:decodeout=7'b1111001;4'd4:decodeout=7'b0110011;4'd5:decodeout=7'b1011011;4'd6:decodeout=7'b1011111;4'd7:decodeout=7'b1110000;4'd8:decodeout=7'b1111111;4'd9:decodeout=7'b1111011;default: decodeout=7'b0000000;endcaseendendmodule五、 整点报时模块六、 数字钟仿真图数字钟的设计注:动态扫描的时钟频率尽量要快。

带有秒表功能数字时钟的设计

带有秒表功能数字时钟的设计

带有秒表功能数字时钟的设计摘要:本次设计以AT89C52芯片为核心,辅以必要的外围电路,设计了一个简易的数字电子时钟,它由9V直流电源供电。

在硬件方面,除了CPU外,使用六个七段LED数码管显示,LED采用的是动态扫描显示,通过调试LED能够比较准确显示时、分、秒。

四个个简单的按键实现对时间的调整。

软件方面采用。

整个电子时钟系统能够完成时间的显示,调时,定时闹钟,复位等功能。

软件方面采用汇编语言编程,使用keil软件进行在线的程序烧写,涉及了单片机的定时和中断的使用关键词:数字钟;秒表;AT89C52;The Design and Manufacture of Digital Electron ClockAbstract:The AT89C2051 chip design at the core,with the necessary peripheral circuits,designed a simple digital clock, it is powered by 9V DC power supply. In terms of hardware, in addition to CPU, the use of six LED Seven-Segment LED display, LED used is a dynamic scan showed that the use of 9014 to drive the chip. Through more accurate debug LED can display hours, minutes. Three simple keys to achieve the adjustment of time. Software using assembly language programming. The entire electronic time clock system to complete the display, transfer, the timing clock and reset functions.Software using assembly language programming, the use of online keil software programmer procedures, involving a single-chip timing and the use of interruptions.Key words:electron clock;51 series MCU;AT89C52;目录摘要 (I)Abstract (II)第一章绪论 (1)1.1选题的依据及意义 (1)1.2 国内外研究现状及发展趋势 (1)1.3 本课题研究内容 (2)1.4 论文框架 .................................................................................................. 错误!未定义书签。

简易数字钟设计

简易数字钟设计
5.很多难点的突破都来自于与同学的交流,交流使自己获得更多信息,开拓了思路,因此要重视与别人的交流。
调整使能端
入0有效,有效时,显示信号输出,同时屏蔽进位输入和进位输出,允许调整信号输入。
显示使能端
入0有效
调整信号输入
2.24进制模块(24count)
实现同步24进制计数,可调整
电源,时钟信号
同上
进位输入
接分的进位信号
进位输出
秒模块接分模块,分模块接时模块
显示输出
同上
闹钟比较信号输出
接到闹钟
调整使能端,显示使能端,调整信号输入
二、任务分析
能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。
三、总体设计
本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。
方案一、采用异步电路,数据选择器
将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:
同上
3.闹钟模块(60clock,24clock)
实现可与时钟比较,并输出闹铃信号,可调整
电源,时钟信号
同上
闹钟比较信号输入
秒模块接分模块,分模块接时模块
显示输出
同上
闹铃输出
接到蜂鸣器
调整使能端,显示使能端,调整信号输入
同上
4.控制模块(fun,func)
管理总线资源,对各个模块输出控制信号
电源
5vVCC
该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。

自制可调式数字时钟完整版

自制可调式数字时钟完整版

《综合设计实训I》可调式数字时钟姓名:学号:班级:实训地点:指导教师:通信与电子学院编制年月日一、设计要求数字时钟是采用数字电路实现对年,月,日,时,分,秒数字显示的计时装置,广泛用于个人,家庭,车站,码头,办公室等公共场所,成为人们日常生活中的必需品。

1,、设计时可以利用单片机内部定时器,也可以利用外部实时时钟芯片。

(I/O,I2C总线)2、有年,月,日,时,分,秒功能,而且要能够校正前面五项。

3、显示时可以用8位数码管,也可以用LCD液晶屏。

(年只需显示后2位)4、可选功能:闹钟功能。

二、设计方案1、芯片分析AT89C51引脚图管脚说明:VCC:供电电压。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

二.设计的主要内容和要求

二.设计的主要内容和要求

二.设计的主要内容和要求主要内容:设计一个能显示时、分、秒的简易数字钟,具有时间调整功能,利用GW48-PK2系统上的数码管显示时间,调整时间用的按键也使用GW48-PK2系统上的按键。

设计要求:根据系统设计内容,系统设计采用自顶向下的设计方法,系统的整体组装由秒计数模块、分计数模块、小时计数模块、顶层模块四部分组成。

三.设计思想及说明通过查找大量的资料,根据设计要求,我们总结出了大体的设计方案,整个电路可以由四大模块组成,我们先根据要求设计出秒、分、时计数模块的VHDL程序,并进行编译、模拟、仿真、,然后画出系统的整体组装设计原理图(见下面五),再利用元件列化语句实现各个模块之间的连线,即建立顶层文件,然后对顶层文件进行编译、模拟、仿真、综合、引脚锁定、下载及硬件测试等。

四.设计采用的硬件和软件环境和条件硬件环境:普通台式电脑一台,FPGA实验箱一台。

CPLD/FPGA是80年代中后期出现的,其特点是具有用户可编程的特性。

利用PLD/FPGA,电子系统设计工程师可以在实验室中设计出专用IC,实现系统的集成,从而大大缩短了产品开发、上市的时间,降低了开发成本。

此外,CPLD/FPGA还具有静态可重复编程或在线动态重构特性,使硬件的功能可象软件一样通过编程来修改,不仅使设计修改和产品升级变得十分方便,而且极大地提高了电子系统的灵活性和通用能力。

软件环境:windows xp 操作系统,Altera公司的QuartusⅡ4.2。

Altera的Quartus II设计软件是业内第一个,也是唯一的为FPGA、CPLD和结构化ASIC 开发提供统一标准设计流程的设计工具。

Quartus II设计软件具有业内最先进的功能,支持自下而上的设计流程,可以独立生成设计模块并进行优化。

系统设计人员可以逐步集成经过优化的设计模块,在整个集成过程中保持设计模块的性能不变。

它可以加速系统性能,扩展系统功能,轻松处理潜在的设计延时,例如到达推后、布局布线后期设计更改等强大功能。

简易电子钟设计范文

简易电子钟设计范文

简易电子钟设计范文电子钟是一种通过电子技术实现时间显示的设备。

它通常由一个数字显示屏,一个控制电路和一个电源组成。

其主要功能是显示小时、分钟和秒钟等时间信息,可以准确地显示时间,并可以根据需要设置闹铃功能。

设计一款简易电子钟可以使用Arduino等开发板或单片机来实现。

首先,我们需要选择一块合适的数字显示屏。

常见的数字显示屏有数码管和液晶显示屏两种类型,它们的显示原理和控制方式有所不同。

如果选择数码管作为显示屏,可以考虑使用常见的7段数码管,它由八个LED灯组成,可以显示0-9的数字以及一些字母和特殊符号。

数码管的控制方式是通过控制每个LED灯的亮灭来实现显示,可以使用数字输出口来控制。

Arduino的数字输出口可以输出高电平(5V)和低电平(0V),通过控制输出口的电平,就能够控制数码管的亮灭。

如果选择液晶显示屏作为显示器,可以选择字符型液晶显示屏或者图形型液晶显示屏。

字符型液晶显示屏通常可以显示一些字符或者数字,它的控制方式是通过并行或者串行接口来控制,可以使用开发板的GPIO口来实现。

图形型液晶显示屏可以显示更多的信息,它的控制方式是通过SPI接口或者I2C接口来控制,这需要相应的驱动库或者芯片来实现。

无论选择数码管还是液晶显示屏,我们都需要编写程序来控制显示。

程序的核心是一个循环,其中使用时钟模块来获取当前的时间,并使用相应的控制方式将时间信息显示在显示屏上。

如果需要设置闹铃功能,可以在循环中判断当前时间和设置的时间是否相等,如果相等则触发闹铃。

设计一个简易电子钟的完整步骤如下:1. 选择适合的开发板或者单片机,例如Arduino。

2.选择合适的显示屏,例如7段数码管或者液晶显示屏。

3.连接显示屏到开发板,根据显示屏的类型选择合适的引脚连接方式。

4.编写代码来控制显示屏显示时间信息。

5.添加时钟模块,用来获取当前的时间信息。

6.根据需要添加闹铃功能。

7.测试电子钟的功能和性能,不断优化改进。

vhdl实验报告--数字钟

vhdl实验报告--数字钟

VHDL实验报告一、实验目的1、设计一个24小时制数字钟,要求能显示时,分,秒,并且可以手动调整时和分。

2、通过复杂实验,进一步加深对VHDL语言的掌握程度。

二、实验原理数字钟的主体是计数器,它记录并显示接收到的秒脉冲个数,其中秒和分为模60计数器,小时是模24计数器,分别产生3位BCD码。

BCD码经译码,驱动后接数码管显示电路。

秒模60计数器的进位作为分模60计数器的时钟,分模60计数器的进位作为模24计数器的时钟。

为了实现手动调整时间,在外部增加了setm(调整分),seth(调整时)按键,当这两个按键为低电平时,电路正常计时,当为高电平时,分别调整分,时。

同时在外部还增加了一个清零按键clr.和消抖动电路。

三、实验步骤1、单元模块设计部分1)消抖动电路关键部分signal key_in1,key_in2:std_logic:='0';beginprocess(clk,key_in)beginif clk'event and clk='1' thenkey_in1<=key_in;key_in2<=key_in1;if key_in='1' and key_in1='1' and key_in2='1' then key_out<='1';else key_out<='0';end if;2) 模60计数器程序关键部分:signal md_temp,mg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr)beginif clr='1' thenmd_temp<="0000"; mg_temp<="0000";elsif set='1' thenmd_temp<=setl; mg_temp<=seth;elsif clk'event and clk='1' thenif md_temp="1001" thenmd_temp<="0000";mg_temp<=mg_temp+'1';else md_temp<=md_temp+'1';if md_temp="1001" and mg_temp="0101" thenmd_temp<="0000";mg_temp<="0000";2、模24计数器程序关键部分signal hd_temp,hg_temp:std_logic_vector(3 downto 0);beginprocess(clk,clr,set,setl,seth)isbeginif set='1' then hd_temp<=setl; hg_temp<=seth;elsif clr='1' then hd_temp<="0000"; hg_temp<="0000";elsif clk'event and clk='1' thenif hg_temp="0010" and hd_temp="0011" thenhd_temp<="0000"; hg_temp<="0000";elsif hd_temp="1001" thenhg_temp<=hg_temp+'1' hd_temp<="0000";else hd_temp<=hd_temp+'1';end if;end if;end process ;3、清零和调时部分显示部分关键程序process (sd,sg,md,mg,hd,hg)begincase sd iswhen "0000" =>sl<="1111110";when "0001" =>sl<="0110000";when "0010" =>sl<="1101101";when "0011" =>sl<="1111001";when "0100" =>sl<="0110011";when "0101" =>sl<="1011011";when "0110" =>sl<="1011111";when "0111" =>sl<="1110000";when "1000" =>sl<="1111111";when "1001" =>sl<="1111011";when others =>sl<="0000000";end case;if clk_g'event and clk_g='1' thenif sel="101" thensel<="000";else sel<=sel+'1';end if;end if;process(sel,sd,sl,sg,sh,md,ml,mg,mh,hd,hl,hg,hh)begincase sel iswhen"000"=>led<=sl;led_which<=sd;when"001"=>led<=sh;led_which<=sg;when"010"=>led<=ml;led_which<=md;when"011"=>led<=mh;led_which<=mg;when"100"=>led<=hl;led_which<=hd;when"101"=>led<=hh;led_which<=hg;when others=>led<="0000000";led_which<="0000";end case;4、顶层文件关键程序port(clk,clk_g:in std_logic;-----clk_g是用在数码管显示里面的信号clr: in std_logic;------clr=1时清零setm,seth:in std_logic;---------setm为1时调分,seth为1时调时setd,setg:in std_logic_vector(3 downto 0);----调整时间的时候,setd调整的是低位setg 调整高位led:out std_logic_vector(6 downto 0);sel_out: out std_logic_vector(2 downto 0);led_which: out std_logic_vector(3 downto 0));---输出的是秒分时的哪一个beginu1:de_shake port map (clk=>clk,key_in=>clr,key_out=>clro);u2:de_shake port map (clk=>clk,key_in=>setm,key_out=>setmo);u3:de_shake port map (clk=>clk,key_in=>seth,key_out=>setho);u4:s60 port map (clk=>clk,clr=>clro,sd=>sdl,sg=>sgh,fenmaichong=>fenmaichong o);u5:m60 port map (clk=>fenmaichongo,clr=>clro,md=>mdl,mg=>mgh,xiaoshimaichong=> xiaoshimaichongo,setl=>setd,seth=>setg,set=>setmo);u6:h24 port map (clk=>xiaoshimaichongo,clr=>clro,hd=>hdl,hg=>hgh,set=>setho,se tl=>setd,seth=>setg);u7:led_xs port map (clk_g=>clk_g,sd=>sdl,sg=>sgh,md=>mdl,mg=>mgh,hd=>hdl, hg=>hgh,led=>led,sel_out=>sel_out,led_which=>led_which);四、实验结果及分析本设计,满足了本次试验设计的任务要求,能显示时分秒,并且可以手动调节分和时。

利用单片机的定时器设计一个数字时钟

利用单片机的定时器设计一个数字时钟

利用单片机的定时器设计一个数字时钟数字时钟是我们日常生活中常见的计时工具,可以准确地显示当前的时间。

而单片机的定时器则可以提供精准的定时功能,因此可以利用单片机的定时器来设计一个数字时钟。

本文将介绍如何使用单片机的定时器来设计一个基于数字显示的时钟,并提供基本的代码实现。

一、时钟电路设计利用单片机设计一个数字时钟,首先需要设计一个合适的时钟电路。

时钟电路一般由电源电路、晶振电路、单片机复位电路和显示电路组成。

1. 电源电路:为电路提供工作所需的电源电压,一般使用稳压电源芯片进行稳定的供电。

2. 晶振电路:利用晶振来提供一个稳定的时钟信号,常用的晶振频率有11.0592MHz、12MHz等。

3. 单片机复位电路:用于保证单片机在上电或复位时能够正确地初始化,一般使用降低复位电平的电路。

4. 显示电路:用于将单片机输出的数字信号转换成七段数码管可以识别的信号,一般使用BCD码和译码器进行实现。

二、单片机定时器的应用单片机的定时器具有精准的定时功能,可以帮助实现时钟的计时功能。

单片机的定时器一般分为定时器0和定时器1,根据具体的应用需求选择使用。

在设计数字时钟时,可以将定时器0配置成定时器模式,设置一个适当的定时时间。

当定时器0计时达到设定时间时,会触发一个中断信号,通过中断处理程序可以实现时钟的计时功能。

以下是一个基于单片机的定时器的伪代码示例:```void Timer0_Init(){// 设置定时器0为工作在定时器模式下// 设置计时时间// 开启定时器0中断}// 定时器0中断处理程序void Timer0_Interrupt_Handler(){// 更新时钟显示}void main(){Timer0_Init();while(1){// 主循环}}```在上述伪代码中,Timer0_Init()函数用于初始化定时器0的相关设置,包括工作模式和计时时间等。

Timer0_Interrupt_Handler()函数是定时器0的中断处理程序,用于处理定时器0计时到达设定时间时的操作,例如更新时钟显示。

简易数字钟设计自动化

简易数字钟设计自动化

简易数字钟的设计一.指标要求1.用中小规模集成电路设计一台能显示“时”,“分”,“秒”的简易数字钟;2.除按24小时计数外,还应具有手动调节小时,分钟,秒的校时功能;3.具有整点报时功能;二.设计计算1.整体方案设计1.1课题分析数字钟一般由6个部分组成,其中振荡器和分频器组成标准的秒信号发生器,由不同进制的计数器,译码器和显示器组成计时系统。

秒信号送入计数器进行计数,把累计的结果以“时”“分”“秒”的十进制数字显示出来。

“时”显示由二十四进制计数器,译码器和显示器构成,“分”“秒”显示分别由六十进制计数器,译码器和显示器构成。

1.2工作原理数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。

它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。

因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路和振荡器组成。

干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。

秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。

将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发现胡一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。

“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。

“时计数器”采用24进制计时器,可实现对一天24小时的累计。

译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来。

整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后触发一音频发生器实现报时。

校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整的。

数字电子钟由振荡器、分频器、计数器、译码显示、报时等电路组成。

其中振荡器和分频器组成标准秒信号发生器,由不同进制的计数器、译码器和显示器组成计时系统。

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间

EDA课程设计-电子钟一、设计要求1、基本功能要求:设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。

扩展功能要求:2、跑表功能,闹钟功能,调整数码管的亮度。

二、系统结构控制键—jian5、jian4、jian7、jian8:数码管显示段选信号输出sg:——选择6位数码管中的某一个显示数据;发光二极管控制信号输出—led(7~0)闹钟声音输出—speaker通过一个10M信号分出各种所需频率功能介绍运行后,选择模式7,8位数码管分显示时间的时、分、秒,当前为模式0:时间显示模式,按键7为模式选择键,按下按键7,系统进入模式1,第二次按下为模式2,设置时间模式,第三次按下为跑表模式,第四次为闹钟设置模式,第五次为亮度调节模式:设置时间模式,按键4控制更改数码管的位,按键5控制选中数码管的数值,时间设置完成后,按键按键8,设置时间会保存住,并在模式0中显示;系统进入模式2:秒表模式,按键4为开始/结束键,按键5为清零键;系统进入模式3:闹钟设置模式,相关设置与模式1相同,当当前时间与闹钟设置时间相同时,喇叭就会响;系统进入模式4:亮度调节模式,通过按键4设置亮度,共三种亮度;再按下按键7,系统又会进入模式0。

4、RTL图三、VHDL源程序1、library ieee; --通过10M分出所需频率use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpin isport (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end entity;architecture sub1 of fenpin issignal Q_1 : std_logic_vector(8 downto 0);signal Q_2 : std_logic_vector(6 downto 0);signal Q_3 : std_logic_vector(6 downto 0);signal clk10000 : std_logic;signal clk100 : std_logic;signal clk1 : std_logic;beginprocess(clk_10M)beginif clk_10M'event and clk_10M='1' thenif Q_1=500 thenQ_1 <= "000000000";clk10000 <= not clk10000;if Q_2=100 thenQ_2 <= "0000000";clk100<= not clk100;if Q_3=100 thenQ_3 <= "0000000";clk1<=not clk1;else Q_3<=Q_3+1;end if;else Q_2<=Q_2+1;end if;else Q_1<=Q_1+1;end if;end if;end process;clk_10000 <= clk10000;clk_100 <= clk100;clk_1 <= clk1;end sub1;2、library ieee; --扫描数码管use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end;architecture one of xianshi issignal cnt8 :std_logic_vector(2 downto 0);signal a :integer range 0 to 15;signal light: std_logic;signal flash:integer range 0 to 2;signal count1,count2:integer range 0 to 10;beginp1: process(cnt8,light,a0,a1,a3,a4,a6,a7)begincase cnt8 iswhen "000" => bt11<= "0000000"&(light);a<=a0;when "001" => bt11<= "000000"&(light)&'0';a<=a1; when "010" => bt11<= "00000"&(light)&"00";a<=15; when "011" => bt11<= "0000"&(light)&"000";a<=a3; when "100" => bt11<= "000"&(light)&"0000";a<=a4; when "101" => bt11<= "00"&(light)&"00000";a<=15; when "110" => bt11<= '0'&(light)&"000000";a<=a6; when "111" => bt11<= (light)&"0000000";a<=a7;when others => null;end case;end process p1;p2:process(clk_10000)beginif clk_10000'event and clk_10000 ='1' then cnt8 <= cnt8+1; end if;end process p2;p3:process(a)begincase a iswhen 0 => sg11<= "0111111";when 1 => sg11<= "0000110";when 2 => sg11<= "1011011";when 3 => sg11<= "1001111";when 4 => sg11<= "1100110";when 5 => sg11<= "1101101";when 6 => sg11<= "1111101";when 7 => sg11<= "0000111";when 8 => sg11<= "1111111";when 9 => sg11<= "1101111";when 10 => sg11<= "1110111";when 11 => sg11<= "1111100";when 12 => sg11<= "0111001";when 13 => sg11<= "1011110";when 14 => sg11<= "1111001";when 15 => sg11<= "1000000";when others => null;end case;end process p3;process(jian4,moshi)beginif moshi=4 thenif jian4'event and jian4='1' thenif flash =2 thenflash<=0;else flash<=flash+1;end if;end if;end if;end process;process(clk_10000,flash)beginif clk_10000'event and clk_10000 ='1' thencase flash iswhen 0 => light<='1';when 1 => if count1=2 thencount1<=0; light<='1';else count1<=count1+1;light<='0';end if;when 2 => if count2=4 thencount2<=0; light<='1';else count2<=count2+1;light<='0';end if;end case;end if;end process;end;3、library ieee; --跑表开始暂停use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity paobiao isport(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9); end entity;architecture bhv of paobiao issignal shi:integer range 0 to 100;signal fen:integer range 0 to 100;signal miao:integer range 0 to 100;beginprocess(clk_1,jian8,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1)beginif jian8='1' thenshi<=shishi1*10+shige1;fen<=fenshi1*10+fenge1;miao<=miaoshi1*10+miaoge1;elsif clk_1'event and clk_1='1' thenif miao=59 thenmiao<=0;fen<=fen+1;elsif fen>59 thenfen<=0;shi<=shi+1;elsif shi>23 thenshi<=0;else miao<=miao+1;end if;end if;end process;miaoge2<=miao rem 10;miaoshi2<=miao/10;fenge2<=fen rem 10;fenshi2<=fen/10;shige2<=shi rem 10;shishi2<=shi/10;end;4、library ieee; --设置当前时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity settime isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end entity;architecture bav of settime issignal a:integer range 0 to 5;signal shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1: integer range 0 to 9; beginprocess(moshi,jian4)beginif moshi=1 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=1 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;5、library ieee; --秒表功能use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity miaobiao isport(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9); end entity;architecture bhv of miaobiao issignal fen,miao,xmiao:integer range 0 to 99;signal start:std_logic:='0';signal reset:std_logic:='0';beginprocess(clk_100,jian5,jian4,moshi,reset,start)beginif moshi=2 thenif reset='1' thenfen<=0;miao<=0;xmiao<=0;elsif start='1' thenelsif clk_100'event and clk_100='1' thenif xmiao=99 thenxmiao<=0;miao<=miao+1;elsif miao>59 thenmiao<=0;fen<=fen+1;elsif fen>23 thenfen<=0;else xmiao<=xmiao+1;end if;end if;end if;end process;process(jian4,start)beginif jian4'event and jian4='1' thenstart<=not start;else start<=start;end if;end process;process(jian5,reset)beginif jian5'event and jian5='1' thenreset<=not reset;else reset<= reset;end if;end process;xmiaoge<=xmiao rem 10;xmiaoshi<=xmiao/10;miaoge<=miao rem 10;miaoshi<=miao/10;fenge<=fen rem 10;fenshi<=fen/10;end;6、library ieee; --设置闹钟时间use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongset isport(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9); end entity;architecture bav of naozhongset issignal a:integer range 0 to 5;signal fenshi1,fenge1,miaoge1: integer range 0 to 9;signal shishi1: integer range 0 to 9:=1;signal shige1: integer range 0 to 9:=2;signal miaoshi1: integer range 0 to 9:=0;beginprocess(moshi,jian4)beginif moshi=3 thenif jian4'event and jian4='1' thenif a < 5 thena<=a+1;else a<=0;end if;end if;end if;end process;process(moshi,a,jian5)beginif moshi=3 thenif a=0 thenif jian5'event and jian5='1' thenif miaoge1 =9 thenmiaoge1<=0;else miaoge1<=miaoge1+1;end if;end if;end if;if a=1 thenif jian5'event and jian5='1' thenif miaoshi1 =5 thenmiaoshi1<=0;else miaoshi1<=miaoshi1+1;end if;end if;end if;if a=2 thenif jian5'event and jian5='1' thenif fenge1 =9 thenfenge1<=0;else fenge1<=fenge1+1;end if;end if;end if;if a=3 thenif jian5'event and jian5='1' thenif fenshi1 =5 thenfenshi1<=0;else fenshi1<=fenshi1+1;end if;end if;end if;if a=4 thenif jian5'event and jian5='1' thenif shige1 =9 thenshige1<=0;else shige1<=shige1+1;end if;end if;end if;if a=5 thenif jian5'event and jian5='1' thenif shishi1 =2 thenshishi1<=0;else shishi1<=shishi1+1;end if;end if;end if;end if;end process;miaoge<=miaoge1;miaoshi<=miaoshi1;fenge<=fenge1;fenshi<=fenshi1;shige<=shige1;shishi<=shishi1;end;7、library ieee; --闹钟喇叭输出use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity naozhongspeaker isport(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9; speaker:out std_logic);end entity;architecture bav of naozhongspeaker isbeginprocess(clk_100,shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2)beginif shishi2=shishi1 and shige2=shige1 and fenshi2=fenshi1 andfenge2=fenge1 and miaoshi2=miaoshi1 thenspeaker<=clk_100;else speaker<='1';end if;end process;end;8、library ieee; --转换模式use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity moshi isport(jian7:in std_logic;moshi:out integer range 0 to 4);end;architecture one of moshi issignal moshis:integer range 0 to 4;beginprocess(jian7)beginif jian7'event and jian7='1' thenif moshis=4 thenmoshis<=0;else moshis<=moshis+1;end if;end if;end process;moshi<=moshis;end;9、library ieee; --五选一选择器use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux5_1 isport(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9; fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end entity mux5_1;architecture bhv of mux5_1 isbeginprocess(shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1,shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2,shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3,fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge,moshi)begincase moshi iswhen 0 =>a0<=shishi1;a1<=shige1;a3<=fenshi1;a4<=fenge1;a6<=miaoshi1;a7<=miaoge1;when 1 =>a0<=shishi2;a1<=shige2;a3<=fenshi2;a4<=fenge2;a6<=miaoshi2;a7<=miaoge2;when 2 =>a0<=fenshi;a1<=fenge;a3<=miaoshi;a4<=miaoge;a6<=xmiaoshi;a7<=xmiaoge;when 3 =>a0<=shishi3;a1<=shige3;a3<=fenshi3;a4<=fenge3;a6<=miaoshi3;a7<=miaoge3;when 4 => a0<=8;a1<=8;a3<=8;a4<=8;a6<=8;a7<=8;end case;end process;end;10、library ieee; --主程序置顶use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clock isport(clk_10M:in std_logic;jian5,jian4,jian7,jian8:in std_logic;sg:out std_logic_vector(6 downto 0);bt:out std_logic_vector(7 downto 0);speaker:out std_logic);end entity;调用声明语句architecture bav of clock iscomponent fenpin --分频port (clk_10M : in std_logic;clk_10000 : out std_logic;clk_100 : out std_logic;clk_1 : out std_logic);end component;component paobiao --跑表port(clk_1:in std_logic;jian8:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9; shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:out integer range 0 to 9);end component;component xianshi --扫描显示port(clk_10000:in std_logic;jian4:in std_logic;moshi:in integer range 0 to 4;a0,a1,a3,a4,a6,a7:in integer range 0 to 9;sg11:out std_logic_vector(6 downto 0);bt11:out std_logic_vector(7 downto 0));end component;component moshi --模式转换port(jian7:in std_logic;moshi:out integer range 0 to 4);end component;component mux5_1 --五选一选择器port(moshi:in integer range 0 to 4 ;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;shishi3,shige3,fenshi3,fenge3,miaoshi3,miaoge3:in integer range 0 to 9;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:in integer range 0 to 9;a0,a1,a3,a4,a6,a7:out integer range 0 to 9);end component;component settime --设置当前时间port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component miaobiao is --秒表port(clk_100:in std_logic;moshi:in integer range 0 to 4;jian5,jian4:in std_logic;fenshi,fenge,miaoshi,miaoge,xmiaoshi,xmiaoge:out integer range 0 to 9);end component;component naozhongset is --闹钟时间设置port(moshi:in integer range 0 to 4;jian4,jian5:in std_logic;shishi,shige,fenshi,fenge,miaoshi,miaoge:out integer range 0 to 9);end component;component naozhongspeaker is --闹钟喇叭输出port(clk_100:in std_logic;shishi1,shige1,fenshi1,fenge1,miaoshi1,miaoge1:in integer range 0 to 9;shishi2,shige2,fenshi2,fenge2,miaoshi2,miaoge2:in integer range 0 to 9;speaker:out std_logic);end component;signal moshis:integer range 0 to 4; --信号声明signal shishi1s,shige1s,fenshi1s,fenge1s,miaoshi1s,miaoge1s:integer range 0 to 9;signal shishi2s,shige2s,fenshi2s,fenge2s,miaoshi2s,miaoge2s:integer range 0 to 9;signal shishi3s,shige3s,fenshi3s,fenge3s,miaoshi3s,miaoge3s:integer range 0 to 9;signal fenshis,fenges,miaoshis,miaoges,xmiaoshis,xmiaoges: integer range 0 to 9;signal a0s,a1s,a3s,a4s,a6s,a7s: integer range 0 to 9;signal clk_10000s,clk_100s, clk_1s: std_logic;begin --元件例化u1:paobiao port map(clk_1=>clk_1s,jian8=>jian8,shishi1=>shishi2s,shige1=>shige2s,fenshi1=>fenshi2s,fenge1=>fenge2s,miaoshi 1=>miaoshi2s,miaoge1=>miaoge2s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);u2:xianshi port map(clk_10000=>clk_10000s,jian4=>jian4,moshi=>moshis,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s,sg11=>sg,bt11=>bt);u3:settime port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi2s,shige=>shige2s,fenshi=>fenshi2s,fenge=>fenge2s,miaoshi=>miaosh i2s,miaoge=>miaoge2s);u4:moshi port map(jian7=>jian7,moshi=>moshis);u5:mux5_1 port map(moshi=>moshis,shishi1=>shishi1s,shige1=>shige1s,fenshi1=>fenshi1s,fenge1=>fenge1s,miaoshi1=>m iaoshi1s,miaoge1=>miaoge1s,shishi2=>shishi2s,shige2=>shige2s,fenshi2=>fenshi2s,fenge2=>fenge2s,miaoshi2=>m iaoshi2s,miaoge2=>miaoge2s,shishi3=>shishi3s,shige3=>shige3s,fenshi3=>fenshi3s,fenge3=>fenge3s,miaoshi3=>m iaoshi3s,miaoge3=>miaoge3s,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>x miaoshis,xmiaoge=>xmiaoges,a0=>a0s,a1=>a1s,a3=>a3s,a4=>a4s,a6=>a6s,a7=>a7s);u6:miaobiao port map(clk_100=>clk_100s,moshi=>moshis,jian5=>jian5,jian4=>jian4,fenshi=>fenshis,fenge=>fenges,miaoshi=>miaoshis,miaoge=>miaoges,xmiaoshi=>xmiao shis,xmiaoge=>xmiaoges);u7:fenpin port map(clk_10M=>clk_10m,clk_10000=>clk_10000s,clk_100=>clk_100s,clk_1 =>clk_1s);u8:naozhongset port map(moshi=>moshis,jian5=>jian5,jian4=>jian4,shishi=>shishi3s,shige=>shige3s,fenshi=>fenshi3s,fenge=>fenge3s,miaoshi=>mi aoshi3s,miaoge=>miaoge3s);u9:naozhongspeaker port map(clk_100=>clk_100s,speaker=>speaker,shishi1=>shishi3s,shige1=>shige3s,fenshi1=>fenshi3s,fenge1=>fenge3s,miaoshi1=>m iaoshi3s,miaoge1=>miaoge3s,shishi2=>shishi1s,shige2=>shige1s,fenshi2=>fenshi1s,fenge2=>fenge1s,miaoshi2=>m iaoshi1s,miaoge2=>miaoge1s);end;。

设计一个能显示时、分、秒的简易数字钟

设计一个能显示时、分、秒的简易数字钟

数字电子技术课程设计报告要求:设计一个能显示时、分、秒的简易数字钟。

步骤:用verilog语言在记事本编写程序,再用QuartusⅡ仿真,定义针脚,在面板上模拟。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的寿命,因此得到广泛的应用。

设计原理及框图数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,具有时、分、秒计数显示功能,以24小时为计数循环。

这次实验主要是要实现时钟的计时功能,时间计数由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器,,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器.,然后需要把8位二进制数转变为译码管需要的8421码。

设计方案:这个实验总体分:秒、分、时三个模块,计时和较准两个模式标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲之一。

“分计数器”也采用60进制计数器,每累计60分钟,发出一个时脉冲信号,该信号作为时计数器的时钟脉冲之一,时计数器采用24进制计时器,可实现对一天24小时的计时。

译码显示电路将“时”、“分”、“秒”计数器的输出状态通过译码管显示。

这们时钟的计时功能就实现了,秒模块是一个以1HZ的clock信号控制的60进制计数器,并同时产生分进位信号tun。

always @(posedge clock)beginif(sec==59) \\当秒等于59时,如果处于计时模式时产生begin \\一个进位脉冲tun, 否则tun信号暂停sec<=0;tun<=1;elsetun<=tun;endelse \\若秒不等于59,同样如果处于计时模式begin \\就使tun信号清0,否则tun信号暂停sec<=sec+1;if(at==0)tun<=0;elsetun<=tun;endend分模块也是一个60进制计数器,并产生小时的进位信号mod,但要受到两个控制信号的控制一个是进位信号tun,另一个是t_min的按建信号。

简单数字钟得设计

简单数字钟得设计
简单数字钟的设计
09 机设(X)班 XX XXXXXXXXXX
1. 设计目的
通过数字钟的设计,熟悉集成电路的引脚安排,掌握芯片的逻辑功能及使用 方法,了解数字钟的组成及工作原理。并将前面所学的单片机内部定时器资源、 I\O 端口、键盘和显示接口等知识融会贯通,锻炼独立设计和调试应用系统的能 力,深入领会单片机应用系统的硬件设计、模块化程序设计及硬件调试方法等, 并掌握单片机应用系统的开发过程。
if(s1==0) { delay(10); if(s1==0) {count++; while(!s1); {TR0=0; } } if(count==2) { } if(count==3) { TR0=1; count=0; } }
if(count!=0) {if(s2==0) {delay(10); if(s2==0) {while(!s2); if(count==1) {m++; if(m==60) m=0; }
{
h=0;
}
}
}
void main()
{
unsigned
char
led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
TMOD=0x01; TH0=0x3c; TL0=0xb0; TR0=1; EA=1; ET0=1; P0=0x00; P1=0xff; P2=0xff; P3=0xff; while(1)
3
电阻
300Ω
4
电源
+5V
2
接地
Groun程序运行测试
程序编译、链接完成后,将二进制文档 1.hex 下载到单片机的程序存储器中。

如何设计简单的数字时钟电路

如何设计简单的数字时钟电路

如何设计简单的数字时钟电路数字时钟电路是一种常见的电子电路,用于显示时间并具备时间计时功能。

设计一个简单的数字时钟电路可以通过以下步骤实现。

第一步:确定数字时钟的显示方式常见的数字时钟电路可以采用七段数码管进行显示,每个数码管由七个LED灯组成,用于显示数字0-9。

可以根据需要选择合适的数码管来完成数字时钟的显示。

第二步:确定时钟的计时器数字时钟电路需要一个计时器来跟踪时间。

常见的计时器可以使用555定时器或者基于微控制器的计时器模块。

选择适合自己的计时器并连接到电路中。

第三步:连接七段数码管将选定的七段数码管连接到电路中。

每个数码管的七个LED灯分别对应数码管的a、b、c、d、e、f、g引脚,根据数码管的型号和引脚布局进行正确连接。

例如,将数码管的a引脚连接到计时器的输出引脚,b引脚连接到计时器的另一个引脚,以此类推。

第四步:设计时钟功能根据需要设计时钟功能,包括显示当前时间、设置闹钟、调节亮度等。

可以通过增加按钮开关、旋转编码器或者完成基于微控制器的编程来实现这些功能。

第五步:连接电源和调试将数字时钟电路与合适的电源连接,并进行必要的调试。

确保电路中的元件连接正确并正常工作。

如果有需要,可以使用示波器或多用途测试仪来辅助调试。

总结:通过以上步骤,我们可以设计一个简单的数字时钟电路。

根据需求选择合适的数码管和计时器,连接七段数码管,设计时钟功能并连接电源进行调试。

这样就可以得到一个能够准确显示时间并具备计时功能的数字时钟电路。

需要注意的是,以上步骤只是设计一个简单的数字时钟电路的基本流程,具体的实现可能因项目需求和硬件平台的差异而有所不同。

在实际应用中,还需要考虑电路的稳定性、精度和可靠性等因素,并根据实际情况进行细节调整和优化。

简易数字秒表的设计

简易数字秒表的设计

简易数字秒表的设计简易数字秒表的设计⼀、实验⽬的1、设计⼀个显⽰范围为24⼩时60分钟60秒的简易数字秒表。

2、掌握动态扫描电路的设计⽅法。

⼆、实验原理1、能进⾏正常的时、分、秒计时功能,分别由6个数码管显⽰24⼩时、60分钟、60秒钟的计数器显⽰。

2、能利⽤实验系统上的按键实现“校时”“校分”功能:⑴按下“SA”键时,计时器迅速递增,并按24⼩时循环,计满23⼩时后回“00”;⑵按下“SB”键时,计分器迅速递增,并按59分钟循环,计满59分钟后回“00”,但不向“时”进位;⑶按下“SC”键时,秒清零;⑷要求按下“SA”、“SB”或“SC”时均不产⽣数字跳变(SA”、“SB”、“SC”按键是有抖动的,必须对其消除抖动处理)。

3、能利⽤扬声器做整点报时:⑴当计时到达59分50秒时开始报时,在59分50秒、52秒、54秒、56秒、58秒鸣叫,鸣叫声频率可定为500Hz;⑵到达59分60秒时为最后⼀声整点报时,整点报时频率可定为1KHz。

三、实验内容1、⽤VHDL语⾔编程设计简易数字秒表(VHDL程序代码可附在实验报告后⾯)。

2、锁定引脚并下载验证结果。

四、实验结果1、程序代码LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TIMES ISPORT(CLK:IN STD_LOGIC;START,CLR:IN STD_LOGIC;DOUT:OUT STD_LOGIC_VECTOR(23 DOWNTO 0));END TIMES;ARCHITECTURE ART OF TIMES ISSIGNAL SECOND,MINUTES,HOURS:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNALSEC_CO,MIN_CO,HOU_CO:STD_LOGIC;BEGIN-------------------------------------------------------秒计数处理进程SEC:PROCESS(CLK,CLR)BEGINIF CLR='1' THEN SECOND(7 DOWNTO 0)<="00000000";ELSIF CLK'EVENT AND CLK='1' THENIF START='1' THENSECOND(3 DOWNTO 0)<=SECOND(3 DOWNTO 0)+1;IF SECOND(3 DOWNTO 0)="1001" THENSECOND(3 DOWNTO 0)<="0000";SECOND(7 DOWNTO 4)<=SECOND(7 DOWNTO 4)+1; END IF;IF SECOND(7 DOWNTO 0)="10011001" THENSECOND(7 DOWNTO 0)<="00000000"; SEC_CO<='1';ELSE SEC_CO<='0'; END IF;END IF;END IF;END PROCESS SEC;--------------------------------------------------------分钟计数处理进程MIN:PROCESS(SEC_CO,CLR)BEGINIF CLR='1' THEN MINUTES(7 DOWNTO 0)<="00000000";ELSIF SEC_CO'EVENT AND SEC_CO='1' THENMINUTES(3 DOWNTO 0)<=MINUTES(3 DOWNTO 0)+1;IF MINUTES(3 DOWNTO 0)="1001" THENMINUTES(3 DOWNTO 0)<="0000";MINUTES(7 DOWNTO 4)<=MINUTES(7 DOWNTO 4)+1; END IF;IF MINUTES(7 DOWNTO 0)="01011001" THENMINUTES(7 DOWNTO 0)<="00000000";MIN_CO<='1';ELSEMIN_CO<='0';END IF;END IF;END PROCESS MIN;---------------------------------------------------------⼩时计数处理进程HOU:PROCESS(MIN_CO,CLR)BEGINIF CLR='1' THEN HOURS(7 DOWNTO 0)<="00000000";ELSIF MIN_CO'EVENT AND MIN_CO='1' THENHOURS(3 DOWNTO 0)<=HOURS(3 DOWNTO 0)+1;IF HOURS(3 DOWNTO 0)="1001" THENHOURS(3 DOWNTO 0)<="0000";HOURS(7 DOWNTO 4)<=HOURS(7 DOWNTO 4)+1;END IF;IF HOURS(7 DOWNTO 0)="00010011" THENHOURS(7 DOWNTO 0)<="00000000";HOU_CO<='1';ELSE HOU_CO<='0'; END IF;END IF;END PROCESS HOU;DOUT<=HOURS&MINUTES&SECONDEND ART;2、画出仿真波形图。

简易数字钟(附详细代码)

简易数字钟(附详细代码)

简易数字钟 一、实验内容本实验的主要内容是根据提供的元器件,设计一个简易数字钟。

1、要求准确显示“时”、“分”、“秒”,24 小时制; 2、具有校时功能,用户可以修改“时”、“分”,且互不影响; 3、时间显示可以实现12/24小时制切换;设计应包括方案选择、硬件系统设计、软件系统设计等。

硬件设计包括单片机最小系统设计、单元电路设计;软件设计包括模块化层次结构图、程序流程图 等。

通过调试与仿真,进一步完善设计,使之达到实验要求,使其更接近于实际 产品。

最后要求撰写设计实验报告,把设计内容,调试过程及性能指标的测试进 行全面总结,把实践内容上升到理论高度。

1 数字钟硬件部分示意图该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C51、数码管显示、时间调整按键模块组成。

框图如下:图3.1 数字钟硬件系统示意图2 数字钟软件部分组成框图晶振 手动复位AT89C51 1602液晶显示时间按键选择2.1程序总流程图 2.2 时钟显示程序流程图3.3 24小时时钟3 各部分模块介绍3.1 单片机AT89C51芯片分析AT89C51单片机引脚图如下:T1中断服务子程序重置T1定时初值 1秒到?秒位+1 1分到?分位+1、秒位清零 1小时到? 小时位+1、分位清零 24小时到? 小时位清零 返回NNNN图 4.1 AT89C51引脚图3.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。

时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。

图4.2 晶振电路3.3 复位电路模块单片机复位的条件是:必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。

例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。

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

数字电子技术课程设计报告要求:设计一个能显示时、分、秒的简易数字钟。

步骤:用verilog语言在记事本编写程序,再用QuartusⅡ仿真,定义针脚,在面板上模拟。

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的寿命,因此得到广泛的应用。

设计原理及框图数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路,具有时、分、秒计数显示功能,以24小时为计数循环。

这次实验主要是要实现时钟的计时功能,时间计数由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器,,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为24进制计数器.,然后需要把8位二进制数转变为译码管需要的8421码。

设计方案:这个实验总体分:秒、分、时三个模块,计时和较准两个模式标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲之一。

“分计数器”也采用60进制计数器,每累计60分钟,发出一个时脉冲信号,该信号作为时计数器的时钟脉冲之一,时计数器采用24进制计时器,可实现对一天24小时的计时。

译码显示电路将“时”、“分”、“秒”计数器的输出状态通过译码管显示。

这们时钟的计时功能就实现了,秒模块是一个以1HZ的clock信号控制的60进制计数器,并同时产生分进位信号tun。

always @(posedge clock)beginif(sec==59) \\当秒等于59时,如果处于计时模式时产生begin \\一个进位脉冲tun, 否则tun信号暂停sec<=0;tun<=1;elsetun<=tun;endelse \\若秒不等于59,同样如果处于计时模式begin \\就使tun信号清0,否则tun信号暂停sec<=sec+1;if(at==0)tun<=0;elsetun<=tun;endend分模块也是一个60进制计数器,并产生小时的进位信号mod,但要受到两个控制信号的控制一个是进位信号tun,另一个是t_min的按建信号。

当at=0时,赋值mt=tun当at=1时,赋值mt=(!tun&t_min)|(tun&!t_min)always@(posedge mt)beginif(min==59) \\当min=59时,如果处于计时模式,begin \\则产生一进位信号mod,否则mod暂停min<=0;if(at==0)mod<=1;elsemod<=mod;endelse \\当分不等于59,同样,begin \\如果处于计时模式,则mod清0,否则mod暂停min<=min+1;if(at==0)mod<=0;elsemod<=mod;endend时模块和分模块相似,是一个24进制计数器,受mod和t_hou信号控制,同理当at=0时,nt=mod当at=1时,nt=(!mod&t_hou)|(mod&!t_hou)always@(posedge nt)beginif(hou==23)elsehou<=hou+1;end这样就实现了计时模式时控制信号为进位信号,至此已实现时钟的功能,而显示时间的译码管是4位二进制数,须要两个译码管分别显示十位和个位,所以要求出秒、分、时的个位和十位,用以下程序就可实现。

always@(sec)beginsec1<=sec%10;sec2<=sec/10;endalways@(min)beginmin1<=min%10;min2<=min/10;endalways@(hou)beginhou1<=hou%10;hou2<=hou/10;end实验总结:实验总体来说还是很顺利的,但在调试模拟过程中还是遇到了一些问题,在分频过程中出现了一些问题,虽然七段码正常显示了,但是时间间隔不准确,通过与老师交流,找到了问题所在。

经过重新分频,时间间隔准确,实现了时钟的计时和显示的功能。

结论与心得:经过几天的设计与思考,最终实现了数字钟的模拟。

期间遇到了许多问题,但最后都一一得到解决。

现将心得体会总结如下:1,设计初期要考虑周到,否则后期改进很困难。

应该在初期就多思考几个方案,进行比较认证,选择最合适的方案动手设计。

总体设计在整个设计过程中非常重要,应该花较多的时间在上面。

2,方案确定后,才开始设计。

设计时,多使用已学的方法,要整体考虑,不可看一步,做一步。

在整体设计都正确后,再寻求简化的方法。

3,模块之间关系清楚,既利于自己修改,也利于与别人交流,如果程序杂乱无章连自己都看不懂,那还如何改进和扩展。

4,很多难点的突破都来自于与同学的交流,交流使自己获得更多的信息,开拓了思路,因此要重视与别人的交流。

5,应该有较好的理论基础,整个实验都是在理论的指导下完成了,设计过程中使用了许多理论课上学的内容,本次设计把理论应用到了实践中、同时通过设计,也加深了自己对理论知识的理解和掌握。

程序:module clock9(t_min,t_hou,change,sec1,sec2,min1,min2,hou1,hou2,at,clk20M);input t_min,t_hou,change,clk20M;output reg[3:0] sec1,sec2,min1,min2,hou1,hou2;output at;wire t_min,t_hou;reg[5:0] sec,min,hou;reg tun,mod,at;integer num;reg clock;wire mt,nt;reg[3:0]secL,secG,minL,minG,houL,houG;initialbeginat=0;tun=0;mod=0;min=0;hou=0;sec=0;sec1=0;sec2=0;min1=0;min2=0;hou1=0;hou2=0;endalways @(posedge clk20M)beginif(num>=9999999)num=0;else num=num+1;if(num==9999999)clock=1;else clock=0;endalways @(posedge clock)beginif(sec==59)beginsec<=0; //秒为60进制计数器if(at==0)tun<=1; //如果处于计时模式,每60秒产生else //一个分进位信号,否则tun信号暂停tun<=tun;endelsebeginsec<=sec+1;if(at==0)tun<=0;elsetun<=tun;endendassign mt=(at==0)?(!at&tun):(!tun&t_min)|(tun&!t_min);always@(posedge mt)beginif(min==59) //分钟为60进制计数器beginmin<=0;if(at==0)mod<=1; //如果处于计时模式,每60分产生一个else //时进位信号,否则mod信号暂停mod<=mod;endelsebeginmin<=min+1;if(at==0)mod<=0;elsemod<=mod;endendassign nt=(at==0)?(!at&mod):(!mod&t_hou)|(mod&!t_hou);always@(posedge nt)beginif(hou==23) //小时为24进制计数器hou<=0;elsehou<=hou+1;endalways@(sec)beginsecL[3:0]=sec%10;secG[3:0]=sec/10;endalways@(min)beginminL[3:0]=min%10;minG[3:0]=min/10;endalways@(hou)beginhouL[3:0]=hou%10;houG[3:0]=hou/10;endalways @(secL)case(secL)4'b0000:sec1=4'b0000;4'b0001:sec1=4'b0001;4'b0010:sec1=4'b0010;4'b0011:sec1=4'b0011;4'b0100:sec1=4'b0100;4'b0101:sec1=4'b0101;4'b0110:sec1=4'b0110;4'b0111:sec1=4'b0111;4'b1000:sec1=4'b1000;4'b1001:sec1=4'b1001;endcasealways @(secG)case(secG)4'b0000:sec2=4'b0000;4'b0001:sec2=4'b0001;4'b0010:sec2=4'b0010;4'b0011:sec2=4'b0011;4'b0100:sec2=4'b0100;4'b0101:sec2=4'b0101;endcasealways @(minL)case(minL)4'b0000:min1=4'b0000;4'b0001:min1=4'b0001;4'b0010:min1=4'b0010;4'b0011:min1=4'b0011;4'b0100:min1=4'b0100;4'b0101:min1=4'b0101;4'b0110:min1=4'b0110;4'b0111:min1=4'b0111;4'b1000:min1=4'b1000;4'b1001:min1=4'b1001;endcasealways @(minG)case(minG)4'b0000:min2=4'b0000;4'b0001:min2=4'b0001;4'b0010:min2=4'b0010;4'b0011:min2=4'b0011;4'b0100:min2=4'b0100;4'b0101:min2=4'b0101;endcasealways @(houL)case(houL)4'b0000:hou1=4'b0000;4'b0001:hou1=4'b0001;4'b0010:hou1=4'b0010;4'b0011:hou1=4'b0011;4'b0100:hou1=4'b0100;4'b0101:hou1=4'b0101;4'b0110:hou1=4'b0110;4'b0111:hou1=4'b0111;4'b1000:hou1=4'b1000;4'b1001:hou1=4'b1001;endcasealways @(houG)case(houG)4'b0000:hou2=4'b0000;4'b0001:hou2=4'b0001;4'b0010:hou2=4'b0010;endcase endmodule忽略此处..。

相关文档
最新文档