单片机课程设计--数字钟

合集下载

单片机课程设计(电子钟)

单片机课程设计(电子钟)

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

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

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

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

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

关键词 : 单片机;数码管;数字时钟目录1 系统功能要求 (1)2 设计原理及方案论证 (2)2.1数字钟原理 (2)2.2电子时钟方案 (2)2.3数码管显示方案 (3)3 主控制器和外围器件 (4)3.1单片机主控芯片 (4)3.2 LED驱动芯片 (4)3.3 4x4矩阵键盘模块 (5)3.4 蜂鸣器模块 (5)3.5 下载线接口电路 (6)3.6 DS1302时钟模块 (6)3.7 单片机晶振模块 (7)4 系统硬件电路设计 (8)4.1 单片机整体功能模块图 (8)4.2 单片机蜂鸣器和数码管连接图 (8)4.2 单片机矩阵键盘连接图 (9)4.3 单片机时钟模块和晶振连接图 (9)5 软件程序设计 (10)6 实验测试部分 (20)6.1测试结果 (20)6.1.1电子钟正常的运行 (20)6.1.2电子钟矫正时间后的运行 (20)6.2测试结果分析与结论 (21)7总结 (22)8参考文献 (23)1 系统功能要求本次设计时钟电路,使用了AT89S52单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂。

数字电子钟单片机课程设计

数字电子钟单片机课程设计

数字电子钟单片机课程设计一、课程目标知识目标:1. 学生能理解数字电子钟的基本工作原理,掌握单片机在数字电子钟中的应用。

2. 学生能掌握数字电子钟的各功能模块(如计时、闹钟、显示等)的设计与实现。

3. 学生了解并掌握数字电子钟程序编写的基本方法,学会运用编程语言(如C 语言)进行程序设计。

技能目标:1. 学生能运用所学知识,设计并制作一个简易的数字电子时钟,具备基本的时间显示、闹钟等功能。

2. 学生能够独立完成程序编写,实现数字电子钟的基本功能,并具备一定的调试与优化能力。

3. 学生能够通过团队合作,发挥各自专长,共同完成课程设计任务。

情感态度价值观目标:1. 学生在课程学习中,培养对电子技术的兴趣和爱好,激发创新意识。

2. 学生通过实践活动,培养动手能力、解决问题的能力和团队协作精神。

3. 学生在学习过程中,树立正确的价值观,认识到科技对生活的重要性,增强社会责任感。

本课程针对高年级学生,课程性质为实践性较强的设计与制作类课程。

学生在前期课程中已具备一定的电子技术基础和编程能力,本课程旨在巩固和拓展这些知识。

在教学过程中,要求教师注重引导学生主动探索、实践,鼓励学生发挥创新能力,同时关注学生的个体差异,提供有针对性的指导。

通过课程目标的实现,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续相关课程的学习打下坚实基础。

二、教学内容1. 数字电子钟原理及单片机基础:包括时钟电路、计数器、寄存器等基本原理,以及单片机的内部结构、工作原理和编程接口。

- 教材章节:第一章 电子时钟原理;第二章 单片机基础- 内容列举:时钟电路设计、计数器应用、寄存器配置、单片机内部结构、I/O 口编程。

2. 数字电子钟功能模块设计:讲解并实践计时、闹钟、显示等模块的设计方法。

- 教材章节:第三章 数字电子钟设计;第四章 模块化设计- 内容列举:计时模块、闹钟模块、显示模块设计,模块间通信协议。

3. 程序设计与编写:学习数字电子钟的程序编写方法,运用C语言进行程序设计。

单片机设计数字钟实验报告

单片机设计数字钟实验报告

单片机实验报告——数字钟设计班级:学号:姓名:时间:一.实验目的1、进一步熟悉C的语法知识和keil环境;2、熟练掌握一些常用算法;3、熟悉keil的编写、下载、调试过程;4、了解单片机的工作原理和电路图;5、熟悉单片机的外围电路功能模块、LED灯、数码管模块以及键盘;6、熟练焊接技术。

二.实验器件三.数字钟设计原理数字钟实际是对标准频率计数的电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的时间信号必须做到准确稳定。

通常使用石英晶体振荡电路构成数字钟。

数字钟电子钟由以下几部分组成:按键开关部分,振荡电路部分,89c51单片机控制器,4位数码管显示部分,7407数码管驱动部分。

按键开关振荡电路89C51单片机控制器4位数码管显示7407列驱动四.流程图主程序流程图如图2.3所示,定时器T0中断服务程序流程图如2.4所示。

返回五.51单片机系统的硬件连接1、STC单片机最小系统硬件电路图如下2、硬件电路的设计该电路采用AT89C51单片机最小化应用,采用共阴7段LED数码管显示器,P2.4~P2.7口作为列扫描输出,P0口输出段码数据,P1.2,P1.1口接2个按钮开关,用于调时及功能误差,采用12Mhz晶振,可提高秒计时的精确度。

六.程序设计HOUR EQU 3AH ;赋值伪指令MIN EQU 3BHSEC EQU 3CHBUFF EQU 3DHORG 0000HAJMP MAINORG 000BH ;主程序入口AJMP PTF0ORG 0033H ;跳转到标号PTF0执行;**************************************************************;主程序MAIN: MOV HOUR, #00H ;时,分,秒,标记清零MOV MIN, #00HMOV SEC, #00HMOV BUFF, #00HMOV SP, #0EFH ;设堆栈指针MOV TH0, #0ECH ;定时器赋初值MOV TL0, #78HMOV 40H, #100 ;设循环次数MOV 41H, #2MOV TMOD , #1 ;写TMODMOV IP, #2 ;写IPMOV IE, #82HMOV R5,#0;开中断SETB TR0 ;启动定时器PTF0: SETB P1.2MOV TH0, #0ECHMOV TL0, #78HINC R5MOV R6,BUFFCJNE R6,#00H,BBMOV DPTR,#TAB1LJMP LOOP0BB:MOV DPTR,#TABLOOP0: CJNE R5,#1,LOOP1ACALL LOP0AJMP JKLOOP1:CJNE R5,#2,LOOP2ACALL LOP1AJMP JKLOOP2:CJNE R5,#3,LOOP3ACALL LOP2AJMP JKLOOP3:ACALL LOP3MOV R5,#0JK: DJNZ 40H, PTFORXRL BUFF, #0FFHMOV 40H, #100JNB P1.1, JFJNB P1.2, JSMOV R7, 41HCJNE R7, #1, AAAA: DJNZ 41H, PTFORMOV 41H,#2MOV A, SEC ;秒加1ADD A, #1DA AMOV SEC, ACJNE A, #60H, PTFORMOV SEC, #0 ;秒清零JF: MOV A, MIN ;分加1ADD A, #1DA AMOV MIN, ACJNE A, #60H,PTFORMOV MIN, #0 ; 分清零ACALL LEDJS: MOV A,HOURADD A,#1DA AMOV HOUR,A ;时加1CJNE A, #24H,PTFOR ;时加到24时否?是,清零MOV HOUR, #0PTFOR:RETILOP0: MOV A, MIN ;显示分钟的个位ANL A, #0FHMOVC A, @A+DPTRMOV P0,AMOV P2,#0F0HCLR P2.4CLR P0.4RETLOP1:MOV A, MIN ;显示分钟的十位SWAP AANL A, #0FHMOVC A, @A+DPTRMOV P0, AMOV P2, #0F0HCLR P2.5CLR P0.4RETLOP2: MOV A, HOUR ;显示时钟的个位ANL A, #0FHMOVC A, @A+DPTRMOV P0, AMOV P2, #0F0HCLR P2.6RETLOP3:MOV A, HOUR ;显示时钟的十位SWAP AANL A, #0FHMOVC A, @A+DPTRMOV P0, AMOV P2, #0F0HCLR P2.7CLR P0.4RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;不带小数点的字型码TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的字型码END七.系统调试及结果分析硬件调试硬件电路板中器件连接好后,先用万用表测试电路中有无虚焊短接之处,测试无误后,将板子通电,进行静态调试。

单片机数字时钟课程设计

单片机数字时钟课程设计

单片机数字时钟课程设计一、课程目标单片机数字时钟课程设计旨在让八年级学生在巩固已学电子技术知识的基础上,通过实践操作,实现以下目标:1. 知识目标:(1)理解单片机的基本原理,掌握其编程方法;(2)掌握数字时钟的构成和工作原理;(3)学会使用相关电子元件,如LED显示屏、时钟芯片等。

2. 技能目标:(1)能够运用C语言进行单片机编程,实现数字时钟的基本功能;(2)通过动手实践,提高电路搭建和调试能力;(3)培养团队协作和问题解决能力。

3. 情感态度价值观目标:(1)激发学生对电子技术的兴趣,培养创新精神和动手实践能力;(2)养成严谨的学习态度,提高自主学习能力;(3)培养学生关爱环境、珍惜资源的意识,强化责任感。

本课程针对八年级学生的认知特点,注重理论与实践相结合,以学生为主体,教师为主导。

通过本课程的学习,学生能够将所学知识应用于实际项目中,提高综合运用能力,培养科学精神和创新意识。

课程目标分解为具体学习成果,便于后续教学设计和评估。

二、教学内容依据课程目标,教学内容围绕单片机数字时钟设计与实现展开,包括以下部分:1. 理论知识:(1)单片机原理及编程基础,参考教材第3章;(2)数字时钟工作原理及电路设计,参考教材第5章;(3)C语言编程及应用,参考教材第4章。

2. 实践操作:(1)数字时钟电路搭建,使用LED显示屏、时钟芯片等元件;(2)单片机编程,编写控制程序,实现时钟显示、校时等功能;(3)调试与优化,对搭建的数字时钟进行调试,确保其稳定运行。

3. 教学大纲:第1周:回顾单片机原理及编程基础,学习数字时钟工作原理;第2周:学习C语言编程,编写简单的数字时钟程序;第3周:设计数字时钟电路,进行电路搭建;第4周:编程实现数字时钟功能,进行调试与优化。

教学内容注重科学性和系统性,结合教材章节内容,以实践操作为主,使学生能够将理论知识与实际应用紧密结合,提高综合运用能力。

同时,教学进度安排合理,确保学生在规定时间内完成课程学习。

单片机数字时钟课程设计

单片机数字时钟课程设计

单片机数字时钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握数字时钟的设计与实现过程。

2. 使学生掌握数字时钟的显示原理,包括时、分、秒的显示和调整方法。

3. 让学生了解单片机与其他硬件设备(如LED显示屏、按键等)的接口技术。

技能目标:1. 培养学生运用单片机编程实现数字时钟功能的能力。

2. 培养学生运用所学知识解决实际问题的能力,如调试程序、排查故障等。

3. 提高学生的动手实践能力,能够独立完成数字时钟的搭建和调试。

情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学生的创新意识和探索精神。

2. 培养学生团队协作精神,学会在合作中解决问题,共同完成任务。

3. 培养学生严谨的学习态度和良好的学习习惯,注重实践与理论相结合。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为单片机应用实践课程,注重理论联系实际,培养学生的动手能力和创新能力。

2. 学生特点:学生已具备一定的单片机基础知识,有一定的编程基础,但实践能力有待提高。

3. 教学要求:以学生为主体,教师为主导,采用项目式教学,引导学生主动探究和解决问题。

二、教学内容1. 理论知识:- 单片机原理及编程基础回顾;- 数字时钟的原理与设计思路;- 单片机与其他硬件设备的接口技术。

2. 实践操作:- 数字时钟的硬件搭建,包括LED显示屏、按键等;- 单片机程序编写,实现时、分、秒的显示与调整;- 程序调试与故障排查。

3. 教学大纲:- 第一阶段(1课时):单片机原理及编程基础回顾;- 第二阶段(2课时):数字时钟原理学习,设计思路讲解;- 第三阶段(2课时):硬件搭建与程序编写;- 第四阶段(1课时):程序调试与故障排查;- 第五阶段(1课时):成果展示与总结。

4. 教材关联:- 教材第3章:单片机原理及编程基础;- 教材第4章:数字时钟设计与实现;- 教材第5章:单片机与其他硬件设备接口技术。

单片机数字钟课程设计

单片机数字钟课程设计

单片机数字钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握数字时钟的工作机制;2. 学生能描述数字时钟的各个模块功能,如时钟电路、计数器、显示电路等;3. 学生能运用所学编程语言,如C语言,编写数字时钟的程序代码。

技能目标:1. 学生能运用单片机开发工具进行程序编写、调试和下载;2. 学生能动手搭建数字时钟硬件电路,实现时钟的显示和计时功能;3. 学生能通过实际操作,掌握基本电路故障排查和程序调试技巧。

情感态度价值观目标:1. 学生培养对单片机及电子制作的兴趣,激发创新意识和动手能力;2. 学生在团队协作中学会沟通、分享和承担责任,培养合作精神;3. 学生通过解决实际问题,体会科技对社会发展的作用,增强社会责任感。

课程性质:本课程为实践性较强的课程,结合理论教学和动手操作,让学生在实际操作中掌握单片机数字时钟的制作。

学生特点:学生具备一定的电子基础知识,对单片机有一定了解,喜欢动手实践,具有较强的求知欲和好奇心。

教学要求:注重理论与实践相结合,强调学生在操作过程中掌握知识,培养学生动手能力、创新意识和团队协作能力。

通过课程学习,使学生能够独立完成单片机数字时钟的设计与制作。

二、教学内容1. 理论知识:- 单片机原理:介绍单片机的硬件结构、工作原理和编程方法;- 数字时钟原理:分析数字时钟的组成、工作原理及各模块功能。

2. 实践操作:- 硬件设计:指导学生设计数字时钟的硬件电路,包括时钟电路、计数器、显示电路等;- 程序编写:教授学生使用C语言编写单片机程序,实现数字时钟的功能;- 调试与下载:教授学生如何使用开发工具进行程序调试和下载。

3. 教学大纲:- 第一周:单片机原理学习,了解数字时钟的基本原理;- 第二周:分析数字时钟各模块功能,学习C语言编程基础;- 第三周:设计数字时钟硬件电路,编写程序代码;- 第四周:进行程序调试,搭建完整的数字时钟系统。

4. 教材关联:- 教材第一章:单片机原理及其应用;- 教材第二章:数字电路设计基础;- 教材第三章:C语言编程基础;- 教材第四章:单片机程序设计与实践。

单片机课程设计--数字钟

单片机课程设计--数字钟

单片机课程设计--数字钟一、设计目的及意义(1)巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;(3)对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、内容及步骤二、原理图设计中简要说明设计目的(1)功能:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。

(2)原理图中所使用的元器件功能在图中的作用1.主要元件AT89C51P3。

2 /INT0(外部中断0)定时器/计数器0溢出中断2.LED及按键开关用于时间的显示和设定(3)各器件的工作过程及顺序计时状态,AT89C51通过P1口持续向LED发送信号,使LED扫描显示刚前时分秒,当出现定时器/计数器0溢出中断时,时间加多1秒,AT89C51从P1口向LED输出新的时间;只按住SET UP键时,进入外部中断0,时间计数停止,通过点击按键H,M,S对时分秒进行调整,新的时间值送给了计时程序,松开SET UP键退出中断,回到计时状态;按住SET UP键和ALARM键时,进入外部中断0,时间计数停止,通过点击按键H,M对时分进行闹钟定时,AT89C51记忆时分值,退出时先松开SET UP键再松开ALARM;闹铃:当时间值和设定闹铃值一样时,进行闹铃一分钟.(3)流程图(4)程序清单#include<reg52.h>#define uint unsigned int#define uchar unsigned char sbit wela1=P2^0;sbit wela2=P2^1;sbit wela3=P2^2;sbit wela4=P2^3;sbit wela5=P2^4;sbit wela6=P2^5;sbit dp= P1^7;sbit c0= P0^0;sbit c1= P0^1;sbit c2= P0^2;sbit c3= P0^3;sbit c4= P0^4;sbit c5= P0^5;sbit kai= P3^2;uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};void display(void);void delay(uint);uint num=0,num1=0,num2=0,num3=0;uint shi,ge,shi1,ge1,shi2,ge2;uint shi1t,ge1t,shi2t,ge2t; void delay(uint x){uint i,j;for(i=x;i〉0;i——)for(j=110;j〉0;j—-);}void main(){TMOD=0x11;TH0 =(65536—50000)/256;TL0 =(65536—50000)%256;EA =1; //开总中断EX0 =1; //开外部中断0IT0 =0;//外部中段0设为电平触发ET0 =1;//T0溢出中断充许TR0 =1;//启动内部定时器IT1=0; //外部中段1设为边沿触发while(1){display();}}void display(void) //扫描显示{wela5=1;P1=table[shi];delay(5);wela5=0;wela6=1;P1=table[ge];delay(5);wela6=0;wela3=1;P1=table[shi1];delay(5);wela3=0;wela4=1;P1=table[ge1];dp=0;delay(5);wela4=0;wela1=1;P1=table[shi2];delay(5);wela1=0;wela2=1;P1=table[ge2];dp=0;delay(5);wela2=0;}void int0()interrupt 0 // 时间调整功能,外部中断0,与闹钟功能,按住SET UP进入,松开退出{while(kai==0){c3=1;//关闭闹铃display();if(c0==1)//秒{ge++;delay(10);if(ge==10){ge=0;shi++;if(shi==6){shi=0;}}while(c0)display();}if(c1==1)//分{ge1++;delay(10);if(ge1==10){ge1=0;shi1++;if(shi1==6){shi1=0;}}while(c1)display();}if(c2==1)//时{ge2++;delay(10);if(ge2==10){ge2=0;shi2++;}if(shi2==2&&ge2==4){shi2=0;ge2=0;}//24进0while(c2)display();}}if(c4==1)//闹钟功能区,按住ALARM和SET UP时,就能进行闹钟设定,设定完成后,先松开SET UP再松开ALARMF才有效{shi1t=shi1;ge1t=ge1;shi2t=shi2;ge2t=ge2;}else{num1=shi*10+ge;num2=shi1*10+ge1;num3=shi2*10+ge2;}}void T0time() interrupt 1 //定时器0溢出中断{TH0 =(65536—50000)/256;TL0 =(65536-50000)%256;num++;if(num==5) //num==20时,为现实1秒{num=0;num1++;if (num1==60){num1=0;num2++;}shi=num1/10;ge =num1%10;if (num2==60){num2=0;num3++;}shi1=num2/10;ge1 =num2%10;if (num3==24){num3=0;}shi2=num3/10;ge2 =num3%10;}if(shi1==0&&ge1==0)//整点检测报时{ c3=0;}else{c3=1;}if(shi1==shi1t && ge1==ge1t && shi2==shi2t && ge2==ge2t)//闹钟检测{ c3=0; }else{c3=1;}}。

单片机数字钟课程设计

单片机数字钟课程设计

单片机数字钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握数字钟的电路构成和工作原理。

2. 使学生掌握单片机编程的基本方法,能够运用C语言编写简单的数字钟程序。

3. 帮助学生了解数字钟的各个模块功能,如时钟电路、计数器、显示电路等。

技能目标:1. 培养学生动手搭建数字钟电路的能力,提高实践操作技能。

2. 培养学生运用编程软件进行程序编写、调试和优化单片机程序的能力。

3. 培养学生分析问题、解决问题的能力,能够解决数字钟运行过程中出现的故障。

情感态度价值观目标:1. 培养学生对单片机及电子技术的兴趣,激发学生的求知欲和探索精神。

2. 培养学生团队合作意识,学会与他人共同解决问题,提高沟通与协作能力。

3. 培养学生严谨的科学态度,注重实验数据的真实性,养成认真负责的学习习惯。

课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在培养学生的动手能力、编程能力和问题解决能力。

学生特点:学生为初中生,具备一定的电子知识基础,对单片机有一定了解,喜欢动手实践,对新鲜事物充满好奇心。

教学要求:教师需结合学生特点,以引导为主,讲解与实践相结合,注重培养学生的自主学习能力和团队合作精神。

在教学过程中,关注学生的个体差异,给予个性化指导,确保每位学生都能达到课程目标。

通过课程学习,使学生能够独立完成数字钟的搭建和程序编写,提高综合运用知识的能力。

二、教学内容1. 单片机基础理论:介绍单片机的组成、工作原理,重点讲解AT89C52单片机的内部结构、引脚功能及特性。

教材章节:第一章 单片机概述,第二节 AT89C52单片机简介2. 数字钟电路设计:讲解数字钟的电路构成,包括时钟电路、计数器、显示电路等模块,分析各模块之间的连接关系。

教材章节:第二章 数字钟电路设计,第一节 数字钟概述,第二节 电路模块介绍3. 单片机编程:教授C语言编程基础,以数字钟为例,讲解程序设计思路、流程及编程技巧。

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

单片机课程设计--数字钟
一、设计目的及意义
(1)巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;
(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3)对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、容及步骤
二、原理图设计中简要说明设计目的
(1)功能:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。

(2)原理图中所使用的元器件功能在图中的作用
1.主要元件AT89C51
P3.2 /INT0(外部中断0)
定时器/计数器0溢出中断
2.LED及按键开关
用于时间的显示和设定
(3)各器件的工作过程及顺序
计时状态,AT89C51通过P1口持续向LED发送信号,使LED扫描显示刚前时分秒,当出现定时器/计数器0溢出中断时,时间加多1秒,AT89C51从P1口向LED输出新的时间;
只按住SET UP键时,进入外部中断0,时间计数停止,通过点击按键H,M,S对时分秒进行调整,新的时间值送给了计时程序,松开SET UP键退出中断,回到计时状态;
按住SET UP键和ALARM键时,进入外部中断0,时间计数停止,通过点击按键H,M对时分进行闹钟定时,AT89C51记忆时分值,退出时先松开SET UP键再松开ALARM;
闹铃:当时间值和设定闹铃值一样时,进行闹铃一分钟。

(3)流程图
(4)程序清单
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char sbit wela1=P2^0;
sbit wela2=P2^1;
sbit wela3=P2^2;
sbit wela4=P2^3;
sbit wela5=P2^4;
sbit wela6=P2^5;
sbit dp= P1^7;
sbit c0= P0^0;
sbit c1= P0^1;
sbit c2= P0^2;
sbit c3= P0^3;
sbit c4= P0^4;
sbit c5= P0^5;
sbit kai= P3^2;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void display(void);
void delay(uint);
uint num=0,num1=0,num2=0,num3=0;
uint shi,ge,shi1,ge1,shi2,ge2;uint shi1t,ge1t,shi2t,ge2t; void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
TMOD=0x11;
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256;
EA =1; //开总中断
EX0 =1; //开外部中断0
IT0 =0; //外部中段0设为电平触发
ET0 =1; //T0溢出中断充许
TR0 =1; //启动部定时器
IT1=0; //外部中段1设为边沿触发
while(1)
{
display();
}
}
void display(void) //扫描显示{
wela5=1;
P1=table[shi];
delay(5);
wela5=0;
wela6=1;
P1=table[ge];
delay(5);
wela6=0;
wela3=1;
P1=table[shi1];
delay(5);
wela3=0;
wela4=1;
P1=table[ge1];
dp=0;
delay(5);
wela4=0;
wela1=1;
P1=table[shi2];
delay(5);
wela1=0;
wela2=1;
P1=table[ge2];
dp=0;
delay(5);
wela2=0;
}
void int0()interrupt 0 // 时间调整功能,外部中断0,与闹钟功能,按住SET UP进入,松开退出
{
while(kai==0)
{
c3=1; //关闭闹铃
display();
if(c0==1)//秒
{
ge++;delay(10);
if(ge==10)
{
ge=0;shi++;
if(shi==6){shi=0;}
}
while(c0)
display();
}
if(c1==1)//分
{ge1++;delay(10);
if(ge1==10)
{
ge1=0;shi1++;
if(shi1==6){shi1=0;}
}
while(c1)
display();
}
if(c2==1)//时
{ge2++;delay(10);
if(ge2==10)
{
ge2=0;shi2++;
}
if(shi2==2&&ge2==4){shi2=0;ge2=0;}//24进0
while(c2)
display();
}
}
if(c4==1)//闹钟功能区,按住ALARM和SET UP时,就能进行闹钟设定,设定完成后,先松开SET UP再松开ALARMF才有效
{shi1t=shi1;ge1t=ge1;shi2t=shi2;ge2t=ge2;}
else
{num1=shi*10+ge;
num2=shi1*10+ge1;
num3=shi2*10+ge2;}
}
void T0time() interrupt 1 //定时器0溢出中断
{
TH0 =(65536-50000)/256;
TL0 =(65536-50000)%256;
num++;
if(num==5) //num==20时,为现实1秒
{
num=0;
num1++;
if (num1==60)
{
num1=0;
num2++;
}
shi=num1/10;
ge =num1%10;
if (num2==60)
{
num2=0;
num3++;
}
shi1=num2/10;
ge1 =num2%10;
if (num3==24)
{
num3=0;
}
shi2=num3/10;
ge2 =num3%10;
}
if(shi1==0&&ge1==0)//整点检测报时
{ c3=0; }
else{c3=1;}
if(shi1==shi1t && ge1==ge1t && shi2==shi2t && ge2==ge2t)//闹钟检测{ c3=0; }
else{c3=1;}
}。

相关文档
最新文档