数字钟程序
- 格式:docx
- 大小:12.83 KB
- 文档页数:8
stm32 数字时钟课程设计一、课程目标知识目标:1. 学生能理解STM32的基本结构和工作原理,掌握其编程方法。
2. 学生能掌握数字时钟的基本原理,包括时钟源、分频器、计数器等组成部分。
3. 学生能了解实时时钟(RTC)的功能及其在STM32中的应用。
技能目标:1. 学生能运用C语言编写程序,实现STM32控制数字时钟的功能。
2. 学生能通过调试工具,对程序进行调试和优化,确保数字时钟的准确性。
3. 学生能运用所学知识,设计具有实用价值的数字时钟产品。
情感态度价值观目标:1. 培养学生对电子技术和编程的兴趣,激发其探究精神。
2. 培养学生团队合作意识,使其在项目实施过程中学会相互沟通、协作。
3. 培养学生严谨、细致、负责的工作态度,提高其解决实际问题的能力。
课程性质:本课程为实践性较强的课程,结合STM32和数字时钟知识,培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的电子技术基础和C语言编程能力,对实际操作感兴趣,但可能缺乏项目实践经验。
教学要求:注重理论与实践相结合,引导学生主动探索,提高其分析问题、解决问题的能力。
在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在原有基础上得到提高。
将课程目标分解为具体的学习成果,便于后续教学设计和评估。
二、教学内容本课程教学内容主要包括以下几部分:1. STM32基本原理与编程基础:介绍STM32的内部结构、工作原理,C语言编程基础及其在STM32中的应用。
- 教材章节:第一章至第三章- 内容:微控制器基础、STM32硬件结构、C语言编程基础、STM32编程环境搭建。
2. 数字时钟原理与设计:讲解数字时钟的基本原理、组成部分以及设计方法。
- 教材章节:第四章至第五章- 内容:时钟源、分频器、计数器、实时时钟(RTC)、数字时钟设计方法。
3. STM32实现数字时钟功能:结合STM32和数字时钟知识,指导学生动手实践,实现数字时钟功能。
电子数字钟的设计与制作
设计和制作电子数字钟的步骤如下:
1. 确定需求:确定所要设计的电子数字钟的功能要求,如显示时间、日期、闹钟功能等。
2. 选取器件:选取合适的微控制器、显示屏、时钟芯片、按键等器件。
微控制器需要具备足够的处理能力和接口,以便于控制显示屏和处理输入信号。
3. 硬件设计:根据选取的器件,设计电路图和PCB布局。
包
括时钟电路、显示电路、按键电路、电源供电电路等。
4. 软件开发:编写嵌入式软件程序,实现时钟的各种功能。
包括处理时间的计算与显示、闹钟功能的设置与触发、用户界面的交互等。
5. 制作电路板:利用电子设计软件将电路图转化为PCB文件,并进行打样加工,制作出电路板。
6. 组装调试:根据设计好的布局,将所选取的器件焊接到电路板上。
完成后进行电路的检查、组装和连线等工作。
7. 软件烧录:通过编程器将软件程序烧录到微控制器中。
8. 调试测试:进行电源接入,对时钟的各个功能进行测试调试,确保其正常运行。
9. 外壳设计与制作:设计合适的外壳以保护电子数字钟,可以采用3D打印、注塑等方式制作外壳。
10. 最终装配与测试:将完整的电子数字钟进行装配,并进行
最后的测试以确保其功能正常。
数电课程设计数字钟一、课程目标知识目标:1. 理解数字钟的基本原理和组成,掌握数字电路基础知识;2. 学会运用组合逻辑电路设计数字钟的时、分、秒显示部分;3. 掌握数字钟的计时功能,了解其工作过程和调试方法;4. 了解数字钟在实际应用中的优势,如精确度、稳定性等。
技能目标:1. 能够运用所学知识,设计并搭建一个简单的数字钟电路;2. 培养动手实践能力,学会使用相关仪器、工具进行电路搭建和调试;3. 提高问题解决能力,能够分析并解决数字钟运行过程中出现的问题;4. 学会团队协作,与他人共同完成课程设计任务。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识;2. 培养学生的耐心、细心和责任心,养成良好的学习习惯;3. 引导学生关注科技发展,认识数字技术在实际生活中的应用;4. 培养学生的环保意识,注意电子垃圾的处理和回收。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际操作技能。
学生特点:学生已具备一定的数字电路基础知识,具有较强的求知欲和动手欲望。
教学要求:结合课程性质和学生特点,采用理论教学与实践操作相结合的方式,注重启发式教学,引导学生主动参与课程设计过程,提高学生的实践能力和创新能力。
通过课程目标的分解,确保学生能够达到预定的学习成果,为后续的教学设计和评估提供依据。
二、教学内容1. 数字钟原理及组成- 了解数字钟的基本工作原理- 掌握数字钟的各个组成部分,如振荡器、分频器、计数器、显示电路等2. 组合逻辑电路设计- 学习组合逻辑电路的设计方法- 应用组合逻辑电路设计数字钟的时、分、秒显示部分3. 数字电路基础知识- 复习数字电路基础知识,如逻辑门、触发器、计数器等- 了解不同类型数字电路的特点和应用4. 数字钟电路搭建与调试- 学习数字钟电路的搭建方法- 掌握数字钟电路的调试技巧,分析并解决常见问题5. 教学内容安排与进度- 第一周:数字钟原理及组成,数字电路基础知识复习- 第二周:组合逻辑电路设计,数字钟显示部分设计- 第三周:数字钟电路搭建,初步调试- 第四周:数字钟电路调试,优化与改进6. 教材章节及内容列举- 教材第三章:数字电路基础- 教材第四章:组合逻辑电路- 教材第五章:时序逻辑电路- 教材第六章:数字钟设计与实践教学内容科学、系统,注重理论与实践相结合,以学生动手实践为主,充分调动学生的积极性,培养实际操作能力。
数字时钟代码1. 介绍数字时钟是一种常见的显示时间的装置,它通过数字显示屏显示当前的小时和分钟。
本文档将介绍如何编写一个简单的数字时钟代码。
2. 代码实现以下是一个基本的数字时钟代码实现示例:import timewhile True:current_time = time.localtime()hour = str(current_time.tm_hour).zfill(2)minute = str(current_time.tm_min).zfill(2)second = str(current_time.tm_sec).zfill(2)clock_display = f"{hour}:{minute}:{second}"print(clock_display, end="\r")time.sleep(1)代码说明:- `time.localtime()` 函数返回当前时间的结构化对象,包括小时、分钟和秒等信息。
- `str(current_time.tm_hour).zfill(2)` 将小时转换为字符串,并使用 `zfill()` 方法填充到两位数。
- `str(current_time.tm_min).zfill(2)` 和`str(current_time.tm_sec).zfill(2)` 同理处理分钟和秒。
- 使用 f-string 格式化字符串 `clock_display`,将小时、分钟和秒显示为 `` 的形式。
- `print(clock_display, end="\r")` 使用 `\r` 实现覆盖打印,使得时钟在同一行连续显示。
- `time.sleep(1)` 让程序每隔一秒更新一次时间。
请注意,上述代码需要在支持 Python 的环境中运行。
3. 结束语通过以上的代码实现,我们可以编写一个简单的数字时钟。
单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
说明书一、主程序、子模块流程图电子闹钟主流程图:调时、调日期、调星期流程图:倒计时结束流程图:音乐播放流程图:闹铃功能流程图:二、功能介绍:有计时,计日期,计星期,调时、调日期、调星期、闹钟、调闹钟、音乐闹铃、秒表、99秒倒计时、60秒倒计时、5秒倒计时、倒计时结束播放提醒音乐、直接按键播放音乐共计15个小的功能,分为四个功能模块,用四个按键来实现1.调时,查看日期以及调日期,查看星期以及调星期按键1进入该模块后,显示该模块的界面“1234”,分别代表在该界面中要用到的按键编号。
此时按1即进入调时界面,显示当前时间,按1秒加1,按2分加1,按3时加1,按4退出该界面而回到模块界面。
此时按2即进入查看日期以及调日期的界面,显示当前日期,按1天加1,按2月加1,按3年加1,按4退出该界面而回到模块界面。
此时按3即进入查看星期以及调星期的界面,显示当前星期,按1星期加1,按4退出该界面而回到模块界面。
此时按4则退出功能模块1而回到主界面。
2.调闹钟进入该模块时,显示闹钟时间,按1秒加1,按2分加1,按3时加1,按4退出调闹钟模块而回到主界面3.秒表,倒计时进入该模块后,显示界面“12 4”,分别代表在该界面中要用到的按键编号。
此时按1进入秒表计时状态,按4退出,回到模块界面。
此时按2进入99秒倒计时状态,按1切换到60秒倒计时,按1切换到5秒倒计时,在倒计时进行中,按4可以回到模块界面。
此时按4,可以回到主界面4.音乐进入该界面后,显示界面“00-00-00”,按1播放歌曲1,按2播放歌曲2,按3播放歌曲3,按4播放歌曲4,在播放歌曲时,按4可以结束播放音乐并且回到主界面。
74ls161单片机30进制数数字钟设计过程设计一个74LS161单片机30进制数的数字钟,可以按照以下步骤进行:
1.确定时钟的时间范围和显示方式。
例如,设定时间范围为00:00到29:59,并使用四个数码管显示小时和分钟。
2.确定数码管的接线方式。
74LS161是一个4位二进制计数器,输出
是四个二进制信号。
将每个输出信号连接到对应数码管的相应段。
3.编写单片机程序。
使用74LS161作为时钟源,每秒产生一个脉冲。
程序需实现以下功能:
-将74LS161的输出转换为30进制的数值,并将其转换为BCD码或者
直接连接到数码管显示。
-根据当前的数值更新数码管的显示。
4.连接外部电路和电源。
将74LS161和四位数码管连接到单片机的引脚,并连接适当的电源。
确保电路的接地和电源线连接正确。
5.编译程序,并将其烧录到单片机中。
使用适当的开发工具和编译器,将编写好的程序烧录到单片机中。
6.测试和调试。
连接电源后,观察数码管的显示是否正确。
调试程序,确保时钟的计时和显示功能正常。
以上是一个简单的设计过程,可以根据具体需求进行适当的修改和调整。
还可以添加其他功能,如闹钟和定时器等。
部件一:60进制程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60;ARCHITECTURE ARTCLOCK60 OF CLOCK60 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN -----异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60;60进制波形图如下:部件二:24进制程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK24 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK24;ARCHITECTURE ARTCLOCK24 OF CLOCK24 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN -----异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9 or (QH=2 AND QL=3))THENQL<="0000";IF(QH=2)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK24;24进制的波形图如下:数字钟的全部程序如下:LIBRARY IEEE; ---秒信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60s ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60s;ARCHITECTURE ARTCLOCK60s OF CLOCK60s ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; --进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN ---异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN --同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60s;LIBRARY IEEE; ---分信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK60m ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK60m;ARCHITECTURE ARTCLOCK60m OF CLOCK60m ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; --进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN --异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN ---同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9)THENQL<="0000";IF(QH=5)THENQH<="0000";ELSEEND IF;ELSEQL<=QL+1;END IF;END IF;END IF;END PROCESS;END ARTCLOCK60m;LIBRARY IEEE; ---时信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLOCK24 ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; --进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END CLOCK24;ARCHITECTURE ARTCLOCK24 OF CLOCK24 ISBEGINCO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0'; ---进位输出PROCESS(CLK,NRESET)BEGINIF(NRESET='0')THEN ---异步复位QH<="0000";QL<="0000";ELSIF(CLK'EVENT AND CLK='1')THEN ---同步置数IF(LOAD='1')THENQH<=D(7 DOWNTO 4);QL<=D(3 DOWNTO 0);ELSIF(CI='1')THENIF(QL=9 or (QH=2 AND QL=3))THENQL<="0000";IF(QH=2)THENQH<="0000";ELSEQH<=QH+1;END IF;ELSEEND IF;END IF;END IF;END PROCESS;END ARTCLOCK24;LIBRARY IEEE; ---时信号USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour ISPORT( CLK: IN STD_LOGIC; ---时钟信号NRESETS: IN STD_LOGIC; ---复位端LOADS: IN STD_LOGIC; ---置数端NRESETM: IN STD_LOGIC; ---复位端LOADM: IN STD_LOGIC; ---置数端NRESETH: IN STD_LOGIC; ---复位端LOADH: IN STD_LOGIC; ---置数端DS: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端DM: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端DH: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH1: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL1: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QH2: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL2: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QH3: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL3: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END hour;ARCHITECTURE ART OF hour ISCOMPONENT CLOCK60SPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT CLOCK60MPORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; ---始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT CLOCK24PORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端LOAD: IN STD_LOGIC; ---置数端D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端CI:IN STD_LOGIC; --始能端CO: OUT STD_LOGIC; ---进位脉冲QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNAL Z1,Z2:STD_LOGIC;BEGINU1: CLOCK60S PORT MAP(CLK,NRESETS,LOADS,DS,CI,Z1,QH1,QL1);U2: CLOCK60M PORT MAP(CLK,NRESETM,LOADM,DM,Z1,Z2,QH2,QL2);U3: CLOCK24 PORT MAP(CLK,NRESETH,LOADH,DH,Z2,CO,QH3,QL3);END ARCHITECTURE ART;电子钟全部引脚显示波形:00:00:59波形显示如下:00:59:59波形图如下,进位后为01:00:00 23:59:59波形图如下:调时间波形如下:用置位端进行调时,调到02:51:15波形如下:经验证,以上设计完全符合题目要求!。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div isport(clk3:IN std_logic;clkout1,clkout2:OUT std_logic);end div;architecture one of div isbeginprocess(clk3)variable cnt:integer range 0 to 25000000;variable tmp:std_logic;beginif(clk3'event and clk3='1')thenif cnt>=24999999 then --1s分频cnt:=0;tmp:=not tmp;else cnt:=cnt+1;end if;end if;clkout1<=tmp;end process;process(clk3)variable cnt:integer range 0 to 100000;variable tmp:std_logic;beginif(clk3'event and clk3='1')then --1ms分频if cnt>=25000 thencnt:=0;tmp:=not tmp;else cnt:=cnt+1;end if;end if;clkout2<=tmp;end process;end one;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport ( clk:in std_logic;h1,h0:out std_logic_vector(3 downto 0));end hour;architecture hour_aa of hour issignal q1,q0: std_logic_vector(3 downto 0); BEGINprocess(clk)BEGINIF(clk'event AND clk='1')THENIF (q1="0010" AND q0="0011") THENq1<="0000";q0<="0000";elsif(q0="1001")THENq1<=q1+1;q0<="0000";else q1<=q1;q0<=q0+1;end if;end if;end process;h1<=q1;h0<=q0;end hour_aa;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity min isport ( clk:in std_logic;m1,m0:out std_logic_vector(3 downto 0);co:out std_logic);end min;architecture min_aa of min issignal q1,q0: std_logic_vector(3 downto 0); BEGINp0:process(clk)BEGINIF(clk'event AND clk='1')THENIF (q1="0101" AND q0="1001") THENq1<="0000";q0<="0000";co<='1';elsif(q0="1001")THENq1<=q1+1;q0<="0000";elsif q1="0100" and q0="0000"then q1<="0100" ;q0<="0001";elseq1<=q1;q0<=q0+1;co<='0';end if;end if;end process;m1<=q1;m0<=q0;end min_aa;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux_21a isport ( a,b,sel:in std_logic;y:out std_logic);end mux_21a;architecture one of mux_21a isbeginy<=b when sel='1' elsea;end one;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mux_21b isport ( a,b,sel:in std_logic;y:out std_logic);end mux_21b;architecture one of mux_21b isbeginy<=b when sel='1' elsea;end one;LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY pianxuan ISPORT( clk: IN std_logic;q: OUT std_logic_vector(2 downto 0));END pianxuan ;ARCHITECTURE pianxuan_aa OF pianxuan IS BEGINPROCESS(clk)VARIABLE a: std_logic_vector(2 downto 0); BEGINIF (clk'event AND clk='1')THENA:=a+1;END IF;Q<=a;END PROCESS;END pianxuan_aa;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport ( clk:in std_logic;s1,s0:out std_logic_vector(3 downto 0);co:out std_logic);end second;architecture second_aa of second issignal q1,q0: std_logic_vector(3 downto 0); BEGINp0:process(clk)BEGINIF(clk'event AND clk='1')THENIF (q1="0101" AND q0="1001") THENq1<="0000";q0<="0000";co<='1';elsif(q0="1001")THENq1<=q1+1;q0<="0000";elseq1<=q1;q0<=q0+1;co<='0';end if;end if;end process ;s1<=q1;s0<=q0;end second_aa;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime isport(disclk:in std_logic_vector(2 downto 0);conv:in std_logic;s0,s1,m0,m1,h0,h1:in std_logic_vector(3 downto 0);dataout:out std_logic_vector(3 downto 0);wsel:out std_logic_vector(3 downto 0);y:out std_logic);end seltime;architecture st of seltime issignal count:std_logic_vector(1 downto 0);beginp0:process(disclk,conv)beginif conv='0' thencase disclk iswhen "000"=>dataout<=h1;when "001"=>dataout<=h0;when "010"=>dataout<=m1;when others=>dataout<=m0;end case;case disclk iswhen "000"=>wsel<="0111";when "001"=>wsel<="1011";when "010"=>wsel<="1101";when others=>wsel<="1110";end case;elsecase disclk iswhen "000"=>dataout<=s1;when others=>dataout<=s0;end case;case disclk iswhen "000"=>wsel<="1101";when others=>wsel<="1110";end case;end if;end process;p1:process(m1,m0)beginif (m1="0101" and m0="1001" and s1="0101") thenif(s0="0000"or s0="0010" or s0="0100" or s0="0110" or s0="1000") then y<='0';else y<='1';end if;end if;end process;end st;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xianshi isport(a:in std_logic_vector(3 downto 0);y:out std_logic_vector(6 downto 0));end xianshi;architecture one of xianshi isbeginy<="1111110" WHEN a="0000" else"0110000" WHEN a="0001" else"1101101" WHEN a="0010" else"1111001" WHEN a="0011" else"0110011" WHEN a="0100" else"1011011" WHEN a="0101" else"1011111" WHEN a="0110" else"1110000" WHEN a="0111" else"1111111" WHEN a="1000" else"1111011" WHEN a="1001" else"0000000" ;end one;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shuzizhong isport (P,Q,R,O:in std_logic;S:out std_logic_vector(6 downto 0);T:out std_logic_vector(3 downto 0);W:out std_logic);end shuzizhong;architecture shuzi of shuzizhong iscomponent secondport ( clk:in std_logic;s1,s0:out std_logic_vector(3 downto 0);co:out std_logic);end component;component minport ( clk:in std_logic;m1,m0:out std_logic_vector(3 downto 0);co:out std_logic);end component;component hourport ( clk:in std_logic;h1,h0:out std_logic_vector(3 downto 0));end component;component mux_21aport ( a,b,sel:in std_logic;y:out std_logic);end component;component mux_21bport ( a,b,sel:in std_logic;y:out std_logic);end component;component div isport(clk3:IN std_logic;clkout1,clkout2:OUT std_logic);end component;component pianxuanPORT( clk: IN std_logic;q: OUT std_logic_vector(2 downto 0)); end component ;component xianshiport(a:in std_logic_vector(3 downto 0);y:out std_logic_vector(6 downto 0));end component;component seltimeport(disclk:in std_logic_vector(2 downto 0);conv:in std_logic;s0,s1,m0,m1,h0,h1:in std_logic_vector(3 downto 0);dataout:out std_logic_vector(3 downto 0);wsel:out std_logic_vector(3 downto 0);y:out std_logic);end component;signal C,F,I,J,N,Z:std_logic;signal A,B,D,E,G,H,L:std_logic_vector(3 downto 0); signal K,M:std_logic_vector(2 downto 0);beginu1:second port map(clk=>N,s1=>A,s0=>B,co=>C);u2:min port map(clk=>I,m1=>D,m0=>E,co=>F);u3:hour port map(clk=>J,h1=>G,h0=>H);u4:mux_21a port map(a=>C,b=>N,sel=>P,y=>I);u5:mux_21b port map(a=>F,b=>N,sel=>Q,y=>J);u6:div port map(clk3=>O,clkout1=>N,clkout2=>Z);u7:pianxuan port map(clk=>z,q=>K);u8:xianshi port map(a=>L,y=>S);u9:seltime port map(disclk=>K,conv=>R,s0=>B,s1=>A,m0=>E,m1=>D,h0=>H,h1=>G,dataout=>L,wsel=>T,y=>W); end shuzi;。