简易数字钟的设计分解

单片机课程设计论文设计题目:简易数字钟单片机设计学院:汽车学院班级:电气工程及其自动化三班成员名单:1、姓名:黄金栋学号:2009091403302、姓名:高杰学号:2009091403313、姓名:刘志学号:200909140332指导教师:王春梅课程设计时间:2012年5月14----2012年5月25摘要数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。

本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED 数码显示器等),再配以相应的软件,达到制作简易数字钟的目的。

硬件部分采用了单片机原理实验室的实验箱进行合理接线调试;软件部分通过keil进行了C程序的修改编译,protues软件仿真等。

最终在实验箱上实现了与仿真结果相同的实际效果。

关键词单片机定时功能、AT89C51、共阴LED、Keil、Protues软件。

1 设计任务描述1.1 设计目的熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。

1.2 基本要求⑴简要说明用单片机设计出一个数字钟。

此数字钟完成自动走时和时间调整的功能。

⑵任务和要求设计简易的数字钟,该数字钟满足以下要求:1.开机时,显示12:00:00的时间开始计时;2. P0.0/AD0控制“秒”的调整,每按一次加1秒;3. P0.1/AD1控制“分”的调整,每按一次加1分;4. P0.2/AD2控制“时”的调整,每按一次加1个小时该数字钟基本功能:使用单片机的定时/计数器实现数字中的定时计数功能,秒计60次成分,分计60次成小时,小时计24次则计满一天。

本设计LED显示部分采用动态显示,其中2个LED显示器显示秒,2个LED显示器显示分钟,2个LED显示器显示小时。

同时为了使用方便,本题目还需要设计几个简单按键,可以通过按键实现时、分的调整,这样在主程序中需要加入键盘设置子程序。

2 设计思路基于单片机的简易数字钟设计主要可以分为以下几个模块来考虑:㈠对于单片机AT89C51的T0,T1定时中断部分。

本次设计中的单片机晶振频率采用了精准的11.0592MHZ。

故对T1初值设定为:DC00h,实现了10ms的定时,然后C 程序中通过定义一个变量i,对i进行i++的100次循环,如此即可达到最小1S的实现。

而后在这个1S程序段的基础之上,我们可以分别编写出对时,分的程序段。

对于定时器T0,我们可以将其用来作为数码管动态扫描的定时中断,本次设计设为50ms左右,初值为FC17h。

这个取值通过最后的仿真及实际效果看出合理,不会出现闪烁等情况。

㈡校时电路。

本次设计要求了该简易数字钟必须具备时、分的调整功能。

故必须接入3个简单的按键(本设计设置问p0.2调时、p0.1调分、p0.0调秒,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这3个独立按键的子程序。

㈢显示电路。

考虑采用动态显示部分,用P1口作为数码管数据(段选),P2口作为数码管控制(位选)。

动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。

上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。

6位数码管,实验室的硬件是共阴极的,故我们的数码表采用{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00};㈣晶振电路。

在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

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

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

㈤复位电路。

这部分设计用来完成对单片机的复位。

以上是对本次设计课题的初步分析,以下将对各部分模块设计进行详细阐述。

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

框图如下:图3.1数字钟硬件系统示意图3.2 数字钟软件部分组成框图3.2.1 时间调整的程序流程图3.2时间调整程序流程框图3.2.2 时钟显示程序流程4 各部分模块介绍4.1 单片机AT89C51芯片分析AT89C51单片机引脚图如下:图 4.1 AT89C51引脚图该单片机是标准的40引脚双列直插式集成电路芯片,其各个引脚功能如下:VCC:+5V电源。

VSS: 接地。

RST:复位信号。

当输入的复位信号延续两个周期以上的高电平时即为有效,用来完成单片机的初始化操作。

XTAL1和XTAL2:外接晶体引线端。

当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

PO口:P0口作为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”时对引脚输入的干扰。

本次设计采用P0口作为数码管段选输出使用。

P2口:内部有上拉电阻的8位I/O口,本次设计中作为数码管位选输出使用。

4.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

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

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

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

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

单片机常见的复位如图所示。

电路为上电复位,它利用电容充电来实现的。

在接电瞬间,RESET端的电位与VCC相同,随着充电电流的减少,RESET的电位逐渐下降。

只要保证RESET为高电平的时间大于两个机器周期,便能正常复位。

该电路除具有上电复位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻分压,在RESET端产生一个复位高电平。

图4.3 复位电路4.4 显示模块考虑采用动态显示部分,用P1口作为数码管数据(段选),P2口作为数码管控制(位选)。

动态显示通常都是采用动态扫描的方法进行显示,即循环点亮每一个数码管,这样虽然在任意时刻都只有一位数码管被点亮,但由于人眼存在视觉暂留效应,只要每位数码管间隔时间足够短,就可以给人以通俗显示的感觉。

上面第一部分已提到,我们采用了50ms左右的时间间隔,并且是合理的。

6位数码管,实验室的硬件是共阴极的,故我们的数码表采用{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00};图4.4 显示模块4.5 时间校对按键模块本次设计要求了该简易数字钟必须具备时、分的调整功能。

故必须接入2个简单的按键(本设计设置问p0.2调时、p0.1调分,按键为实验箱单次脉冲按键模块),并且在软件部分必须引入这2个独立按键的子程序。

图4.5 时间校对按键电路5 简易数字钟源程序汇编源程序SECOND EQU 30HMINITE EQU 31HHOUR EQU 32HHOURK BIT P0.0MINITEK BIT P0.1SECONDK BIT P0.2DISPBUF EQU 40HDISPBIT EQU 48HT2SCNTA EQU 49HT2SCNTB EQU 4AHTEMP EQU 4BHORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,#00HMOV MINITE,#00HMOV HOUR,#12MOV DISPBIT,#00HMOV T2SCNTA,#00HMOV T2SCNTB,#00HMOV TEMP,#0FEHLCALL DISPMOV TMOD,#01HMOV TH0,#(65536-2000) / 256MOV TL0,#(65536-2000) MOD 256SETB TR0SETB ET0SETB EAWT: JB SECONDK,NK1 LCALL DELY10MSJB SECONDK,NK1INC SECONDMOV A,SECONDCJNE A,#60,NS60 MOV SECOND,#00HNS60: LCALL DISP JNB SECONDK,$NK1: JB MINITEK,NK2 LCALL DELY10MSJB MINITEK,NK2INC MINITEMOV A,MINITECJNE A,#60,NM60 MOV MINITE,#00HNM60: LCALL DISP JNB MINITEK,$NK2: JB HOURK,NK3 LCALL DELY10MSJB HOURK,NK3INC HOURMOV A,HOURCJNE A,#24,NH24 MOV HOUR,#00HNH24: LCALL DISP JNB HOURK,$NK3: LJMP WTDELY10MS:MOV R6,#10D1: MOV R7,#248 DJNZ R7,$DJNZ R6,D1RETDISP:MOV A,#DISPBUF ADD A,#8DEC AMOV R1,AMOV A,HOUR MOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1MOV A,#10MOV@R1,ADEC R1MOV A,MINITE MOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1MOV A,#10MOV@R1,ADEC R1MOV A,SECONDMOV B,#10DIV ABMOV @R1,ADEC R1MOV A,BMOV @R1,ADEC R1RETINT_T0:MOV TH0,#(65536-2000) / 256 MOV TL0,#(65536-2000) MOD 256 MOV A,#DISPBUFADD A,DISPBITMOV R0,AMOV A,@R0MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P1,AMOV A,DISPBITMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,AINC DISPBITMOV A,DISPBITCJNE A,#08H,KNAMOV DISPBIT,#00HKNA: INC T2SCNTAMOV A,T2SCNTACJNE A,#100,DONEMOV T2SCNTA,#00HINC T2SCNTBMOV A,T2SCNTBCJNE A,#05H,DONEMOV T2SCNTB,#00HINC SECONDMOV A,SECONDCJNE A,#60,NEXTMOV SECOND,#00HINC MINITEMOV A,MINITECJNE A,#60,NEXTMOV MINITE,#00HINC HOURMOV A,HOURCJNE A,#24,NEXTMOV HOUR,#00HNEXT: LCALL DISPDONE: RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H TAB: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHEND6 数字钟源程序的仿真6.1 编译、连接将数字钟源程序输入到keil软件,建立工程项目,添加完成程序的编译、连接,通过后无错误。

合集下载

简易数字钟的设计

简易数字钟的设计

中文摘要数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。

由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。

在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。

单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。

本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED 数码显示器等),再配以相应的软件,达到制作简易数字钟的目的。

硬件部分采用了单片机原理实验室的实验箱进行合理接线调试;软件部分通过keil进行了C程序的修改编译,protues软件仿真等。

最终在实验箱上实现了与仿真结果相同的实际效果。

关键词单片机定时功能、AT89C51、共阴LED、Keil、Protues软件。

AbstractMicroelectronics and computer technology along with the rapid development and progress, making the design of electronic systems and applications have entered a new era. The traditional manual design process is being advanced electronic design automation technology to replace. And is currently supporting modern technology has become the universal platform for electronic design, and step by step to support the development of system-level design. Only to hardware description language and logic synthesis-based top-down design methodology to meet the increasingly complex needs of digital system design. The progressive development of the taxi industry, the taxi meter is getting higher and higher requirements, the user requires not only the performance of the stability of billing, billing and accurate anti-cheat functions; and as a result of the instability in oil prices, billing system the need for regular adjustment of the meter so that users can request not to change the hardware to facilitate the billing system modifications.The system is the use of language, it can make use of digital circuits and system description, simulation and automatic design, and software as a development platform designed billing system procedures taxi and carried out a simulation program. To the achievement of pre-billing and simulation, as well as car to start, stop, pause and other functions, and dynamic scan shows the number of fares.Key Words Microcontroller\、AT89C51、7SEG-MPX6-CC-RED 、Keil、Proteus目录中文摘要 (I)Abstract (II)目录......................................................................................................................................... I II 1设计任务描述.. (1)1.1设计题目:简易数字钟的设计 (1)1.2 设计要求: (1)1.2.1 设计目的 (1)1.2.2 基本要求 (1)2设计思路 (2)3设计方框图 (3)3.1数字钟硬件部分示意图 (3)3.2数字钟软件部分组成框图 (4)3.2.1时间调整的程序流程 (4)3.2.2时钟显示程序流程 (5)4各部分模块介绍 (6)4.1单片机AT89C51芯片分析 (6)4.2晶振电路模块 (7)4.3复位电路模块 (7)4.4显示模块 (8)4.5时间校对按键模块 (9)5简易数字钟源程序 (10)5.1源程序 (10)6数字钟源程序的仿真 (15)6.1编译、连接 (15)6.2仿真 (16)6.2.1生成HEX文件 (16)6.2.2仿真结果 (16)7数字钟硬件原理图 (17)7.1总原理图 (17)8主要原器件清单 (18)小结 (19)致谢 (20)参考文献 (21)1 设计任务描述1.1 设计题目:简易数字钟的设计1.2 设计要求:1.2.1 设计目的熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。

简易数字钟设计(已仿真)

简易数字钟设计(已仿真)

简易数字钟设计摘 要 本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。

详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计,最后将设计好的模块组合调试,并最终在EWB 下仿真通过。

关键词 数字钟,EWB ,74LS160,总线,三态门,子电路一、引言:所谓数字钟,是指利用电子电路构成的计时器。

相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。

在此基础上,还能够实现整点报时,定时报闹等功能。

设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。

二、任务分析:能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。

总体设计本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。

方案一、采用异步电路,数据选择器将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。

方案二、采用同步电路,总线结构时钟信号分别加到各个模块,各个模块功能相对独立,框图如下: 显示 切换秒钟分钟 小时 控制1Hz 脉冲信号闹钟该方案用总线结构,主要功能集中在模块内部,模块功能较为独立,模块间连线简单,易于扩展,本次设计采用此方案。

综上所述,本次设计采用方案二。

秒计数和分计数为60进制,时计数为24进制,为了简化设计,秒和分计数采用同一单元。

数字时钟设计方案

数字时钟设计方案

数字时钟设计方案数字时钟是一种以数字形式显示时间的钟表。

它主要由时钟芯片、显示模块和控制电路等组成。

下面将介绍一种数字时钟的设计方案。

首先,时钟芯片是数字时钟的核心部件,其主要功能是实时计时,并提供时间信号给显示模块。

在设计中,可以选用一款精度较高的实时时钟芯片,如DS1302或DS3231,并通过SPI 或I2C等接口与其他器件进行通信。

其次,显示模块是数字时钟的输出设备,它将时钟芯片提供的时间信号转换成数字形式显示。

常见的数字时钟显示模块有七段数码管、液晶显示屏等。

在此方案中,我们选用四位共阳极的七段数码管。

然后,控制电路是数字时钟的逻辑控制部分,它通过控制模块将时钟芯片的时间信号经逻辑处理后发送给显示模块,并实现其他功能。

在此方案中,控制电路可以采用单片机或FPGA等器件实现。

以STM32单片机为例,通过编程控制GPIO口的电平改变,可以实现对七段数码管的动态显示。

具体实现方案如下:1. 硬件设计:选择合适的时钟芯片和显示模块,并完成其与控制电路的连接。

时钟芯片与控制电路的连接方式主要是通过SPI或I2C接口,而显示模块与控制电路的连接方式主要是通过GPIO口。

2. 软件设计:使用C语言或汇编语言编写控制电路的程序。

程序的主要任务是读取时钟芯片的时间信号,进行逻辑处理后控制七段数码管的显示。

3. 功能扩展:除了基本的时分秒显示外,还可以添加其他附加功能,如日期显示、闹钟设置、温度显示等。

这些功能可以通过增加相应的硬件模块和对应的软件控制实现。

4. 调试和测试:完成硬件和软件的设计后,需要进行调试和测试。

可以通过调试工具实时查看七段数码管的显示结果,并对代码进行正确性和稳定性测试。

5. PCB设计和制作:完成电路设计后,需要进行PCB的设计和制作。

在设计PCB时,要考虑电路的布局、信号线的走向和层间连接等因素,保证电路的稳定性和可靠性。

6. 组装和调试:完成PCB制作后,进行组装和调试。

将制作好的电路板和其他组件进行连接,进行最后的调试和测试。

数字钟的设计方案

数字钟的设计方案

数字钟的设计方案1. 引言数字钟是一种常见的时间显示器件,它以数字显示时间,具有简洁美观、易于读取等特点。

本文将介绍数字钟的设计方案,包括硬件和软件方面的设计内容。

2. 硬件设计2.1 显示模块数字钟的核心部件是显示模块,用于显示时间。

常用的显示模块有7段数码管和LED点阵两种。

2.1.1 7段数码管7段数码管由7个独立的LED组成,可以显示0~9的数字,以及一些其他符号如冒号、减号等。

设计时需要根据实际需求确定数码管的位数,常见的有4位、6位、8位等不同配置。

2.1.2 LED点阵LED点阵由多个LED灯组成,可以显示更丰富的内容,如数字、字母、图标等。

相比于7段数码管,LED点阵的显示效果更加丰富,但也需要更高的成本和复杂的控制电路。

2.2 控制模块数字钟的控制模块负责驱动显示模块、获取时间信息并进行操作控制。

常用的控制模块有单片机、集成电路等。

2.2.1 单片机单片机是数字钟常用的控制模块,它具有较低的成本、易于编程和灵活的IO 口。

设计时需要根据具体需求选择适合的单片机型号,并编写相应的控制程序。

2.2.2 集成电路一些数字钟采用集成电路作为控制模块,这些集成电路通常已经集成了时钟芯片、驱动电路等功能,可以简化设计和布线。

相比于单片机,集成电路的功耗较低,但功能和灵活性有一定限制。

3. 软件设计3.1 时钟模块时钟模块负责获取当前时间,并根据需求进行时间格式转换。

设计时需要考虑时钟的精度、稳定性和时间格式的灵活性。

常见的时间格式有12小时制和24小时制,可以根据用户的偏好进行设置。

3.2 显示模块驱动程序显示模块驱动程序负责将时间信息以合适的形式显示在显示模块上。

对于7段数码管,驱动程序需要将对应的数字或符号发送给相应的数码管;对于LED点阵,驱动程序需要控制每一个LED灯的亮灭状态。

3.3 按键程序数字钟通常需要设置时间、闹钟等功能,因此需要设计按键程序实现对这些功能的控制。

按键程序需要识别按键的输入,并根据不同的按键组合实现不同的控制操作。

数字钟设计初级版

数字钟设计初级版

一数字钟设计原理和基于QuartursⅡ的设计流程1.1 数字钟设计原理首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。

sethour可以调整时钟的小时部分, setmin可以调整分钟,步进为1。

由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。

CLK端连接外部10Hz的时钟输入信号clk。

对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。

用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。

该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路等组成。

石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。

“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。

“时、分、秒”计数器的输出经译码器送显示器显示。

校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。

1.2 QuartursⅡ的设计流程图图1-1 设计流程图二系统框图及程序清单2.1 系统框图图2-1系统框图2.2 源程序2.2.1 小时计数器VHDL语言源程序LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour ISPORT(clk,reset:IN STD_LOGIC;daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINdaout<=count;PROCESS(clk,reset)BEGINIF(reset='0')THEN count<="000000"; ——若reset=0,则异步清零ELSIF(clk'event and clk='1')THEN ——否则,若clk上升沿到IF(count(3 DOWNTO 0)="1001")THEN ——若个位计时恰好到“1001”即9IF(count<16#23#)THEN ——23进制count<=count+7; ——若到23D则elsecount<="000000"; ——复0END IF;ELSIF (count<16#23#)THEN ——若未到23D,则count进1count<=count+1;ELSE ——否则清零count<="000000";END IF; ——END IF(count(3 DOWNTO 0)=“1001”)END IF; ——END IF(reset=…0‟)END PROCESS;END fun;2.2.2 分钟计数器VHDL语言源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute ISPORT(clk,clk1,reset,sethour:IN STD_LOGIC;enhour:OUT STD_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY minute ;ARCHITECTURE fun OF minute ISSIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC; ——enmin_1为59分时的进位信号BEGIN ——enmin_2由clk调制后的手动调时脉冲信号串daout<=count;enhour_2<= (sethour and clk1); ——sethour为手动调时控制信号,高电平有效enhour<= (enhour_1 or enhour_2);PROCESS(clk,reset,sethour)BEGINIF(reset='0') THEN ——若reset为0,则异步清零count<="0000000";ELSIF(clk'event and clk='1')THEN ——否则,若clk上升沿到IF(count (3 DOWNTO 0) ="1001")THEN——若个位计时恰好到“1001”即9IF(count <16#60#) THEN ——又若count小于16#60#,即60IF(count="1011001") THEN——又若已到59Denhour_1<='1'; ——则置进位为1count<="0000000"; ——count复0ELSEcount<=count+7; ——若count未到59D,则加7,即作“加6校正”END IF; ——使前面的16#60#的个位转变为8421BCD的容量ELSEcount<="0000000";——count复0(有此句,则对无效状态电路可自启动)END IF; ——END IF(count<16#60#)ELSIF (count <16#60#) THENcount<=count+1; ——若count<16#60#则count加1enhour_1<='0' after 100 ns; ——没有发生进位ELSEcount<="0000000"; ——否则,若count不小于16#60# count复0END IF; ——END IF(count(3 DOWNTO 0)=“1001”)END IF; ——END IF(reset=…0‟)END process;END fun;2.2.3 秒钟计数器VHDL语言源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second ISPORT( clk,reset,setmin:STD_LOGIC;enmin:OUT STD_LOGIC;daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC; ——enmin_1为59秒时的进位信号BEGIN ——enmin_2由clk调制后的手动调分脉冲信号串daout<=count;enmin_2<=(setmin and clk); ——setmin为手动调分控制信号,高电平有效enmin<=(enmin_1 or enmin_2); ——enmin为向分进位信号PROCESS(clk,reset,setmin)BEGINIF(reset='0')THEN count<="0000000"; ——若reset为0,则异步清零ELSIF(clk 'event and clk='1')then ——否则,若clk上升沿到IF(count(3 downto 0)="1001")then ——若个位计时恰好到“1001”即9IF(count<16#60#)then ——又若count小于16#60#,即60HIF(count="1011001")then ——又若已到59Denmin_1<='1';count<="0000000";——则置进位为1及count复0 ELSE ——未到59Dcount<=count+7; ——则加7,而+7=+1+6,即作“加6校正”END IF;ELSE ——若count不小于16#60#(即count等于或大于16#60#)count<="0000000"; ——count复0END IF; ——END IF(count<16#60#)ELSIF(count<16#60#)then ——若个位计数未到“1001”则转此句再判count<=count+1; ——若count<16#60#则count加1enmin_1<='0'after 100 ns; ——没有发生进位ELSE ——否则,若count不小于16#60#count<="0000000"; ——则count复0END IF; ——END IF(count(3 DOWNTO 0)=“1001”)END IF; ——END IF(reset=…0‟)END PROCESS;END fun;2.2.4 顶层文件library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity DigitalClock isport(clk,en,rst : in std_logic;ADJEN : in std_logic;AlarmEn : in std_logic;alarmADJ : in std_logic;ADJ : in std_logic_vector(3 downto 0);sound : out std_logic;hour_unit : out std_logic_vector(3 downto 0);hour_decade : out std_logic_vector(3 downto 0);min_unit : out std_logic_vector(3 downto 0);min_decade : out std_logic_vector(3 downto 0);sec_unit : out std_logic_vector(3 downto 0);sec_decade : out std_logic_vector(3 downto 0);dote1 : out std_logic_vector(3 downto 0);dote2 : out std_logic_vector(3 downto 0));end ;architecture bhv of DigitalClock iscomponent hourport(rst,carry,en : in std_logic;ADJclk,ADJEN : in std_logic;ADJ : in std_logic_vector(3 downto 0);decade,unit : out std_logic_vector(3 downto 0));end component;component minport(rst,carry,en : in std_logic;ADJclk,ADJEN : in std_logic;ADJ : in std_logic_vector(3 downto 0);carryout : out std_logic;decade,unit : out std_logic_vector(3 downto 0));end component;component secport(rst,clk,en : in std_logic;ADJEN : in std_logic;carryout : out std_logic;decade,unit : out std_logic_vector(3 downto 0));end component;component alarmport(clk,en,ADJclk : in std_logic;alarmADJ : in std_logic;AlarmEn : in std_logic;ADJ : in std_logic_vector(3 downto 0);hour_unit : in std_logic_vector(3 downto 0);hour_decade : in std_logic_vector(3 downto 0);min_unit : in std_logic_vector(3 downto 0);min_decade : in std_logic_vector(3 downto 0);ADJhour_unit : out std_logic_vector(3 downto 0);ADJhour_decade : out std_logic_vector(3 downto 0);ADJmin_unit : out std_logic_vector(3 downto 0);ADJmin_decade : out std_logic_vector(3 downto 0);sound : out std_logic);end component;component PrescalClkport(clkin : in std_logic;clkout_1Hz : out std_logic;clkout_4Hz : out std_logic);end component;signal carry1,carry2,clk_1Hz,clk_4Hz : std_logic;signal hour1,hour2,min1,min2 ,ADJhour1,ADJhour2,ADJmin1,ADJmin2 : std_logic_vector(3 downto 0);beginU1 : hour port map(rst=>rst,ADJclk=>clk_4Hz,en=>en,carry=>carry1,ADJEN=>ADJEN,ADJ=>ADJ,decade=>hour1,unit=>ho ur2);U2 : min port map(rst=>rst,ADJclk=>clk_4Hz,en=>en,carry=>carry2,carryout=>carry1,ADJEN=>ADJEN,ADJ=>ADJ,decade= >min1,unit=>min2);U3 : sec port map(rst=>rst,clk=>clk_1Hz,en=>en,carryout=>carry2,decade=>sec_decade,unit=>sec_unit,ADJEN=>ADJEN);U4 : alarm port map(clk=>clk_1Hz,en=>en,ADJclk=>clk_4Hz,alarmADJ=>alarmADJ,AlarmEn=>AlarmEn,ADJ=>ADJ, hour_unit=>hour2,hour_decade=>hour1,min_unit=>min2,min_decade=>min1,ADJhour_decade=>ADJhour1,ADJhour_unit=>ADJhour2,ADJmin_decade=>ADJmin1,ADJmin_unit=>AD Jmin2 ,sound=>sound);U5 : PrescalClk port map(clkin=>clk,clkout_1Hz=>clk_1Hz,clkout_4Hz=>clk_4Hz);process(hour1,hour2,min1,min2,alarmADJ,ADJhour1,ADJhour2,ADJmin1,ADJmin2)beginif(alarmADJ='0') thenhour_decade<=hour1;hour_unit<=hour2;min_decade<=min1;min_unit<=min2;elsehour_decade<=ADJhour1;hour_unit<=ADJhour2;min_decade<=ADJmin1;min_unit<=ADJmin2;end if;dote1<="1010";dote2<="1010";end process;end;2.2.5 分频library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PrescalClk isport(clkin : in std_logic;clkout_1Hz : out std_logic;clkout_4Hz : out std_logic);end ;Architecture bhv of PrescalClk isbeginprocess(clkin)variable count1 : integer range 0 to 32768;variable count2 : integer range 0 to 8192;beginif clkin 'event and clkin='1' then count1 := count1+1;count2:=count2+1;if(count1=32768) then clkout_1Hz<='1' ;else clkout_1Hz<='0';end if;if(count2=8192) then clkout_4Hz<='1';else clkout_4Hz<='0';end if;end if;end process;end;三各模块实现功能3.1秒计时器second1是由一个60进制的计数器构成的,具有清0、置数和计数功能。

设计制作电子时钟

设计制作电子时钟

设计制作简易数字钟一、设计要求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进制计数器,分别用于对分、秒和时的计数。

简易数字钟设计

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

简易电子钟设计范文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数字钟的设计

数字钟的设计引言数字钟是一种常见的时钟设计,它能够以数字形式显示时间,方便人们获取准确的时间信息。

本文将介绍数字钟的设计原理、硬件与软件实现,并提供一个示例设计的步骤指南。

设计原理数字钟的设计原理基于计数器和显示器。

计数器用于记录时间,而显示器用于将记录的时间以数字形式显示出来。

一般情况下,数字钟主要涉及到以下几个方面的设计:1.时钟电路:时钟电路是数字钟的核心组成部分,它通过稳定的振荡器产生一个稳定的时钟信号,以确保数字钟的准确性。

2.计数器电路:计数器电路用于记录时间。

它可以根据时钟信号来递增或递减计数值,并将计数值转换成小时、分钟和秒钟等形式。

3.显示器电路:显示器电路用于将计数器记录的时间以数字形式显示出来。

常见的显示器电路包括七段数码管、LCD显示屏等。

硬件设计在数字钟的硬件设计中,需要考虑以下几个方面:1.选取合适的时钟电路:选择合适的时钟电路非常重要,它直接影响到数字钟的准确性。

常用的时钟电路包括晶振电路和石英钟电路等。

2.选择合适的计数器芯片:选择合适的计数器芯片能够简化数字钟的设计。

常见的计数器芯片有74HC4017、CD4510等。

3.选择合适的显示器:根据设计需求选择合适的显示器。

七段数码管是常用的显示器,它能够以数字形式显示时间。

另外,LCD显示屏也是常见的选择之一。

软件设计数字钟的软件设计主要涉及到以下几个方面:1.程序框架设计:设计程序框架能够清晰地组织代码,使得代码具有良好的可读性和可维护性。

可以使用面向对象的思想设计程序框架,将时钟和显示器等抽象为对象,方便调用和管理。

2.时钟管理:设计一个时钟管理模块,用于控制时钟的计数和显示。

该模块需要根据计数器的计数值来更新显示器的显示。

3.用户交互设计:如果有需要,可以设计用户交互模块,允许用户设置时间等功能。

可以通过按键输入实现用户与数字钟的交互。

示例设计以下是一个简单的数字钟设计的示例步骤指南:1.选择合适的时钟电路,比如使用一个晶振电路作为时钟源。

简易数字钟电路设计基本思路_邵兰


二 、系 统 硬 件 设 计
一 个 完 整 的 数 字 钟 电 路 应 包 括 输 入 脉 冲 电 路 、单 片 机 、晶 片 和 复 位 电 路 、外 部 存 储 器 电 路 和 LED 显 示 电 路 5
个部分。 我们知道, NCS- 51 单片 机 的 片 内 结 构 由 8 个 部 件 组 成 , 即 微 处 理 器( CPU) 、数 据 存 储 器( RAM) 、程 序 存 储 器
首先, 我们给数字钟设定的主要功能为: ①用单脉冲开关控制秒表的启动 / 停止 / 复位, 以 4 位数码管的高 2
位显示秒值, 低 2 位显示百分秒。②作为 24 小时可调整的时钟 , 以 4位 数 码 管 的 高 2 位 显 示 小 时 , 低 2 位 显 示 分
钟。③发光二极管每秒闪烁一次, 表明时钟正常运行。需调整时二极管停闪。④可设定初值的倒计时功能。
三 、程 序 设 计 要 点 数字钟的程序主要包括 3 个方面。一是利用定时器完成时钟的定时周期, 二是利用按键和开关触发外中断, 改变时钟运行模式, 三是单片机控制 LED 数码管显示时间和相关功能的计数值。设计时重点考虑的, 一是定时器 的使用。为实现秒表的功能, 需要使用定时器 TO 产生 IS 的中断, 并在中断程序中完成每一秒数字的变化, 并在主 程度中动态显示该字符。二是外中断的使用。将单脉冲开关 PULSE 连接到单片机的 INT1 管脚上, 通过 INT1 控制 实现秒的启动 / 停止 / 复位这三项功能。三是 24 小时时钟显示程序。四是秒表和倒计时功能程序。五是时间调整 功能程序。六是初值调整功能程序。
数 字 钟 设 计 涉 及 的 主 要 任 务 有 4 项 : 一 是 使 用 定 时 器 , 以 实 现 24 小 时 时 钟 和 秒 表 的 运 行 ; 二 是 使 用 计 数 器 ,
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档