数字钟设计总结通常是对数字钟设计的核心元素和成果的简短概述。它可能包括硬件和软件的设计决策、实现的方法、功能特点,以及可能涉及的创新点和难点。总结可以帮助开发者回顾整个设计过程,找出优点和不足,为未来的项目提供参考和改进的方向。同时,总结也可以展示开发者对设计的理解深度和对系统整体架构的把握能力。
数字钟设计总结1
经过一周的课程设计,我收获颇多,有深刻的心得体会。实训让我们受益匪浅。首先是关于单片机方面的。我们学到了许多关于单片机系统开发的知识,从最开始选题到最后的结题,更使我们得到了充分的锻炼。其次,它让我体会到了什么才是teamworkspirit。一如:团队管理的经验、团队意识的提升和协调能力等等,这些都会让我们终身受益。
通过此次课程设计,使我更加扎实的掌握了有关电子线路单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查我终于找出了问题所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践才能出真知,实践才是检验真理的唯一标准,唯有通过亲自动手制作,才能令我们掌握的知识不再是一些纸上谈兵的东西。
在这次的课程设计中,我们遇到了很多困难,过程很艰难,但是我们都克服了,这是对我们自己的肯定。我们不断发现错误,不断改正,不断领悟,不断获取。我们也曾灰心,也曾茫然,也曾不知所措,从一开始的自信满满,到最后的紧张繁杂,所有的这些都令我们回味无穷,这已经成为了我们人生的一个宝藏。我想今后的学习和工作也是这样的,汗水见证着成功,我想十年过后,但我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,最先映入脑海里的就是这门课程吧,就是这些为了一个共同的目标,相互合作,共同奋斗的日子吧。
不可否认,单片机是一门比较难的专业学科。但是经过这一学期的学习,我们觉得单片机这门课很好,让我们在设计中掌握课程,具有很强的实用性。在社会上,单片机也应用极其广泛。通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等。我相信在接下来的日子里,我会更深刻地去研究它,发掘它。
在这次的实训里,我觉得过得很充实。实训,不仅培养了我们独立思考、动手操作的.能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。汗水,是我们努力的过程,更是成功的使者。它是希望的凝聚。
回首此次实训,我们真的学到了很多很多。巩固了以前所学过的知识,将理论与实际结合起来,不断提高自己的实际动手能力和独立思考的能力,并学会去使用知识。当然不仅仅是这些课本上的知识,更重要的是一些课本上没有但是也很重要的知识,像是团队合作精神等。当我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,回忆起这些泛着汗水的时光的时候,定然会被我们的团队感动。
成功后会很喜悦,但过程一样令我们回味无穷。此次设计也让我明白了思路即出路,学问学问,有学必问。只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。亲历亲为,亲手实践才是硬道理。希望这样的实训能够继续下去,并不断地前进,帮助更多的学生更好地学习单片机,并能够在使用中发现它的无穷魅力!
数字钟设计总结2
不知不觉我已经来到公司半年了,回想起走过的脚印,深深浅浅半年时间,有欢笑、有汗水、有小小的成功,也有淡淡的失落。
这半年里,我顺利的完成工作中的各项任务,体会颇多。虽然工作中也有这样那样的一系列问题,不管是查阅各种资料还是同事的帮助,最终都被解决了。同时也学到了不少新的设计知识和施工技术,这是用金钱所买不到的,无论从工作、学习、做人上,我都有很大的收获。
我也深深体会到团队合作的重要性,不管是做什么项目,只有大家在一块探讨、一块解决问题,发挥每个人的优势,这样才会有好的效果、好的设计。同时也感受到我们这个团队的温暖,每个同事都会为我耐心的讲解各种各样的问题。这难得的几个月,同事教会我很多东西。
半年来的工作虽然取得了一定的成绩,但也存在一些不足,主要是设计能力和色彩的运用上还不够成熟,和有经验的同事比还有很大的差距。在今后的工作中,我一定认真总结经验,勇于发现和纠正自己工作中的缺点,不断调整自己的思维方式和工作方法,克服不足,努力把工作做得更好。
回顾毕业后工作的第一年,我努力学习,认真完成领导交给我的各项任务。在此我感谢领导给我的学习机会,让我能在业务上,专业技能上锻炼自己,感谢每位同事给予我的帮助和关怀,使我的工作更加顺利,感谢这个团队伴随我成长。在这个团结的大家庭里我会更加努力学习,努力工作。
数字钟设计总结3
设计题目:用vhdl语言实现数字钟的设计
班级:电子1002班学号:20102625姓名:于晓指导教师:李世平、李宁设计时间:2012年12月
摘要
数字钟是一种用数字电路技术实现时、分、秒计时的钟表。本设计主要是实现数字钟的功能,程序用vhdl语言编写,整体采用top-to-down设计思路,具有基本的显示年月日时分秒和星期的功能,此外还有整点报时功能。该数字钟的实现程序分为顶层模块、年月模块、日模块、时分秒定时模块、数码管显示模块、分频模块、星期模块,此外还有一个库。该程序主要是用了元件例化的方法,此外还有进程等重要语句。
没有脉冲时,显示时分秒,set按钮产生第一个脉冲时,显示年月日,第2个脉冲到来时可预置年份,第3个脉冲到来时可预置月份,依次第4、5、6、7、8个脉冲到来时分别可预置日期、时、分、秒、星期,第9个脉冲到来时设置星期后预置结束,正常工作,显示的是时分秒和星期。调整设置通过up来控制,up为高电平,upclk有脉冲到达时,预置位加1,否则减1。当整点到达时,报时器会鸣响,然后手动按键停止报时。
关键词:数字钟,vhdl,元件例化,数码管
1、课程设计目的
掌握利用可编程逻辑器件和eda设计工具进行电子系统设计的方法
2、课程设计内容及要求
设计实现一个具有带预置数的数字钟,具有显示年月日时分秒的功能。用6个数码管显示时分秒,set按钮产生第一个脉冲时,显示切换年月日,第2个脉冲到来时可预置年份,第3个脉冲到来时可预置月份,依次第4、5、6、7个脉冲到来时分别可预置日期、时、分、秒,第8个脉冲到来后预置结束,正常工作,显示的是时分秒。up为高电平时,upclk有脉冲到达时,预置位加1.否则减1,还可以在此基础上增加其它功能。
3、vhdl程序设计
3.1整体设计思路
本设计采用top-down模式设计,分模块进行,各功能都使用元件例化方式设计,主要有led显示模块、时分秒定时模块、日期模块、年月模块、分频模块、星期模块,此外还创建了一个程序包,用来实现年月日、时分秒的加减调整。主要运用了过程语句、元件例化语句、信号赋值语句、和顺序语句
图3-1-1整体结构图
图3-1-2顶层模块引脚图
3.2各模块设计思路
3.2.1普通计数器(时、分、秒、月、年计数器)设计
时钟模块通过调用程序包的时分秒加减过程语句实现两个六十进制,一个二十四进制,秒的进位信号作为分的计数时钟信号,分的进位信号作为时的时钟信号。时的进位信号通过管脚映射到日期模块的计数时钟信号。
定时功能在时分秒模块中,是由分计数器在到达59时产生一个脉冲,让speaker产生高电位鸣响。
年月模块主要实现月份的十二进制计数器,和100进制的年份计数器。月份的计数信号由日期模块的进位信号传递过来,年份的时钟信号由月份的进位信号产生。
图3-2-1时分秒引脚图图3-2-2年月引脚图3.2.2可变进制计数器(天计数器)模块设计
不同月中的天的数量是不同的,例如“大月”就有31“天”,“小月”有30“天”,平年“二月”有28“天”,而闰年“二月”有29“天”。所以天计数器应该具备进制可变的性能。日期模块主要分为三个部分,预置日期加,预置日期减和产生进位信号,使月份增加。平闰年的判断是通过年月模块传输过来年份信号(两个4位的bcd码),如果高位的信号为“xxx0”且低位的信号为“xx00”(如20,84等),或高位为“xxx1”且低位为“xx10”(如32等)则判断为闰年。这种方法的包含了一百年中的所有闰年的情况。然后判断大月小月可以判断月份来确定30进制还是31进制。进位信号也是分为大月、小月、平年闰年来确定是否产生。
图3-2-3日模块引脚图
3.2.3led显示模块
主要通过接受setpin的控制信号来选择显示的内容,把不同的信号赋给输出的端口,从而实现时分秒,年月日的切换。3.2.4星期模块
通过七进制计数器实现,同时带有预置的功能,不能同年月调整联动,但是能单独调整。
图3-2-4星期模块引脚图
4、仿真与分析
4.1日模块
4.1.1年份为2000年,月份为2月,有29天,初值设为2000年2月28日,仿真中日为:28、29、1、2、„
4.1.2年份为1999年,月份为2月,有28天,初值设为1999年2月28日,仿真中日为:28、1、2、„
4.1.3年份为2000年,月份为3月,有31天,初值设为2000年3月30日,仿真中日为:30、31、1、2、„
4.1.4年份为2000年,月份为4月,有30天,初值设为2000年4月30日,仿真中日为:30、1、2、„
4.2年月模块
初值设为1999年12月,lock为1时,显示年月,lock为3时,预置月,lock为2时,预置年
4.3时分秒定时模块
lock为0时,显示时分秒,lock为5时,预置时,lock为6时,预置分,lock为7时,预置秒。当分到达59时,整点报时器响,speaker高电位,随着手动清零,恢复原位。
4.4星期模块
初值设为星期1,仿真中显示为:1、2、3、4、5、6、7、1、„
4.5分频模块
4.6顶层设计模块
5、课程设计总结
本次课程设计历时两天半,经过自己不断的努力完成了数字钟的设计,程序代码的编写调试及仿真。以前只是看书或者编一些很小的程序用来仿真,觉得没怎么难,但当进行此次课程设计真正处理一个较大程序时,问题便都显现出来。虽然在这个过程中遇到了很多的问题,但是最终都得到了很好的解决。
我此次设计的程序是在课本原有数字钟程序的基础上进行添加更改得来的,最初在运行原有程序时很顺利,但是随着加的东西越来越多,程序中出现的问题也就越来越多。很多同学都觉得在已有程序上再添加东西看似简单,实则很容易混乱,理不清头绪,而且这个原有程序是用进程所写,比较麻烦。虽然这样容易出现问题,不过我觉得这是一个锻炼的好机会。、在处理分频模块时,最开始按照老师的要求设置了频率,但是当运行时,发现根本出不来,后来与同学讨论后,发现频率过大,后来改为八分频,使得分频
模块能够使用。在一开始加星期模块时,没怎么考虑,可是当加进去后才发现,星期模块不能与其他模块很好的相连,不能很好的做到与“日模块”相合,后来虽有改动,但最终没能改成功。在加定时器功能时,一开始单独为定时器列了一个模块,所写的程序也很复杂,错误百出,最后程序改好后,仿真却出不来。后来经过同学的提点,就把程序改简单了,单纯的来个脉冲就出现高电平,但后来仿真发现高电平一直在高位,没法给脉冲,最后没办法便手动脉冲。与顶层模块连接后,又发现分满59的脉冲没给,因为我的时分秒全都放在了一起,只能将定时模块挪到时分秒模块中,这样反而使得整个工程简单了一些。
在各个模块都能仿真成功后,顶层模块的程序与仿真却出现了很多问题。首先是顶层模块程序有很多警告,例如“second_waver”没有用到之类的,后来在改动的过程中,便把内变量换为了外变量,但是有些原来的警告没有了,但是新的警告又出现了,原本能够连好的u3与u4模块均不能正常连接,后来与同学自习查找,才终于将错误找出,由于粗心大意误动了一些元件例化时的变量,使得时间拜拜浪费。最后在仿真的时候,仿真结果出不来,经过与同学商量在每个程序中都给年月日等变量均付了初值,才让仿真出来。
此次课程设计虽然只有短短的两天半的时间,但是经过前期的查找资料,后来的实验室实际操作,再到现在的报告总结,我收获了很多。其实完成一个设计,编程只是很小的一部分,最主要的在于查找资料以及调试程序,此次设计我在查找资料方面做的不是很充分,以至于设计的面很小,而且在遇到问题后不能很快的找出,以后一定要做好准备工作。此次课程设计中遇到的问题看似不大,但都是很好的问题,对我以后的设计有很大的帮助,一定会牢牢记住。
最后,此次课程设计的完成很大程度上取决于老师和同学对我的指导与帮助,这更能说明,一个较大设计的完成及实现,不是仅限于自身,我们要学会与别人交流沟通,才能做到更好。
6、参考文献
[1]李景华,杜玉远.可编程逻辑器件与eda技术.沈阳:东北大学出版社,2000[2]姜如东,vhdl语言程序设计及应用,北京邮电大学出版社
[3]康华光.电子技术基础(数字部分)[m].北京:高等教育出版社,2001.
[4][5]
数字钟设计总结4
libraryieee;use;use;use;entityclockisport(en
:instd_logic;数码管使能
clk
:instd_logic;时钟信号
rst
:instd_logic;复位信号
sec_1
:outstd_logic_vector(3downto0);秒高位
sec_01:outstd_logic_vector(3downto0);秒低位
min_1
:outstd_logic_vector(3downto0);分高位
min_01:outstd_logic_vector(3downto0);分低位
hou_1
:outstd_logic_vector(3downto0);时高位
hou_01:outstd_logic_vector(3downto0);时低位
bee
:outstd_logic);endclock;
architecturebehoviorofclockissignalsec_high:std_logic_vector(3downto0);
signalsec_low
:std_logic_vector(3downto0);signalmin_high:std_logic_vector(3downto0);
signalmin_low:std_logic_vector(3downto0);signalhou_high:std_logic_vector(3downto0);
signalhou_low
:std_logic_vector(3downto0);
signalcy_min
:std_logic;分进位
signalcy_hou
:std_logic;时进位
signallogo_1
:std_logic;标志
signallogo_2
:std_logic;
signallogo_3
:std_logic;
beginmiaolow:process(clk,rst,en)
begin
if(rst=’0’)
then
sec_low<=“1000”;附给秒低位为8
elsif(clk’eventandclk=’1’anden=’1’)then检测时钟上升沿及数码管使能端
if(sec_low=“1001”)then
sec_low<=“0000”;
else
sec_low<=sec_low+“0001”;加一
endif;
endif;
endprocessmiaolow;
logo_1<=sec_low(3)andsec_low(0);
sec_01<=sec_low;秒个位放8
miaohigh:process(clk,rst)
begin
if(rst=’0’)
then
sec_high<=“0101”;
elsif(clk’eventandclk=’1’)then检测时钟上升沿
if(logo_1=’1’)then
if(sec_high=“0101”)then
sec_high<=“0000”;
cy_min<=’1’;
else
sec_high<=sec_high+“0001”;加一
cy_min<=’0’;
endif;
endif;
endif;
endprocessmiaohigh;
sec_1<=sec_high;秒十位放5
fenlow:process(cy_min,rst,en)
begin
if(rst=’0’)
then若复位位为0
min_low<=“1000”;则分个位为8
elsif(cy_min’eventandcy_min=’1’anden=’1’)then检测时钟上升沿及数码管使能端
if(min_low=“1001”)then
min_low<=“0000”;
else
min_low<=min_low+“0001”;加一
endif;
endif;
endprocessfenlow;
logo_2<=min_low(3)andmin_low(0);
min_01<=min_low;分个位放8
fenhigh:process(cy_min,rst)
begin
if(rst=’0’)
then
min_high<=“0101”;
elsif(cy_min’eventandcy_min=’1’)then检测分进位上升沿
if(logo_2=’1’)then
if(min_high=“0101”)then若分十位为5
min_high<=“0000”;
cy_hou<=’1’;时进位为1
else
min_high<=min_high+“0001”;加一
cy_hou<=’0’;
endif;
endif;
endif;
endprocessfenhigh;
min_1<=min_high;分十位放5
shilow:process(cy_hou,rst,en)
begin
if(rst=’0’)
then
hou_low<=“1001”;
elsif(cy_hou’eventandcy_hou=’1’
anden=’1’)then检测时进位上升沿及数码管使能端
if(hou_low=“1001”)then若时低位为9
hou_low<=“0000”;
elsif(hou_high=“0010”andhou_low=“0011”)then若时十位为2,个位为3
hou_low<=“0000”;
else
hou_low<=hou_low+“0001”;加一
endif;
endif;
endprocessshilow;
logo_3<=hou_low(3)andhou_low(0);
hou_01<=hou_low;时个位放3
shihigh:process(cy_hou,rst)
begin
if(rst=’0’)
then
hou_high<=“0001”;
elsif(cy_hou’eventandcy_hou=’1’)then检测时进位上升沿
if(hou_high=“0010”andhou_low=“0011”)then若时十位为2,时个位为3
hou_high<=“0000”;
elsif(logo_3=’1’)then
hou_high<=hou_high+“0001”;加一
endif;
endif;
endprocessshihigh;
bee_clock:process(clk)
begin
if(clk’eventandclk=’1’)then检测时钟上升沿
if(sec_high=“0101”andsec_low=“1001”
andmin_high=“0101”andmin_low=“1001”)then
bee<=’1’;
else
bee<=’0’;
endif;
endif;
endprocessbee_clock;
hou_1<=hou_high;时十位放2
endbehovior;
libraryieee;use;use;use;entityclock1isport(en
:instd_logic;
clk
:instd_logic;
rst
:instd_logic;sec_1
:outstd_logic_vector(3downto0);
sec_01:outstd_logic_vector(3downto0);min_1
:outstd_logic_vector(3downto0);
min_01:outstd_logic_vector(3downto0);hou_1
:outstd_logic_vector(3downto0);
hou_01:outstd_logic_vector(3downto0);
bee
:outstd_logic);endclock1;
architecturebehoviorofclock1issignalsec_high:std_logic_vector(3downto0);
signalsec_low
:std_logic_vector(3downto0);signalmin_high:std_logic_vector(3downto0);
signalmin_low:std_logic_vector(3downto0);signalhou_high:std_logic_vector(3downto0);
signalhou_low
:std_logic_vector(3downto0);
signalcy_min
:std_logic;
signalcy_hou
:std_logic;signallogo_1
:std_logic;
signallogo_2
:std_logic;
signallogo_3
:std_logic;
beginmiaolow:process(clk,rst,en)
begin
if(rst=’0’)
then
sec_low<=“1000”;
elsif(clk’eventandclk=’1’anden=’1’)then
if(sec_low=“1001”)then
sec_low<=“0000”;
else
sec_low<=sec_low+“0001”;
endif;
endif;
endprocessmiaolow;
logo_1<=sec_low(3)andsec_low(0);
sec_01<=sec_low;
miaohigh:process(clk,rst)
begin
if(rst=’0’)
then
sec_high<=“0101”;
elsif(clk’eventandclk=’1’)then
if(logo_1=’1’)then
if(sec_high=“0101”)then
sec_high<=“0000”;
cy_min<=’1’;
else
sec_high<=sec_high+“0001”;
cy_min<=’0’;
endif;
endif;
endif;
endprocessmiaohigh;
sec_1<=sec_high;fenlow:process(cy_min,rst,en)
begin
if(rst=’0’)
then
min_low<=“1000”;
elsif(cy_min’eventandcy_min=’1’anden=’1’)then
if(min_low=“1001”)then
min_low<=“0000”;
else
min_low<=min_low+“0001”;
endif;
endif;
endprocessfenlow;
logo_2<=min_low(3)andmin_low(0);
min_01<=min_low;
fenhigh:process(cy_min,rst)
begin
if(rst=’0’)
then
min_high<=“0101”;
elsif(cy_min’eventandcy_min=’1’)then
if(logo_2=’1’)then
if(min_high=“0101”)then
min_high<=“0000”;
cy_hou<=’1’;
else
min_high<=min_high+“0001”;
cy_hou<=’0’;
endif;
endif;
endif;
endprocessfenhigh;
min_1<=min_high;shilow:process(cy_hou,rst,en)
begin
if(rst=’0’)
then
hou_low<=“1001”;
elsif(cy_hou’eventandcy_hou=’1’anden=’1’)then
if(hou_low=“1001”)then
hou_low<=“0000”;
elsif(hou_high=“0010”andhou_low=“0011”)then
hou_low<=“0000”;
else
hou_low<=hou_low+“0001”;
endif;
endif;
endprocessshilow;
logo_3<=hou_low(3)andhou_low(0);
hou_01<=hou_low;
shihigh:process(cy_hou,rst)
begin
if(rst=’0’)
then
hou_high<=“0001”;
elsif(cy_hou’eventandcy_hou=’1’)then
if(hou_high=“0010”andhou_low=“0011”)then
hou_high<=“0000”;
elsif(logo_3=’1’)then
hou_high<=hou_high+“0001”;
endif;
endif;
endprocessshihigh;
bee_clock:process(clk)
begin
if(clk’eventandclk=’1’)then
if(sec_high=“0101”andsec_low=“1001”
andmin_high=“0101”andmin_low=“1001”)then
bee<=’1’;
else
bee<=’0’;
endif;
endif;
endprocessbee_clock;
hou_1<=hou_high;
endbehovior;
数字钟设计总结5
eda实现多功能数字钟
实
验报告
专业班级:
学生姓名:
学生学号:
目录
一、内容摘要
二、实验要求
三、各底层模块设计
四、总体方案
五、心得体会
一、实验内容
利用quartusii软件,结合所学的数字电路的知识设计一个24时多功能数字钟,具有正常分、秒计时,动态显示的功能。分析整个电路的工作原理,分别说明各子模块的设计原理和调试、仿真、编程的过程。
二、实验任务:
用fpga器件和eda技术实现多功能数字钟的设计
已知条件:
1、max+plus软件
2、fpga实验开发装置
基本功能:
1、以数字形式显示时、分、秒的时间;
2、小时计数器为24进制;
3、分、秒计数器为60进制。
三、底层模块设计(电路原理图及仿真)
1、小时计数器为24进制电路原理图
仿真图
封装图
2、分、秒计时器都为60进制电路原理图
仿真图
封装图
四、总体方案
按照上述实验要求,本次电子数字时钟实验,通过两个模60计数器及一个模24计数器级联既可以实现计时模块。多功能数字钟的主体部分电路原理图
仿真图
封装图
五、心得体会
刚刚开始觉得做这个电子实验报告挺难的,因为对软件的不熟悉和对这个实验操作的也不熟悉,对着老师给的资料也做了很长时间,就是仿真的时候有些该注意的没有注意,导致仿真失败,但是后来还是自己慢慢拿的请教同学、老师哪里出了问题,后来才做出来了,把60进制的做出来了,后来的24进制按照老师给的电路原理图也成功了仿真出来,我用了很长时间才编写出来,现在看看,也没有那么难了。同时请教老师,和同学、通过实验掌握一些逻辑组合器件的基本功能和用法。总之,我很感谢这次实验可以给我这样的机会,这个实验给了我很对的收获,我相信这会对我以后的学习很有帮助。
感谢您花时间阅读本文。如果您觉得数字钟设计总结这篇文章对您有所帮助,我们非常希望您能够将其分享给更多的人。最后我们将继续努力,为您提供更多有价值的内容。祝您生活愉快!
本站内容均为网友上传分享,本站仅负责分类整理,如有任何问题可联系我们(点这里联系)反馈。