简易数字钟设计

信息与电气工程学院课程设计说明书(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)最常用的显示器数码管,如下图所示。

合集下载

简易数字钟的设计

简易数字钟的设计

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

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

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

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

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

本次做的数字钟是以单片机(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小结为期两周的单片机数字钟课程设计结束了,在这两周里我和我的组员们运用单片机的知识完成了简易数字钟电路的设计,这使我对单片机这门课程有了更深一步的了解。

简易数字钟设计

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

简单的数字时钟(verilog设计)

简单的数字时钟(verilog设计)
Verilog作为一种硬件描述语言,可用于设计和实现数字系统,包括数字时钟。 通过Verilog设计数字时钟,可以加深对数字系统和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.在本实验要求的基础上添加整点报时功能,需要如何设计?。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档