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

数字电子钟单片机课程设计一、课程目标知识目标:1. 学生能理解数字电子钟的基本工作原理,掌握单片机在数字电子钟中的应用。
2. 学生能掌握数字电子钟的各功能模块(如计时、闹钟、显示等)的设计与实现。
3. 学生了解并掌握数字电子钟程序编写的基本方法,学会运用编程语言(如C 语言)进行程序设计。
技能目标:1. 学生能运用所学知识,设计并制作一个简易的数字电子时钟,具备基本的时间显示、闹钟等功能。
2. 学生能够独立完成程序编写,实现数字电子钟的基本功能,并具备一定的调试与优化能力。
3. 学生能够通过团队合作,发挥各自专长,共同完成课程设计任务。
情感态度价值观目标:1. 学生在课程学习中,培养对电子技术的兴趣和爱好,激发创新意识。
2. 学生通过实践活动,培养动手能力、解决问题的能力和团队协作精神。
3. 学生在学习过程中,树立正确的价值观,认识到科技对生活的重要性,增强社会责任感。
本课程针对高年级学生,课程性质为实践性较强的设计与制作类课程。
学生在前期课程中已具备一定的电子技术基础和编程能力,本课程旨在巩固和拓展这些知识。
在教学过程中,要求教师注重引导学生主动探索、实践,鼓励学生发挥创新能力,同时关注学生的个体差异,提供有针对性的指导。
通过课程目标的实现,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续相关课程的学习打下坚实基础。
二、教学内容1. 数字电子钟原理及单片机基础:包括时钟电路、计数器、寄存器等基本原理,以及单片机的内部结构、工作原理和编程接口。
- 教材章节:第一章 电子时钟原理;第二章 单片机基础- 内容列举:时钟电路设计、计数器应用、寄存器配置、单片机内部结构、I/O 口编程。
2. 数字电子钟功能模块设计:讲解并实践计时、闹钟、显示等模块的设计方法。
- 教材章节:第三章 数字电子钟设计;第四章 模块化设计- 内容列举:计时模块、闹钟模块、显示模块设计,模块间通信协议。
3. 程序设计与编写:学习数字电子钟的程序编写方法,运用C语言进行程序设计。
单片机课程设计数字钟报告

电子与信息工程学院综合实验课程报告课题名称单片机课程设计专业通信工程班级学生姓名学号指导教师单片机课程设计正文一、引言现代社会科技飞速发展,人们生活节奏加快,时间就是金钱,时间就是生命。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
20世纪末,电子技术得到飞速发展,各类电子产品相继出现在市场,电子产品主要朝着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
数字化电子产品已渗入到人类生活的方方面面。
单片计算机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多输入输出口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。
而52 单片机是51单片机的升级版,功能更强大。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
基于以上发展与现实需要本次设计课题就是基于单片机的设计-----基于单片机的多功能数字钟。
数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
单片机数字钟的课程设计

设计任务书 (I)第一章绪论 (1)1.1课程设计的意义 (1)第二章电路设计方案............................................2.1数字电子中4的基本原理......................................2.2第三章电路的安装与调试........................................3.1电路的选用.................................................设计小节.....................................................致谢...........................................................参考文献......................................................附录A......................................................附录B.....第一章绪论1.1课程设计的意义在高新技术日新月异的今天,科学技术已经成为整个社会发展的源动力,电子领域的发展更是令人目不暇接,在其推动下,现代电子产品几乎渗透了社会的各个领域,遍迹了千家万户,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
使课程设计越来越受到人们的重视,通过课程设计。
可以设计出更好更新的科技产品,这将给科技的发展带来很好的积极作用,也使科技的水平得到一定的提高。
同时也可以提高同学们的逻辑思维能力和创新意识。
电子技术密切联系实际,实用性很强,开展电子技术课程设计在电子电气类我认为非常重要,不近可以学好专业知识,还可以增强动手能力,有利于我们适应未来这个竞争激烈的社会,训练我们综合运用知识能力资料素材的查阅及收集能力,电子元气件的采购,电子电路的组装和调试能力,特别是在电路;多样化的创新方面,从理性和感性上都得到了很大的提高,经过查阅资料,选择方案,设计电路,等过程。
单片机数字时钟课程设计

单片机数字时钟课程设计一、课程目标单片机数字时钟课程设计旨在让八年级学生在巩固已学电子技术知识的基础上,通过实践操作,实现以下目标: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 系列单片机,如 STC89C52。
它具有丰富的资源和易于编程的特点,能够满足数字时钟的设计需求。
2、时钟计时原理数字时钟的核心是准确的计时功能。
通过单片机内部的定时器,设定合适的定时时间间隔,不断累加计时变量,实现秒、分、时的计时。
3、数码管显示原理采用共阳或共阴数码管来显示时间数字。
通过单片机的 I/O 口控制数码管的段选和位选信号,使数码管显示相应的数字。
4、按键控制原理设置按键用于调整时间。
通过检测按键的按下状态,进入相应的时间调整模式。
三、实验设备与材料1、单片机开发板2、数码管3、按键4、杜邦线若干5、电脑及编程软件(如 Keil)四、实验步骤1、硬件连接将数码管、按键与单片机开发板的相应引脚通过杜邦线连接起来。
确保连接正确可靠,避免短路或断路。
2、软件编程(1)初始化单片机的定时器、中断、I/O 口等。
(2)编写定时器中断服务程序,实现秒的计时。
(3)设计计时算法,将秒转换为分、时,并进行进位处理。
(4)编写数码管显示程序,将时间数据转换为数码管的段选和位选信号进行显示。
(5)添加按键检测程序,实现时间的调整功能。
3、编译与下载使用编程软件将编写好的程序编译生成可执行文件,并下载到单片机中进行运行测试。
五、程序设计以下是本次数字时钟设计的主要程序代码片段:```cinclude <reg52h>//定义数码管段选码unsigned char code SEG_CODE ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//定义数码管位选码unsigned char code BIT_CODE ={0x01, 0x02, 0x04, 0x08, 0x10,0x20, 0x40, 0x80};//定义时间变量unsigned int second = 0, minute = 0, hour = 0;//定时器初始化函数void Timer_Init(){TMOD = 0x01; //定时器 0 工作在方式 1 TH0 =(65536 50000) / 256; //定时 50ms TL0 =(65536 50000) % 256;EA = 1; //开总中断ET0 = 1; //开定时器 0 中断TR0 = 1; //启动定时器 0}//定时器 0 中断服务函数void Timer0_ISR() interrupt 1{TH0 =(65536 50000) / 256;TL0 =(65536 50000) % 256;second++;if (second == 60){second = 0;minute++;if (minute == 60){minute = 0;hour++;if (hour == 24){hour = 0;}}}}//数码管显示函数void Display(){unsigned char i;for (i = 0; i < 8; i++)P2 = BIT_CODEi;if (i == 0){P0 = SEG_CODEhour / 10;}else if (i == 1){P0 = SEG_CODEhour % 10;}else if (i == 2){P0 = 0xBF; //显示“”}else if (i == 3){P0 = SEG_CODEminute / 10;else if (i == 4){P0 = SEG_CODEminute % 10;}else if (i == 5){P0 = 0xBF; //显示“”}else if (i == 6){P0 = SEG_CODEsecond / 10;}else if (i == 7){P0 = SEG_CODEsecond % 10;}delay_ms(1);//适当延时,防止闪烁}}//主函数void main(){Timer_Init();while (1){Display();}}```六、实验结果与分析1、实验结果将程序下载到单片机后,数字时钟能够正常运行,准确显示时、分、秒,并且通过按键可以进行时间的调整。
单片机多功能电子数字钟课程设计报告
多功能电子数字钟设计数字钟在日常生活中最常见, 应用也最广泛。
本文主要就是设计一款数字钟, 以89C52单片机为核心, 配备液晶显示模块、时钟芯片、等功能模块。
数字钟采用24小时制方式显示时间, 定时信息以及年月日显示等功能。
文章的核心主要从硬件设计和软件编程两个大的方面。
硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几部分组成。
软件用C语言来实现, 主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。
关键词单片机液晶显示器模块数字钟一硬件电路设计及描述;1.MCS-51单片机单片机是在一块硅片上集成了各种部件的微型计算机。
这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。
8051单片机的结构特点有以下几点: 8位CPU;片内振荡器及时钟电路; 32根I/O线;外部存储器ROM和RAM;寻址范围各64KB;两个16位的定时器/计数器; 5个中断源, 2个中断优先级;全双工串行口。
定时器/计数器8051内部有两个16位可编程定时器/计数器, 记为T0和T1。
16位是指他们都是由16个触发器构成, 故最大计数模值为2 -1。
可编程是指他们的工作方式由指令来设定, 或者当计数器来用, 或者当定时起来用, 并且计数(定时)的范围也可以由指令来设置。
这种控制功能是通过定时器方式控制寄存器TMOD来完成的。
在定时工作时, 时钟由单片机内部提供, 即系统时钟经过12分频后作为定时器的时钟。
技术工作时, 时钟脉冲由TO和T1输入。
中断系统8051的中断系统允许接受五个独立的中断源, 即两个外部中断申请, 两个定时器/计数器中断以及一个串行口中断。
外部中断申请通过INTO和INT1(即P3.2和P3.3)输入, 输入方式可以使电平触发(低电平有效), 也可以使边沿触发(下降沿有效)。
2.8051的芯片引脚如图1-2所示VCC: 供电电压。
单片机数字钟课程设计
单片机数字钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握数字钟的电路构成和工作原理。
2. 使学生掌握单片机编程的基本方法,能够运用C语言编写简单的数字钟程序。
3. 帮助学生了解数字钟的各个模块功能,如时钟电路、计数器、显示电路等。
技能目标:1. 培养学生动手搭建数字钟电路的能力,提高实践操作技能。
2. 培养学生运用编程软件进行程序编写、调试和优化单片机程序的能力。
3. 培养学生分析问题、解决问题的能力,能够解决数字钟运行过程中出现的故障。
情感态度价值观目标:1. 培养学生对单片机及电子技术的兴趣,激发学生的求知欲和探索精神。
2. 培养学生团队合作意识,学会与他人共同解决问题,提高沟通与协作能力。
3. 培养学生严谨的科学态度,注重实验数据的真实性,养成认真负责的学习习惯。
课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在培养学生的动手能力、编程能力和问题解决能力。
学生特点:学生为初中生,具备一定的电子知识基础,对单片机有一定了解,喜欢动手实践,对新鲜事物充满好奇心。
教学要求:教师需结合学生特点,以引导为主,讲解与实践相结合,注重培养学生的自主学习能力和团队合作精神。
在教学过程中,关注学生的个体差异,给予个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生能够独立完成数字钟的搭建和程序编写,提高综合运用知识的能力。
二、教学内容1. 单片机基础理论:介绍单片机的组成、工作原理,重点讲解AT89C52单片机的内部结构、引脚功能及特性。
教材章节:第一章 单片机概述,第二节 AT89C52单片机简介2. 数字钟电路设计:讲解数字钟的电路构成,包括时钟电路、计数器、显示电路等模块,分析各模块之间的连接关系。
教材章节:第二章 数字钟电路设计,第一节 数字钟概述,第二节 电路模块介绍3. 单片机编程:教授C语言编程基础,以数字钟为例,讲解程序设计思路、流程及编程技巧。
数字时钟单片机课程设计
数字时钟单片机课程设计一、课程目标知识目标:1. 学生能理解数字时钟单片机的基本原理,掌握单片机的硬件结构和软件编程方法。
2. 学生能运用所学的单片机知识,设计并实现一个具有基本功能的数字时钟。
3. 学生了解数字时钟的显示原理,掌握时间计算和显示的编程技巧。
技能目标:1. 学生能够独立完成数字时钟单片机的硬件连接和程序编写,具备实际操作能力。
2. 学生通过课程学习,培养解决实际问题的能力,学会调试程序,找出并解决问题。
3. 学生能够运用所学知识,进行创新设计,提高动手实践能力。
情感态度价值观目标:1. 学生在学习过程中,培养对单片机技术的兴趣,提高对电子技术的认识。
2. 学生通过团队合作,培养沟通协作能力,增强团队精神。
3. 学生在课程实践中,体会科技改变生活的实际应用,激发创新意识。
课程性质:本课程为实践性较强的课程,注重培养学生的动手能力和实际操作技能。
学生特点:学生具备一定的单片机基础知识,对电子技术有较高的兴趣,喜欢动手实践。
教学要求:教师应结合学生特点,采用任务驱动法,引导学生主动探究,注重实践操作能力的培养。
在教学过程中,关注学生的个体差异,提供有针对性的指导。
通过课程学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。
二、教学内容1. 硬件基础:介绍数字时钟单片机的硬件结构,包括处理器、时钟电路、显示模块等组成部分。
关联教材第3章“单片机硬件结构”。
- 单片机选型与特性- 时钟电路原理与设计- 显示模块工作原理与接口技术2. 程序设计:讲解数字时钟程序设计的基础知识,包括编程语言、程序结构和流程控制。
关联教材第4章“单片机编程基础”。
- 基本指令与编程语法- 时间计算与显示编程- 程序调试与优化技巧3. 系统设计与实现:引导学生进行数字时钟单片机系统的设计与实现,包括硬件连接、程序编写和功能测试。
关联教材第6章“单片机应用系统设计”。
- 硬件连接与电路搭建- 程序编写与功能实现- 系统调试与故障排除4. 创新实践:鼓励学生运用所学知识进行创新设计,提高数字时钟的功能和实用性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;}
}。