单片机数字时钟设计时分
单片机制作的6位数字钟
单片机制作的6位数字钟常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。
时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。
10秒位到5后,即59秒,分钟加1,10秒位回0。
依次类推,时钟最大的显示值为23小时59分59秒。
这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。
开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。
6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。
以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 中断入口程序;; (仅供参考);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ORG 0000H ;程序执行开始地址LJMP START ;跳到标号START执行ORG 0003H ;外中断0中断程序入口RETI ;外中断0中断返回ORG 000BH ;定时器T0中断程序入口LJMP INTT0 ;跳至INTTO执行ORG 0013H ;外中断1中断程序入口RETI ;外中断1中断返回ORG 001BH ;定时器T1中断程序入口LJMP INTT1 ;跳至INTT1执行ORG 0023H ;串行中断程序入口地址RETI ;串行中断程序返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 主程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH;clr P3.7 ;CLEARDISP: MOV @R0,#00H ;INC R0 ;DJNZ R7,CLEARDISP ;MOV 20H,#00H ;清20H(标志用)MOV 7AH,#0AH ;放入"熄灭符"数据MOV TMOD,#11H ;设T0、T1为16位定时器MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值SETB EA ;总中断开放SETB ET0 ;允许T0中断SETB TR0 ;开启T0定时器MOV R4,#14H ;1秒定时用初值(50MS×20)START1: LCALL DISPLAY ;调用显示子程序JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 1秒计时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T0中断服务程序INTT0: PUSH ACC ;累加器入栈保护PUSH PSW ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0 MOV R0,#79H ;指向小时计时单(78H-79H)ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中断RETI ;中断返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 闪动调时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护PUSH PSW ;MOV TL1, #0B0H ;装定时器T1定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"MOV 72H,76H ;02H位为0时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 加1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADD1: MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,@R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV @R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV @R0,A ;数据放入当削地址单元中RET ;子程序返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 清零程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............;; 时钟调整程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0LCALL DL1S ;调用1秒延时程序JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1SET4: JB P3.7,SET3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环LCALL CLR0 ;调整单元数据大于或等于60时清0CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。
单片机的数字钟设计
3. 课题的主要工作这个设计的主要任务是设计一台能直接显示“时”“分”“秒”十进制数字的石英数字钟。
3.1设计要求1. 采用24时制时钟。
当时钟正常运行时,不允许调整时钟。
在时钟运行时,以4位数码管的高2位显示小时,低2位显示分钟,发光二极管每秒闪烁一次,表明时钟的运行2. 只用有校时功能就行,可对小时和分单独校时.校时时钟源可以手动输入或借用电路中的时钟;3. 由晶体振荡器提供标准时间的基准信号.4. 具有可设定初值的倒计时功能3.2课题要达到的目的1. 巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;2. 培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;3. 多功能数字钟设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
课题的主要工作熟悉数字钟的基本结构及其基本原理,掌握数码管的应用,掌握单片机定时器和中断编程的基本方法,能够进行相应的硬件电路设计。
实验物质条件有自动化实验室、机房。
由于本设计采用MCS-51单片机为主体,需要了解单片机的各管脚功能,与外部设备的连接。
还需要熟悉LED数码管的连接,工作原理等。
此外,在制作数字中的电路图是时还需要熟悉PROTELLL99se软件,只有在熟练掌握以上内容后才能完成本次设计。
一个完整的数字钟电路相当于一个简单的单片机系统,该系统有输入脉冲电路,单片机,晶振和复位电路,外部存储器电路和LED显示电路5部分构成。
基本机构框图如图4-1所示。
其中单片机世纪城的IC芯片。
图4-1 数字钟的基本功能模块方案一基本门电路搭建用基本门电路来实现数字钟,电路结构复杂,故障系数大,不易调试。
方案二单片机编程用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。
与第一种方案比较优点是非常明显的。
我们选择了第二种方案1.存储气的外部扩展和选择MCS-51单片机的内部结构由8各部分组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(COM,EPROM)、I/O口(P0口、P1口、P2口、P3口、串行口)、定时器、计数器、中断系统及特殊功能寄存器(SFR)。
基于51单片机的简易数字钟系统设计
简易数字钟系统设计完成一个简易数字时钟系统设计。
要求:用3个独立按键调整时间。
一个按键控制启动运行。
在调整结束后按运行键后开始运行。
1,开机时,显示00:00:00时间从零开始调整。
2,P10控制秒的调整,每按一次加1s。
3,p11控制分的调整,每按一次加1min。
4,p12控制时的调整,每按一次加1h。
5,p13控制运行和停止。
程序:#include<reg52.h>sbit key1=P3^4;sbit key2=P3^5;sbit key3=P3^6;sbit key4=P3^7;#define uchar unsigned char#define uint unsigned intuchar shi,ge,aa,num,num1,num2,tt;uint n;uchar q1,q2,b1,b2;sbit dula=P2^6;sbit wela=P2^7;void keyscan();void delay(uint);void display();uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void keyscan(){if(key1==0){ num2++;if(num2==24)num2=0;while(!key1);if(key2==0){num1++;if(num1==60)num1=0;while(!key2);}if(key3==0){num++;if(num==60)num=0;while(!key3);}if(key4==0){ TR0=~TR0;while(!key4);}}void main(){TMOD=0x00;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;while(1){ k eyscan();display();}}void time0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;tt++;if(tt==100){ tt=0;num++;if(num==60){ num=0;num1++;if(num1==60){ num1=0;num2++;if(num2==24)num2=0;}}}}void display(){q1=num2/10;q2=num2%10;b1=num1/10;b2=num1%10;shi=num/10;ge=num%10;wela=1;P0=0xfe;wela=0;P0=0xff;P0=table[q1]; dula=0; delay(1);wela=1;P0=0xfd; wela=0;P0=0xff; dula=1;P0=table[q2]; dula=0; delay(1);wela=1;P0=0xfb; wela=0;P0=0xff; dula=1;P0=table[b1]; dula=0; delay(1);wela=1;P0=0xf7; wela=0;P0=0xff; dula=1;P0=table[b2]; dula=0; delay(1);wela=1;P0=0xef; wela=0;P0=0xff; dula=1;P0=table[shi]; dula=0; delay(1);wela=1;P0=0xdf;P0=0xff;dula=1;P0=table[ge];dula=0;delay(1);}void delay(uint x){uint i,j;for(i=x;i>0;i--)for(j=110;j>0;j--); }。
基于单片机控制的数字钟设计
基于单片机控制的数字钟课程设计任务书1.设计目的与要求设计出一个数字钟。
准确地理解有关要求,独立完成系统设计,要求所设计的电路具有以下功能:(1)显示:可以显示时、分和秒(2)调时功能:时(0-24)、分和秒(0-60)可以连续可调2.设计内容(1)画出电路原理图,正确使用逻辑关系;(2)确定元器件及元件参数;(3)进行电路模拟仿真;(4)SCH文件生成与打印输出;3.编写设计报告写出设计的全过程,附上有关资料和图纸,有心得体会。
基于单片机控制的数字钟摘要:本设计是由89c51单片机和74hc245构成的多功能数字钟,它可以实现小时、分钟、秒的连续可调。
操作特别方便硬件电路简单。
并且采用具有发光亮度很好的七段数码管显示,特别具有可视性。
关键词:数字钟;单片机表;多功能表目录1引言 (1)2总体设计方案 (1)2.1设计思路 (1)2.2总体设计框图 (1)3设计原理分析 (2)3.1时钟电路的硬件设计分析 (2)3.2时钟电路的软件设计分析 (2)4程序设计 (2)4.1主程序 (2)4.2显示子程序 (3)4.3定时器/计数器T0中断服务程序 (3)4.4按键处理子程序 (3)5 结束语. (3)参考文献 (3)附录1 (4)附录2 (5)1 引言在人们的日常生活中,数字钟占有相当大的比重,可以说它是人们日常生活中不可缺少的东西。
它扮演着时间老人的角色,这次设计是基于单片机制作而成的数字钟,以24小时为一周期,显示时、分、秒,而且可以实现连续可调。
在具体处理过程中非常简单,用内部定时器进行定时处理,按键全部采用独立键盘非常方便快捷。
2 总体设计方案2.1 设计思路:利用单片机内部定时器进行时间定时。
刚开始的时候让数码管显示12点,进入调试模式后在主程序中不停的进行显示和按键扫描,当调整键按下时进入按键扫描程序进入后利用调整键按下的次数进行区分时分秒。
当确定按下次数后,递增键和递减键分别对时间进行加或者减的操作,完毕后在对调整键操作就立刻退出调试进行正常显示。
单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..
单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。
功能要求:a)计时并显示(LED)。
由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。
b)时间调整功能。
利用4个独立按钮,实现时钟调整功能。
这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。
c)定闹功能。
利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。
d)秒表功能。
最小时间单位0.01秒。
二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。
a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。
b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。
注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。
S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。
电路采用两个滤波电容,给板子一个更加稳定的工作电源。
LED为电源的指示灯,通电后LED灯亮。
2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。
有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。
如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。
低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。
电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。
数码管的阴级由P0口经过电阻限流连接。
例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。
基于单片机功能数字钟设计
基于单片机功能数字钟设计【一】课程设计目的本课程旨在培养学生数字电子电路知识,解决数字电子技术方面常见实际问题的能力,掌握数字钟的设计、组装与调试方法,熟悉集成电路的使用方法。
促使学生积累实际电子制作经验,准备走向更复杂更实用的应用领域,是参加“全国大学生电子竞赛”前的技能培训课程之一。
目的在于巩固基础、注重设计、训练技能、追求创新、走向实用。
【二】设计任务及要求(1)时钟显示功能,能够以十进制显示“时”、“分”、“秒”。
(2)具有校准时、分的功能。
(3)整点自动报时,在整点时,便自动发出鸣叫声,时长1s。
选做:(1)闹钟功能,可按设定的时间闹时。
(2)日历显示功能。
将时间的显示增加“年”、“月”、“日”。
【三】数字钟的基本原理及电路设计一个具有计时、校时、报时、显示等基本功能的数字钟主要由STM8S105C6单片机最小系统、5V稳压芯片LM7805、5110液晶显示屏、校准开关、蜂鸣器(用于整点自动报时、闹钟闹时)等五部分组成。
一、STM8S105C6单片机最小系统如上图所示,(1)VDD和VSS引脚用于给内部主电压调节器MVR和内部低功耗电压调节器LPVR 供电,这两个电压调节器的输出连接在一起,向MCU内核(CPU,FLASH,和RAM)提供1.8V电压。
在低功耗模式下,系统自动将供电电源从MVR切换到LPVR,以减少MCU内核功耗,为了稳定MVR,必须在VCAP引脚连接一个容量在0.47-3.3uF的高频滤波电容,而我则选择了680nF的电容,处于这个范围之内。
(2)STM8S105C6单片机采用低电平复位,其中复位电容C不宜太大,否则当内部复位有效时,可能会造成内部N沟MOS过流,同时也不宜太小,否则外部低电平的复位脉冲维持时间小于500ns,这样就不能保证芯片可靠复位。
(3)在电源引脚和地之间添加一个高频滤波电容,滤波电放置的位置尽可能接近芯片的电源引脚,原则是“先滤波后使用”,而且工作频率越高,滤波电容的容量就可以越小。
基于单片机的多功能数字钟的设计
一、概述现代社会,时间被视为人们生活的重要组成部分。
而数字钟作为时间的一种展现形式,已经成为人们生活中不可或缺的一部分。
基于单片机的多功能数字钟设计,将为人们提供更加准确、便捷、多功能的时间展现方式,满足人们对时间的精准要求,同时也为人们的生活带来更多便利。
二、设计目标1. 实现精准的时间显示功能,包括时、分、秒的显示;2. 实现对日期的显示,包括年、月、日的显示;3. 实现多种报时功能,如定时报时、闹钟报时等;4. 实现多种显示效果,如渐变显示、闪烁显示等;5. 实现对时间的调整功能,包括校时、调整日期等;6. 实现对亮度的调节功能,适应不同环境下的使用需求。
三、设计思路1. 硬件设计1.1 硬件采用单片机作为核心控制器,通过外部晶振提供时钟信号;1.2 采用数码管作为显示设备,通过单片机控制数码管进行时间、日期的显示;1.3 通过按钮、旋钮等输入设备,实现时间调节、报时设置等操作;1.4 通过EEPROM等存储设备,实现时间、设置的存储和读取功能;1.5 通过光敏电阻等光敏传感器,实现对环境光强的检测,调节数码管显示亮度。
2. 软件设计2.1 设计合理的时钟系统,确保时间的准确显示;2.2 设计报时功能模块,实现定时报时、闹钟报时等功能;2.3 设计显示控制模块,实现数字、日期的显示效果控制;2.4 设计操作响应模块,实现对按钮、旋钮等输入设备的操作响应;2.5 设计存储管理模块,实现时间、设置数据的存储和读取功能;2.6 设计光敏控制模块,实现对数码管显示亮度的实时调节。
四、实现方法1. 硬件设计1.1 选择合适的单片机作为核心控制器,根据需要进行外围电路的设计;1.2 选择合适的数码管作为显示设备,设计驱动电路以及显示控制电路;1.3 选择合适的按钮、旋钮等输入设备,设计输入电路以及操作响应电路;1.4 选择合适的EEPROM芯片,设计存储管理电路实现数据的存储和读取;1.5 选择合适的光敏电阻或光敏二极管,设计光敏控制电路实现显示亮度的调节。
基于51单片机的数字钟设计与制作
一.基于52单片机制作的数字钟1.设计任务⑴时间显示: 上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间.⑵时间调整:按下k1,k2,k3键可以顺序设置秒、分、时,并在相应数码管上显示设置值,直至6位设置完毕。
2.系统基本方案选择和论证本时钟的设计具体有两种方法。
一是通过单纯的数字电路来实现;二是使用单片机来控制实现。
本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。
以下是我在这次设计中所用的方案。
2.1 芯片的选择方案一:采用AT89C51芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式,但是由于AT89C51芯片可擦写的空间不够大,且中断源提供的较小,为防止运行过程中出现不必要的问题,我们不选用AT89C51。
方案二:采用AT89C52芯片,它除了具备AT89C51的所有功能与部件外,其最大的优势就是AT89C52提供了8K字节可擦写Flash闪速存储器空间、8个中断源、及256*8字节内部存储器(RAM),解决了我们对可反复擦写的Flash闪速存储器空间大小与中断源的不够问题的担心。
2.2显示模块选择方案和论证方案一:采用LCD,电路比较简单,且在软件设计上也相对简单,具有低功耗功能。
价格贵。
方案二:采用LED数码管显示,显示较为清楚。
价格便宜。
所以本方案采用LED数码管显示。
2.3 时钟信号的选择方案和论证直接采用单片机定时计数器提供的秒信号,使用程序实现年、月、日、周、时、分、秒计数。
采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小。
2.4 电路设计最终方案决定综上各方案所述,对此次数字时钟的方案选定为: 采用AT89C52作为主控制系统; 并由其定时计数器提供时钟; LED作为显示电路来实现功能。
单片机数字钟课程设计
单片机数字钟课程设计单片机数字钟课程设计1. 硬件设计:- 使用单片机控制数字钟的显示和时间的设置功能,在电路板上连接LED数码管用于显示时间。
- 使用实时时钟芯片或者外部晶振作为时钟源,确保时间的准确性。
- 设置按键用于调整时间,包括小时、分钟和秒钟。
2. 功能设计:- 初始化功能:启动时将时间设置为00:00:00。
- 显示功能:将当前时间显示在LED数码管上,包括小时、分钟和秒钟。
- 调整时间功能:按下相应的按键,可以调整小时、分钟和秒钟,同时更新LED数码管上的显示。
- 闹钟功能:设置一个闹钟时间,并在闹钟时间到达时发出声音或者闪烁LED灯提示。
3. 软件设计:- 使用C语言编写单片机的程序,通过编程控制数码管的显示和按键的响应。
- 在程序中使用定时器中断来更新时间的显示,确保时间的准确性。
- 使用按键中断来响应按键的操作,包括调整时间和设置闹钟功能。
4. 测试与调试:- 在编写完程序后,进行测试和调试,确保各项功能的正常运行。
- 使用示波器等工具来监测时钟信号和按键信号的波形,确保硬件连接的正确性。
- 运行程序并观察LED数码管的显示,以及按键的响应情况,进行功能的验证。
5. 效果展示:- 在完成测试和调试后,将数字钟的效果展示给他人,包括时间的显示和调整、闹钟的设置和响应等功能。
- 可以将数字钟制作成实物展示,方便他人观看和操作,也可以进行演示和讲解,介绍数字钟的工作原理和设计思路。
整个单片机数字钟的课程设计过程包括硬件设计、功能设计、软件设计、测试与调试以及效果展示。
通过这个设计项目,可以锻炼学生的硬件和软件设计能力,提高他们对单片机原理和应用的理解和掌握程度。
基于51单片机设计的多功能数字时钟毕业设计
基于51单片机多功能数字时钟1系统设计1.1设计要求设计制作一个24小时制多功能数字钟。
1.1.1主要性能指标1、数字显示年、月、周、日、时、分、秒。
1.1.2创意部分要求准确的进行年、月、周、日、时、分、秒的转换,切换两种显示模式。
1.2总体设计方案1.2.1概述及设计思路该设计方案是以MC51单片机为核心,采用LCD液晶屏幕显示系统,温度采集模块、日期提醒、键盘时间调整预设置等模块,所构建的数字时钟系统,能动态显示实时时钟的时、分、秒,数据显示(误差限制在30每天)。
1.2.2方案论证(1)时钟模块【方案一】采用单片机内置定时/计数器。
它的处理过程主要是先设定单片机内部定时/计数器的工作方式,对机器周期计数确定基准时间,然后用另外一个定时器软件计数的方法对基准时间形成秒,秒计60次形成分,分计60次形成小时。
依此类推,获取日期也是采用相同的方法。
该方案在具体实现过程中,计时存在较大的误差。
如果晶振受到其他外界信号干扰,或者基准时间计算不准确,都会导致时间显示错误。
【方案二】采用555多谐振荡器。
由555定时器组成一个多谐振荡器,产生周期为100HZ的脉冲,然后经过两个74LS160组成的分频器得到1HZ的秒脉冲。
多谐振荡器的稳定度及频率的准确度决定了数字钟计时的准确程度,通常选用成品晶振构成振荡器电路。
计时精度取决于振荡器的频率,振荡器频率越高计时精度越高。
【方案三】采用DS1302时钟芯片。
DS1302是一种高性能、超低功耗的实时时钟芯片,附加31字节静态RAM,可以通过串行接口与单片机进行通信。
实时时钟提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。
芯片内部集成备用电源,当外围电路电路有电源供应的时候,备用电源充电储能。
当外围电路掉电时,DS1302芯片工作在休眠状态,以备用电源供电。
当外围电路再次供电,即可唤醒休眠进入正常工作状态,显示时间无任何异常。
简单的51单片机数字钟设计
07级单片机课程设计题目:简单51单片机数字时钟设计院系: 电子信息工程专业:电信专业班级:08级电信本科三班姓名:刘涛学号:200810312340老师:杨加国2010-6摘要班级学号 (1)设计内容 (3)进度安排 (3)MCS-51单片机系统简介 (3)课程设计背景 (4)课程设计目的 (4)MCS-51单片机内部定时器/计数器中断系统简介 (4)课程设计原理 (5)课程设计代码 (6)设计相关说明 (10)→设计内容利用单片机的定时/计数器,中断系统,以及阵列键盘和LED显示器进行设计。
在数码管显示器上实现电子时钟,并且能进行设置时间和暂停、启动控制。
→进度安排地点:电路CAD室设备:计算机,KEIL 51软件、PROTEUS软件准备一周,仿真、调试一周。
→MCS-51单片机系统简介MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国A TMEL公司开发生产的。
以后我们将用89C51、89S51来完成一系列的实验。
MCS-51系列单片机MCS-51系列单片机分为两大系列,即51子系列与52子系列。
51子系列:基本型,根据片内ROM的配置,对应的芯片为8031、8051、8751、895152子系列:增强型,根据片内ROM的配置,对应的芯片为8032、8052、8752、8952这两大系列单片机的主要硬件特性如下表:上表中可以看到,8031、8031、8032、80C32片内是没有ROM的,对应着上表看,我们可以发现,51系列的单片机的RAM大小为128B,52系列的RAM大小为256B,51系列的计数器为两个16位的,52系列的计数器为三个16位计数器。
基于AT89C51单片机的数字电子时钟设计
/安徽工程大学机电学院单片机课程设计题目:数字电子时钟设计指导老师:***制作人员:范超学号:************班级:自动化2132日期:7月13日-7月24日总评成绩:课程任务设计书设计题目:数字电子时钟的设计设计任务:1.设计一款时,分,秒可调数字电子时钟可整点报时;2.设计三个按键K1,K2和K3,用于调节时钟的时间;3.用8个、七段LED数码管作为显示设备,开机显示00-00-00;本设计采用AT89C51单片机为核心器件。
具有电子钟显示,时间调整,整点报时等功能。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
根据60秒为一分、60分为1小时的计数周期,构成秒、分、时的计数,实现计时的功能。
而且能显示清晰、直观的数字符号。
针对数字钟会产生误差的现象,就设计有校准时间的功能。
AT89C51单片机控制的数字钟的硬件结构与软件设计,给出了汇编语言源程序。
此数字钟是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为24时00分00秒,另外应有校时功能。
电路由时钟脉冲发生器、时钟计数器、译码驱动电路和数字显示电路以及时间调整电路组成。
用晶体振荡器产生时间标准信号,这里采用石英晶体振荡器。
根据60秒为1分、60分为1小时、24小时为1天的计数周期,分别组成两个60进制(秒、分)、一个24进制(时)的计数器。
显示器件选用LED八段数码管。
在译码显示电路输出的驱动下,显示出清晰、直观的数字符号。
针对数字钟会产生走时误差的现象,在电路中就设计有有校准时间功能的电路。
关键字:Proteus,Keil uVision,AT89C51,电子钟,整点报时摘要 (3)第1章概述 (5)1.1 设计背景 (5)1.2系统方案论证与设计 (5)第2章系统硬件设计 (7)2.1 系统总电路的设计 (7)2.1.1系统的总框图 ................................................................................................2.1.2芯片的选择 (7)2.2最小系统设计 (9)2.2.1时钟电路的选择与设计 (10)2.2.2复位电路的选择与设计 .............................................. 错误!未定义书签。
单片机课程设计数字钟的设计
实验任务(1.开机时,显示12:00:00的时间开始计时;(2.P0.0/AD0控制“秒”的调整,每按一次加1秒;(3.P0.1/AD1控制“分”的调整,每按一次加1分;(4.P0.2/AD2控制“时”的调整,每按一次加1个小时;2.电路原理图P0_0~P0_3要加上拉电阻。
图4.20.1 3.系统板上硬件连线(2.把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;(3.把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;4.相关基本知识(1.动态数码显示的方法(2.独立式按键识别过程(3.“时”,“分”,“秒”数据送出显示处理方法5.程序框图6.汇编源程序SECOND EQU 30HMINITE EQU 31HHOUR EQU 32HHOURK BIT P0.2MINITEK BIT P0.1SECONDK BIT P0.0DISPBUF EQU 40HDISPBIT EQU 48HT2SCNTA EQU 49HT2SCNTB EQU 4AHTEMP EQU 4BHORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,#00HMOV MINITE,#00HMOV HOUR,#12MOV DISPBIT,#00HMOV T2SCNTA,#00HMOV T2SCNTB,#00HMOV TEMP,#0FEHLCALL DISP ;2KB范围内长调用MOV TMOD,#01HMOV TH0,#(65536-2000) / 256 ;2msMOV TL0,#(65536-2000) MOD 256WT: JB SECONDK,NK1 ;SECONDK是1转NK1,即按键SP1按下时转.LCALL DEL Y10MSJB SECONDK,NK1INC SECONDMOV A,SECONDCJNE A,#60,NS60MOV SECOND,#00HNS60: LCALL DISPJNB SECONDK,$NK1: JB MINITEK,NK2LCALL DEL Y10MSJB MINITEK,NK2INC MINITEMOV A,MINITECJNE A,#60,NM60MOV MINITE,#00HNM60: LCALL DISPJNB MINITEK,$NK2: JB HOURK,NK3LCALL DELY10MSJB HOURK,NK3INC HOURMOV A,HOURCJNE A,#24,NH24MOV HOUR,#00HNH24: LCALL DISPJNB HOURK,$NK3: LJMP WTDEL Y10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETDISP: ;将得出的时间存入40H (DISPBUF)之后的地址MOV A,#DISPBUFADD A,#8DEC AMOV R1,AMOV A,HOURMOV B,#10DIV ABMOV @R1,A ;累加器送内部RAM单元@R1与R1区分?:@R1——R1为地址,@R1指向其内容。
关于单片机的数字钟设计
一、实验内容:设计一个数字时钟,显示范围为00:00:00~23:59:59。
通过5个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。
选做增加项目:还可增加秒表功能(精确到0.01s)或年月日设定功能。
电路:(只连粗实线部分)数码LED显示器电路(不需接线)电子音响电路要求:开关K3进行加1调节时,当加至最大值(时为24,分和秒均为60)时要能正常归零。
开关K4进行减1调节时,当减至最小值00时,均能再回到从相应最大值(时为23,分、秒均为59)。
闹钟乐曲自定。
二、实验电路及功能说明1、整体电路:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息,并通过程序控制扫描输出显示数据。
利用定时器0与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。
电路图如下:2、单元电路设计(1)数码管显示时间单元本设计主要使用到单片机定时/计数功能,采用LED共阴极数码管,使用T0进行技术。
当计数到20时总计数为一秒。
当计数达到1秒时,秒增加1;当秒达到60时,对秒清零,分增加1;当分达到60时,对分清零,时增加1;当时达到24时,对时清零。
用程序和代码控制数码管显示电路,就可以使数码管以动态扫描的方式显示6位数的时间。
(2)报时单元本单元设计采用仿电台整点报时功能,每逢59分54秒到59秒时由蜂鸣器发出音频信号,输出信号的持续时间均为一秒,音频信号结束时,正好是整点。
单片机课程设计数字钟实验报告
单片机课程设计:电子钟一、实现功能1、能够实现准确计时,以数字形式显示时、分、秒的时间。
2、小时以24小时计时形式,分秒计时为60进位,能够调节时钟时间。
3、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。
4、能够实现按键启动与停止功能。
5、能够实现整点报时功能。
6、能够实现秒表功能。
二、设计思路1、芯片介绍VCC:电源。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
单片机数字时钟设计,时分秒天
单片机数字时钟设计,时分秒天东北石油大学课程设计任务书课程单片机原理及应用课程设计题目电子时钟设计专业应用物理学09—2 姓名赵国鹏学号0909********主要内容、基本要求、主要参考资料等1、主要内容:根据单片机课程所学内容,结合其他相关课程知识,设计电子时钟,以加深对单片机知识的理解,锻炼实践动手能力,为以后的毕业设计和工作打下坚实基础。
2、基本要求:本设计以MCS-51系列单片机为核心,采用常用电子器件设计。
要求能显示出秒、分、时、天,可调整各个时间,可以采用LED显示,也可以采用液晶显示。
3、主要参考资料:[1] 张毅坤,陈善久.单片微型计算机原理及应用.西安电子科技大学出版社,2002.[2] 张友德,赵志英,徐时亮.单片微机原理应用与实验.复旦大学出版社,2000.[3] 张毅刚,彭善元,董继承.单片机原理及应用.高等教育出版社,2003.完成期限2011年7月13日指导教师专业负责人2011 年7 月4 日摘要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74LS245译码器的工作原理和与,LED连接的方法。
本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器、BCD-锁存/7段译码/驱动器74LS245等),再配以相应的软件,是它具有时,分,秒显示的功能,并且时,分,秒还可以调整。
此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南交通职业技术学院交通信息工程系单片机数字时钟设计专业电子11301姓名单德过学号1104060115专业电子11301姓名楚洋坪学号1104060121目录摘要 (2)第一章电子时钟的设计 (3)1.1电子时钟简介 (3)1.2电子时钟的工作原理 (3)第二章硬件设计方案 (4)2.1硬件电路的设计方案 (4)2.2硬件电路的原理图 (4)2.3硬件电路说明 (5)第三章电子时钟的程序设计 (8)3.1程序流程图 (8)3.2程序设计 (11)总结 (15)摘要随着现代生活的推进,电子时钟在人们的生活中已经普及,本课题的主要内容就是结合单片机的强大功能,在一块普通的电子时钟集成多种功能,方便人们的日常生活,该功能是通过单片机、8段数码管以及一些简单辅助电路实现的。
由于之前没有独立做过单片机实现多功能电子时钟方面的内容,所以在做设计时总会遇见很多问题,本次设计是在结合老师的指导及同学的帮助下完成的,并通过本人在网上所查的大量资料及单片机设计中常见的电路而构思出来的。
单片计算机即单片微型计算机。
由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本设计主要设计了一个基于AT89C51单片机的电子时钟。
并在数码管上显示相应的时间。
并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。
该方法仿真效果真实、准确,节省了硬件资源。
关键字:单片机、电子时钟、程序第一章电子时钟的设计1.1电子时钟简介电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示直观、无机械传动装置等优点,因而得到广泛应用。
随着人们生活环境的不断改善和美化,在许多场合都用到电子时钟。
现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。
LCD数字电子钟除了在城市的主要营业场所、车站、码头等公共场所使用,还可以改装在摩托车和汽车上,LCD显示,带蓝色背光,白天在太阳光下也能非常清楚的看到显示时间,关钥匙可以关闭蓝色背光,时间还能显示也不会清零,因LCD的显示耗电量很省的,所以一直工作也不必担心耗电问题。
在骑摩托车时,为了看时间,先要停下车子,取出手机,才能看时间,是否有点麻烦,现在车上改装了一个蓝色背光的液晶电子钟后,不管白天黑夜色,随时可以看时间,非常方便。
1.2电子时钟的工作原理一般电子钟是一个将“ 时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。
主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。
整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。
而该电子时钟由89C51,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
而电路中个控制键可以实现多种不同的功能;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。
第二章设计方案2.1硬件电路的设计方案根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LED显示器电路。
图1 为硬件电路设计框图。
硬件电路设计框图2.2硬件电路的原理图设计原理图,如图所示。
设计原理图本设计电路,硬件部分共由五个模块组成:按键模块、复位电路模块、晶振电路模块、发声指示模块、时间显示模块。
晶振电路模块负责给单片机提供时钟周期。
复位单路模块负责上电后自动复位,或按键后强制复位。
上电后,由单片机内部定时器计时,同时通过动态显示函数自动将时分秒显示到数码管上。
与此同时,按键扫描函数,一直扫描按键引脚状态,一旦扫描到按键被按下,即进入相应的功能函数。
如果检测到定时时间到,则驱动蜂鸣器发声提示。
2.3硬件电路说明2.3.1按键模块按键模块如图所示。
按键模块在该模块中,采用四个按键作为电子时钟的控制输入,通过按键来实现时钟的时间设置、定时、秒表功能。
电路中将四个按键的一端接公共地,而单片机的P2口默认为高电平,一旦按键被按下,则该按键对应的额管脚被拉低,通过软件扫描按键即可知道用户所要实现的功能,调用相应的按键子程序来完成该操作。
按键的去抖动由软件来实现。
2.3.2单片机的复位电路单片机的复位电路,如图所示。
单片机的复位电路当MCS-5l系列单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作。
如果RST持续为高电平,单片机就处于循环复位状态。
根据应用的要求,复位操作通常有两种基本形式:上电复位和上电或开关复位。
上电复位要求接通电源后,自动实现复位操作。
上电后,保持RST一段高电平时间。
2.3.3单片机的晶振电路单片机的晶振电路,如图所示。
单片机的晶振电路石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体的并联谐振频率。
晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容, 接地点就是分压点。
以接地点即分压点为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看, 形成一个正反馈以保证电路持续振荡。
2.3.5时间显示模块时间显示液晶显示电路时间显示部分的电路也很简单,由八个七位的共阴8段数码管在显示过程中,同时通过位选选通要显示的数码管。
第三章控制系统的软件设3.1 程序流程图系统的流程图如图a和图b所示:图a主程序流程图图b中断处理流程图3.2依据流程图编写程序本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。
在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。
#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit qingling=P1^0; //清零sbit tiaofen=P1^1; //调分sbit tiaoshi=P1^2; //调时sbit sounder=P1^7; //naozhonguint a,b;uchar hour,minu,sec, //时钟hour0,minu0,sec0, //秒表hour1,minu1,sec1;h1,h2,m1,m2,s1,s2,//显示位k,s; //状态转换标志uchar code select[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/*****************函数声明***********************/void keyscan();void init();void delay(uchar z);void display(uchar,uchar,uchar);void sounde();/*****************主函数*************************/void main(){init();while(1){while(TR1){keyscan(); //扫描函数while(s==1) //s是状态标志,当s=0时,闹钟取消。
s=1时,设定闹钟时间{ //s=2时,闹钟工作,时间与设定时刻一致时,闹钟响keyscan(); //s状态切换(0-》1-》2-》0)通过外部中断1实现。
display(hour1,minu1,sec1); //闹钟时刻显示}display(hour0,minu0,sec0);//时钟表显示while(k) /*k是秒表状态(0-》1-》2-》0)通过外部中断0实现。
*/{display(hour,minu,sec); //秒表显示}}}}/*****************初始化函数***********************/void init(){a=0;b=0;k=0;s=0;hour0=0;minu0=0;sec0=0;hour=0;minu=0;sec=0;hour1=0;minu1=0;sec1=0;TMOD=0x11; //定时器0,1工作于方式1;赋初值 TH0=(65536-5000)/256;TL0=(65536-5000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;EX0=1; //秒表中断EX1=1; //闹钟设定中断ET0=1;ET1=1;IT0=1; //边沿触发方式IT1=1;PX0=1;PX1=1;TR0=0; //初始,秒表不工作 TR1=1; //时钟一开始工作}/*****************定时器0中断*************/ void timer0_int() interrupt 1 //秒表{TH0=(65536-5000)/256;TL0=(65536-5000)%256;a++;if(a==2){a=0;sec++;if(sec==100){sec=0; //毫秒级minu++;if(minu==60){minu=0; //秒hour++;if(hour==60) //分{hour=0;}}}}}/*************外部中断0中断函数************/ void ex0_int() interrupt 0{k++;if(k==3)k=0;if(k==1){TR0=~TR0;if(TR0==1){hour=0;minu=0;sec=0;}}if(k==2){TR0=~TR0;}}/*************外部中断1中断函数************/ void ex1_int() interrupt 2{s++;if(s==3)s=0;}/*************定时器1中断****************/void timer1_int() interrupt 3 //控制时钟工作{TH1=(65536-50000)/256;TL1=(65536-50000)%256;if(s==2){if(hour1==hour0 && minu0==minu1)sounde();}b++;if(b==20){b=0;sec0++;if(sec0==60){sec0=0;minu0++;if(minu0==60){minu0=0;hour0++;if(hour0==24)hour0=0;}}}}/*************键盘扫描****************/ void keyscan(){if(s==1){if(qingling==0){delay(10);if(qingling==0){sec1=0;minu1=0;hour1=0;}}if(tiaofen==0){delay(10);if(tiaofen==0) {minu1++;if(minu1==60){minu1=0; }while(!tiaofen);}}if(tiaoshi==0){hour1++;if(hour1==24){hour1=0;}while(!tiaoshi);}}else //调整时钟时间 {if(qingling==0){delay(10);if(qingling==0){sec0=0;minu0=0;hour0=0;}}if(tiaofen==0)delay(10);if(tiaofen==0) {minu0++;if(minu0==60){minu0=0; }while(!tiaofen);}}if(tiaoshi==0){hour0++;if(hour0==24){hour0=0;}while(!tiaoshi);}}/*************显示函数****************/void display(uchar hour,uchar minu,uchar sec) {h1=hour/10;h2=hour%10;m1=minu/10;m2=minu%10;s1=sec/10;s2=sec%10;P0=0xff;P2=table[h1];P0=select[7];delay(5);P0=0xff;P2=table[h2];P0=select[6];delay(5);P0=0xff;P2=0x40;;P0=select[5]; delay(5);P0=0xff;P2=table[m1]; P0=select[4]; delay(5);P0=0xff;P2=table[m2]; P0=select[3]; delay(5);P0=0xff;P2=0x40;P0=select[2]; delay(5);P0=0xff;P2=table[s1];P0=select[1];delay(5);P0=0xff;P2=table[s2];P0=select[0];delay(5);}/*************闹钟函数****************/ void sounde(){sounder=~sounder;}/*************延时函数****************/ void delay(uchar z){int x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}总结:本电子时钟设计硬件结构简单,软件设计条理清晰,是一个很实用及很常见的多功能时钟。