简易数字钟设计
简易数字钟的设计
中文摘要数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。
本次做的数字钟是以单片机(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语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。
设计制作电子时钟
设计制作简易数字钟一、设计要求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进制计数器,分别用于对分、秒和时的计数。
简易数字钟的单片机课程设计
1 系统设计1.1 框图设计基于AT89S51单片机数字钟由电源电路、单片机主控电路、按键控制电路和蜂鸣器等几部分组成,系统框图如下:1.2 知识点本项目需要通过学习和查阅资料,了解和掌握以下知识。
1.+5V电源原理及设计。
2.单片机复位电路工作原理及设计。
3.单片机晶振电路工作原理及设计。
4.按键电路的设计。
5.驱动电路74LS04的特性及使用。
6.蜂鸣器及其驱动电路的设计。
7.数码管的特性及其使用。
8.AT89S51单片机引脚。
9.单片机汇编语言及程序设计。
2 硬件设计2.1 电路原理基于AT89S51单片机数字钟电路原理图如附录所示。
按下P1.0口按键,若按下时间小于1S,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计时器停止走动。
当再按下P1.0口按键时,若按键时间小于0.5S,则时间加1min;若按下时间大于0.5S,则进入小时调整状态。
按下P1.1按键时,可进行减1调整。
在小时调整状态下,当按键按下的时间大于0.5S时,退出时间调整状态,时钟从0S开始计时。
在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表功能的转换,秒表中断计时程序启动,显示地址改为60H,LED将显示秒表计时单元60H-65H 中的数据。
按下P1.2口的按键开关,可实现秒表清零、秒表启动、秒表暂停功能;当再按下P1.1口按键时,关闭T1秒表中断计时,显示首址又改为70H,恢复正常时间的显示功能。
2.2 元件清单基于AT89S51单片机数字钟的元件清单如下表。
3 软件设计3.1 程序流程图1.主程序流程图如图1-1所示。
2.秒计时程序。
秒计时由定时器T0完成,流程图如图1-2所示。
3.秒表、调时指示程序。
秒表、调时由定时器T1完成,其流程图如图1-3所示。
3.2程序清单DISBEG EQU 30H CALB EQU P1.7 TIMCON EQU 2FH ORG 0000HLJMP MAINORG 0003HRETIORG 000BHLJMP INTT0ORG 0013HRETIORG 001BHLJMP INTT1ORG 0023HRETITAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH I_TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DL Y1M: MOV R6,#14HDL_LOOP: MOV R7,#19HDL_LOOP1:DJNZ R7,DL_LOOP1DJNZ R6,DL_LOOPRETDL Y20M:CLR CALBLCALL D_II_PLAYLCALL D_II_PLAYLCALL D_II_PLAYSETB CALBRETDL_LOOPS:LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20HDL05S1: LCALL D_II_PLAYDJNZ R3,DL05S1RETCTIME: MOV A,#10H /整点报时MOV B,79HMUL ABADD A,78HMOV TIMCON,ACLOOP: LCALL DL Y20MLCALL DL_LOOPSLCALL DL_LOOPSLCALL DL_LOOPSDJNZ TIMCON,CLOOPCLR 08HMAIN: MOV R0,#00H /主程序MOV R7,#80HMLOOP: MOV R0,#00HINC R0DJNZ R7,MLOOPMOV 20H,#00HMOV 7AH,#0AHMOV TMOD,#11HMOV TL0,#0B0HMOV TH0,#3CHMOV TL1,#0B0HMOV TH1,#3CHSETB EASETB ET0SETB TR0MOV R4,#14HMOV DISBEG,#70HMLOOP1:LCALL D_II_PLAYJNB P1.0,T_SETSCJNB P1.1,DL Y5JNB P1.2,FUNBTJNB P1.3,TSETJB 08H,CTIMEAJMP MLOOP1FUNBT: LJMP DL Y6TSET: LCALL DL Y20M /闹铃时间设定程序,按P1.3进入设定JB P1.3,MLOOP1TS_LOOP:JNB P1.3,TS_LOOPJB 05H,CLRBELLMOV DISBEG,#50HMOV 50H,#0CHMOV 51H,#0AHMINCHG:SETB EALCALL D_II_PLAYJNB P1.2,DL Y1JNB P1.0,DL Y3JNB P1.3,DL YAJMP MINCHGCLRBELL:CLR 05HCLR CALBAJMP MLOOP1DL Y:LCALL DL Y20MJB P1.3,MINCHGLJMP DL Y8T_SETSC:LJMP R_SETTIMDL Y1:LCALL DL Y20MJB P1.2,MINCHGDL Y2: LCALL D_II_PLAYJNB P1.2,DL Y2CLR EAMOV R0,#53HLCALL ADD_1MOV A,R3CLR CCJNE A,#60H,ADD_MADD_M:JC MINCHGACALL CLR_HAJMP MINCHGDL Y3:LCALL DL Y20MJB P1.0,MINCHGDL Y4:LCALL D_II_PLAYJNB P1.0,DL Y4CLR EAMOV R0,#53HLCALL SUB_MLJMP MINCHGDL Y5:LCALL DL Y20M /秒表功能/时钟转换程序,按P1.1进行功能转换JB P1.1,T_MLOOP1JNB P1.1,$CPL 03HJNB 03H,DIS_SETMOV DISBEG,#60HMOV 60H,#00HMOV 61H,#00HMOV 62H,#00HMOV 63H,#00HMOV 64H,#00HMOV 65H,#00HMOV TL1,#0F0HMOV TH1,#0D8HSETB TR1SETB ET1T_MLOOP1:LJMP MLOOP1DIS_SET:MOV DISBEG,#70HCLR ET1CLR TR1T_MLOOP11:LJMP MLOOP1DL Y6:LCALL DL Y20M /秒表暂停/清零功能程序,按P1.2暂停或清零,JB P1.2,T_MLOOP11 P1.1退出秒表,回到时钟计时T_EST11:JNB P1.2,T_EST11CLR ET1CLR TR1T_EST22:JNB P1.1,DL Y5JB P1.2,T_EST21LCALL DL Y20MJB P1.2,T_EST22T_EST55:JNB P1.2,T_EST51MOV 60H,#00HMOV 61H,#00HMOV 62H,#00HMOV 63H,#00HMOV 64H,#00HMOV 65H,#00HT_EST33:JNB P1.1,DL Y5JB P1.2,T_EST31LCALL DL Y20MJB P1.2,T_EST33T_EST44:JNB P1.2,T_EST41SETB ET1SETB TR1AJMP MLOOP1T_EST411:LCALL D_II_PLAY /以下为键等待释放时显示不会熄灭用AJMP T_EST11T_EST21:LCALL D_II_PLAYAJMP T_EST22T_EST31:LCALL D_II_PLAYAJMP T_EST33T_EST41:LCALL D_II_PLAYAJMP T_EST44T_EST51:LCALL D_II_PLAYAJMP T_EST55INTT0:PUSH ACC /1S计时程序;T0中断服务程序PUSH PSWCLR ET0CLR TR0MOV A,#0B7HADD A,TL0MOV TL0,AMOV A,#3CHADDC A,TH0MOV TH0,ASETB TR0DJNZ R4,I_INT0A_DDS:MOV R4,#14HCPL 07HMOV R0,#71HACALL ADD_1MOV A,R3CLR CCJNE A,#60H,A_DDMA_DDM:JC I_INT0ACALL CLR_HMOV R0,#77HACALL ADD_1MOV A,R3CLR CCJNE A,#60H,A_DDHA_DDH:JC I_INT0ACALL CLR_HLCALL DL Y20MSETB 08HMOV R0,#79HACALL ADD_1MOV A,R3CLR CCJNE A,#24H,RSTARTRSTART:JC I_INT0ACALL CLR_HI_INT0:MOV 72H,76HMOV 73H,77HMOV 74H,78HMOV 75H,79HLCALL BELLPOP PSWPOP ACCSETB ET0RETIINTT1:PUSH ACC /闪动调试程序/秒表从能程序;T1中断服务程序PUSH PSWJB 03H,R_ADDSMOV TL1,#0B0HMOV TH1,#3CHDJNZ R2,I_INT1MOV R2,#06HCPL 02HJB 02H,FLASH0MOV 72H,76HMOV 73H,77HMOV 74H,78HMOV 75H,79HI_INT1:POP PSWPOP ACCRETIFLASH0:JB 01H,FLASH1MOV 72H,7AHMOV 73H,7AHMOV 74H,78HMOV 75H,79HAJMP I_INT1 FLASH1:MOV 72H,76HMOV 73H,77HMOV 74H,7AHMOV 75H,7AHAJMP I_INT1R_ADDS:CLR TR1MOV A,#0F7HADD A,TL1MOV TL1,AMOV A,#0D8HADDC A,TH1MOV TH1,ASETB TR1MOV R0,#61HACALL ADD_1CLR CMOV A,R3JZ R_ADDMAJMP I_INT01R_ADDM:ACALL CLR_HMOV R0,#63HACALL ADD_1MOV A,R3CLR CCJNE A,#60H,R_ADDH R_ADDH:JC I_INT01LCALL CLR_HMOV R0,#65HACALL ADD_1I_INT01:POP PSWPOP ACCRETIADD_1:MOV A,R0 /加1子程序DEC R0SWAP AORL A,R0ADD A,#01HDA AMOV R3,AANL A,#0FHMOV R0,AMOV A,R3INC R0SWAP AANL A,#0FHMOV R0,ARETSUB_M:MOV A,R0 /分减1子程序DEC R0SWAP AORL A,R0JZ SUB_M1DEC ASUB_M11:MOV R3,AANL A,#0FHCLR CSUBB A,#0AHSUB_M111:JC SUB_M110MOV R0,#09HSUB_M10:MOV A,R3INC R0SWAP AANL A,#0FHMOV R0,ARETSUB_M1:MOV A,#59HAJMP SUB_M11SUB_M110:MOV A,R3SUB_H:MOV A,R0 /时减1子程序DEC R0SWAP AORL A,R0JZ SUB_H1DEC ASUB_H11:MOV R3,AANL A,#0FHCLR CSUBB A,#0AHSUB_H111:JC SUB_H110MOV R0,#09HSUB_H10:MOV A,R3INC R0SWAP AANL A,#0FHMOV R0,ARETSUB_H1:MOV A,#23HAJMP SUB_H11SUB_H110:MOV A,R3CLR_H:CLR A /清零程序;对即使单元复零用MOV R0,ADEC R0MOV R0,ARETR_SETTIM:CLR ET0 /时钟时间调整程序CLR TR0LCALL DL_LOOPSLCALL DL Y20MJB P1.0,SLEEPMOV R2,#06HMOV 70H,#00HMOV 71H,#00HSETB ET1SETB TR1SET_2:JNB P1.0,SET_1SETB 00HSET_4:JB P1.0,SET_3LCALL DL05SLCALL DL Y20MJNB P1.0,R_SETHHMOV R0,#77HLCALL ADD_1MOV A,R3CLR CCJNE A,#60H,SET_LOOP SET_LOOP:JC SET_4LCALL CLR_HCLR CAJMP SET_4SLEEP:SETB ET0SETB TR0SET_LOOP1:JB P1.0,SET_LOOP1 LCALL DL Y20MJB P1.0,SET_LOOP1SET_LOOP2:JNB P1.0,SET_LOOP2 LJMP MLOOP1R_SETHH:CLR 00HSETB 01HSET_LOOP3:JNB P1.0,SET_5 SET_6:JB P1.0,SET_7LCALL DL05SLCALL DL Y20MJNB P1.0,STOPMOV R0,#79HLCALL ADD_1MOV A,R3CLR CCJNE A,#24H,C_YHHC_YHH:JC SET_6LCALL CLR_HAJMP SET_6STOP:JNB P1.0,STOP1LCALL DL Y20MJNB P1.0,STOPCLR 01HCLR 00HCLR 02HCLR TR1CLR ET1SETB TR0SETB ET0LJMP MLOOP1SET_1:LCALL D_II_PLAYAJMP SET_2SET_3:LCALL D_II_PLAYJNB P1.1,DL Y7AJMP SET_4SET_5:LCALL D_II_PLAYAJMP SET_LOOP3SET_7:LCALL D_II_PLAYJNB P1.1,DL Y7BAJMP SET_6STOP1:LCALL D_II_PLAYAJMP STOPDL Y7:LCALL DL Y20M /分减1程序JB P1.1,SET_41DL Y7_M:JNB P1.1,DL Y7_MMOV R0,#77HLCALL SUB_MLJMP SET_4SET_41:LJMP SET_4DL Y7B:LCALL DL Y20M /时减1程序JB P1.1,SET_61DL Y7_H:JNB P1.1,DL Y7_HMOV R0,#79HLCALL SUB_HLJMP SET_6SET_61:LJMP SET_6D_II_PLAY:MOV R1,DISBEG /显示程序MOV R5,#0FEHPLAY:MOV A,R5MOV P2,AMOV A,R1MOV DPTR,#TABMOVC A,A+DPTRMOV P0,AMOV A,R5JB ACC.2,D_LOOPCLR P0.7D_LOOP:JB ACC.4,D_LOOP1CLR P0.7D_LOOP1:LCALL DL Y1MINC R1MOV A,R5JNB ACC.5,CLOSERL AMOV R5,AMOV P0,#0FFHAJMP PLAYCLOSE:MOV P2,#0FFHMOV P0,#0FFHRETSD_II_PLAY:MOV R1,DISBEG /上电显示子程序MOV R5,#0FEHI_PLAY:MOV A,R5MOV P2,AMOV A,R1MOV DPTR,#I_TABMOVC A,A+DPTRMOV P0,AMOV A,R5LCALL DL Y1MINC R1MOV A,R5JNB ACC.5,CLOSESRL AMOV R5,AAJMP I_PLAYCLOSES:MOV P2,#0FFHMOV P0,#0FFHRETDL Y8:LCALL D_II_PLAY /闹铃时间设定程序中的时调整程序JNB P1.3,DL Y8MOV 50H,#0AHMOV 51H,#0CHR_BTIM:SETB EALCALL D_II_PLAYJNB P1.2,DL Y12JNB P1.0,DL Y14JNB P1.3,DL Y9JNB P1.1,DL Y10AJMP R_BTIMDL Y9:LCALL DL Y20MJB P1.3,R_BTIMDL Y8M:LCALL D_II_PLAYJNB P1.3,DL Y8MMOV DISBEG,#70HLJMP MLOOP1DL Y10:LCALL DL Y20MJB P1.1,R_BTIMDL Y11:LCALL D_II_PLAYJNB P1.1,DL Y11CPL 05HJNB 05H,R_BTIM11MOV 50H,#00HAJMP R_BTIMR_BTIM11:MOV 50H,#0AHAJMP R_BTIMDL Y12:LCALL DL Y20MJB P1.2,R_BTIMDL Y13:LCALL D_II_PLAYJNB P1.2,DL Y13CLR EAMOV R0,#55HLCALL ADD_1MOV A,R3CLR CCJNE A,#24H,A_DDH33NA_DDH33N:JC R_BTIMACALL CLR_HAJMP R_BTIMDL Y14:LCALL DL Y20MJB P1.0,R_BTIMDL Y15:LCALL D_II_PLAYJNB P1.0,DL Y15CLR EAMOV R0,#55HLCALL SUB_HLJMP R_BTIMBELL:JNB 05H,BBELL /闹铃判断子程序MOV A,79HCJNE A,55H,BBELLMOV A,78HCLR CBELL_1:CJNE A,54H,BBELLMOV A,77HCLR CCJNE A,53H,BBELLMOV A,76HCLR CBELL_2:CJNE A,52H,BBELLJNB 07H,BBELLCLR CALBRETBBELL:SETB CALBRETEND小结为期两周的单片机数字钟课程设计结束了,在这两周里我和我的组员们运用单片机的知识完成了简易数字钟电路的设计,这使我对单片机这门课程有了更深一步的了解。
简易数字钟设计
调整使能端
入0有效,有效时,显示信号输出,同时屏蔽进位输入和进位输出,允许调整信号输入。
显示使能端
入0有效
调整信号输入
2.24进制模块(24count)
实现同步24进制计数,可调整
电源,时钟信号
同上
进位输入
接分的进位信号
进位输出
秒模块接分模块,分模块接时模块
显示输出
同上
闹钟比较信号输出
接到闹钟
调整使能端,显示使能端,调整信号输入
二、任务分析
能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。
三、总体设计
本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。
方案一、采用异步电路,数据选择器
将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下:
同上
3.闹钟模块(60clock,24clock)
实现可与时钟比较,并输出闹铃信号,可调整
电源,时钟信号
同上
闹钟比较信号输入
秒模块接分模块,分模块接时模块
显示输出
同上
闹铃输出
接到蜂鸣器
调整使能端,显示使能端,调整信号输入
同上
4.控制模块(fun,func)
管理总线资源,对各个模块输出控制信号
电源
5vVCC
该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。
简单的数字时钟(verilog设计)
设计目标与要求
设计一个简单的数字 时钟,能够显示时、 分、秒。
时钟应具有可靠性、 稳定性和可扩展性。
要求使用Verilog语 言实现,并能够在 FPGA或ASIC上实现。
设计思路及流程
• 设计思路:采用模块化设计方法,将数字时钟划分为不同的模 块,如计数器模块、显示模块等。每个模块负责实现特定的功 能,并通过接口与其他模块进行通信。
设计思路及流程
设计流程 1. 确定设计需求和目标。 2. 制定设计方案和计划。
设计思路及流程
3. 编写Verilog代码,实现各个模块的功能。 5. 根据测试结果进行调试和优化。
未来改进方向探讨
提高计时精度
通过改进算法或采用更高 性能的硬件平台,提高数
字时钟的计时精度。
降低资源占用
优化代码结构,减少不 必要的资源占用,提高 时钟系统的运行效率。
增加实用功能
拓展应用领域
考虑增加闹钟、定时器 等实用功能,使数字时 钟更加符合用户需求。
探索将数字时钟应用于 更多领域,如智能家居、
数据类型与运算符
Verilog中的数据类型包括
整型、实型、时间型、数组、结构体等。
Verilog中的运算符包括
算术运算符、关系运算符、逻辑运算符、位运算符等。
顺序语句与并行语句
Verilog中的顺序语句包括
赋值语句、条件语句、循环语句等,用于描述电路的时序行为。
Verilog中的并行语句包括
模块实例化、连续赋值语句、门级电路描述等,用于描述电路的并行行为。
数字逻辑电路课设—简易数字钟设计
数字逻辑电路课程设计报告多功能数组钟设计一、设计要求:通过Maxplus II使用VHDL语言编写设计一款多功能数字钟,具体功能如下:1、时钟时,分,秒分别显示且能正确计数。
2、整点报时,时钟在将要到达整点的最后十秒,给予蜂鸣提示。
3、校时,可以通过相应开关按钮对时钟的时分秒进行调整。
4、闹钟,用户可以预设闹铃时刻,当时间到达该时刻时,发出蜂鸣提示。
二、总体设计:1、设计框图:2、外部输入输出要求:外部输入要求:输入信号有1024Hz时钟信号、低电平有效的秒清零信号CLR、低电平有效的调分信号SETmin、低电平有效的调时信号SEThour;外部输出要求:整点报时信号SOUND(59分51/3/5/7秒时未500Hz低频声,59分59秒时为1kHz高频声)、时十位显示信号h1(a,b,c,d,e,f,g)、时个位显示信号h0(a ,b,c,d,e,f,g)、分十位显示信号m1及分个位m0、秒十位s1及秒个位s0;数码管显示位选信号SEL0/1/2等三个信号。
3、各模块功能:1)FREQ分频模块:整点报时用的1024Hz与512Hz的脉冲信号,这里的输入信号是1024Hz信号,所以只要一个二分频即可;时间基准采用1Hz输入信号直接提供(当然也可以分频取得,这里先用的是分频取得的信号,后考虑到精度问题而采用硬件频率信号。
2)秒计数模块SECOND:60进制,带有进位和清零功能的,输入为1Hz脉冲和低电平有效的清零信号CLR,输出秒个位、时位及进位信号CO。
3)分计数模块MINUTE60进制,带有进位和置数功能的,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位及进位信号CO。
4)时计数模块HOUR:24进制,输入为1Hz脉冲和高电平有效的使能信号EN,输出分个位、时位。
5)扫描模块SELTIME:输入为秒(含个/十位)、分、时、扫描时钟CLK1K,输出为D和显示控制信号SEL。
6)整点报时功能模块ALERT:输入为分/秒信号,输出为高频声控Q1K和Q500。
简易数字钟电路设计基本思路_邵兰
二 、系 统 硬 件 设 计
一 个 完 整 的 数 字 钟 电 路 应 包 括 输 入 脉 冲 电 路 、单 片 机 、晶 片 和 复 位 电 路 、外 部 存 储 器 电 路 和 LED 显 示 电 路 5
个部分。 我们知道, NCS- 51 单片 机 的 片 内 结 构 由 8 个 部 件 组 成 , 即 微 处 理 器( CPU) 、数 据 存 储 器( RAM) 、程 序 存 储 器
首先, 我们给数字钟设定的主要功能为: ①用单脉冲开关控制秒表的启动 / 停止 / 复位, 以 4 位数码管的高 2
位显示秒值, 低 2 位显示百分秒。②作为 24 小时可调整的时钟 , 以 4位 数 码 管 的 高 2 位 显 示 小 时 , 低 2 位 显 示 分
钟。③发光二极管每秒闪烁一次, 表明时钟正常运行。需调整时二极管停闪。④可设定初值的倒计时功能。
三 、程 序 设 计 要 点 数字钟的程序主要包括 3 个方面。一是利用定时器完成时钟的定时周期, 二是利用按键和开关触发外中断, 改变时钟运行模式, 三是单片机控制 LED 数码管显示时间和相关功能的计数值。设计时重点考虑的, 一是定时器 的使用。为实现秒表的功能, 需要使用定时器 TO 产生 IS 的中断, 并在中断程序中完成每一秒数字的变化, 并在主 程度中动态显示该字符。二是外中断的使用。将单脉冲开关 PULSE 连接到单片机的 INT1 管脚上, 通过 INT1 控制 实现秒的启动 / 停止 / 复位这三项功能。三是 24 小时时钟显示程序。四是秒表和倒计时功能程序。五是时间调整 功能程序。六是初值调整功能程序。
数 字 钟 设 计 涉 及 的 主 要 任 务 有 4 项 : 一 是 使 用 定 时 器 , 以 实 现 24 小 时 时 钟 和 秒 表 的 运 行 ; 二 是 使 用 计 数 器 ,
简易数字钟的单片机课程设计 (2)
1.前言随着电子技术的迅猛发展和超大集成电路设计和制造工艺的进一步提高,单片机也有了迅速的发展,各种新颖的单片机产品层出不穷,令人目不暇接。
当前单片机技术已渗透到国防尖端、工业、农业、日常生活的各个领域,成为当今世界现代化不可缺少的工具和强有力的武器。
单片机技术是当代理工科大学生必会的技能之一。
单片机的学习和掌握是当前迫切的任务和要求,为此进行了本次设计,本次设计旨在提高对单片机的内部硬件电路的理解和软件编程能力的提高,真正体验一下产品的研发和制造的各部分流程,在一定程度上加强了对工程设计的理解和实际操作。
简易数字钟是对单片机的一次综合的应用,对单片机中至关重要的中断概念的理解有着十分重要的意义,简易数字钟不仅需要时间的准确跟需要有廉价的电路组成即将部分硬件用软件编程的方法加以代替,降低成本以提高市场的竞争力,这是对单片机设计的最高要求。
本次设计就是针对以上问题的一种解决策略,希望通过后面的设计对读者有所启发和鼓励,单片机其实很简单,天下无难事,勇者必胜之。
2.MCS-51单片机系统简介MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。
以后我们将用89C51、89S51来完成一系列的实验。
MCS-51系列单片机MCS-51系列单片机分为两大系列,即51子系列与52子系列。
设计一个能显示时、分、秒的简易数字钟
数字电子技术课程设计报告要求:设计一个能显示时、分、秒的简易数字钟。
步骤:用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的按建信号。
实验八 简易数字时钟的设计
实验八简易数字时钟的设计
一、实验目的:
1.掌握各类计数器及将它们相连的方法;
2.掌握多个数码管显示的原理与方法;
3.掌握EDA的层次化设计方法;
4.了解用VHDL语言设计的思想;
5.了解整个数字系统的设计方法;
6.培养学生综合应用数字电路中所学到的理论知识去独立完成设计课题的能力;7培养学生严肃认真的工作作风和严谨的科学态度。
三、、设计要求
本实验课题的要求为:
①设计一个具有时、分、秒计时,6位时钟显示电路;
②该计时电路为24小时计时制。
四、实验记录
1.实验原理图及源程序;
2.各模块仿真波形;
3.下载结果观察并记录。
4.延时分析。
(总电路和各模块全部分析)。
五、问题讨论
1.本实验为综合类实验题目,你准备这个实验的难点在哪里?需要如何解决?
2.在本实验要求的基础上添加整点报时功能,需要如何设计?。
简易数字钟的设计
中文摘要数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和生活的各个角落,有力地推动了各行各业的技术改造和产品的更新换代,应用前景广阔。
本次做的数字钟是以单片机(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设计任务描述.. (4)1.1设计题目:简易数字钟的设计 (4)1.2 设计要求: (4)1.2.1 设计目的 (4)1.2.2 基本要求 (4)2设计思路 (5)3设计方框图 (6)3.1数字钟硬件部分示意图 (6)3.2数字钟软件部分组成框图 (6)3.2.1时间调整的程序流程 (6)3.2.2时钟显示程序流程 (7)4各部分模块介绍 (8)4.1单片机AT89C51芯片分析 (8)4.2晶振电路模块 (10)4.3复位电路模块 (10)4.4显示模块 (11)4.5时间校对按键模块 (11)5简易数字钟源程序 (12)5.1源程序 (12)6数字钟源程序的仿真 (17)6.1编译、连接 (17)6.2仿真 (18)6.2.1生成HEX文件 (18)6.2.2仿真结果 (19)7数字钟硬件原理图 (19)7.1总原理图 (19)8主要原器件清单 (20)小结 (21)致谢 (22)参考文献 (23)1 设计任务描述1.1 设计题目:简易数字钟的设计1.2 设计要求:1.2.1 设计目的熟练使用Keil开发环境,具备编写单片机程序(汇编语言或C语言)的初步能力,通过完成本课题的软硬件设计,使同学们了解单片机实例的整个开发流程。
简易数字钟设计自动化
简易数字钟的设计一.指标要求1.用中小规模集成电路设计一台能显示“时”,“分”,“秒”的简易数字钟;2.除按24小时计数外,还应具有手动调节小时,分钟,秒的校时功能;3.具有整点报时功能;二.设计计算1.整体方案设计1.1课题分析数字钟一般由6个部分组成,其中振荡器和分频器组成标准的秒信号发生器,由不同进制的计数器,译码器和显示器组成计时系统。
秒信号送入计数器进行计数,把累计的结果以“时”“分”“秒”的十进制数字显示出来。
“时”显示由二十四进制计数器,译码器和显示器构成,“分”“秒”显示分别由六十进制计数器,译码器和显示器构成。
1.2工作原理数字钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路和振荡器组成。
干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发现胡一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态菁七段显示译码器译码,通过六位LED七段显示器显示出来。
整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后触发一音频发生器实现报时。
校时电路是用来对“时”、“分”、“秒”显示数字进行校对调整的。
数字电子钟由振荡器、分频器、计数器、译码显示、报时等电路组成。
其中振荡器和分频器组成标准秒信号发生器,由不同进制的计数器、译码器和显示器组成计时系统。
基于VHDL的简易数字钟
课程设计报告设计题目:基于VHDL语言的简易数字钟设计摘要随着电子设计自动化技术(EDA)的进步,数字电路在实际生活当中已经占据了重要的位置。
在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术。
该技术的出现,使电子系统设计发生了质的变化。
设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。
用VHDL 语言开发的数字电路,大大简化了对工控电路的设计并且减低了成本。
本文介绍了利用VHDL硬件描述语言设计一款多功能数字钟的方法。
可以实现显示、预置时分秒,年月日(可以准确显示每月天数,包括对闰年的计算);秒表;整点报时的功能。
利用6个7段数码管显示时分秒或年月日。
在Quartus II 开发环境下编译仿真了设计的程序。
仿真结果表明,该设计方法切实可行,具有一定的借鉴性。
关键词:EDA,VHDL,数字钟,Quartus II目录摘要I一、课程设计目的 1二、课程设计内容及要求 12.1 设计内容12.2设计要求 12.3发挥部分1三、VHDL程序设计 13.1整体介绍 13.2时钟模块 23.3日期模块23.4整点报时模块33.5秒表模块4四、仿真与分析 5五、器件编程下载及设计结果 5六、课程设计总结 5七、参考文献 6八、附录7一、课程设计目的掌握利用可编程逻辑器件和EDA设计工具进行电子系统设计的方法二、课程设计内容及要求2.1设计内容用VHDL语言实现数字钟的设计,要求设计实现一个具有带预置数的数字钟,具有显示年月日时分秒的功能。
2.2设计要求用6个数码管显示时分秒,set按钮产生第一个脉冲时,显示切换年月日,第2个脉冲到来时可预置年份,第3个脉冲到来时可预置月份,依次第4、5、6、7个脉冲到来时分别可预置日期、时、分、秒,第 8个脉冲到来后预置结束,正常工作,显示的是时分秒。
Up为高电平时,upclk有脉冲到达时,预置位加1.否则减1.2.3发挥部分本设计除满足基本要求外,还实现了秒表及整点报时的功能。
简单的数字时钟设计(protel)
《数字电路》课程设计总结报告题目:数字钟设计2010 年 12 月 12 日数字钟设计 (3)一、设计任务 (3)1.1功能描述 (3)二、设计框图与整机概述 (3)2.1主题电路图 (3)2.2系统的工作原理 (3)三、各单元电路的设计方案及原理说明 (4)3.1设计思路 (4)3.2振荡器的设计 (4)3.3分频器的设计 (4)3.4分秒计数器的设计 (4)3.5校时电路的设计 (5)3.6显示电路的设计 (6)四、调试过程及结果分析 (6)4.1调试过程 (6)4.2结果分析 (6)五、设计、安装及调试中的体会 (6)六、对本次课程设计的意见和建议 (7)七、参考文献 (7)八、附录 (7)数字钟设计一、设计任务1.1功能描述设计一个多功能数字中电路,基本功能为:①准确计时,以数字形式显示分、秒的时间;②分和秒的计时要求为60进位;③校正时间。
二、设计框图与整机概述2.1主题电路图1s2.2系统的工作原理由振荡器产生高稳定的高频脉冲信号,作为数字钟的时间基准(系统时钟),再经分频器输出标准秒脉冲信号。
秒计数器计满60后向分计数器进位,分计数器计满60后重新开始计时。
计数器的输出经译码器送显示器。
计时出现误差时可以用校时电路进行校分。
分显示器 秒显示器时译码器 秒译码器分计数器 秒计数器 校时电路 分频器振荡器三、各单元电路的设计方案及原理说明3.1设计思路主体电路是由功能部件或单元电路组成的。
在设计这些电路或选择部件时,尽量用同类型的器件,如所有功能部件都采用TTL集成电路或都采用CMOS集成电路。
3.2振荡器的设计振荡器是数字钟的核心。
振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。
一般来说,振荡器的频率越高,计时精度越高。
在这里我们选用由集成电路定时器555与RC组成的多谐振荡器。
这里选用555构成的多谐振荡器,输出振荡频率v0=1KHz的脉冲,电路参数如下图所示。
简易数字钟的EDA设计
序号:学号:课程名称: FPGA设计及应用论文题目:简易数字钟的EDA设计学生姓名:学院(系):专业班级:简易数字钟的EDA设计一、产品设计需求说明本产品实现的功能:1、数字钟功能:数字钟时间为24小时一个周期:数字钟须显示时、分、秒。
2、校时功能:可以分别对时、分、秒进行单独校时,使其调整到标准时间。
3、扩展功能:整点报时系统。
设计整点报时电路,每当数字钟达到整点时开始报时,并发出鸣叫声,十秒后鸣叫结束。
设计参数:使用的芯片/硬件平台GW48实验系统软件平台WindowsXP + MuxplusII10.1二、方案设计及实现1、系统实现原理和总体框图数字式电子钟实际上是一个对标准1Hz进行计数的计数电路,秒计数器满60秒后向分计数器进位,分计数器满60秒后向时计数器进位,时计数器按24翻1规律计数,计数输出经译码器送LED显示器,由于计数的起始时间不可能与标准时间(北京时间)一致,故需要在电路上加上一个校时电路,该数字式电子钟除用于计时外,还能整点报时,如图(1-1)所示为多功能数字式电子钟的构成框图。
除校时功能外,电子钟处于其他功能状态时并不影响数字钟的运行,该电子钟利用GW48 EDA实验平台的扬声器进行整点报时。
图(1-1)多功能数字式电子钟的系统框图2、主要模块之计数器模块的设计计数器模块说明:时分秒计数器模块由秒个位、十位计数器,分个位、十位计数器以及时个位、十位计数电路组成。
其中,秒个位和秒十位计数器、分个位和分十位计数为六十进制计数器,而根据设计要求,时个位和时十位构成的为二十四进制计数器。
因此时分秒计数器模块可划分为时计数、分计数和秒计数3个子模块,根据设计要求,时计数子模块为一个二十四进制可预置的BCD码计数器模块;分计数和秒计数子模块均为六十进制可预置的BCD码计数器模块。
算法原理如图(1-2)、图(1-4)、图(1-6)所示源代码:1)、六进制计数器:--File:counter6.vhd--Designer:AAA--Module:decimal counter--Description: It is a decimal counter with a carry.--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:10/16/11--Modify date:10/5/12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; 图(1-2)六进制计数器工作流程图USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter6 ISPORT(clk:IN STD_LOGIC;reset:IN STD_LOGIC;din:IN STD_LOGIC_VECTOR(2 DOWNTO 0);dout:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);c:OUT STD_LOGIC);END counter6;ARCHITECTURE dianzizhong OF counter6 ISSIGNAL count:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINdout<=count;PROCESS(clk,reset,din)BEGINIF reset='0' THEN --计数器复位count<=din;c<='0';ELSIF rising_edge(clk) THENIF count="101" THEN --到5后,计数器清零count<="000";c<='1';ELSEcount<=count+1;c<='0';END IF;END IF;END PROCESS;END dianzizhong;仿真图:图(1-3) 六进制计数器功能仿真图2)、十进制计数器:--File:counter10.vhd--Designer:AAA--Module:decimal counter--Description: It is a decimal counter with a carry.--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:10/16/11--Modify date:10/5/12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; 图(1-4)十进制计数器工作流程图USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter10 ISPORT(clk :IN STD_LOGIC;reset: IN STD_LOGIC;din: IN STD_LOGIC_VECTOR(3 DOWNTO 0);dout: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);c: OUT STD_LOGIC);END counter10;ARCHITECTURE dianzizhong OF counter10 ISSIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINdout<=count;PROCESS(clk,reset,din)BEGINIF reset='0' THEN --计数器复位count<=din;c<='0';ELSIF rising_edge(clk) THENIF count="1001" THEN --到9后,计数器清零count<="0000";c<='1';ELSEcount<=count+1;c<='0';END IF;END IF;END PROCESS;END dianzizhong;仿真图:图(1-5) 十进制计数器功能仿真图3)、二十四进制计数器:--File:counter24.vhd--Designer:沙桂珍--Module:counter base-24--Description: It is a counter base-24.--Simulator:MAX plusII 10.0.9/Window XP--Synthesizer:MAX plusII 10.0.9/Window XP--Date:10/16/11--Modify date:10/5/12LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;图(1-6)二十四进制计数器工作流程图USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter24 ISPORT(clk:IN STD_LOGIC;reset:IN STD_LOGIC;din:IN STD_LOGIC_VECTOR(5 DOWNTO 0);dout:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));END counter24;ARCHITECTURE dianzizhong OF counter24 ISSIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINdout<=count;PROCESS(clk,reset,din)BEGINIF reset='0' THENcount<=din;ELSIF rising_edge(clk) THENIF count="100011" THEN --达到23时下一次归0count<="000000";ELSIF count(3 DOWNTO 0)="1001" THENcount(3 DOWNTO 0)<="0000"; --低位到9后,计数器清零count(5 DOWNTO 4)<=count(5 DOWNTO 4)+1; --高位加1ELSEcount(3 DOWNTO 0)<=count(3 DOWNTO 0)+1;END IF;END IF;END PROCESS;END dianzizhong;仿真图:图(1-7) 二十四进制计数器功能仿真图3、主要模块之校时模块的设计校时模块说明:当刚接通电源或走时出现误差时都需要对时间进行校正,对时间的校正是通过对时间的重置来实现,当功能键reset为1、load为0时即进入校时模式,此模式下可通过对sel键的选择来给时,分,秒中的一个进行置数,当sel为“01”时是校时状态,为“10”时是校分状态,为“11”时是校秒状态,在对其中一个置数时不会影响其他两个计数。
简易数字钟的设计
第三单元简易数字钟的设计数字钟是一种用数字显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无需机械传动等优点。
因而得到了广泛的应用。
小到人们日常生活中的电子手表,大到车站、码头、机场等公共场所的大型数字电子钟,数字钟到处可见。
在数字电路的学习中,已经学习过用计数器芯片搭建数字钟。
51单片机内部集成了定时器/计数器,这为构建数字钟带来了方便。
在本单元中,学习如何用51单片机来构建一个功能数字钟。
【任务要求】在八个数码管上显示时、分、秒以及两个横杠。
通过单片机内部定时器控制走时,走时准确。
系统有四个按键,功能分别是调整,加,减,确定。
在按下调整键时候,显示“时”的两位数码管以1 Hz 频率闪烁。
如果再次按下调整键,则“分”开始闪烁,“时”恢复正常显示,依次循环,直到按下确定键,恢复正常的显示。
在数码管闪烁的时候,按下加或者减键可以调整相应的显示内容。
按键支持短按和长按,即短按时,修改的内容每次增加一或者减小一,长按时候以一定速率连续增加或者减少。
【学习知识点】数码管的原理,驱动程序的实现。
独立按键的原理及程序的实现。
51单片机内部定时器的原理及应用【内容安排】第一节:数码管显示原理及应用实现第二节:独立按键检测原理及应用实现第三节:计时的原理及实现第四节:数字钟的构建第一节数码管显示原理及应用实现1.1 数码管显示原理数字钟要把时间显示到数字显示的装置上,常用的数字显示装置有数码管、液晶、LED、CRT显示器等。
在单片机系统设计中,LED数码管是最基本的显示装置。
在数字钟的设计中我们用数码管对中的小时、分和表来进行显示。
LED数码管能显示各种数字或符号,由于它具有显示清晰、亮度高、寿命长、价格低廉的特点,因此使用非常广泛。
图1.1是几个数码管的图片,图a为单位数码管,图b为双位数码管,图c为四位数码管。
a 单位数码管b 双位数码管c 四位数码管图1.1数码管图片那么数码管是如何的工作呢?还记得我们小时候玩过的“火柴棒游戏”吗,几根火柴组合起来,可以拼成各种各样的图形,数码管实际上就是利用这个原理做成的。
如何设计简单的数字时钟电路
如何设计简单的数字时钟电路数字时钟电路是一种常见的电子电路,用于显示时间并具备时间计时功能。
设计一个简单的数字时钟电路可以通过以下步骤实现。
第一步:确定数字时钟的显示方式常见的数字时钟电路可以采用七段数码管进行显示,每个数码管由七个LED灯组成,用于显示数字0-9。
可以根据需要选择合适的数码管来完成数字时钟的显示。
第二步:确定时钟的计时器数字时钟电路需要一个计时器来跟踪时间。
常见的计时器可以使用555定时器或者基于微控制器的计时器模块。
选择适合自己的计时器并连接到电路中。
第三步:连接七段数码管将选定的七段数码管连接到电路中。
每个数码管的七个LED灯分别对应数码管的a、b、c、d、e、f、g引脚,根据数码管的型号和引脚布局进行正确连接。
例如,将数码管的a引脚连接到计时器的输出引脚,b引脚连接到计时器的另一个引脚,以此类推。
第四步:设计时钟功能根据需要设计时钟功能,包括显示当前时间、设置闹钟、调节亮度等。
可以通过增加按钮开关、旋转编码器或者完成基于微控制器的编程来实现这些功能。
第五步:连接电源和调试将数字时钟电路与合适的电源连接,并进行必要的调试。
确保电路中的元件连接正确并正常工作。
如果有需要,可以使用示波器或多用途测试仪来辅助调试。
总结:通过以上步骤,我们可以设计一个简单的数字时钟电路。
根据需求选择合适的数码管和计时器,连接七段数码管,设计时钟功能并连接电源进行调试。
这样就可以得到一个能够准确显示时间并具备计时功能的数字时钟电路。
需要注意的是,以上步骤只是设计一个简单的数字时钟电路的基本流程,具体的实现可能因项目需求和硬件平台的差异而有所不同。
在实际应用中,还需要考虑电路的稳定性、精度和可靠性等因素,并根据实际情况进行细节调整和优化。
简易数字电子时钟的设计
快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为 12MHz,电容应尽可能的选 择陶瓷电容,电容值约为 22μ F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与 单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。
3. 复位 RST 在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引腿时,将 使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后 P0-P3 口均置 1 引脚 表现为高电平,程序计数器和特殊功能寄存器 SFR 全部清零。当复位脚由高电平变为低电平 时,芯片为 ROM 的 00H 处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路 是复位引脚 RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的 输出在每个机器周期的 S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮 复位两种方式,此电路系统采用的是按钮复位电路。 4.输入输出引脚 (1) P0 端口[P0.0-P0.7] P0 是一个 8 位漏极开路型双向 I/O 端口,端口置 1(对端口写 1)时作高阻抗输入端。作为输出口时能驱动 8 个 TTL。 对内部 Flash 程序存储器编程时,接收指令字节;校验程序时输出指令字节,要求外接上 拉电阻。 在访问外部程序和外部数据存储器时,P0 口是分时转换的地址(低 8 位)/数据总线,访 问期间内部的上拉电阻起作用。 (2) P1 端口[P1.0-P1.7] P1 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时可 驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。 对内部 Flash 程序存储器编程时,接收低 8 位地址信息。 (3) P2 端口[P2.0-P2.7] P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时可 驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。对内部 Flash 程 序存储器编程时,接收高 8 位地址和控制信息。 在访问外部程序和 16 位外部数据存储器时,P2 口送出高 8 位地址。而在访问 8 位地址 的外部数据存储器时其引脚上的内容在此期间不会改变。 (4) P3 端口[P3.0-P3.7] P2 是一个带有内部上拉电阻的 8 位双向 I/0 端口。输出时可 驱动 4 个 TTL。端口置 1 时,内部上拉电阻将端口拉到高电平,作输入用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息与电气工程学院课程设计说明书(2014 /2015 学年第二学期)课程名称:单片机课程设计题目:简易数字钟设计专业班级:学生姓名:学号:指导教师:设计周数:2周设计成绩:2015年6 月25 日1、课程设计目的(1)综合利用所学单片机知识完成一个单片机应用系统设计并在实验室实现,从而加深对单片机软硬知识的理解,获得初步的应用经验。
(2)学习A T89C51定时/计数器的原理及基本应用。
(3)掌握多为数码管动态显示方法。
(4)掌握Keil uVision2 IDE的使用方法。
【包括项目文件的建立,给项目添加程序件,编译、连接项目,形成目标文件,运行调试观察结果,多文件的处理,仿真环境的设置。
】(5)掌握Keil C51的调试技巧。
【包括如何设置和删除断点,如何查看和修改寄存器的内容,如何观察和修改变量,如何观察存储器区域,并行口的使用,定时器/计数器的使用,串行口的使用,外中断的使用。
】(6)掌握PROTEUS软件使用过程。
2、简易数字钟的要求及软硬件的分析2.1简易数字钟的设计要求利用电子电路构成一个简易数字钟,该数字钟电路主要由C51单片机、4位共阳极数码管、时计数、分计数器、蜂鸣器、LED灯、NPN型和PNP型三极管、按键、若干电阻和导线组成。
其中电路系统的分计数器采用60进制,时计数器采用24进制,。
译码器显示电路将时、分计数器的输出状态通过三个两位共阳数码管显示出来。
整点报时电路根据计时系统的输出状态产生一个脉冲信号,用蜂鸣器输出。
相对机械钟而言,数字钟能达到准确计时,并显示小时、分钟,同时通过不同按键的不同功能对该数字钟进行小时和分钟调整,也可通过按键来接她通蜂鸣器来发出响声。
2.2数字钟的软件分析2.1.1数字钟软件的系统分析系统的软件设计也是工具系统功能的设计。
单片机软件的设计主要包括执行软件(完成各种实质性功能)的设计和监控软件的设计。
单片机的软件设计通常要考虑以下几个方面的问题:(1)根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;(2)培养良好的编程风格,如考虑结构化程序设计、实行模块化、子程序化。
既便于调试、链接,又便于移植和修改;(3)建立正确的数学模型,通过仿真提高系统的性能,并选取合适的参数;(4)绘制程序流程图;(5)合理分配系统资源;(6)为程序加入注释,提高可读性,实施软件工程;(7)注意软件的抗干扰设计,提高系统的可靠性。
系统软件设计流程图这次的数字电子钟设计用到很多子程序,它们的流程图如下所示。
主程序是先开始,然后启动定时器,定时器启动后在进行按键检测,检测完后,就可以显示时间。
按键处理是先检测秒按键是否按下,秒按键如果按下,秒就加 1,如果没有按下,就检测分按键是否按下,分按键如果按下,分就加1,如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1,如果没有按下,就把时间显示出来。
2.2.2 简易数字钟程序#include <regx52.h>#define uchar unsigned char#define uint unsigned intsbit k1 = P3^5; //按键1sbit k2 = P3^4; //按键2sbit k3 = P3^3; //按键3sbit k4 = P3^2; //按键4sbit LED = P1^0; //LED显示sbit beep = P3^6; //蜂鸣器int m1 = 0, m2 = 0, m3 = 0, m4 = 0; //数码管要显示的数字int time_n = 0; //1s时间到标志位int smg_n = 0; //位选控制哪个数码管闪int xz_flg = 0; //选择键是否被按下int shi = 0, fen = 0; miao = 0;int zd_flg = 0; //整点标志char duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//段选编码0~9~null; //----------------------------------------------------- //本文件函数 void System_Init();//初始化函数void Smg_Scan(); //数码管动态扫描void Delay_1ms(uint z); //延时函数void Blink(uint wei); //数码管闪烁函数void Key_Scan(); //按键扫描函数void Bao_Shi(); //整点报时/**********************************************************************************/ void main(){System_Init();while(1){Smg_Scan();Key_Scan();Bao_Shi();}} /**********************************初始化子函数 void System_Init() //初始化函数{ TMOD = 0X01; //定时器0 工作方式1TH0 = 0X4C; //定时50000usTL0 = 0X00;EA = 1;ET0 = 1;TR0 = 1;} /************************************延时子函数void Delay_1ms(uint z) //1ms延时函数{uint x,y;for(x = z;x > 0;x--)for(y = 110;y >0;y--);} /***************************************数码管扫描子函数void Smg_Scan(){P2_0= 0; //数码管1位选通P0 = duan[m1]; //送段选Delay_1ms(1); //延时1msP2_0=1; //数码管1位关断P2_1=0; //数码管2位选通P0 = (duan[m2]& 0x7f); //送段选Delay_1ms(1); //延时1msP2_1=1;P2_2=0; //数码管3位选通P0 = duan[m3]; //送段选Delay_1ms(1); //延时1msP2_2=1;P2_3= 0; //数码管4位选通P0 = duan[m4]; //送段选Delay_1ms(1); //延时1msP2_3=1;} /***************************************中断子函数void time0() interrupt 1 //yanshi zi chengxu{TH0 = 0X4C; //定时50000usTL0 = 0X00;time_n++;if(time_n == 10) //0.5s 到了吗?{ LED = ~LED;if(xz_flg == 1){switch(smg_n) //到了0.5s 对应位的数码管灭{case 0 : m1 = 10;Delay_1ms(500); break;case 1 : m2 = 10; Delay_1ms(500); break;case 2 : m3 = 10; Delay_1ms(500);break;case 3 : m4 = 10;Delay_1ms(500); break;}}}if(time_n == 20) //1s 到了{time_n = 0;miao++;if(miao == 60){miao = 0;fen++;if(fen ==60){zd_flg = 1; //整点标志shi++;if(shi == 24){shi = 0;}}}m4 = fen % 10; //数码管4显示分钟的低位m3 = fen / 10; //数码管3显示分钟的高位m2 = shi % 10; //数码管2显示小时的低位m1 = shi / 10; //数码管1显示小时的高位}} /*****************************************************键盘扫描子函数void Key_Scan(){if(k1 == 0) //选择键{Delay_1ms(21); //延时20msif(k1 == 0) //按键1确实被按下{xz_flg = 1; //选择键按下EA = 0;smg_n++; //改变选择的数码管if(smg_n == 4){smg_n = 0;}while(!k1) //松手检测{Smg_Scan(); //使按下键时所有数码管都亮}Delay_1ms(21);while(!k1);}}if(xz_flg == 1){if(k2 == 0) //加1键{Delay_1ms(21);if(k2 == 0){switch(smg_n){case 0 : m1++;if(m1 == 2){m1 = 0;}break;case 1 : m2++;if(m2 == 10){m2 = 0;}break;case 2 : m3++;if(m3 == 6){m3 = 0;}break;case 3 : m4++;if(m4 == 10){m4 = 0;}break;}while(!k2) //松手检测{Smg_Scan();}Delay_1ms(21);while(!k2);}}if(k3 == 0) //减1键{Delay_1ms(21);if(k3 == 0){ switch(smg_n){case 0 : m1--; if(m1 == -1) { m1 = 2; } break;case 1 : m2--; if(m2 == -1) { m2 = 9; } break;case 2 : m3--; if(m3 == -1) { m3 = 5; } break;case 3 : m4--; if(m4 == -1) { m4 = 9; } break;}while(!k3){Smg_Scan();}Delay_1ms(21);while(!k3);}}if(k4 == 0) //确定键{Delay_1ms(21);if(k4 == 0){xz_flg = 0;EA = 1;while(!k4){Smg_Scan();}Delay_1ms(21);while(!k4);}}}}/*********************************************************************/void Bao_Shi(){uint i,j; //定义循环变量if(zd_flg == 1){for(j=0;j<3;j++){for(i=0;i<m1;i++){beep=!beep; //蜂鸣器开关Delay_1ms(80); //延时80ms}Delay_1ms(1000);}zd_flg = 0;}}2.3 简易数字钟硬件分析2.3.1 数字钟的总电路图2.3.2数字钟的硬件单元电路分析(1)最小系统设计(2)晶体(3)常用的复位电路如下图所示:图3 常用复位电路图(4)最常用的显示器数码管,如下图所示。