单片机数字时钟课程设计感想

时间:2019-05-12 06:44:15下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《单片机数字时钟课程设计感想》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《单片机数字时钟课程设计感想》。

第一篇:单片机数字时钟课程设计感想

五.实验总结及感想

在实验的开始几天,基本上没有收获,不知何从下手,不知所措。为了看得更远,不妨站在前人的肩膀上,我在整体思路模糊的情况下,在网上大量招资粮,各种与电子时钟相关的文章,我阅读了不少。随着涉猎的点滴积累,我对电子时钟的设计方案已经慢慢酝酿而成。有了方向和不少知识储备后,在接下来的几天,几乎每天都有突破,虽然有时只是一句程序的修改或诞生,但那种收获的感觉很暖人心。

实验中遇到了不少问题,接下来总结一下,共同探讨。

1,按键问题。我的设计中,很多功能选择是通过按键开关实现的。在仿真中发现,调整数值时,有时按键反应太快,按一次,跳了几下,使设置时间,日期很不方便。但是仿真多了之后,找到了按键(实际上是按鼠标)的节奏,对按键的掌控力提高了不少,不怎么会出现跳变的情况了。有些开关我采用了长按键的方式来防抖,效果不错,但是每次都要长按键,调整效率太低,我没有普及。本来想把所有的按键都加延时防抖电路,但仿真中感觉对键盘的控制力没提高多少,有时还是会出问题,这个方案放弃了。索性将板子焊接出来了在调试软件吧,仿真毕竟不是那么“真”啊!实际电路调试中,按键反应没有出现过于灵敏的问题,基本可控制。

出现以上问题,我认为是电路板上焊接点太多,接触不是很好,影响了信号的传输时间,从而解决了按键问题!也有可能是按键质量问题,接触不良。

2,P0口开关问题。P0口比较特殊,它存在高阻态,要使其输入不是高电平就是低电平,就要接上拉电阻,给其高电平输入。

3,音乐闹铃问题。在闹铃时间到,闹铃提醒时,我的数码管为熄灭状态,因为开始我的响铃程序内,没有数码管扫描显示程序。但加入数码管显示子程序后,我的闹铃音乐被影响了,一开始不知所措,有点怀疑是显示程序时间过长,影响音乐的定时(节拍),我就在响铃程序中加延时模块,延时长度逐渐提高,最后出现了类似的问题,看来时显示程序占用时间太长,使音乐每个音符的节拍出现了紊乱,音乐功能被遏制了!鱼和熊掌不能兼得,我只能牺牲显示来获得音乐闹铃,但为了弥补显示,我设计了闪烁提醒方案,就是在手动或音乐自然停止后,进入当前时间闪烁提示,8秒后若不按返回键,则自动跳入主程序。

在仿真中,老师提供的响铃电路不能实现功能,但是在我的电路板中效果很好,令人费解!4,中断冲突问题,为了实现秒表,我在T0中断嵌套了秒表相关进位程序,由于秒表要求精度0.01秒,故我的T0中断定时为就刚好0.01秒,中断100次,刚好1秒。秒表确实实现了,但是我的闹铃音质变差了。一开始以为是闹铃程序存太多冗余环节,影响了T1的音乐输出中断,但是检查程序后,发现没什么多余的,裁剪无从下手。

在仿真中,我让音乐模块运行,发现音质很好。添加T0中断服务程序,但是将中断进入的间隔变大,即0.05秒进入一次中断,发现音质有所下降,有滋滋声,但比原来的好。最后认定应该是T0中断过于频繁,T1音乐频率发生中断被打破,当单位时间内被打破的次数达到一定程度时,音符和节拍的对应发生紊乱,最终音质变差。

虽然如此,我的焊接的电路板的表现却很争气,闹铃音质可以接受!虽然这次实际表现不错,但问题还是有的,还是要解决的,我的方案是把秒表程序放在T1中断服务程序,虽然音乐的发生要用到T1中断,但是秒表的显示和闹铃音乐的演奏上不会重合在一起,闹铃判断是在主程序,而秒表实现是在秒表子程序,故原本相互矛盾的两个功能,在T1中断服务程序中找到了共同的归宿,和谐相处。

5,显示数字分隔问题。本实验中用8个共阴极数码管显示日历及其时间,但是8个数码管连在一起,显示过程中不能有效地区分时,分,秒和年,月,日,数码管是两两组合起来,形成某位的十位和个位,故用小数点在适当位置一直保持高亮状态,形成分隔符,实现方便的读取数据。具体方法是,将需要小数点位高亮的数码管找出来,在动态显示扫描到该数码管时,先将提取的字段码的最高位变为1,利用语句 ORL A,#10000000B 实现,修正字码后,再将字码送入P1口显示数字,如此问题得以解决。

6,添加倒计时器嘀嘀声提示功能。这个功能我用到了T1中断,作为音调频率发生器,但是T1已经承担了音乐闹铃的音调发生功能,在此通过设立标志位实现中断服务程序的转变。即使我将秒表的实现服务程序放入T1中断实现,也没问题,只要选择标志位判断就可以了。在此,我们用调整状态指示灯的状态来做标志位,具体的说是P0.1口做标志位。

还有一个问题就是如何使铃声有间隔的响,这就牵涉到定时,在此我们用硬件定时,即T1中断的次数作为定时参数。我的设计是音调响0.25秒,然后用T1延时0.5秒,由于计数器工作于方式1时,12MHZ时钟频率下时,一次中断最多定时65536*1us=0.065536秒,为了实现0.5秒的响声间隔,将T1中断1次定时为0.05秒,中断10次后,重新装音调发生计数初值。对于响铃时间的设定原理类似,可以有发声频率求出一次发声定时中断的时间,N次发声定时中断后,使时间变化0.25秒,而后转入发声间隔定时程序。

设计体会

以前看别人的一个电子表卖十几块钱,心里面有点愤愤不平,现在,自己做过一个电子钟,才发现,其中的不容易,还有艰辛。其实做其他的事情也是一样,都会经过很多的困难,才能成功。突然想起一句话“不经历风雨,怎么见彩虹”。其实想想,这一个月,也留下了很多美好的回忆。一分耕耘,一分收获。只有亲自用实践来验证这句话,在能得其要领。经过这次单片机课程设计,我从一个单片机实践的门外汉,已经越升为略知一二的新手。虽然还有很多有关单片机的应用有待学习,但万变不离其宗,只要深入了解单片的原理,全部知识点,各个细节,一切设计皆有可能。还记得那个晚上通宵达旦仿真,不成功,誓不睡觉,很困了,都还在弄着。却当仿真成功时,没有一丝睡意,有的只是心中的喜悦通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗了过多的内存资源。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。只要我们有耐心,够细心,都可以把它们解决。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到计算机专业的路的不平坦,但我会以一种良好的态度去迎接每一个挫折和挑战。

第二篇:数字时钟课程设计

数字电子技术课程设计报告

一、设计目的

数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。

因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.二、设计要求

(1)设计指标

① 时间以12小时为一个周期; ② 显示时、分、秒;

③ 具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; ④ 计时过程具有报时功能,当时间到达整点前10秒进行蜂鸣报时; ⑤ 为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。(2)设计要求

① 画出电路原理图(或仿真电路图); ② 元器件及参数选择; ③ 电路仿真与调试;

④ PCB文件生成与打印输出。

(3)制作要求

自行装配和调试,并能发现问题和解决问题。

(4)编写设计报告

写出设计与制作的全过程,附上有关资料和图纸,有心得体会。

三、原理框图

1.数字钟的构成

数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。

0 / 12

(a)数字钟组成框图

2.晶体振荡器电路

晶体振荡器电路给数字钟提供一个频率稳定准确的32768Hz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。一般输出为方波的数字式晶体振荡器电路通常有两类,一类是用TTL门电路构成;另一类是通过CMOS非门构成的电路,本次设计采用了后一种。如图(b)所示,由CMOS非门U1与晶体、电容和电阻构成晶体振荡器电路,U2实现整形功能,将振荡器输出的近似于正弦波的波形转换为较理想的方波。输出反馈电阻R1为非门提供偏置,使电路工作于放大区域,即非门的功能近似于一个高增益的反相放大器。电容C1、C2与晶体构成一个谐振型网络,完成对振荡频率的控制功能,同时提供了一个180度相移,从而和非门构成一个正反馈网络,实现了振荡器的功能。由于晶体具有较高的频率稳定性及准确性,从而保证了输出频率的稳定和准确。

(b)CMOS 晶体振荡器(仿真电路)/ 12 3.时间记数电路

一般采用10进制计数器如74HC290、74HC390等来实现时间计数单元的计数功能。本次设计中选择74HC390。由其内部逻辑框图可知,其为双2-5-10异步计数器,并每一计数器均有一个异步清零端(高电平有效)。

秒个位计数单元为10进制计数器,无需进制转换,只需将QA与CPB(下降沿有效)相连即可。CPA(下降没效)与1HZ秒输入信号相连,Q3可作为向上的进位信号与十位计数单元的CPA相连。

秒十位计数单元为6进制计数器,需要进制转换。将10进制计数器转换为6进制计数器的电路连接方法如图 2.4所示,其中Q2可作为向上的进位信号与分个位的计数单元的CPA相连。

十进制-六进制转换电路

分个位和分十位计数单元电路结构分别与秒个位和秒十位计数单元完全相同,只不过分个位计数单元的Q3作为向上的进位信号应与分十位计数单元的CPA相连,分十位计数单元的Q2作为向上的进位信号应与时个位计数单元的CPA相连。

时个位计数单元电路结构仍与秒或个位计数单元相同,但是要求,整个时计数单元应为12进制计数器,不是10的整数倍,因此需将个位和十位计数单元合并为一个整体才能进行12进制转换。利用1片74HC390实现12进制计数功能的电路如图(d)所示。

(d)十二进制电路

另外,图(d)所示电路中,尚余-2进制计数单元,正好可作为分频器2HZ输出信号转化为1HZ信号之用。

4.译码驱动及显示单元电路

选择CD4511作为显示译码电路;选择LED数码管作为显示单元电路。由CD4511把输进来的二进制信号翻译成十进制数字,再由数码管显示出来。这里的LED数码管是采用共阴的方法连接的。

计数器实现了对时间的累计并以8421BCD码的形式输送到CD4511芯片,再由451/ 12 芯片把BCD码转变为十进制数码送到数码管中显示出来。

5.校时电路

数字钟应具有分校正和时校正功能,因此,应截断分个位和时个位的直接计数通路,并采用正常计时信号与校正信号可以随时切换的电路接入其中。即为用COMS与或非门实现的时或分校时电路,In1端与低位的进位信号相连;In2端与校正信号相连,校正信号可直接取自分频器产生的1HZ或2HZ(不可太高或太低)信号;输出端则与分或时个位计时输入端相连。当开关打向下时,因为校正信号和0相与的输出为0,而开关的另一端接高电平,正常输入信号可以顺利通过与或门,故校时电路处于正常计时状态;当开关打向上时,情况正好与上述相反,这时校时电路处于校时状态。

实际使用时,因为电路开关存在抖动问题,所以一般会接一个RS触发器构成开关消抖动电路,所以整个较时电路就如图(f)。

(f)带有消抖电路的校正电路

6.整点报时电路

电路应在整点前10秒钟内开始整点报时,即当时间在59分50秒到59分59秒期间时,报时电路报时控制信号。

当时间在59分50秒到59分59秒期间时,分十位、分个位和秒十位均保持不变,分别为5、9和5,因此可将分计数器十位的QC和QA、个位的QD和QA及秒计数器十位的QC和QA相与,从而产生报时控制信号。

报时电路可选74HC30来构成。74HC30为8输入与非门。/ 12 说明:当时间在59分50秒到59分59秒期间时 分十位、分个 位和秒十位均保持不变,分别为5,9和5;因此,可以将分计数器十位的Qc和QA,个位的QD和QA及秒计数器十位的QC和QA相与,从而产生报时控制信号。IO1分计数器十位的Qc和QAIO2U11VCCIO35VVCCX182345V分计数器个位的QD和QAIO456114V_0.5WIO512秒计数器十位的QC和QAIO674HC30D数字钟设计-整点报时电路部分

四、元器件

1.四连面包板1块(编号A45)2.镊子1把 3.剪刀1把

4.共阴八段数码管6个 5.网络线2米/人 6.CD4511集成块6块 7.CD4060集成块1块 8.74HC390集成块3块 9.74HC51集成块1块 10.74HC00集成块4块 11.74HC30集成块1块 12.10MΩ电阻5个 13.500Ω电阻14个 14.30p电容2个

15.32.768k时钟晶体1个 16.蜂鸣器10个(每班)1)芯片连接图

1)74HC00D

2)CD4511 / 12

3)74HC390D

4)74HC51D

2.面包板的介绍

面包板一块总共由五部分组成,一竖四横,面包板本身就是一种免焊电板。面包板的样式是:

/ 12 面包板的注意事项:

1. 面包板旁一般附有香蕉插座,用来输入电压、信号及接地。2. 上图中连着的黑线表示插孔是相通的。

3. 拉线时,尽量将线紧贴面包板,把线成直角,避免交叉,也不要跨越元件。4. 面包板使用久后,有时插孔间连接铜线会发生脱落现象,此时要将此排插孔做记号。并不再使用。

五、各功能块电路图

数字钟从原理上讲是一种典型的数字电路,可以由许多中小规模集成电路组成,所以可以分成许多独立的电路。

(一)六进制电路

由74HC390、7400、数码管与4511组成,电路如图一。

U1A3123U2A12Com74HC00D74HC00DU5SEVEN_SEG_COM_KABCDEFGU3AV1 32Hz 5V141INA1INB21CLR31QA1QB1QC1QD5677126U413DADBDCDD5OAOBOCODOE1211109151474HC390D43~ELOF~BI~LTOGVCC5V4511BD将十进制计数器转换为六进制的连接方法

(二)十进制电路

由74HC390、7400、数码管与4511组成,电路如图二。/ 12 U4A3126U4B4574HC00D74HC00DComU3SEVEN_SEG_COM_KU1AV1 60Hz 5V141INA1INB21CLR31QA1QB1QC1QD5677126U213DADBDCDD5OAOBOCODOE12111091514ABCDEFGVCC5V74HC390D43~ELOF~BIOG~LT4511BD十进制接法测试仿真电路

(三)六十进制电路

由两个数码管、两4511、一个74HC390与一个7400芯片组成,电路如图三。

(四)双六十进制电路

由2个六十进制连接而成,把分个位的输入信号与秒十位的Qc相连,使其产生进位,电路图如图四。/ 12

ComComSEVEN_SEG_COM_KU1B6453U1A12U4SEVEN_SEG_COM_KU7U11BABCDEFG64513DADBDCDD5OAOBOCODOE~ELOF~BI~LTOG1211109151421CLR141INA1INB3U10A12ABCDEFG74HC00D74HC00DU3B15122INA2INB142CLR132QA2QB2QC2QD11109U2712674HC00D74HC00DU8A31QA1QB1QC1QD5677126U913DADBDCDD5OAOBOCODOE12111091514VCC5V74HC390D43U1C891011U1D12134511BD74HC390DComVCCU643~ELOF~BI~LTOG5VSEVEN_SEG_COM_K74HC00D74HC00DABCDEFG84511BDComU15C91011U16DSEVEN_SEG_COM_K1213U14U3A131INA1INB21CLR1QA1QB1QC1QD5677126U513DADBDCDD5OAOBOCODOE1211109151474HC00D74HC00DU12B15122INA2INB142CLR132QA2QB2QC2QD111097126U13DADBDCDD5OAOBOCODOEABCDEFG***14V1 100kHz 5V474HC390D43~ELOF~BI~LTOGVCC74HC390D5V43~ELOF~BI~LTOG4511BD4511BD

(五)时间计数电路

由1个十二进制电路、2个六十进制电路组成,因上面已有一个双六十电路,只要把它与十二进制电路相连即可,详细电路见图五。

ComComComComComComU1SEVEN_SEG_COM_KU2SEVEN_SEG_COM_KU4SEVEN_SEG_COM_KU3SEVEN_SEG_COM_KU5SEVEN_SEG_COM_KU6SEVEN_SEG_COM_KABCDEFGABCDEFGABCDEFGVCCVCCABCDEFGABCDEFGABCDEFG5V***45VVCCVCC***49***45V***3121110***01514145V9VCCOG995V99OAOBODOAOBODOAOBODOEOEOCOCOCOFOFOEOGOAOBODOAOBODOAOBODOEOEOCOCOCOFOFOEOGOG~LT~LT~EL~EL~BI~BI~ELDADCDDDADCDDDADC~LT~LT~LTDBDB~EL~EL~EL~BI~BIDADCDDDADCDDDADCDBDB3DBDD~BI5V73DBDD4511BD54511BD******12643U23CU25A74HC00D***8U21A74HC00D13111038U20C74HC00D3U19A74HC00D131110974HC00D9356356772QB1QD2QD2QD1QB1QC2QB2QC2QB2QC1QB1QA2QA2QA1QA1QC1QD2QA2QC2QD61QB2INA1CLR2CLR2CLR1INA1INB2INA2INB2INA2INB1INA1INA1INB74HC00D161CLR74HC390D6151INB74HC00D111CLRU26B74HC390D74HC390N1174HC390N74HC390DU20B1574HC00D1262INB74HC00D74HC00D***242V1 1000Hz 5V时,分,秒计时电路图

(六)校正电路

由74CH51D、74HC00D与电阻组成,校正电路有分校正和时校正两部分,电路如图六。/ 12

142CLRU13AU16B1QA1QC1QDU24DU22BU14AU17BU20DU15AU18B74HC390N43~BI~LT4511BDOGU7U8OFU10VCC4511BDOGU9U114511BDOFU124511BD1010921921254***254IO1VCC正常输入信号5V校正信号IO2R1U2C9108小时校正电路J110Mohm74HC00D注意:分校时时,不会进位到小时。U11111213910U2DKey = A12R210MohmIO313U2A8123时计数器IO574HC00D1123674HC00D正常输入信号校正信号IO4R3U3A10Mohm12U2B456分计数器IO64574HC00D74HC51D3J274HC00DKey = B分钟校正电路分校正时锁定小时信号输入R410MohmU3B456图中采用基本RS触发器构成开关消抖动电路,其中与非门选用74HC00;对J1和J2,因为校正信号与0相与为0,而开关的另一端接高电平,正常输入信号可以顺利通过与或门,故校时电路处于正常计时状态,当开关打向上时,情况正好与上述相反,这时电路处于校时状态。74HC00D数字钟设计-校时电路部分

(七)晶体振荡电路

由晶体与2个30pF电容、1个4060、一个10兆的电阻组成,芯片3脚输出2Hz的方波信号,电路如图七。

(八)整点报时电路

由74HC30D和蜂鸣器组成,当时间在59:50到59:59时,蜂鸣报时,电路如图八。/ 12 说明:当时间在59分50秒到59分59秒期间时 分十位、分个 位和秒十位均保持不变,分别为5,9和5;因此,可以将分计数器十位的Qc和QA,个位的QD和QA及秒计数器十位的QC和QA相与,从而产生报时控制信号。IO1分计数器十位的Qc和QAIO2U11VCCIO35VVCCX182345V分计数器个位的QD和QAIO456114V_0.5WIO512秒计数器十位的QC和QAIO674HC30D数字钟设计-整点报时电路部分

六、总接线元件布局简图

整个数字钟由时间计数电路、晶体振荡电路、校正电路、整点报时电路组成。

其中以校正电路代替时间计数电路中的时、分、秒之间的进位,当校时电路处于正常输入信号时,时间计数电路正常计时,但当分校正时,其不会产生向时进位,而分与时的校位是分开的,而校正电路也是一个独立的电路。

电路的信号输入由晶振电路产生,并输入各电路。简图如图九。

七、芯片连接总图

因仿真与实际元件上的差异,所以在原有的简图的基础上,又按实际布局画了这张按实际芯片布局的接线图,如图十。

八、总结

1. 实验过程中遇到的问题及解决方法

① 面包板测试

测试面包板各触点是否接通。

② 七段显示器与七段译码器的测量 / 12 把显示器与CD4511相连,第一次接时,数码管完全没有显示数字,检查后发现是数码管未接地而造成的,接地后发现还是无法正确显示数字,用万用表检测后,发现是因芯片引脚有些接触不良而造成的,所以确认芯片是否接触良好是非常重要的一件事。

③ 时间计数电路的连接与测试

六进制、十进制都没有什么大的问题,只是芯片引脚的老问题,只要重新插过芯片就可以解决了。但在六十进制时,按图接线后发现,显示器上的数字总是100进制的,而不是六十进制,检测后发现无论是线路的连通还是芯片的接触都没有问题。最后,在重对连线时发现是线路接错引脚造成的,改过之后,显示就正常了。

④ 校正电路

因上面程因引脚接错而造成错误,所以校正电路是完全按照仿真图所连的,在测试时,开始进行时校时时,没有出现问题,但当进行到分校时时,发现计数电路的秒电路开始乱跳出错。因此,电路一定是有地方出错了,在反复对照后,发现是因为在接入校正电路时忘了把秒十位和分个位之间的连线拿掉而造成的,因此,在接线时一定要注意把不要的多余的线拿掉。

2. 设计体会

通过这次对数字钟的设计与制作,让我了解了设计电路的程序,也让我了解了关于数字钟的原理与设计理念,要设计一个电路总要先用仿真仿真成功之后才实际接线的。但是最后的成品却不一定与仿真时完全一样,因为,再实际接线中有着各种各样的条件制约着。而且,在仿真中无法成功的电路接法,在实际中因为芯片本身的特性而能够成功。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。通过这次学习,让我对各种电路都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。

3. 对设计的建议

我希望老师在我们动手制作之前应先告诉我们一些关于所做电路的资料、原理,以及如何检测电路的方法,还有关于检测芯片的方法。这样会有助于我们进一步的进入状况,完成设计 / 12

第三篇:EDA课程设计 数字时钟

EDA

课程设计报告

一·设计任务

使用硬件描述语言,在CPLD/FPGA上实现一个多功能数字钟。

二·设计要求

除按键、LED、扬声器、时钟信号外,整个数字钟的功能要求在一块芯片上实现。

a)具有时,分,秒,计数显示功能,以24小时循环计时; b)具有时间清零功能;

c)具有小时、分钟和秒钟调整功能(个位和十位分开调或合起来调)。

d)具有闹钟功能,能预设闹钟时间,精确到秒。

整个数字钟只设一个时钟输入端口,所需不同频率信

号在内部分频实现。(LED扫描频率设为50Hz以上)。

三·设计方案

设计采用模块方式,分别为分频模块:产生1Hz的脉冲作为秒的输入,和产生1kHz的脉冲作为数码管显示的动态扫描。计时模块:秒模块,分模块,时模块。闹钟模块,显示模块,控制模块。

四·模块端口设置

1.分频模块

输入:clkin :

本实验输入为50MHz晶振

输出:clk : 为显示模块及始终调节提供1KHz脉冲

clkt: 为计数器模块提供1Hz脉冲

2.计时模块

m 是模式按键,当m=0 时,进入计时模式,在计时模式下可以进行时间调整。num3,num4 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提

供。counta,count1 是手动调节时间。Turn 接按键,可以改变当前调节的是小时还是分钟,长按turn 键还可以使秒钟信号清零。sec1,min1,hour1 输出的是计时的秒,分,时。

3.闹钟模块

原理:num1,num2 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的

频率由clk 提供。countb,count2 是手动调节闹钟时间。amin,ahour 是输出的闹钟的分钟和 小时 4.控制模块

m 是模式按键,当m=0 时,指当前输出的是计时功能;当m=1 时,指当前调整的是

闹钟时间;当m=2 时,指当前调整的是计时时间;当m=3 时,此时turn 按键可用于跑表的

暂停与开始。change 接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快

速加1,用于快速调时和定时;turn 接按键,在手动校时功能时,选择是调整小时,还是分

钟;若长时间按住该键,还可使秒信号清零,用于精确调时。count1,count2,counta,countb 分

别是用来调节计时时间和闹钟时间。LD_min,LD_hour,指示当前调节的是分钟还是小时。5 显示模块

输入:clk--1kHz时钟,提供高频扫描

in0、in1…in5--分别为时、分、秒的个位与十位信号

输出:a、b…g--数码管输入

d0、d1…d5--数码管选通

五.程序。

分频模块

module fenpin(clk,clkt,clkin);input clkin;output clk,clkt;reg clk,clkt;reg [31:0]out,t1;

initial t1<=0;initial out<=0;initial clk<=0;initial clkt<=0;

always@(posedge clkin)begin

out<=out+1;

if(out==20000)

begin

out<=0;

clk<=!clk;

end end

always@(posedge clk)

begin

t1<=t1+1;

if(t1==1000)

begin

clkt<=1;

t1<=0;

end

else

clkt<=0;end endmodule

计时模块 module jishi(clk,clk_1Hz, turn,mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clkt,turn,num3,num4;input mode;input count1,counta;output [7:0] sec1,min1;output [7:0] hour1;wire clkt,ct1,cta,turn,num3,num4;reg [7:0] sec1=0,min1=0;reg [7:0] hour1=0;reg [1:0] m;wire count1,counta;reg minclk,hclk;always @(posedge mode)//mode 信号控制系统在三种功能间转换 begin if(m==4)m<=0;else m<=m+1;end /////秒钟计时模块////// always @(posedge clkt)

if((sec1==8'h59)|turn&(!m))///////若长时间按住该键,还可使秒信号清零,用于精确调时。begin sec1<=0;//按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时

if(!(turn&(!m)))minclk<=1;///产生进位 end else begin if(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000;sec1[7:4]<=sec1[7:4]+1;end else sec1[3:0]<=sec1[3:0]+1;minclk<=0;end ////////分钟计时模?/// assign m_clk=minclk||count1;/////m_clk 产生进位或校正改变 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于计时、校时中的分钟计数

always @(posedge ct1)begin if(min1==8'h59)begin min1<=0;hclk<=1;end else begin if(min1[3:0]==9)

begin min1[3:0]<=0;min1[7:4]<=min1[7:4]+1;end else min1[3:0]<=min1[3:0]+1;hclk<=0;end end ////////小时计时模块/// assign h_clk=hclk||counta;//////h_clk 产生进位或校正改变 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于计时、校时中的小时计数

always @(posedge cta)if(hour1==8'h23)hour1<=0;else if(hour1[3:0]==9)begin hour1[7:4]<=hour1[7:4]+1;hour1[3:0]<=0;end else hour1[3:0]<=hour1[3:0]+1;Endmodule

闹钟模块

module alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert);input clk,num1,num2,count2,countb;output [7:0] amin;

output [7:0] ahour;output LD_alert;wire LD_alert;reg [7:0] amin=0;reg [7:0] ahour=0;assign ct2=(num1&clk)|(!num1&count2);//ct2 用于定时状态下调整分钟信号

assign LD_alert=(ahour|amin)?1:0;//指示是否进行了闹铃定时 always @(posedge ct2)if(amin==8'h59)amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0;amin[7:4]<=amin[7:4]+1;end else amin[3:0]<=amin[3:0]+1;assign ctb=(num2&clk)|(!num2&countb);////ctb 用于定时状态调节小时信号 always @(posedge ctb)if(ahour==8'h23)ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0;ahour[7:4]<=ahour[7:4]+1;end else ahour[3:0]<=ahour[3:0]+1;Endmodule 控制模块

module ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode);input change,mode,turn;output count1,count2,counta,countb,pause,LD_min,LD_hour;reg [1:0] m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always @(posedge mode)//mode 信号控制系统在三种功能间转换 begin if(m==4)m<=0;else m<=m+1;end always @(posedge turn)//////////接按键,在手动校时功能时,选择是调整小时,还是分钟; begin fm<=~fm;end

always @(m or fm or change)begin case(m)2: begin ////////2:调节时间功能; if(fm)begin count1<=change;{LD_min,LD_hour}<=2;end//////指示当前调整的是分钟

Else

begin counta<=change;{LD_min,LD_hour}<=1;end/////指示当前调整的是小时 {count2,countb}<=0;end 1: begin //////1:调节闹钟功能 if(fm)begin count2<=change;{LD_min,LD_hour}<=2;end/////指示当前调整的是分 else begin countb<=change;{LD_min,LD_hour}<=1;end/////指示当前调整的是小时 {count1,counta}<=0;end

0: begin {count1,count2,counta,countb,LD_min,LD_hour}<=0;end ////0:计时功能 endcase end endmodule 显示模块

module show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode);input [7:0] min1,sec1,amin;input [7:0] hour1,ahour;input[3:0] MSH,MSL,SH,SL,MH,ML;input mode;output [7:0] min,sec;output [7:0] hour;reg [7:0] min,sec;reg [7:0] hour;reg [1:0] m;always @(posedge mode)//mode 信号控制系统在三种功能间转换

begin if(m==4)m<=0;else m<=m+1;end always @(min1 or sec1 or amin or hour1 or ahour or m)begin case(m)0: begin hour<=hour1;min<=min1;sec<=sec1;end 1: begin hour<=ahour;min<=amin;sec<=8'hzz;end 2: begin hour<=hour1;min<=min1;sec<=8'hzz;end 3: begin

hour<={SH,SL};

min<={MSH,MSL};sec<={MH,ML};end endcase end Endmodule

实验分析 七

实验总结

八、参考资料

1、《EDA技术实用教程》

2、实验箱使用说明;

第四篇:EDA课程设计——数字时钟

Hefei University

EDA课程综述

论文题目: EDA课程综述

专 业: 09通信(2)班

姓 名: 唐吉祥

学 号: 0905072035 指导老师: 查长军

随着基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。

作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。使自己熟练使用QuartusII环境来进行设计,掌握VHDL语言的设计方法。要注重理论与实践之间的不同,培养自己的实践能力!

目录

一、课程设计任务及要求............................................................................................3

1.1实验目的..........................................................................................................3 1.2功能设计..........................................................................................................3

二、整体设计思想........................................................................................................3

2.1性能指标及功能设计......................................................................................3 2.2总体方框图......................................................................................................4

三、详细设计................................................................................................................4

3.1数字钟的基本工作原理:..............................................................................4

3.1.1时基T 产生电路..................................................................................4 3.1.2调时、调分信号的产生......................................................................4 3.1.3计数显示电路.......................................................................................5 3.2设计思路..........................................................................................................5 3.3设计步骤..........................................................................................................6

3.3.1工程建立及存盘...................................................................................6 3.3.2工程项目的编译...................................................................................7 3.3.3目标芯片的选择...................................................................................7 3.3.4时序仿真...............................................................................................8 3.3.5引脚锁定.............................................................................................10 3.3.6硬件测试.............................................................................................11 3.3.7实验结果.............................................................................................11

四、设计总结..............................................................................................................12

五、附录......................................................................................................................12

5.1 VHDL源程序..................................................................................................12 5.2配置符号图....................................................................................................17

一、课程设计任务及要求

1.1实验目的

1)掌握VHDL语言的基本运用

2)掌握QuartusII的简单操作并会使用EDA实验箱 3)掌握一个基本EDA课程设计的操作

1.2功能设计

1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时

2)设置复位、清零等功能

3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间 4)时钟计数显示时有LED灯显示

二、整体设计思想

2.1性能指标及功能设计

1)时、分、秒计时器

时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、...、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、...、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、...、23、00。即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲,数字钟将自动显示00点00分00秒。2)校时电路

当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动reset开关,电子钟从设置的时间开始往后计时。2.2总体方框图

三、详细设计

3.1数字钟的基本工作原理:

3.1.1时基T 产生电路

数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。

由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。

3.1.2调时、调分信号的产生

由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数 器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。调节小时的时间也一样的实现。

3.1.3计数显示电路

由计数部分、数据选择器、译码器组成,是时钟的关键部分。

1、计数部分:由两个60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。

2、数据选择器:84 输入14 输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—’)。

3、译码器:七段译码器。译码器必须能译出‘—’,由实验二中译码器真值表可得:字母F 的8421BCD 码为“1111”,译码后为“1000111”,现在如果只译出‘—’,即字母F的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为‘—’。

3.2设计思路

根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。

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七段显示数码管。

2)时间设置:

手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。3)清零功能: reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。

3.3设计步骤

3.3.1工程建立及存盘

1.打开 QuartusⅡ,单击“File”菜单,选择 File→New Project Wizard,对话框如下:分别输入项目的工作路径、项目名和实体名,单击Finish。

2.单击“File”菜单,选择New,弹出小对话框,双击“VHDL File“,即选中了文本编辑方式。在出现的“Vhdl1.vhd”文本编辑窗中键入VHDL程序,输入完毕后,选择File→Save As,即出现“Save As”对话框。选择自己建立好的存放本文件的目录,然后在文件名框中键入文件名,按“Save”按钮。

3.建立工程项目,在保存VHDL文件时会弹出是否建立项目的小窗口,点击“Yes”确定。即出现建立工程项目的导航窗口,点击“Next”,最后在出现的屏幕中分别键入新项目的工作路径、项目名和实体名。注意,原理图输入设计方法中,存盘的原理图文件名可以是任意的,但VHDL程序文本存盘的文件名必须与文件的实体名一致,输入后,单击“Finish”按钮。3.3.2工程项目的编译

单击工具条上的编译符号开始编译,并随着进度不断变化屏幕,编译完成后的屏幕如图所示:

3.3.3目标芯片的选择

选择菜单 Assignments 选项的下拉菜单中选择器件 Device „,如图所示: 在弹出的对话框中的 Family(器件序列栏)对应的序列名,EP1C3 对应的是 Cyclone 系列。在 Available Devices里选择 EP1C3T144-C8(有时需要把 Show advanced devices的勾消去,以便显示出所有速度级别的器件)。注意:所选器件必须与目标板的器件型号完全一致。

在图中,单击“Device and Pin Options„”,在弹出的“Device and Pin Options„”窗口中,单击“Unused Pins”标签。选择“As output driving an unspecified signal ”(由于学习机的“FPGA”具有很多功能,为了避免使用引脚对其它器件造成影响,保证本系统可靠工作,将未使用引脚设定为输出不定状态)后,单击确定后,无误后单击“OK”。

3.3.4时序仿真

建立波形文件:选择 File→New,在New窗中选中“Other File”标签。在出现的屏幕中选择“Vector Waveform File”项出现一新的屏幕。在出现的新屏幕中,双击“Name”下方的空白处,弹出“Insert Nod or Bus”对话框,单击该对话框的“Node Finder„„”。在屏幕中的 Filter 中选择 Pins,单击“List”。而后,单击“>>”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。然后单击屏幕右上脚的 “OK”。在出现的小屏幕上单击“OK”。

设定仿真时间宽度。选择 Edit → End time„选项,在End time选择窗中选择适当的仿真时间域,以便有足够长的观察时间。

波形文件存盘。选择File→Save as 选项,直接存盘即可。运行仿真器。在菜单中选择项,直到出现,仿真结束。

未曾编辑的仿真波形

仿真波形 3.3.5引脚锁定

将设计编程下载进选定的目标器件中,如EPF10K10,作进一步的硬件测试,将设计的所有输入输出引脚分别与目标器件的EPF10K10的部分引脚相接,操作如下:

1.选择 Assignments → Assignments Editor ,即进入 Assignments Editor编辑器。在Category 栏选择 Pin,或直接单击右上侧的 Pin 按钮。

2.双击 TO 栏的《new》,在出现的的下拉栏中选择对应的端口信号名(如 D[0]);然后双击对应的栏的《new》,在出现的下拉栏中选择对应的端口信号名的期间引脚号。

3.最后存储这些引脚锁定信息后,必须再编译(启动)一次,才能将引脚锁定信息编译进编程下载文件中。此后就可以准备将编译好的 SOF 文件下载到试验系统的FPGA中去了。

引脚锁定 3.3.6硬件测试

1.首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电源,选择模式7。

2.打开编辑窗和配置文件。选择,弹出一个编辑窗。在Mode栏中选择JTAG,并在选项下的小方框打勾。注意核对下载文件路径与文件名。如果文件没有出现或者出错,单击左Add file侧按钮,手动选择配置文件 clock.sof。

3.最后单击下载标符Start,即进入对目标器件 FPGA 的配置下载操作。当 Progress 显示100%,以及在底部的处理栏中出现 Configuration Succeeded 时,表示编程成功,如图所示。注意,如果必要时,可再次单击 Start,直至编程成功。

4.下载完成后,通过硬件测试进一步确定设计是否达到所有的技术指标,如未达到,可逐步检查,哪部分出现问题。如果是代码出现问题,须修改代码;若是时序波形图有问题,须重新设置。

3.3.7实验结果

实验箱使用模式7,键8为复位按键,键8为1时正常工作。键4设置小时,键7设置分钟。

下载成功后,按下键8,及使六个LED复位清零,显示数秒的自动计时,可以通过4键设置小时数,7键设置分钟数。当秒数满60则进一位,分钟数满60进一位,当显示为23:59:59时,秒数在加一则显示00:00:00,之后从新计时。

四、设计总结

通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对数字时钟原理和设计思路的了解。

同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

在此,也感谢康老师的悉心指导,使自己学到了很多东西!

五、附录

5.1 VHDL源程序

Alert模块

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS

PORT(clk:IN STD_LOGIC;

dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);

speak:OUT STD_LOGIC;

lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END alert;ARCHITECTURE fun OF alert IS

SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);

BEGIN speaker:PROCESS(clk)

BEGIN

--speak<=count1(1);

IF(clk'event and clk='1')THEN

IF(dain=”0000000“)THEN

speak<=count1(1);

IF(count1>=”10“)THEN

count1<=”00“;--count1为三进制加法计数器

ELSE

count1<=count1+1;--speak<=count1(0);

END IF;

END IF;

END IF;

END PROCESS speaker;lamper:PROCESS(clk)

BEGIN

IF(rising_edge(clk))THEN

IF(count<=”10“)THEN

IF(count=”00“)THEN

lamp<=”001“;--循环点亮三只灯

ELSIF(count=”01“)THEN

lamp<=”010“;

ELSIF(count=”10“)THEN

lamp<=”100“;

END IF;

count<=count+1;

ELSE

count<=”00“;

END IF;

END IF;

END PROCESS lamper;END fun;Hour模块

LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS

PORT(clk,reset:IN STD_LOGIC;

daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour IS SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);

BEGIN

daout<=count;

PROCESS(clk,reset)

BEGIN

IF(reset='0')THEN count<=”000000“;--若reset=0,则异步清零

ELSIF(clk'event and clk='1')THEN

--否则,若clk上升沿到

IF(count(3 DOWNTO 0)=”1001“)THEN--若个位计时恰好到”1001“即9

IF(count<16#23#)THEN

--23进制

count<=count+7;

--若到23D则

else

count<=”000000“;

--复0

END IF;

ELSIF(count<16#23#)THEN

--若未到23D,则count进1

count<=count+1;

ELSE

--否则清零

count<=”000000“;

END IF;

--END IF(count(3 DOWNTO 0)=”1001“)

END IF;

--END IF(reset='0')

END PROCESS;END fun;Minute模块

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS

PORT(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 IS SIGNAL 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)

BEGIN

IF(reset='0')THEN--若reset为0,则异步清零

count<=”0000000“;

ELSIF(clk'event and clk='1')THEN--否则,若clk上升沿到

IF(count(3 DOWNTO 0)=”1001“)THEN--若个位计时恰好到”1001“即9

IF(count <16#60#)THEN--又若count小于16#60#,即60

IF(count=”1011001“)THEN--又若已到59D

enhour_1<='1';--则置进位为1

count<=”0000000“;--count复0

ELSE

count<=count+7;--若count未到59D,则加7,即作”加6校正“

END IF;--使前面的16#60#的个位转变为8421BCD的容量

ELSE

count<=”0000000“;--count复0(有此句,则对无效状态电路可自启动)

END IF;

--END IF(count<16#60#)

ELSIF(count <16#60#)THEN

count<=count+1;--若count<16#60#则count加1

enhour_1<='0' after 100 ns;--没有发生进位

ELSE

count<=”0000000“;--否则,若count不小于16#60# count复0

END IF;--END IF(count(3 DOWNTO 0)=”1001“)

END IF;--END IF(reset='0')

END process;END fun;Second模块

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second IS PORT(clk,reset,setmin:STD_LOGIC;

enmin:OUT STD_LOGIC;

daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second IS SIGNAL 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)

BEGIN

IF(reset='0')THEN count<=”0000000“;--若reset为0,则异步清零

ELSIF(clk 'event and clk='1')then--否则,若clk上升沿到

IF(count(3 downto 0)=”1001“)then

--若个位计时恰好到”1001“即9

IF(count<16#60#)then--又若count小于16#60#,即60H IF(count=”1011001“)then

--又若已到59D

enmin_1<='1';count<=”0000000“;--则置进位为1及count复0

ELSE

--未到59D

count<=count+7;--则加7,而+7=+1+6,即作”加6校正“

END IF;

ELSE

--若count不小于16#60#(即count等于或大于16#60#)

count<=”0000000“;

--count复0

END IF;

--END IF(count<16#60#)

ELSIF(count<16#60#)then--若个位计数未到”1001“则转此句再判

count<=count+1;

--若count<16#60#则count加1

enmin_1<='0'after 100 ns;--没有发生进位

ELSE

--否则,若count不小于16#60#

count<=”0000000“;

--则count复0

END IF;

--END IF(count(3 DOWNTO 0)=”1001")

END IF;

--END IF(reset='0')END PROCESS;END fun;5.2配置符号图

第五篇:数字时钟课程设计论文

目录

1.序论„„„„„„„„„„„„„„„„„„„„„„„„„3 2.本论„„„„„„„„„„„„„„„„„„„„„„„„„4 ——设计说明„„„„„„„„„„„„„„„„„„„„4 ——电路图„„„„„„„„„„„„„„„„„„„„„5 ——原理图„„„„„„„„„„„„„„„„„„„„„5 ——振荡器„„„„„„„„„„„„„„„„„„„„„6 ——分频器„„„„„„„„„„„„„„„„„„„„„6 ——计数器„„„„„„„„„„„„„„„„„„„„„7 ——译码器„„„„„„„„„„„„„„„„„„„„„10 ——校时„„„„„„„„„„„„„„„„„„„„„„11 ——闹钟„„„„„„„„„„„„„„„„„„„„„„12 ——心得„„„„„„„„„„„„„„„„„„„„„„12 3.特别感谢„„„„„„„„„„„„„„„„„„„„„„„14 序论

一、本课程设计的地位和作用

数字电子技术课程设计是电子技术基础教学中的一个实践环节,它使学生自己通过设计和搭建一个实用电子产品雏形,巩固和加深在数字电子技术课程中的理论基础和实验中的基本技能,训练电子产品制作时的动手能力。通过该课程设计,设计出符合任务要求的电路,掌握通用电子电路的一般设计方法和步骤,训练并提高学生在文献检索、资料利用、方案比较和元器件选择等方面的综合能力,同时为毕业设计和毕业以后从事电子技术方面的科研和开发打下一定的基础。

二、课程设计的目的和要求

1.能够较全面地巩固和应用“数字电子技术”课程中所学的基本理论和基本方法,并初步掌握小型数字系统设计的基本方法。

2.能合理、灵活地应用各种标准集成电路(SSI、MSI、LSI等)器件实现规定的数字系统。

3.培养独立思考、独立准备资料、独立设计规定功能的数字系统的能力。4.培养独立进行实验,包括电路布局、安装、调试和排除故障的能力。5.培养书写综合设计实验报告的能力。

三、课程设计的基本要求

根据设计任务,从选择设计方案开始,进行电路设计;选择合适的器件,画出设计电路图;通过安装、调试,直至实现任务要求的全部功能。对电路要求布局合理,走线清晰,工作可靠,经验收合格后,写出完整的课程设计报告

本论

数字钟电路是一块独立构成的时钟集成电路专用芯片。它集成了计数器,比较器,振荡器,译码器和驱动等电路,能直接驱动显示时,分,秒,具有定时,报警等多种功能,被广泛应用于自动化控制,智能化仪表等领域。

一.设计说明

该系统工作原理:

振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准。再经过分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位。分计数计满60后向时计数器进位。小时计数器按照“24翻1”规律计数。计数器的输出经译码器送给显示器。计时器出现误差时可以用校正时电路进行“时校正”,“分校正”,“秒校正”。该系统还有定时闹钟功能,该扩展电路必须在主体电路运行正常的情况下才能进行扩展。

总体设计如图所示:

总体原理图如下

1.石英晶体振荡器

晶体振荡器是构成数字式时钟的核心,它保证了时钟的走时准确及稳定。石英晶体振荡器的特点是频率准确 , 电路结构简单 , 频率易调整。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体振荡器电路。

2.分频器

由于产生的脉冲信号并不是我们所需要的1hz信号,所以需要经过分频电路将脉冲信号分成1HZ的信号。所以我设计了如下的分频电路:

如图,因为实验室的信号为8Mh,所以我用一个七个90的设计图设计了这样的分频电路,分别是一个八分频器和六个十分频器,这样,就能实现输出一个1HZ的信号了。3.计数器

时间计数电路由秒个位和秒十位计数器,分个位和分十位计数器及时个位和时十位计数器电路构成,其中秒个位和秒十位计数器,分个位和分十位计数器为60进制计数器,而根据设计要求,时个位和时十位计数器为12进制计数器.因为电子钟由秒、分、时组成。分别为 60 进制和24 进制。采用一片90接成 60 进制 ,74LS90的第一组 4位二进制接成秒的个位 , 另一组接成秒的十位 ,“分”也为60 进制 ,“时”为 24 进制。这两种进制的次序和二进制完全相同 , 只是模数不是 2 的整幂。当秒脉冲输入时,电路状态按二进制自然序列依次递增1,QA、QB、QC、QD输出为0000、0001、0010、0011、0100、0101、0110、0111、1000、1001,当输出为1010也就是10采用反馈置零法清零 , 先按二进制计数器串联起来构成计数器 , 当计数状态达到所需的脉冲模值后 , 经过电路译码、反馈、产生复位脉冲将计数器清零 , 然后重新开始进行下一个循环。

秒位设计图如下

分位同秒

分位的设计基本同秒位相同,最关键的是星期的设计,如下如

而在星期的设计上则不能再使用90的集成块,我选择了161的集成块,使用了集成块的置数功能,这样集成块在显示完“7”之后就会直接被置数为“1”,就能实现星期的显示功能了,设计如图:

这样就能实现从秒到星期的全部计数功能了。4.译码和显示

译码是把给定的代码进行翻译 , 将时、分、秒数器输出的四位二进制代码翻译为相应的十进制 , 并通过LED 显示器显示 , 通常LED 显示器与译码器是配套使用的。我们选用的七段译码驱动器74LS47或者是CD4511)和数码管(LED)是共阳接法。LED显示的3、8 管脚接一起 , 限流电阻为 200Ω和 + 5V接。实际使用时 a、b、c、d、e、f、g 各段都应接一个限流电阻 , 在图中略画出来。译码显示电如下图所示

5.校时电路

前面的电路设计的很传统很简单,现在我具体说一下我们设计的校时电路,首先电路图如下;

校时功能说明,正常情况,01控制器打到1,则,高位进位正常按照低位的进位信号进位不受印象。

校时,01控制器打到0,则,高位进位只按照校时脉冲变化,不受低位进位信号限制,这样就能使高位变化到我们想要校对的时间的,这是再将01控制器打到1,恢复正常。

6.闹钟电路

闹钟电路主要就是讲所要报时的时间的信号输入到大与非门中,再统一输入到蜂鸣器上,所要注意的是,小时的十位,因为十位在显示“1”和“2”时都会输出“1”信号,所以这里要格外注意。二.心得体会

本次课程设计好似我目前收获最大的一次课程设计。我是工科专业的学生,设计是我们将来必需的技能,这次课程设计恰恰给我们提供了一个应用自己所学知识的机会,通过这次对数字电子钟的设计作,让我了解了电路设计的基本步骤,也让我了解了关于数字钟的原理与设计理念。可以说,本次课程设计有苦也有甜。设计思路是最重要的,只要你的设计思路是成功的,那你的设计已经成功了一半。因此我们应该在设计前做好充分你的准备,像查找详细的资料,为我们设计的成功打下坚实的基础。制作过程是一个考验人耐心的过程,不能有丝毫的急躁,马虎,对电路的调试要一步一步来,又要求我们有一个比较正确的调试方法,这要求我们灵活处理,要熟练地掌握课本上的知识,这样才能对试验中出现的问题进行分析解决。整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路细节上的设计,如CP脉冲的供给通断等。在多种方案的选择中,我们仔细比较分析其原理以及可行的原因,最后还是在老师的耐心指导下,是整个电路设计完成。在设计过程中,我深刻的体会到要反复实践,其过程相当麻烦,有时花很长时间设计出来的电路还需要重做,那时心中未免有些灰心,有时还特别想放弃,此时更加需要静下心来,查找原因。总体说来,这次课程设计我受益匪浅,在摸索该如何设计电路使之实现所需要的功能。课设培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦。

下载单片机数字时钟课程设计感想word格式文档
下载单片机数字时钟课程设计感想.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机课程设计电子时钟说明书

    《电子时钟》 课程设计说明书 专业班级: 11级自动化班姓名: 欧阳明长 李徐军陈龙 指导教师:郭玉设计时间: 2013--12--17 物理与电气工程学院 2013年12月17日 1 摘要 电子钟在......

    单片机数字万用表课程设计

    《单片机》课程设计 题目:基于单片机的数字多用表设计专业:电力系统及其自动化班级:本自动化姓名: 学号:指导老师:小组成员:成绩:摘要 本次设计采用单片机芯片AT89S51与ADC0809设计......

    数字电路课程设计数字时钟实现

    应用科技学院 《电子技术课程设计报告》 设计题目:数字钟的设计与制作 专业班级:13级《物联网工程》2班 姓名:白雪 王贞 张莹 学号:068 108 131 指导老师:刘烨 时间:2015年5月15......

    数字电子时钟课程设计2

    数字电子时钟课程设计题目: 数字电子时钟课程设计目录 一、设计任务及设计要求…………………………………………(3) 二、设计方案论证………………………….. …………. (3) 1.......

    EDA课程设计 数字时钟(闹钟)

    课 程 设 计 说 明 书 题目: 闹钟 学院(系): 年级专业: 学 号: 学生姓名: 指导教师: 教师职称: 共 16 页第 1 页 目 录 第1章 摘要……………………………………………………………......

    单片机课程设计报告,单片机电子时钟5篇

    题 目:单片机课程设计报告目 录一、设计目的二、程设计具体要求三、单片机发展简史四、8051单片机系统简介五、8051单片机内部定时器/计数器简介六、程序电路七、程序流程八......

    单片机电子时钟课程设计报告(合集5篇)

    青岛理工大学琴岛学院 课题名称:单片机原理及应用课程设计学院:专业班级:学号:学生:指导教师:设 计 报 告......

    单片机课程设计(基于多路数字抢答器)(范文)

    一、概述 大学四年的学习生活中,会遇到各种各样的竞赛,抢答器便成为了主要的工具之一。而现在的抢答器智能化越来越强,这必然会提高抢答器的成本。本抢答器与其他抢答器电路相......