《基于51单片机多功能电子时钟设计报告》

合集下载

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。

本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。

51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。

本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。

本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。

接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。

将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。

软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。

本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。

通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。

2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。

它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。

51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。

51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。

其存储器分为程序存储器(ROM)和数据存储器(RAM)。

程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。

51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。

51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。

基于MCS-51的多功能数字时钟设计报告

基于MCS-51的多功能数字时钟设计报告

基于MCS-51的多功能数字时钟设计报告摘要单片计算机即单片微型计算机(Single-Chip Microcomputer )。

它在一块芯片上集成了CPU、ROM、RAM、I/O、中断等功能部件,构成了一台完整的数字计算机。

他体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。

而51单片机是各单片机中最为典型和最有代表性的一种。

本学期通过对MCS-51的学习,实验,我们具有了一定的设计、开发软、硬件的能力。

本次实验先在仿真软件按照实验箱搭建电路,完成仿真,通过对程序个别处的修改即可在实验箱上观察现象。

关键词51单片机数字时钟数码管1.实验内容、组员任务分配情况通过一个学期的学习实验,我们对51系列单片机有了较深刻的认识,本次我们选做题目多功能数字钟。

实验内容及要求如下:设计一个数字时钟,显示范围为00:00:00~23:59:59。

通过5个开关进行控制,其中开关K1用于切换时间设置(调节时钟)和时钟运行(正常运行)状态;开关K2用于切换修改时、分、秒数值;开关K3用于使相应数值加1调节;开关K4用于减1调节;开关K5用于设定闹钟,闹钟同样可以设定初值,并且设定好后到时间通过实验箱音频放出一段乐曲作为闹铃。

(选做增加项目:还可增加秒表功能(精确到0.01s)和年月日设定功能。

)我们通过对题目的仔细分析,对小组各个成员进行了明确的分工:矫龙飞负责系统构架,组织分配任务,协调小组各成员的工作,并对各小部分软硬件进行整合;董天会、张建功负责以实验箱上电路为依据,搭建Protues仿真电路,并完成数码管的扫描显示;马克纳负责编写时钟、调时、定时的软件设计;刘传荣负责设计报告的撰写,并协助其他组员完成工作。

2.实验电路及功能说明在Protues上搭建的仿真电路如图1,单片机P0的8位数据口连接3各锁存器:一片74ls373和两片74273,按照图示连接,6位数码管的段码地址位FF7F,位码地址是FFBF;四个按键自上至下依次连接INT0、P1.1、P1.2、P1.3和公共地;红色和绿色发光二极管依次连接P1.0、P1.6和地;蜂鸣器连接P1.7和地。

c51多功能电子时钟设计报告

c51多功能电子时钟设计报告

机电工程系课程设计报告题目: 数字时钟课程设计专业:通信技术班级:07通信学号:0706090111姓名:庄再标指导老师:郑晓青时间:2010年1月10日目录一、设计目的、设计题目 (3)二、设计任务、功能描述 (3)三、硬件原理分析 (3)四、软件设计 (7)1 地址空间分配 (7)2 软件整体架构分析 (8)2.1总体架构说明:设计思路 (8)2.2主程序功能描述及分析、主程序流程图 (9)2.3各子程序功能描述及子程序入口出口、各程序流程图 (9)五、程序清单 (12)一、设计题目:数字时钟。

设计的时钟能够实现日常的时钟显示,同时具有时钟调整、两个闹钟及正点报时功能。

二、设计任务、功能描述整体设计任务:本电子时钟设计首要的工作是结合以往所学的单片机程序编写理论和编写规则来编写电子时钟的软件部分,编写时要结合所配的AT89S52芯片的管脚功能和其他硬件电路,该部分运用keil单片机软件来完成。

在编写完软件并检测完正确后再编译成.hex载入用Isis仿真软件布好的仿真硬件中运行检测程序是否正确,并调试。

待这一切工作做好后再利用已焊接好的小系统板硬件电路来实践实现软件功能与硬件的结合。

此步骤要用progisp单片机烧写软件来实现。

在硬件设计上:(1)用四个电位按键来实现对电子时钟的调试工作,当按第一下总控键时进入时钟的调整状态,有两个电位按键分别来调整时钟的分和时,在调整时秒正常运行;当按第二下总控键时时钟进入闹钟一设置,有两个电位按键分别来调整时钟的分和时的设定,另外有一个时钟控键来实现闹钟是否开启;当按第三下总控键时时钟进入闹钟二设置,其余操作同闹钟一设置操作,当按第四下总控键时时钟退出调整模式进入正常时钟走势。

(2)用两个四位数码管来实现设计的显示部分,其演示模式是:时时-分分-秒秒该数码管组合的功能管脚是八个位选择连接芯片的p2引脚,八个显示管位并联再接入到芯片p0引脚。

从而在功能上区分开,实现数码管的显示功能。

51单片机电子时钟课程设计报告实验报告

51单片机电子时钟课程设计报告实验报告

《单片机原理与应用》课程设计总结报告题目:单片机电子时钟(带秒表)的设计设计人员:张保江江润洲学号:********** **********班级:自动化1211指导老师:***目录1.题目与主要功能要求 (2)2.整体设计框图及整机概述 (3)3.各硬件单元电路的设计、参数分析及原理说明 (3)4.软件流程图和流程说明 (4)5.总结设计及调试的体会 (10)附录1.图一:系统电路原理图 (11)2.图二:系统电路PCB (12)3.表一:元器件清单 (13)4.时钟程序源码 (14)题目:单片机电子时钟的设计与实现课程设计的目的和意义课程设计的目的与意义在于让我们将理论与实践相结合。

培养我们综合运用电子课程中的理论知识解决实际性问题的能力。

让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。

课程设计的基本任务利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。

主要功能要求最基本要求1)使用MCS-51单片机设计一个时钟。

要求具有6位LED显示、3个按键输入。

2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。

3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。

开始计时时为000000,到235959后又变成000000。

4)使用3个键分别作为小时、分、秒的调校键。

每按一次键,对应的显示值便加1。

分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。

在调校时均不向上一单位进位(例如分加到59后变为00,但小时不发生改变)。

5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计主程序:#include#include#includeCharmiao,shi,fen,day=24,month=12,year1=20,year2=14,cmiao,c shi,cfen,cday,cmonth,cy ear1,cyear2;char jhmiao,jmiao,jfen;uint s1num,s4num,s6num;uchar count,count1,count2;uint a1,b1,c1,d1,e1,f1,g1;uint su,tt,mm,m,n,flag=0,flag2=0,flag3=0,flag4=0;uchar buff[4];char code dis[]={" mode "};char code dis1[]={" time "};char code dis2[]={" date "};char code dis3[]={" stopwatch "};char code dis6[]={"1234567"};charcodedis4[]={*************"};unsigned char pDat[7],pDat1[7];sbit s1=P1^7; //选择位sbit s2=P1^0; //数值加sbit s3=P1^4; //数值减sbit s4=P1^2; // 闹钟设置sbit s5=P1^5; // 凤鸣器sbit s6=P1^6; // 模式选择sbit s7=P1^3; //闹钟停止鸣叫sbit s8=P1^1; //启动sbit s9=P3^6; //温度报警void main(){uint i;s5=1;s8=1;m=0;n=0;init();EX0=1;//init_com(); //包含了对定时器0的设定while(s8) //初始模式设置{moshi();lcd_pos(0x00);for(i=0;i<15;i++){write_date(dis[i]);}lcd_pos(0x40);/* for(i=0;i<15;i++){write_date(dis1[i]);}*/}jhmiao=0;jmiao=0;jfen=0;miao=0;shi=0;fen=0;while(1){lcd_pos(0x02); write_date(0X2e); lcd_pos(0x04); write_date(0Xdf); lcd_pos(0x05); write_date(0X43); if(flag3==1){lcd_pos(0x06);for(i=0;i<10;i++) {write_date(dis1[i]); }write_sfm(10,miao); if(miao%2==0) {lcd_pos(0x46); write_date(0X20); lcd_pos(0x49); write_date(0X20); }else{lcd_pos(0x46); write_date(0X3a); lcd_pos(0x49); write_date(0X3a);}write_sfm(7,fen); write_sfm(4,shi);if(tt>310){s9=0;}if(tt<310)s9=1;}if(flag3==2){lcd_pos(0x40);for(i=0;i<15;i++) {write_date(dis2[i]);}lcd_pos(0x0a);write_date(0X2f);lcd_pos(0x0d);write_date(0X2f); write_sfm2(14,day); write_sfm2(11,month); write_sfm2(6,year1); write_sfm2(8,year2); if(tt>310) {s9=0;} else s9=1;}if(flag3==3){lcd_pos(0x0a);write_date(0X2f);lcd_pos(0x0d);write_date(0X2f);count2=(dis4[month-1]+2+day)%7;lcd_pos(0x4e);write_date(dis6[count2]);if(dis6[count2]=='6'||dis6[count2]=='7') { lcd_pos(0x4d);write_date(0X57);}else{lcd_pos(0x4d);write_date(0X20);}if(month==12&&day==24) {lcd_pos(0x4c);write_date(0X56);}else{lcd_pos(0x4c);write_date(0X20);}write_sfm(10,miao);if(miao%2==0){lcd_pos(0x46);write_date(0X20);lcd_pos(0x49);}else{lcd_pos(0x46);write_date(0X3a);lcd_pos(0x49);write_date(0X3a);}write_sfm(7,fen);write_sfm(4,shi);write_sfm2(14,day);write_sfm2(11,month); write_sfm2(6,year1);write_sfm2(8,year2); naozhong();if(tt>310) {s9=0;} else s9=1; }if(flag3==4){lcd_pos(0x06);for(i=0;i<10;i++){write_date(dis3[i]);}lcd_pos(0x46);write_date(0X3a);lcd_pos(0x49);write_date(0X3a);write_sfm(10,jhmiao); write_sfm(7,jmiao);if(s7==0){delay(5);if(s7==0){flag4++;while(!s7);if(flag4==1) while(1){TR0=0;if(s7==0){delay(5);if(s7==0)while(!s7); break;}}flag4=0;TR0=1;}}}dis_temp(tt);// dis_temp1(mm); keyscan();}}void int_0() interrupt 0{EA=0;IRcvStr(0xa0,n,&pDat1[0],8);//mm=pDat1[0];//mm<<=8; //两个字节组合为1个字 //mm=mm|pDat1[1]; mm=pDat1[0]*100+pDat1[1]*10+pDat1[2];pDat1[0]=0;pDat1[1]=0;pDat1[2]=0;n=n+8;EA=1;}void moshi(){if(s6==0){delay(5);if(s6==0){s6num++;while(!s6);if(s6num==1){flag3 = 1;lcd_pos(0x41);write_date(0X31);}if(s6num==2){flag3 = 2;lcd_pos(0x41);write_date(0X32);}if(s6num==3){flag3 = 3;lcd_pos(0x41);write_date(0X33);}if(s6num==4){flag3=4;lcd_pos(0x41);write_date(0X34);}if(s6num==5){s6num=0;lcd_pos(0x41);write_date(0X35);}}}}void naozhong(){if(miao==cmiao&&fen==cfen&&cshi==shi&&cday==day &&cmonth==month) {flag2++;if(flag2>1){flag2 = 0;s5 =0;lcd_pos(0x40); write_date(0X20); }}if(s7==0){delay(5);if(s7==0)s5=1;}if(s4 == 0){delay(5);if(s4 == 0){s4num ++; while(!s4);if(s4num==1) {TR0=0;a1 = miao;b1 = fen;c1 = shi;d1 = day;e1 = month;f1 = year2;g1 = year1;flag = 1;lcd_pos(0x40);write_date(0Xfc); keyscan();}if(s4num == 2){lcd_pos(0x40);write_date(0X21);cmiao = miao;cfen = fen;cshi = shi;cday = day;cmonth = month;cyear1 = year1;cyear2 = year2; miao = a1; fen = b1;shi = c1;day = d1;month = e1;year2 = f1;year1 = g1;TR0=1;flag=0;s1num=0;s4num=0;}}}}void keyscan(){if(s1==0){delay(5);if(s1==0){ s1num++;while(!s1);if(s1num==1){TR0=0;write_com(0x80+0x40+10); write_com(0x0f);lcd_pos(0x4f);write_date(0X73);}}if(s1num==2){write_com(0x80+0x40+7); lcd_pos(0x4f);write_date(0X6d);}if(s1num==3){write_com(0x80+0x40+4); lcd_pos(0x4f);write_date(0X68);}if(s1num==4){write_com(0x80+14); lcd_pos(0x4f);write_date(0X64); } if(s1num==5){write_com(0x80+11); lcd_pos(0x4f);write_date(0X4d); } if(s1num==6){write_com(0x80+9); lcd_pos(0x4f);write_date(0X79); } if(s1num==7){write_com(0x80+7); lcd_pos(0x4f);write_date(0X59); } if(flag==0){if(s1num==8){s1num=0;write_com(0x0c); lcd_pos(0x4f);write_date(0X38); TR0=1;}}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){while(!s2);if(s1num==1){miao++;if(miao==60)miao=0;write_sfm(10,miao);write_com(0x80+0x40+10);//指针回原位}if(s1num==2){fen++;if(fen==60)fen=0;write_sfm(7,fen);write_com(0x80+0x40+7);//指针回原位} if(s1num==3){shi++;if(shi==24)shi=0;write_sfm(4,shi);write_com(0x80+0x40+4);//指针回原位} if(s1num==4){day++;if(day==31)day=0;write_sfm1(14,day);write_com(0x80+14);//指针回原位}if(s1num==5){month++;if(month==13)month=0;write_sfm1(11,month);write_com(0x80+11);//指针回原位}if(s1num==6){year2++;if(year2==100)year2=0;write_sfm1(9,year1);write_com(0x80+9);//指针回原位}if(s1num==7){year1++;if(year1==100)year1=0;write_sfm1(7,year1);write_com(0x80+7);//指针回原位}}}if(s3==0){delay(5);if(s3==0){while(!s3);if(s1num==1){miao--;if(miao==-1)miao=59;write_sfm(10,miao);write_com(0x80+0x40+10); }if(s1num==2){fen--;if(fen==-1)fen=59;write_sfm(7,fen);write_com(0x80+0x40+7); }if(s1num==3){shi--;if(shi==-1)shi=23;write_sfm(4,shi);write_com(0x80+0x40+4); } if(s1num==4){day--;if(day==-1)day=30;write_sfm1(14,shi);write_com(0x80+14);}if(s1num==5){month--;if(month==-1)month=12;write_sfm1(11,shi);write_com(0x80+11);}if(s1num==6){year2--;if(year2==-1)year2=99;write_sfm1(9,shi);write_com(0x80+9);}if(s1num==7){year1--;if(year1==-1)year1=99;write_sfm(7,shi);write_com(0x80+7);}}}}}void timer0() interrupt 1。

基于51单片机多功能电子时钟设计报告

基于51单片机多功能电子时钟设计报告

单片机课程设计报告多功能电子数字钟姓名:学号:班级:指导教师:目录一课程设计题目-------------------------------- 3 二电路设计--------------------------------------- 4 三程序整体设计思路概述------------------- 5 四各模块程序设计及流程图---------------- 6 五程序及程序说明见附录------------------- ** 六课程设计心得及体会---------------------- 11 七参考资料--------------------------------------- 12一题目及要求本次单片机课程设计在Proteus软件仿真平台下实现,完成电路设计连接,编程、调试,仿真出实验结果。

具体要如下:用8051单片机设计扩展6位数码管的静态或动态显示电路,再连接几个按键和一个蜂鸣器报警电路,设计出一个多功能电子钟,实现以下功能:(1)走时(能实现时分秒,年月日的计时)(2)显示(分屏切换显示时分秒和年月日,修改时能定位闪烁显示)(3)校时(能用按键修改和校准时钟)(4)按时报警(能定点报时)本次课程设计要求每一个学生利用Proteus仿真软件独立设计制作出电路图、完成程序设计和系统仿真调试,验收时能操作演示。

最后验收检查结果,评定成绩分为:(1)完成“走时+显示+秒闪”功能----合格(2)完成“校时修改”功能----中等(3)完成“校时修改位闪”----良好(4)完成“定点报警”功能,且利用资源少----优秀二电路设计(电路设计图见附件电路图)(1)采纳89C51型号单片机(2)采纳8位共阴数码管(3)因为单片机输出高电平常输出的电流不足以驱动数码管,因此在P0口与8位数码管之间加74LS373来驱动数码管(4)P2口与数码管选择位直接加74LS138译码器(5)蜂鸣器接口。

51单片机电子时钟设计报告

51单片机电子时钟设计报告

51单片机电子时钟设计报告一、引言电子时钟是一种常见的电子产品,它通过控制数字显示器的数字显示,来实现时间的显示功能。

本报告将介绍一种基于51单片机的电子时钟设计方案。

二、系统架构本电子时钟系统采用分级结构,分为实时时钟电路、中央处理器、显示器等核心模块。

实时时钟电路模块负责提供系统的时钟信号,中央处理器负责对时间进行处理和控制,显示器用于显示时间。

三、硬件设计1.实时时钟电路实时时钟电路采用DS1302芯片,该芯片集成了时钟实时计数器,能够提供精确的时钟信号。

同时,芯片还内置了电池供电电路,当外部电源中断时,电子时钟可以通过电池继续工作。

2.中央处理器中央处理器使用51单片机,它具有较强的计算和控制能力,可以方便地对时间进行处理和控制。

通过与实时时钟电路的通信,中央处理器可以获取当前时间,并进行各种计算操作。

3.显示器显示器采用数码管,可以直观地显示时间。

通过中央处理器控制,可以实现小时、分钟、秒钟的显示,并且可以进行亮度的调节。

四、软件设计1.时钟管理中央处理器的软件主要负责对时间的管理。

它可以从实时时钟电路中获取当前时间,并根据需要进行时间的累加和更新。

同时,中央处理器还可以通过按键实现时间的手动调节。

2.显示控制中央处理器通过对数码管的控制,实现时间的显示功能。

它可以根据当前时间的变化,动态地更新数码管的显示内容。

同时,还可以通过按键控制,对数码管的亮度进行调节。

五、系统特点1.精确性高:采用DS1302芯片实时时钟电路,能够提供精确的时钟信号,确保时间的准确性。

2.易于操作:中央处理器软件通过按键实现时间的调节,操作简单方便。

3.显示效果好:采用数码管进行显示,显示效果清晰,易于观察时间。

六、应用领域本电子时钟设计适用于各种需要显示时间的场景,如家庭、办公室、学校等。

七、总结本报告介绍了一种基于51单片机的电子时钟设计方案。

通过实时时钟电路提供精确的时钟信号,中央处理器进行时间管理和控制,显示器进行时间的显示。

基于51单片机的多功能电子时钟的设计

基于51单片机的多功能电子时钟的设计

基于51单片机的多功能电子时钟的设计Abstract:The design of a multi-functional electronic clock based on 51 single-chip microcontroller is presented in this paper. The clock is designed with the purpose of providing userswith accurate timekeeping, a variety of alarm clock settings, as well as other useful features such as temperature display and automatic daylight saving time adjustment. The clock employs a 4-digit LED display to show the clock time, and it is also equipped with buttons that facilitate easy programming and adjustment of its functions. The system operates on a 5V power supply and is designed to be compact and user-friendly.Introduction:Electronic clocks have become a ubiquitous feature in modern society, with nearly every household and workplace owning at least one. The accuracy and versatility of these clocks make them a highly useful tool for everyday life. However, with the rise of mobile devices, many people have begun to rely solely on their smartphones for timekeeping purposes. Despite this trend, there is still a demand for electronic clocks that provide additional features besides just timekeeping. This paper presents the design of a multi-functional electronic clock based on 51 single-chip microcontroller, which can cater to this demand.Design:The electronic clock was designed using a 51 single-chip microcontroller as the main control unit. This was chosen dueto its high processing power, low cost, and widespread availability. The clock was designed to be highly accurate, employing a real-time clock module to ensure precise timekeeping. The clock displays the time on a 4-digit LED display, with separate displays for hours, minutes and seconds. The display is of the common anode type, and its brightness can be adjusted using a potentiometer.The clock provides various alarm clock functions, including a snooze function and the ability to set multiple alarms. These functions are accessed using buttons on the clock, which make programming and adjustment easy. The clock also has a temperature display function, which uses a temperature sensor to provide accurate temperature readings. The display can show the temperature in either Celsius or Fahrenheit, depending on user preference. In addition, the clock has an automatic daylight saving time adjustment function, which adjusts the clock time automatically according to the user's location.Results:The electronic clock performed exceptionally well, accurately keeping time and providing all the functions as intended. The clock's design was compact and unobtrusive, making it suitable for both home and office use. The clock's ability to adjust for daylight saving time automatically was also highly appreciated by users, as it eliminated the need for manual adjustments several times a year.Conclusion:In conclusion, the design of a multi-functional electronic clock based on 51 single-chip microcontroller was presented in this paper. The clock proved to be highly accurate and versatile, offering a variety of usefulfunctions in addition to timekeeping. The compact and user-friendly design of the clock makes it suitable for a wide range of applications, including both home and office use. The clock's automatic daylight saving time adjustment function proved to be particularly useful, eliminating the need for manual adjustments.。

基于51单片机的电子闹钟设计报告

基于51单片机的电子闹钟设计报告

*********大学********学院电子闹钟设计报告专业:******学号:******姓名:*******一.仿真电路图:二. 器件30P电容2个12MHZ晶振1个喇叭1个38译码器1个89c52单片机1个按键4个5V电源300欧电阻7个8位共阴数码管1个三.流程图:电子闹钟主流程图:调时、调日期、调星期流程图:倒计时结束流程图:音乐播放流程图:闹铃功能流程图:四.功能介绍:有计时,计日期,计星期,调时、调日期、调星期、闹钟、调闹钟、音乐闹铃、秒表、99秒倒计时、60秒倒计时、5秒倒计时、倒计时结束播放提醒音乐、直接按键播放音乐共计15个小的功能,分为四个功能模块,用四个按键来实现1.调时,查看日期以及调日期,查看星期以及调星期按键1进入该模块后,显示该模块的界面“1234”,分别代表在该界面中要用到的按键编号。

此时按1即进入调时界面,显示当前时间,按1秒加1,按2分加1,按3时加1,按4退出该界面而回到模块界面。

此时按2即进入查看日期以及调日期的界面,显示当前日期,按1天加1,按2月加1,按3年加1,按4退出该界面而回到模块界面。

此时按3即进入查看星期以及调星期的界面,显示当前星期,按1星期加1,按4退出该界面而回到模块界面。

此时按4则退出功能模块1而回到主界面。

2.调闹钟进入该模块时,显示闹钟时间,按1秒加1,按2分加1,按3时加1,按4退出调闹钟模块而回到主界面3.秒表,倒计时进入该模块后,显示界面“12 4”,分别代表在该界面中要用到的按键编号。

此时按1进入秒表计时状态,按4退出,回到模块界面。

此时按2进入99秒倒计时状态,按1切换到60秒倒计时,按1切换到5秒倒计时,在倒计时进行中,按4可以回到模块界面。

此时按4,可以回到主界面4.音乐进入该界面后,显示界面“00-00-00”,按1播放歌曲1,按2播放歌曲2,按3播放歌曲3,按4播放歌曲4,在播放歌曲时,按4可以结束播放音乐并且回到主界面。

51单片机电子时钟课程设计报告

51单片机电子时钟课程设计报告

第一部分设计任务和要求1.1单片机课程设计内容 (2)1.2单片机课程设计要求 (2)1.3系统运行流程 (2)第二部分设计方案2.1总体设计方案说明 (2)2.2系统方框图 (3)2.3系统流程图 (3)第三部分主要器材及基本简介3.1主要器材 (4)3.2主要器材简介 (4)第四部分系统硬件设计4.1最小系统 (6)4.2LCD显示电路 (6)4.3键盘输入电路 (7)4.4蜂鸣器和LED灯电路 (7)第五部分仿真电路图与仿真结果 (8)第六部分课程设计总结 (8)第七部分参考文献 (9)附录A 实物图附录B 系统源程序第一部分设计任务和要求1.1单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。

1.2单片机课程设计要求1.能实现年、月、日、星期、时、分、秒的显示;2.能实现调时功能;3.能实现12/24小时制切换;4.能实现8 : 00—22 : 00整点报时功能。

1.3系统运行流程程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。

若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。

若没到则循环执行。

计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。

调时闪烁中断服务程序用于被调单元的闪烁显示。

调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。

实现了对时间的设置和修改、LCD显示数值等主要功能。

相关的调整是靠对功能键的判断来实现的。

第二部分设计方案2.1总体设计方案说明1.程序设计及调试根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。

2.硬件焊接及调试根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。

3.后期处理对设计过程进行总结,完成设计报告。

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

基于51的电子闹钟设计报告(附原理图、PCB图、程序)

成都信息工程学院第五届嵌入式创新技术大赛基于MCS51的智能电子闹钟设计报告姓名学院班级实物图目录1.电子时钟的设计原理和方法 (1)1.1设计原理 (1)1.2 硬件电路的设计 (1)1.2.1 STC89C51RC简介 (1)1.2.2 键盘电路的设计 (2)1.2.3蜂鸣器驱动电路 (3)1.2.4 数码管驱动电路 (3)1.2.5 电源电路 (4)1.3软件部分的设计 (4)1.3.1主程序部分的设计 (4)1.3.2中断计时器及时间进位 (5)1.3.3 闹钟子函数 (7)1.3.4 按键扫描 (8)1.3.5 时钟闹钟设置 (9)1.3.6 显示数字函数 (10)1.3.7 显示界面函数 (10)1.3.8 闹钟记录及读取 (11)2.硬件调试 (13)附录A:电路原理图 (15)附录B:电路PCB图 (16)附录C:源程序 (17)1.电子时钟的设计原理和方法1.1设计原理系统框图1.2硬件电路的设计1.2.1 STC89C51RC简介STC89C52R CSTC89C51RC是一种带8K闪烁可编程可擦除只读存储器(FPETOM-FlashProgrammabalandErasableReadOnlyMemory )的低电压、高性能CMOS8位微型处理器,即单片机芯片。

单片机的可擦除只读存储器可以反复擦除1000次,内部FLASH 擦写次数为100000次以上。

该芯片使用高密度非易失存储制造技术,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU 和闪烁存储器集成在单个芯片中,使得STC89C51RC 成为了一种性价比极高的微型处理器芯片,在许多电路设计中都得到了应用。

STC89C51RC 单片机特点:工作电压:5.5V-3.4V 工作频率:0-40MHz 用户应用程序空间:8K 片上集成128*8RAMISP (在系统可编程)/IAP (在应用可编程),无需专用编程器/仿真器可通过串口(P3.0/P3.1)直接下载用户程序EEPROM 功能共3个16位定时器/计数器,其中定时0还可以当成2个8位定时器使用外部中断4路通用异步串行口(UART ),还可用定时器软件实现多个UART 工作温度范围:0-75℃引脚说明:VCC:供电电压 GND :接地P0:P0是一个8位漏级开路双向I/O 口,低8位地址复用总线端口。

基于51单片机的多功能电子时钟设计

基于51单片机的多功能电子时钟设计

设计研发2021.07基于51单片机的多功能电子时钟设计杨洁,叶晶晶(黔南民族师范学院物理与电子科学学院,贵州都匀,558000 )摘要:单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、深受初学者喜欢。

以STC90C58为核心控制芯片,DS1302为时钟芯片,DS18B20釆集温度,完成多功能电子时钟的设计。

该设计能够准确显示年、月、日、星期、时、分、秒及温度,通过按键可以调整年、月、日、星期、时、分、秒、12/24小时转换、整点提示以及闹钟,还可显示阴阳历。

关键词:电子时钟;单片机;阴阳历转换;DS1302 ; DS18B20Design of Multi-function Clock Based on 51 MCUYang Jie, Ye Jingjing(College of physics and electronic science, Qiannan Normal University for N&tionalities, DuyunGuizhou, 558000)Abstract : MCU is small in size, light in weight, strong in anti-interference ability, low in environmentai requirements, low in price, high in reliability, good in flexibility, and is popular among beginners. Stc90c58 as the core control chip, DS1302 as the clock chip, DS18B20 temperature acquisition, complete the design of multi —functional electronic clock. The design can accurately display the year, month, day, week, hour, minute, second and temperatore. Through the button, you can adjust the year, month, day, week, hour, minute, second, 12/24-hour conversion, whole point prompt and alarm clock, and display the lunar calendar.Keywords : Electronic clock ; MCU ; The lunar conversion ; DS 1302 ; DS18B200引言目前单片机的使用已经十分广泛,本次设计的多功能电 子钟能完成年、月、日、星期、时、分、秒的显示与调整,并且还 添加了温度、阴阳历转换显示及闹钟、12/24小时转换、整点提示等功能,有较强的应用性。

基于51单片机的多功能数字电子钟的设计

基于51单片机的多功能数字电子钟的设计

目录1 绪论 (1)1.1电子时钟的研究背景 (1)1.2电子时钟的国内外研究现状 (2)2 AT89S51单片机简介 (3)3 硬件系统设计 (4)3.1系统框架设计 (4)3.2模块设计 (5)3.2.1单片机系统电路 (5)3.2.2复位电路 (6)3.2.3晶振电路 (7)3.2.4数码管显示驱动电路 (7)3.2.5定时报时电路设计 (9)3.2.6按钮设置电路 (10)4 软件系统设计 (11)4.1主程序流程图 (11)4.2系统设计的源程序 (12)总结 (20)参考文献 (21)1 绪论1.1电子时钟的研究背景20世纪末,电子技术得到了极速的发展,毫无疑问,在其推动下,现代电子产品以及各种高科技产品几乎渗透到了社会的各个领域,这有力地推动了社会生产力的发展和社会信息化程度以及综合科技水平的提高,但产品更新换代的频率也越来越快。

随着科技的发展社会的进步和全球化竞争的日益激烈,人们对数字钟的要求也越来越高,传统的时钟已不能满足人们的需求。

多功能电子钟不管在性能还是在样式亦或是用途上都发生了重大的变化,许多电子钟都已具备电子闹钟、电子秒表、温度检测等功能。

同时单片机在多功能数字钟中的应用已是非常普遍的。

多功能电子时钟除了具有时钟的功能外还可以包含对环境温度检测的功能。

温度是一种最基本的环境参数。

在各个行业生产及日常生活中,对温度的测量及控制始终占据着非常重要的地位。

目前,典型的温度检测控制系统由模拟式温度传感器、A/D转换电路和各种单片机组成。

由于模拟式温度传感器输出的模拟信号必须经过A/D转换环节转换为数字信号后才能与单片机等微处理器接口进行读写的操作,所以硬件电路会比较复杂,成本较高。

而以DS18B20为代表的新型单线总线数字式温度传感器集温度测量和A/D转换于一体,这类传感器可以直接输出数字量,同时与单片机接口电路结构非常简单,可以广泛用于距离远、节点分布多的场合,具有较强推广应用价值。

基于51单片机的多功能电子时钟设计

基于51单片机的多功能电子时钟设计

单片机应用设计入门课程设计尹康2012029010010一. 题目利用51单片机设计一个电子时钟要求:能够用数码管显示小时、分钟、秒,各2位数字;系统应具有复位电路、电源电路等基本组成部分;能够进行时间设定;能够进行日期设定。

二. 方案设计1.系统框图直流电源复位电路独立按键控制部分STC89C51显示部分(8位共阴数码管)2.设计说明用单片机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断一次并当作一个计数,设定定时1秒的中断计数初值为100,每中断一次中断计数初值减1,当减到0时,则表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h 到了。

采用动态显示法实现LED显示:通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显示数字。

由于数码管扫描周期很短,由于人眼的视觉暂留效应,使数码管看起来总是亮的,从而实现了各种显示。

该电子时钟由STC89C51,BUTTON,共阴数码管等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ。

60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。

没有按键按键按下时,时钟正常运行。

当按下调节时钟按键change,时钟就会进入设置时间界面(时钟不会停止工作),重复按下change 键,系统状态在调整小时、调整分钟、正常显示之间切换。

按add或reduce键,就可以数值进行加1或减1操作。

三. 电路设计1.整体电路:2.8位共阴数码管电路:3.单片机系统:4.独立按键电路:5.晶振6.复位电路:7.电源电路:四. 程序设计#include<reg52.h> //包含单片机寄存的头文件sbit led1=P1^0; sbit led2=P1^2; sbit led5=P1^5; sbit du=P2^6;//段选sbit we=P2^7;//位选sbit s1=P3^4;sbit s2=P3^5;sbit s3=P3^6;sbit s4=P3^7;sbit beep=P2^3; sbit dot=P0^7; unsigned char shi,fen,miao,unit,keyv,key,av,ashi,afen,ami ao;void delay() //1ms{unsigned char a,b;for(b=102;b>0;b--)for(a=3;a>0;a--);}void delay5(void) //误差5ms{unsigned char a,b;for(b=15;b>0;b--)for(a=152;a>0;a--);}void delayhalf (void) //误差0.5s{unsigned char a,b,c;for(c=23;c>0;c--)for(b=152;b>0;b--)for(a=70;a>0;a--);}void display( unsigned char h,f,s){unsigned char codeduma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f,0x77,0x38}; unsigned char codemawei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0 xbf,0x7f};unsigned char shiwan,wan,qian,bai,shi,ge;shiwan=h/10;wan=h%10;qian=f/10;bai=f%10;shi=s/10;ge=s%10;P0=duma[shiwan];du=1;du=0;P0=mawei[0];we=1;we=0;delay();P0=duma[wan];dot=1;du=1;du=0;dot=0;P0=mawei[1];we=1;we=0;delay();P0=duma[qian]; du=1;du=0;P0=mawei[2];we=1;we=0;delay();P0=duma[bai]; dot=1;du=1;du=0;dot=0;P0=mawei[3];we=1;we=0;delay();if(key!=1&&key!=2) {P0=duma[shi];du=1;du=0;P0=mawei[4];we=1;we=0;delay();P0=duma[ge];du=1;du=0;P0=mawei[5];we=1;we=0;delay();}if(key==1||key==2) {P0=duma[10];du=1;du=0;P0=mawei[4]; we=1;we=0;delay();P0=duma[11]; du=1;du=0;P0=mawei[5]; we=1;we=0;delay();}P0=0xff;we=1;we=0;}passtime(){if(unit==100) {miao++;unit=0;led1=!led1;led2=!led2; }if(miao==60) {fen++;miao=0;}if(fen==60) {shi++;fen=0;}if(shi==24) {shi=0;} }void InitTimer0(void)//10ms{TMOD = 0x01;TH0 = 0x0DC;TL0 = 0x00;EA = 1;ET0 = 1;TR0 = 1;unit=0;}void Timer0Interrupt(void) interrupt 1 {TH0 = 0x0DC;TL0 = 0x00;unit++ ;//add your code here! passtime();}void adjustment(void){if(s1==0){delay5();if(s1==0){while(!s1);amiao=0;key++;led5=0;if(key==5){key=0;TR0=1;led5=1;}}}//s1 countif(s2==0){delay5();if(s2==0){while(!s2);if(key==1)//alram{ashi++;if(ashi==24){ashi=0;}}if(key==2){afen++;if(afen==60){afen=0;}}//alramif(key==4)/////{miao=0;TR0=0;fen++;if(fen==60){fen=0;}}if(key==3)///{miao=0;TR0=0;shi++;if(shi==24){shi=0;}}}}//adj +///////////////////adj-if(s3==0) {delay5();if(s3==0){while(!s3);if(key==1)//alram{ashi--;if(ashi==-1){ashi=23;}}if(key==2){afen--;if(afen==-1){afen=59;}}//alramif(key==4)//{miao=0;TR0=0;fen--;if(fen==-1){fen=59;}}if(key==3)///{miao=0;TR0=0;shi--;if(shi==-1){shi=23;}}}}//adj -}void alarm(void){if(fen!=afen){av=0;}if(av==0){if(shi==ashi&&fen==afen){beep=0;delayhalf();beep=1;delayhalf();beep=0;delayhalf();beep=1;delayhalf();}}//av==0}********************************* 主函数*********************************void main(void){ashi=7;afen=0;InitTimer0();led2=0;while(1){if(keyv==0)//close display{if(s4==0){delay5();if(s4==0){while(!s4);keyv=1;av=1;}}}if(keyv==1){if(s4==0){delay5();if(s4==0){while(!s4); keyv=0; } }}//close displayif(keyv==0){adjustment();if(key!=1&&key!=2){display(shi,fen,miao);}if(key==1||key==2){display(ashi,afen,amiao);}}if(key==0||key==3||key==4){alarm();}}//while}五. 实物仿真六. 心得体会1.单片机,是集CPU ,RAM ,ROM ,定时器,计数器和多种接口于一体的微控制器,自20世纪70年代问世以来,以其极高的性价比,受到人们的重视和关注,应用很广、发展很快。

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

单片机课程设计报告多功能电子数字钟姓名:学号:班级:指导教师:目录一课程设计题目-------------------------------- 3 二电路设计--------------------------------------- 4 三程序总体设计思路概述------------------- 5 四各模块程序设计及流程图---------------- 6 五程序及程序说明见附录------------------- ** 六课程设计心得及体会---------------------- 11 七参考资料--------------------------------------- 12一题目及要求本次单片机课程设计在Proteus软件仿真平台下实现,完成电路设计连接,编程、调试,仿真出实验结果。

具体要如下:用8051单片机设计扩展6位数码管的静态或动态显示电路,再连接几个按键和一个蜂鸣器报警电路,设计出一个多功能电子钟,实现以下功能:(1)走时(能实现时分秒,年月日的计时)(2)显示(分屏切换显示时分秒和年月日,修改时能定位闪烁显示)(3)校时(能用按键修改和校准时钟)(4)定时报警(能定点报时)本次课程设计要求每个学生使用Proteus仿真软件独立设计制作出电路图、完成程序设计和系统仿真调试,验收时能操作演示。

最后验收检查结果,评定成绩分为:(1)完成“走时+显示+秒闪”功能----及格(2)完成“校时修改”功能----中等(3)完成“校时修改位闪”----良好(4)完成“定点报警”功能,且使用资源少----优秀3二电路设计(电路设计图见附件电路图)(1)采用89C51型号单片机(2)采用8位共阴数码管(3)因为单片机输出高电平时输出的电流不足以驱动数码管,所以在P0口与8位数码管之间加74LS373来驱动数码管(4)P2口与数码管选择位直接加74LS138译码器(5)蜂鸣器接P3.7口。

因为单片机输出高电平时输出的电流不足以驱动蜂鸣器所以蜂鸣器,所以P3.7口与蜂鸣器直接接反相器再接蜂鸣器的一端,蜂鸣器的另一端接5V电源。

这样当P3.7口给高电平时蜂鸣器导通名声。

否则反之。

(6)单片机XTAL1,XTAL2端接外部时钟电路(时钟电路参考课本),RAT端接复位电路(复位电路参考课本)。

EA端接5V电源,使得单片机读取片内程序。

(7)修改时间控制开关key1接p1.0口,key2至key7用来对时间,日期,闹钟时间的修改,依次于p1.1至p1.6。

key2用来显示日期并做修改的开关,接于INT0(p3.2)口。

key3用来显示闹钟时间并做预置的开关,接于INT1(p3.3)口。

所有按键的另一端接地。

三总体设计思路概述5(1), 数码管显示使用动态显示,每四毫秒轮流显示一个数码管.一个循环耗时32ms(这样会有微闪烁可设置更快的动态显示)(2), 设置四个中断,高:定时器1溢出中断 外部中断外部中断定时器1溢出中断. A.首先允许前三个中断,当没有出现T0, T1中断时主程序在判键并且计时器0在计时.每隔4ms 定时器0溢出中断,动态轮流显示一个数码管.用LED_LP 做标志,计中断次数.每中断250次秒加一,每60秒分加一, 时 日 月 年依规律类推(不用判断平润年).B.当出现T0(显示日期并做修改)或T1(显示闹钟定时时间并可修改定时时间)中断时都会自动关闭计时器0,此时软件控制打开计数器1,用它继续计时并且如A 中用来动态显示日期或闹钟设置的时间,同时每个中断子程序都是在判键,通过按键修改日期或设置闹钟时间.此时已经是计数器1中断级别最高,同样每4ms 动态轮流显示数码管,此时数码管显示的是日期或定时时间.当修改完时间或定时时间,人工弹出按键,中断结束返回主程序,在返回前关闭定时器1.这样,在没有T0,T1中断时计数器0中断级别最高.四 各模块程序设计及流程图(1) 主程序判键修改时间及走时:流程图:(2)定时器0每隔4ms溢出中断(优先级别最低)流程图:7(3) 外部中断0(优先级别第二)流程图:N(4) 外部中断1(优先级别第三)流程图:N9(5) 定时器0每隔4ms溢出中断(优先级别最高)流程图:六课程设计心得体会:此次课程设计是大学里来第二次课程设计,于我的感觉是这是一次与实际最贴切的一次课程设计,亦或是说实践。

首先我的心得体会有如下几点(1)万事开头难,要做好单片机课程设计必须要有足够的耐心与兴趣。

要反复编程调试,检验。

而本次软件编程我反复调试了多达几十次。

(2)要想全面的做好这次课程设计,必须要全面统筹,细心规划好自己所需使用的单片机内部资源以及硬件资源。

并尽量做到少用资源而达到最大实用效果。

同时也要单个功能慢慢编程调试,而不要好高骛远,急功心切。

(3)第一次设计编写这样较为难而大的课程设计必须要做到对单片机基础硬件与软件的熟练掌握,尤其单片机里汇编语言指令。

只有做到融汇贯通方能运筹帷幄。

(4)做好课程设计要学会借鉴别人好的思想与技巧,而教材上就有许多很好的例子。

同时要将每次单片机实验灵活运用于此次课程设计。

11七参考资料:(1) 单片机授课教材(2) 单片机网络资源八.程序:SHAN EQU20H ;秒闪烁标志BUFF_KEY EQU 21H ;键盘键LED1 EQU22H ;数码管显示缓存LED2 EQU 23HLED3 EQU 24HLED4 EQU 25HLED5 EQU 26HLED6 EQU 27HLED_LP EQU 28H ;计时标志HOR EQU 30H ;小时值缓存MIN EQU 31H ;分钟值缓存SEC EQU 32H ;秒值缓存NHOREQU 33H ;闹钟时间缓存NMIN EQU 34HNSEC EQU 35HYER EQU 36H ;年月日缓存MOT EQU 37HDAT EQU 38HSXX EQU 39HF_BEEP BIT 01HLED_PORTEQU P0DIG_PORT EQU P2SW0BIT P3.2SW813BIT P1.0SW1 BIT P1.1SW2 BIT P1.2SW3 BIT P1.3SW4 BIT P1.4SW5 BIT P1.5SW6 BIT P1.6SW7 BIT P3.3;-----------------------------------------------------ORG 0000HLJMP MAINORG 000BHLJMP T0_INTORG 0003HLJMP T_0ORG 0013HLJMP T_1ORG 001BHLJMP T1_INT ORG 100HMAIN: MOV SP ,#40HMOV PSW,#00HMOV R0,#7FH ;初始化RAM区,CLR_RAM:MOV A,#00HMOV @R0,ADJNZ R0,CLR_RAMMOV P1,#0FFHMOV P2,#0FFHMOV P0,#0FFHMOV P3,#0FFHMOV TMOD,#11HMOV TH0,#0F0H ;T0=4MSMOV TL0,#060HMOV NHOR,#100MOVYER,#12MOVMOT,#06MOVDAT,#17CLR CMOV P3.7,CSETB15PT1 ;定时器1中断级别最高CLRPT0 ;定时器0中断级别最低SETB TR0 ;开定时器0SETB ET0 ;允许定时器0中断SETBEX0 ;允许外部中断0SETB EX1;允许外部中断1SETB EA ;允许所有中断;---------------------------------------------按键预置时间WAIT_KEY:MOV A,NHORCJNEA,HOR,LNNNMOVA,NMINCJNEA,MIN,LMNNMOVA,NSECCJNEA,SEC,LNNNSETB CMOV P3.7,CLJMP LNNN LMNN:MOV A,NMINADD A,#01CJNEA,MIN,LNNNMOVA,NSECCJNEA,SEC,LNNNCLR CMOV P3.7,C LNNN:JNB SW8,LSNNMOVSXX,#0LJMPWAIT_KEYLSNN:JNB SW1,SW1_OK17JNB SW2,SW2_OKJNB SW3,SW3_OKJNB SW4,SW4_OKAJNB SW5,SW5_OKAJNB SW6,SW6_OKAJMP WAIT_KEYSW4_OKA: JMP SW4_OKSW5_OKA: JMP SW5_OKSW6_OKA: JMP SW6_OKSW1_OK: MOV SXX,#01MOV A,HORCJNE A,#23,SW1_OVERMOV HOR,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW1_OVER:INC HOR ;时加1MOV R7,HORSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW2_OK: MOV SXX,#01MOV A,HORCJNE A,#00,SW2_OVERMOV HOR,#23SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW2_OVER:DEC HOR ;时减1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW3_OK: MOV SXX,#0219MOV A,MINCJNE A,#59,SW3_OVERMOV MIN,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW3_OVER:INC MIN ;分加1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW4_OK: MOV SXX,#02MOV A,MINCJNE A,#00,SW4_OVERMOV MIN,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW4_OVER:DEC MIN ;分减1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW5_OK: MOV SXX,#03MOV A,SECCJNE A,#59,SW5_OVERMOV SEC,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW5_OVER:INC SEC ;秒加1SETB F_BEEPLCALL DELCLR F_BEEP21JMP WAIT_KEYSW6_OK: MOV SXX,#03MOV A,SECCJNE A,#00,SW6_OVERMOV SEC,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEYSW6_OVER:DEC SEC ;秒减1SETB F_BEEPLCALL DELCLR F_BEEPJMP WAIT_KEY;-------------------------------------------------------------------- DEL: MOV R5,#07 ;按一次键处理一次DEL01: MOV R6,#200DEL02: MOV R7,#200DJNZ R7,$DJNZ R6,DEL02DJNZ R5,DEL01RETBIN_BCD: MOV B,#10DIV ABRET;--------------------------------------------------------------------T0_INT: PUSH ACCPUSH PSWMOV TH0,#0F0H;T0=4MSMOVTL0,#060H INC LED_LPMOV A,LED_LPCJNE A,#250,CONT_SCAN ;250*4MS=1SMOV LED_LP,#00HINC SECMOV A,SECCJNE A,#60,CONT_SCANMOV SEC,#00HINC MIN23MOV A,MINCJNE A,#60,CONT_SCANMOV MIN,#00HINC HORMOV A,HORCJNE A,#24,CONT_SCANMOV HOR,#00HINC DATMOVA,DATCJNEA,#30,CONT_SCANMOV DAT,#00INC MOTMOVA,MOTCJNEA,#12,CONT_SCANMOV MOT,#00INC YERMOVA,YERCJNEA,#99,CONT_SCANLCALL DEL CONT_SCAN:MOV A,SECMOV B,#02DIV ABMOV A,BCJNE A,#00,LOPKMOVSHAN,#10 LOPK: CJNE A,#01,LOPLMOVSHAN,#11 LOPL:MOV A,SXXCJNE A,#01,LK1MOVA,LED_LPMOVB,#125DIV AB25CJNEA,#0,LLL1MOVLED1,#10MOVLED2,#10LJMP LLL2 LK1:MOV A,SXXCJNE A,#02,LK2MOVA,LED_LPMOVB,#125DIV ABCJNEA,#0,LLL1MOVLED3,#10MOVLED4,#10LJMP LLL3 LK2:MOV A,SXXCJNE A,#03,LLL1MOV A,LED_LPMOV B,#125DIV ABCJNEA,#0,LLL1MOV LED5,#10MOV LED6,#10LJMP LKMMLLL1:MOV A,HORLCALL BIN_BCDMOV LED2,BMOV LED1,ALLL2:MOV A,MINLCALL BIN_BCDMOV LED4,BMOV LED3,A27LLL3:MOV A,SECLCALL BIN_BCDMOV LED6,BMOV LED5,ALKMM:MOV A,LED_LPMOV B,#08DIV ABMOV A,BRL AMOV DPTR,#TAB_SCANJMP @A+DPTRTAB_SCAN: AJMP SCAN_L1AJMP SCAN_L2AJMP SCAN_L3AJMP SCAN_L4AJMP SCAN_L5AJMP SCAN_L6AJMP SCAN_L7AJMP SCAN_L8SCAN_L1: MOV DIG_PORT,#0MOV A,LED1JMP END_SCANSCAN_L2: MOV DIG_PORT,#1MOV A,LED2JMP END_SCANSCAN_L3: MOV DIG_PORT,#2MOV A,#11JMP END_SCANSCAN_L4: MOV DIG_PORT,#3MOV A,LED3JMP END_SCANSCAN_L5: MOV DIG_PORT,#4MOV A,LED4JMP END_SCANSCAN_L6: MOV DIG_PORT,#5MOV A,SHANJMP END_SCANSCAN_L7: MOV DIG_PORT,#6MOV A,LED5JMP END_SCAN29SCAN_L8: MOV DIG_PORT,#7MOV A,LED6END_SCAN: MOV DPTR,#TAB_LEDMOVC A,@A+DPTRMOV LED_PORT,APOP PSWPOP ACCRETITAB_LED: DB 3FH,06H,5BH,4FH ;共阴0-9和(-)字码表DB66H,6DH,7DH,07HDB 7FH,6FH,00H,48H,40H;--------------------------------------------------进入日期显示T_0:PUSH ACCPUSH PSWMOVTH1,#0F0H ;T1=4MSMOV TL1,#060HSETB TR1SETB ET1;---------------------------------------RWAIT_KEY:JNB SW0,RLOOPCLR TR1POP PSWPOP ACC RETIRLOOP:JNB SW1,RSW1_OKJNB SW2,RSW2_OKJNB SW3,RSW3_OKJNB SW4,RSW4_OKJNB SW5,RSW5_OKAJNB SW6,RSW6_OKAJMP RWAIT_KEYRSW5_OKA: JMP RSW5_OKRSW6_OKA: JMP RSW6_OKRSW1_OK: MOV A,YERCJNE A,#99,RSW1_OVERMOV YER,#00HSETBF_BEEPLCALL DELCLR F_BEEP31JMP RWAIT_KEYRSW1_OVER:INC YER ;年加1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW2_OK: MOV A,YERCJNE A,#00,RSW2_OVERMOV YER,#99SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW2_OVER:DEC YER ;年减1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW3_OK: MOV A,MOTCJNE A,#12,RSW3_OVERMOV MOT,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW3_OVER:INC MOT ;月加1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW4_OK: MOV A,MOTCJNE A,#00,RSW4_OVERMOV MOT,#12SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW4_OVER:DEC MOT ;月减133SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW5_OK: MOV A,DATCJNE A,#30,RSW5_OVERMOV DAT,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW5_OVER:INC DAT ;号加1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW6_OK: MOV A,DATCJNE A,#00,RSW6_OVERMOV NSEC,#30SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEYRSW6_OVER:DEC DAT ;号减1SETB F_BEEPLCALL DELCLR F_BEEPJMP RWAIT_KEY;--------------------------------------------------------------------T_1: PUSH ACCPUSH PSWMOVTH1,#0F0H ;T1=4MSMOV TL1,#060HMOV NHOR,#0SETB TR1SETB ET1NWAIT_KEY:JNB SW7,NLOOPCLR TR1POP PSWPOP ACC35RETINLOOP:JNB SW1,NSW1_OKJNB SW2,NSW2_OKJNB SW3,NSW3_OKJNB SW4,NSW4_OKJNB SW5,NSW5_OKAJNB SW6,NSW6_OKAJMP NWAIT_KEYNSW5_OKA: JMP NSW5_OKNSW6_OKA: JMP NSW6_OKNSW1_OK: MOV A,NHORCJNE A,#23,NSW1_OVERMOV NHOR,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW1_OVER:INC NHOR ;闹钟时加1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW2_OK: MOV A,NHORCJNE A,#00,NSW2_OVERMOV NHOR,#23SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW2_OVER:DEC NHOR ;闹钟时减1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW3_OK: MOV A,NMINCJNE A,#59,NSW3_OVERMOV NMIN,#00HSETB F_BEEPLCALL DEL37CLR F_BEEPJMP NWAIT_KEYNSW3_OVER:INC NMIN ;闹钟分加1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW4_OK: MOV A,NMINCJNE A,#00,NSW4_OVERMOV NMIN,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW4_OVER:DEC NMIN ;闹钟分减1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW5_OK: MOV A,NSECCJNE A,#59,NSW5_OVERMOV NSEC,#00HSETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW5_OVER:INC NSEC ;号加1SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW6_OK: MOV A,NSECCJNE A,#00,NSW6_OVERMOV NSEC,#59SETB F_BEEPLCALL DELCLR F_BEEPJMP NWAIT_KEYNSW6_OVER:DEC NSEC ;号减1SETB F_BEEPLCALL DEL39CLR F_BEEPJMP NWAIT_KEY;--------------------------------------------------------------------T1_INT: PUSH ACCPUSH PSWMOV TH1,#0F0H;T1=4MSMOVTL1,#060HINC LED_LPMOV A,LED_LPCJNE A,#250,RCONT_SCAN ;250*4MS=1SMOV LED_LP,#00HINC SECMOV A,SECCJNE A,#60,RCONT_SCANMOV SEC,#00HINC MINMOV A,MINCJNE A,#60,RCONT_SCANMOV MIN,#00HINC HORMOV A,HORCJNE A,#24,RCONT_SCANMOV HOR,#00HLCALL DEL RCONT_SCAN:JNB SW0,LPP1JNBSW7,LPP2LPP1:MOV A,YERLCALL BIN_BCDMOV LED2,BMOV LED1,AMOV A,MOTLCALL BIN_BCDMOV LED4,BMOV LED3,AMOV A,DATLCALL BIN_BCDMOV LED6,BMOV LED5,AMOV A,LED_LPMOV B,#08DIV AB41MOV A,BRL AMOV DPTR,#RTAB_SCANJMP @A+DPTRRTAB_SCAN:AJMP RSCAN_L1AJMP RSCAN_L2AJMP RSCAN_L3AJMP RSCAN_L4AJMP RSCAN_L5AJMP RSCAN_L6AJMP RSCAN_L7AJMP RSCAN_L8RSCAN_L1: MOV DIG_PORT,#0MOV A,LED1JMP REND_SCANRSCAN_L2: MOV DIG_PORT,#1MOV A,LED2JMP REND_SCANRSCAN_L3: MOV DIG_PORT,#2MOV A,#12JMP REND_SCANRSCAN_L4: MOV DIG_PORT,#3MOV A,LED3JMP REND_SCANRSCAN_L5: MOV DIG_PORT,#4MOV A,LED4JMP REND_SCANRSCAN_L6: MOV DIG_PORT,#5MOV A,#12JMP REND_SCANRSCAN_L7: MOV DIG_PORT,#6MOV A,LED5JMP REND_SCANRSCAN_L8: MOV DIG_PORT,#7MOV A,LED6REND_SCAN:MOV DPTR,#TAB_LEDMOVC A,@A+DPTRMOV LED_PORT,APOP PSW POP ACC43RETI;----------------------------------------LPP2: MOV A,NHORLCALL BIN_BCDMOV LED2,BMOV LED1,AMOV A,NMINLCALL BIN_BCDMOV LED4,BMOV LED3,AMOV A,NSECLCALL BIN_BCDMOV LED6,BMOV LED5,AMOV A,LED_LPMOV B,#08DIV ABMOV A,BRL AMOV DPTR,#NTAB_SCANJMP @A+DPTRNTAB_SCAN:AJMP NSCAN_L1AJMP NSCAN_L2AJMP NSCAN_L3AJMP NSCAN_L4AJMP NSCAN_L5AJMP NSCAN_L6AJMP NSCAN_L7AJMP NSCAN_L8NSCAN_L1: MOV DIG_PORT,#0MOV A,LED1JMP NEND_SCANNSCAN_L2: MOV DIG_PORT,#1MOV A,LED2JMP NEND_SCANNSCAN_L3: MOV DIG_PORT,#2MOV A,#11JMP NEND_SCANNSCAN_L4: MOV DIG_PORT,#3MOV A,LED3JMP NEND_SCANNSCAN_L5: MOV DIG_PORT,#445MOV A,LED4JMP NEND_SCANNSCAN_L6: MOV DIG_PORT,#5MOV A,#11JMP NEND_SCANNSCAN_L7: MOV DIG_PORT,#6MOV A,LED5JMP NEND_SCANNSCAN_L8: MOV DIG_PORT,#7MOV A,LED6NEND_SCAN:MOV DPTR,#TAB_LEDMOVC A,@A+DPTRMOV LED_PORT,APOP PSW POP ACCRETIEND47。

相关文档
最新文档