单片机数字时钟资料汇总
- 格式:pdf
- 大小:317.96 KB
- 文档页数:16
单片机制作的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不显示)状态。
烟台南山学院单片机课程设计题目电子时钟姓名:所在学院所学专业:班级:学号:指导教师:完成时间:随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。
由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。
本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。
在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。
主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。
实验证明效果良好,可以投入使用。
本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS—51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。
在本学期的开始我们进行了计算机工程实践,在实践中我们以微机原理与接口技术课程中所学知识为基础,设计了电子时钟系统。
本系统为多功能数字钟的系统。
本设计以单片机AT89c51为控制核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前时间、日期、星期。
本电子时钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。
单片机数字钟工作原理
单片机数字钟是一种通过单片机控制数字时钟的设备。
单片机是一种高度集成的电子芯片,具有非常强大的计算和控制能力。
在数字钟中,单片机负责控制时间数码管的显示和计时功能。
具体来说,单片机数字钟的工作原理如下:
1. 时钟电路:单片机数字钟中使用的时钟电路通常是晶体振荡器。
晶体振荡器会产生非常稳定的频率,用于单片机的计时和控制。
2. 计时功能:单片机通过时钟电路来计时。
当单片机启动时,它会从时钟电路中读取当前的时间,然后根据程序中设定的规则不停地更新时间。
单片机数字钟通常会具有秒、分、时等多个计时功能,可以显示当前的精确时间。
3. 显示功能:单片机数字钟通过数码管来显示时间。
数码管是一种常见的显示器件,可以显示数字、字母等信息。
单片机通过控制数码管的亮灭来显示当前时间。
4. 控制功能:单片机数字钟还具有控制功能。
例如,可以通过按钮来调整时间、闹钟等功能。
单片机还可以控制数码管的亮度、闪烁等效果,以及声光报警等功能。
综上所述,单片机数字钟是一种功能强大、精确可靠的电子设备,广泛应用于家庭、办公室、实验室等场合。
- 1 -。
【单片机】c51数字时钟(带年月日显示)显示当前时间:9点58分34秒(第一个零表示闹钟未开启)当前日期:10年4月六日摘要:本设计以单片机为核心,LED数码管动态扫描显示。
采用矩阵式键盘输入能任意修改当前时间日期和设定闹钟时间。
具有显示年月日(区分闰年和二月),闹钟报警和整点报时功能说明系统的功能选择由7个按键完成。
其中P3.0,P3.1分别对应调整当前时间的时和分,P3.2为外部中断0,控制闹钟功能的开启/关闭(开启时数码管第一位显示字母’c’)P3.3用作外部中断1,当前时间的显示与闹铃时间显示切换,闹钟显示时按P3.0,P3.1可进行闹钟时分的设定,此时,led1灯灭。
闹铃时间到切闹钟开关开启时,闹铃响一分钟。
P3.5\P3.6\P3.7对年月日进行调整(第一次按P3.5,就进入了年月日的显示,现在就可对日期进行调整)。
按P3.1回到当前时间的显示状态。
整点到时:报警对应小时的次数。
程序如下:#include<reg51.h>#include<intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intuchar data keyvalue; //查到的键值uchar data keys; //转换出的数字uchar dis[8];uchar codeseg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x 39,0xf7};// 0 1 2 3 45 6 7 8 9 - 灭灯 c nsbit led_duan=P2^6; //段选通sbit led_wei=P2^7; //位选通sbit speaker=P2^3; //蜂鸣器sbit minitek=P3^0; //分校正按键sbit hourk=P3^1; //小时校正按键sbit p3_4=P3^4; //sbit yeark=P3^5; //年sbit monthk=P3^6; //月sbit dayk=P3^7; //日uchar data wei,i;bit leap_year; //闰年标志位bit dis_nyr;bit cal_year=1;bit calculate=1; //显示年月日与当前时间切换标志uchar data c_min; //闹钟‘分寄存单元uchar data c_hou; //闹钟、小时寄存单元uchar data second; //秒uchar data minite; //分变量uchar data hour; //小时变量uchar data year,month,day; //定义年月日变量uchar data CNTA;uchar data speaker_num; //蜂鸣次数bit beep; //整点报时标志bit run; //运行标志bit flash; //灭灯标志bit clarm_switch; //闹钟开关标志bit baoshi; //报时开关标志sbit led1=P1^6; // 按键标识指示灯sbit led2=P1^7; // 运行标志指示灯sbit P3_2=P3^2;sbit P3_3=P3^3;uint n,k;/*10微秒级延时*/void delay_10us(uchar n){ do{ _nop_();_nop_();_nop_();_nop_();_nop_();}while(--n);}/***毫秒级延时 ***/void delay_ms(uint n){ do delay_10us(131);while(--n);}/****** 当前时间转换******/clk_to_dis(){dis[0]=second%10;dis[1]=second/10;if(flash)dis[2]=10;else dis[2]=11;dis[3]=minite%10;dis[4]=minite/10;dis[5]=hour%10;dis[6]=hour/10;}/*****定时闹钟显示译码(用于七段码显示)*****/clarm_to_dis(){dis[0]=c_min%10;dis[1]=c_min/10;if(flash)dis[2]=10; //亮灯else dis[2]=11; //灭灯dis[3]=c_hou%10;dis[4]=c_hou/10;dis[5]=10;dis[6]=13;}/***********年月日显示译码************/nyr_to_dis(){dis[0]=day%10;dis[1]=day/10;dis[2]=10; //显示'-'dis[3]=month%10;dis[4]=month/10;dis[5]=10; // '-'dis[6]=year%10;dis[7]=year/10;}/*主函数*/void main(){P2=0xff;P1=0XFF;p3_4=0;run=1;led2=0; //运行指示灯亮led1=1;flash=0x00;dis[2]=10; //第三位显示“-”wei=0x7f; //选通低位i=0;second=21;minite=58;hour=9;CNTA=0x00;year=10;month=4;day=5;clk_to_dis();TMOD=0x11;TH0=15560/256;TL0=15560%256;TH1=0xfc;TL1=0x18;EA=1;PT0=1;EX0=1; //开中断;EX1=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1){while(run==1){ clk_to_dis();if(calculate){if(month==1|month==3|month==5|month==7|month==8|month==10|mont h==12){day++;if(day>31){day=0x01;month++;if(month==13){month=1;year++;cal_year=1;}}led1=0; //指示灯亮}if(month==4|month==6|month==9|month==11){day++;if(day>30){day=0x01;month++;}led1=0; //指示灯亮}if(month==2) { if(leap_year==1){day++;if(day==30)day=1;}else {day++;if(day==29)day=1;}}while(cal_year){if((year+2000)%400==0) leap_year=1; // 被400整除为闰年else if((year+2000)%100==0) leap_year=0; // 不能被400整除能被100整除不是闰年elseif((year+2000)%4==0) leap_year=1; // 不能被400、100整除能被4整除是闰年else leap_year=0;cal_year=0;}calculate=0;led1=1;}while(!minitek){for(n=0;n<1000;n++);if(!minitek==0)break; //延时防抖minite++;second=0x00;led1=0;for(n=0;n<20;n++){speaker=!speaker;delay_10us(50); //蜂鸣器响}if(minite==60)minite=0x00;while(!minitek); //等待键松开led1=1; //显示灯}while(!hourk){for(n=0;n<1000;n++);if(!hourk==0)break;hour++;second=0x00;led1=0;for(n=0;n<30;n++){speaker=!speaker;delay_10us(30); //蜂鸣器响}if(hour==24) hour=0x00;while(!hourk);led1=1;}while(!yeark) //yeark键复用进入年月日调整{for(n=0;n<1000;n++);if(!yeark==0)break;dis_nyr=1;while(!yeark);while(dis_nyr){ nyr_to_dis();while(!yeark){for(n=0;n<1000;n++);if(!yeark==0)break;year++;led1=0;for(n=0;n<30;n++){speaker=!speaker;delay_10us(30); //蜂鸣器响}if((year+2000)%400==0) leap_year=1; // 被400整除为闰年else if((year+2000)%100==0) leap_year=0; // 不能被400整除能被100整除不是闰年elseif((year+2000)%4==0) leap_year=1; // 不能被400、100整除能被4整除是闰年else leap_year=0;while(!yeark);led1=1;}while(!monthk){for(n=0;n<1000;n++);if(!monthk==0)break;month++;if(month==13)month=1;led1=0;for(n=0;n<30;n++){speaker=!speaker;delay_10us(30); //蜂鸣器响}while(!monthk);led1=1;}while(!dayk){for(n=0;n<1000;n++);if(!dayk==0)break;if(month==1|month==3|month==5|month==7|month==8|month== 10|month==12){day++;if(day>31)day=0x01;led1=0; //指示灯亮}if(month==4|month==6|month==9|month==11){day++;if(day>30)day=0x01;led1=0; //指示灯亮}if(month==2) { if(leap_year==1){day++;if(day==30)day=1;}else {day++;if(day==29)day=1;}}led1=0;for(n=0;n<30;n++){speaker=!speaker;delay_10us(30); //蜂鸣器响}while(!dayk);led1=1;}while(!hourk){ for(n=0;n<1000;n++);if(hourk) break;dis_nyr=0;while(!hourk);if(clarm_switch)dis[7]=12; //开启显示 Celse dis[7]=11; //关闭不显示dis[6]=11;clk_to_dis();}}}if(clarm_switch) //闹铃时间到,指示灯闪烁蜂鸣器长响{if(c_min==minite&&c_hou==hour){speaker_num=60;beep=1;while(beep&& clarm_switch){led1=!led1;delay_ms(100);clk_to_dis();}led1=1;beep=0;}}}while(run==0) //闹钟时间设定{ clarm_to_dis();/////////////////////////////////////////////////////////// while(!minitek){for(n=0;n<1000;n++);if(!minitek==0)break; //延时防抖c_min++;led1=0;for(n=0;n<20;n++){speaker=!speaker;delay_10us(50); //蜂鸣器响}if(c_min==60)c_min=0x00;while(!minitek); //等待键松开led1=1; //显示灯}while(!hourk){for(n=0;n<1000;n++);if(!hourk==0)break;c_hou++;led1=0;for(n=0;n<30;n++)speaker=!speaker;delay_10us(30); //蜂鸣器响}if(c_hou==24) c_hou=0x00;while(!hourk);led1=1;}}}}/***************定时器T0中断*****************/timer0() interrupt 1 using 2 //定时器0中断号为1号使用第2组寄存器{TR1=0;TH0=15548/256;TL0=15548%256;CNTA++;if(beep){if(speaker_num%2)speaker=!speaker;if(!speaker_num) beep=0;}if(CNTA==20){ if(speaker_num)speaker_num--; //每秒整点报时次数减一flash=!flash;CNTA=0;second++; //秒加if(second==60){second=0;minite++;if(minite==60){minite=0;hour++;if(hour>7){speaker_num=2*hour; //整点到设定报时次数蜂鸣标志置1beep=1;}if(hour==24)hour=0; calculate=1; //0点到,日期标志加一}}}}TR1=1;}/*********定时器中断T1**********/timer1() interrupt 3 using 3{TH1=0xfc;TL1=0x18;P0=0xff;led_wei=1;led_wei=0;P0=seg[dis[i]];led_duan=1;led_duan=0;P0=wei;led_wei=1;led_wei=0;if(++i==8)i=0;wei=_cror_(wei,1);}/**********************外中断0*******************/int_0() interrupt 0{clarm_switch=!clarm_switch; // 闹钟开关if(clarm_switch)dis[7]=12; // 开启显示开启第一位显示C else dis[7]=11; // 关闭不显示for(k=0;k<40;k++){speaker=!speaker;led1=!led1;delay_ms(5);}led1=1;}/********************外中断1********************/int_1() interrupt 2 //闹钟时间设置/运行转换开关{run=!run;if(run)led2=0;else led2=1;for(k=0;k<90;k++){speaker=!speaker; // 蜂鸣器响led1=!led1; // 指示灯闪烁delay_10us(100);}led1=1;}。
引言数字电子时钟,自从它问世起,就是人们的好朋友,是人们日常生活中必不可少的电子产品,广泛用于生活的方方面面,给人们的学习、生活、工作带来了极大的方便。
但随着时间的推移,科学技术的不断发展,生活节奏越来越快,竞争日益激烈,人们对时间计量的精度要求越来越高,应用越来越广。
通常使用的晶振芯片设计的电子时钟,在生活中使用是一个很不错的选择,然而在工业现场,环境恶劣,势必会影响走时的进度,我们试想一下,大型的工业现场的走时如果因为环境的恶劣而不精确,导致的生产损失将有多大。
而利用开关量控制的PLC来设计的时钟是不会因为环境的因素而发生走时误差,从而,在工业现场最好使用PLC设计的时钟。
本文主要介绍在工业现场应用的时钟用PLC的设计。
通过PLC我们设计的这种走时精确的的时钟,终究会变成产品走进工业现场。
1 设计的目的及意义本设计通过用对一个能实现定时,时钟显示功能的时间系统的设计学习,让我们了解到了51单片机应用中的数据转换显示,数码管显示原理,静态扫描显示原理,单片机的定时中断原理等,从而达到学习、了解单片机相关指令在各方面的应用,让我们学到更多关于单片机方面的知识。
2 芯片简介2.1 STC80C52单片机芯片引脚功能介绍单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
⒈ 电源: ⑴ VCC - 芯片电源,接+5V;⑵ VSS - 接地端;⒉ 时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。
⒊ 控制线:控制线共有4根,⑴ ALE/PROG:地址锁存允许/片内EPROM编程脉冲① ALE功能:用来锁存P0口送出的低8位地址② PROG功能:片内有EPROM 的芯片,在EPROM编程期间,此引脚输入编程脉冲。
⑵ PSEN:外ROM读选通信号。
⑶ RST/VPD:复位/备用电源。
① RST(Reset)功能:复位信号输入端。
② VPD 功能:在Vcc掉电情况下,接备用电源。
51单片机数字钟介绍随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断走向深入,由于它具有功能强、体积小、功耗低、价格便宜、工作可靠、使用方便等特点,因此越来越广泛地应用于自动控制、智能化仪器、仪表、数据采集、军工产品以及家用电器等各个领域。
51单片机数字钟应用单片机中断、定时技术,通过调整键、加1键、减1键、确定键四个按键,用8位数码管设计制作了一个可以调整时间的数字钟,实现了对时、分、秒进行数字显示,可广泛用于个人家庭、车站、码头、办公室等公共场所,方便人们的日常生活。
一、系统方框图51单片机数字钟以STC89C52单片机为核心,采用12MHZ晶振,以汇编语言为程序设计语言,结合相关的元器件(共阳极四位一体LED数码显示器、BCD -七段译码/驱动器74HC537等),再配以相应的软件,用8位数码管显示“时、分、秒”。
显示格式为:时-分-秒XX-XX-XX ,由时个位和时十位、分个位和分十位、秒个位和秒十位计数器组成。
秒、分计数器为60进制计数器,时计数器为24进制计数器。
通过调整、加1、减1、确定4只按键来调整时间。
按下调整键SET_KEY(P1.0),显示“时”的两位数码管以1Hz的频率闪烁。
如果再次按下调整键,则“分”两位数码管开始闪烁,“时”两位数码管恢复正常显示,依次循环,直到按下确定键OK_KEY(P1.3),恢复正常的时间显示。
在数码管闪烁的时候,按下加1键ADD_KEY(P1.1)或者减1键DEC_KEY(P1.2 ),可以调整相应的显示内容。
按一次键,则选中的“时”“分”“秒”分别加1或减1,如果长按,系统识别后以一定速率连续增加或连续减少,进行快速调时。
二、动态扫描数码管显示采用动态扫描方法。
把8位数码管的8个笔画字段(a~g和dp)同名端连在一起由一片74HC573驱动;每一位数码管的公共极COM端(位)各自独立,连接在另外一片74HC573输出上接受P2口的控制。
单片机课程设计题目名称:基于单片机的数字钟的设计专业班级:学生姓名:学号:指导教师:单片机系统课程设计课程设计名称:基于单片机的数字钟的设计专业班级:学生姓名学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录一、设计课题任务 (1)1.1设计题目 (1)1.2 功能要求说明 (1)1.3 总体方案介绍及工作原理 (1)二、硬件系统的设计 (2)2.1 系统各功能模块介绍 (2)2.1.1 AT89C52控制模块 (2)2.1.2复位信号及其产生 (3)2.1.3时钟电路 (3)2.1.4MAX232 (4)2.1.5时钟电路DS1302 (5)2.1.6键盘功能模块 (7)2.1.7数码管显示模块 (7)2.1.5 二极管显示模块 (7)2.2 系统电路图 (8)2.3 系统的元器件清单 (8)三、软件系统的设计 (8)3.1使用单片机资源介绍 (8)3.2 软件系统各功能模块介绍 (9)3.2.1 独立式键盘模块 (9)3.2.2 数码管显示模块 (9)3.2.3 整点提示,半整点提示 (9)3.3 软件系统程序流程框图 (10)四、软件系统的程序 (11)六、参考文献 (21)附录: (1)基于单片机的数字钟的设计摘要:AT89C52单片机是一款应用广泛、功能强大的八位单片机。
本设计是由单片机AT89C52作为核心,通过单片机使电子钟具有调节显示时分秒的功能,电子钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显示电子钟直观、无机械传动装置等优点。
它的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能。
K1用来切换时间日期;K3用来循环调节时间的小时;K5用来循环调节时间的分钟;K2调节年、增大;K4调节年、减小;K6用来循环调节月;K8用来循环调节日期,以便对时钟进行校对。
关键词:电子钟单片机时间日期可调一、设计课题任务1.1设计题目设计一个可调的电子钟。
单片机课程设计目录前言 (3)一、系统方案选择与论证 (4)1.1数字电子钟设计的要求及技术指标 (4)1.2设计方案论证 (5)1.3元器件清单 (5)1.4电路说明 (6)二、安装与调试 (9)2.1准备元件和工具 (9)2.2 安装元件 (9)2.3测试与调试 (10)三、主程序设计 (14)3.1主程序设计 (14)四、总结 (21)前言20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。
尤其在医院,每次护士都会给病人作皮试,测试病人是否对药物过敏。
注射后,一般等待5分钟,一旦超时,所作的皮试试验就会无效。
手表当然是一个好的选择,但是,随着接受皮试的人数增加,到底是哪个人的皮试到时间却难以判断。
所以,要制作一个定时系统。
随时提醒这些容易忘记时间的人。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
数字集成电路的出现和飞速发展,以及石英晶体振荡器的广泛应用,使得数字钟的精度稳定度远远超过了老式的机械表,用数字电路实现对“时”、“分”、“秒”数字显示的数字钟在数字显示方面,目前已有集成的计数、译码电路,它可以直接驱动数码显示器件,也可以直接采用才COMS--LED光电组合器件,构成模块式石英晶体数字钟。
单片机数字时钟实验报告引言:数字时钟是现代人们生活中不可或缺的物品之一。
现代数字时钟的核心是单片机,而且数字时钟的制作也是单片机初学者的必备实验之一。
本文将详细介绍单片机数字时钟的制作过程和原理。
实验原理:数字时钟的原理非常简单,它由单片机、时钟芯片、LED数码管等元件组成。
单片机通过时钟芯片来获取时间信息,并将时间信息通过端口输出给LED数码管,从而显示当前时间。
单片机的主要作用是控制时钟芯片的读取和LED数码管的显示。
实验材料:1. 单片机:STC89C522. 时钟芯片:DS13023. LED数码管:共阳极4位LED数码管4. 电路板、电阻、电容、晶体振荡器、按键、排针等元件实验步骤:1. 确定电路原理图:根据实验原理,确定单片机、时钟芯片和LED 数码管之间的电路连接方式。
2. 绘制电路布局图:将电路原理图转换为真实的电路布局图,并根据元件大小和数量选择合适的电路板。
3. 焊接电路:根据电路布局图进行电路的焊接,并进行电路的检查和修正。
4. 编写程序:根据实验原理编写单片机程序,并将程序下载到单片机中。
5. 测试程序:将电路接通电源后,通过按键和LED数码管来测试程序的正确性和稳定性。
实验结果:经过实验,我们成功制作了一款单片机数字时钟。
该数字时钟具有以下功能:1. 显示当前的小时、分钟和秒钟。
2. 可以通过按键进行时间的调整。
3. 每隔一秒钟左右,LED数码管上的数据会刷新一次,以显示最新的时间信息。
4. 当电源断开后,时钟芯片会自动保存当前时间信息,重新通电后,显示的时间信息仍然是正确的。
结论:通过本次实验,我们了解了单片机数字时钟的制作原理和步骤,并成功制作了一款数字时钟。
通过实验,我们深入了解了单片机的应用,也为我们今后的电子设计和制作提供了很好的基础。
单片机原理及应用——电子时钟电子时钟是一种利用单片机技术实现的数字时钟,具备精确计时功能,并能显示当前时间的设备。
本文将详细介绍单片机原理及其在电子时钟中的应用。
一、单片机原理单片机(Microcontroller Unit,简称MCU)是一种集成了处理器核心、存储器、输入输出设备和定时器等功能的微型计算机系统。
它具备高度集成度、低功耗、体积小等特点,广泛应用于各种电子设备中。
单片机由中央处理器(CPU)、存储器、输入输出接口和定时器组成。
中央处理器是单片机的核心部件,负责执行各种指令和控制任务。
存储器用于存储程序和数据,包括ROM(只读存储器)和RAM(随机存储器)。
输入输出接口用于与外部设备进行数据交互,如键盘、显示器等。
定时器用于实现精确的时间控制和计时功能。
二、电子时钟的实现电子时钟利用单片机的计时功能和显示功能,实现了时间的精确计算和显示。
下面是一个简单的电子时钟实现的流程:1. 初始化:单片机启动后,需要进行一系列的初始化操作,包括设置计时器的计时方式、设置显示器的显示方式等。
2. 时间计算:通过单片机的定时器,可以实现对时间的精确计算。
定时器可以设定一个计时周期,每个周期结束后,单片机会触发一个中断,通过中断服务程序可以更新时间。
3. 时间显示:通过数码管等显示设备,将计算得到的时间显示出来。
单片机通过控制显示设备的亮灭来显示不同的数字。
4. 按键设置:电子时钟通常具备按键设置功能,可以通过按键来设置时间、闹钟等参数。
单片机通过读取按键状态,实现对时间的设置和调整。
5. 闹钟功能:电子时钟通常还具备闹钟功能,可以在设定的时间点触发蜂鸣器等报警设备。
单片机通过比较当前时间和设定的闹钟时间,实现闹钟功能。
6. 电源管理:为了确保电子时钟的正常运行,单片机需要对电源进行管理,包括低电压检测、电池切换等功能。
三、电子时钟的应用电子时钟广泛应用于各种场景,如家庭、办公室、学校等。
以下是几个常见的应用场景:1. 家庭用电子时钟:家庭用电子时钟通常具备显示时间、日期、温度等功能,可以放置在客厅、卧室等地方,方便人们随时了解时间。