基于c51单片机电子钟课程设计
- 格式:doc
- 大小:288.00 KB
- 文档页数:19
基于单片机的电子钟的设计学院:班级:姓名:学号:小组成员:姓名:学号:指导老师:第一章绪论1.1数字电子钟的背景20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。
下面是单片机的主要发展趋势。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
1.2数字电子钟的意义数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
51电子时钟课程设计一、课程目标知识目标:1. 学生能理解51单片机的内部结构及其工作原理;2. 学生能掌握电子时钟的基本原理,包括时钟芯片的初始化和使用方法;3. 学生能运用C语言编写程序,实现电子时钟的基本功能,如时、分、秒显示。
技能目标:1. 学生能运用已学的电子知识和编程技巧,完成51电子时钟的电路设计和程序编写;2. 学生通过实际操作,培养动手能力,提高解决实际问题的能力;3. 学生能通过课程学习,掌握基本的焊接技能,完成电子时钟的制作。
情感态度价值观目标:1. 学生在课程学习过程中,培养对电子技术和编程的兴趣,提高主动学习的积极性;2. 学生通过团队协作,培养沟通与合作的意识,增强团队精神;3. 学生在作品展示环节,学会欣赏他人的优点,提高自信心,培养创新精神和实践能力。
课程性质:本课程为实践性较强的课程,结合51单片机技术和电子时钟原理,注重培养学生的动手能力和实际问题解决能力。
学生特点:学生在前期课程中已掌握基本的电子知识和编程技巧,具备一定的实践基础。
教学要求:教师需引导学生运用所学知识,完成电子时钟的设计与制作,注重培养学生的创新思维和团队协作能力。
在教学过程中,关注学生的个体差异,提供个性化的指导。
通过课程目标的分解,确保学生能够实现预期的学习成果。
二、教学内容本课程教学内容主要包括以下几部分:1. 51单片机基础:复习51单片机的内部结构、工作原理,重点掌握时钟电路、复位电路和I/O口的使用。
2. 电子时钟原理:介绍电子时钟的基本构成,包括时钟芯片、晶振、显示屏等,分析时钟芯片的初始化和使用方法。
3. C语言编程:回顾C语言基础知识,重点讲解51单片机编程的语法和技巧,为编写电子时钟程序打下基础。
4. 电路设计与制作:指导学生进行电子时钟的电路设计,包括元器件的选择、电路图的绘制和PCB板的设计。
5. 程序编写与调试:教授学生编写电子时钟程序,实现时、分、秒的显示功能,并进行程序调试。
课设报告工程学院软件学院题目:时钟班级:姓名:学号:指导老师:日期: 2013 年 10 月 11日目录1 摘要32 设计要求32.1 功能需求32.2 设计要求33 硬件设计与描述33.1 总体描述33.2 系统总体框图 43.3 Proteus电路图43.4 各部分硬件介绍44 软件设计流程与描述84.1 程序流程图84.2 函数模块与功能94.2.1单片机主控制模块94.2.2数码管显示模块94.2.3 按键模块114.2.4计时模块115 功能实现136 心得体会147 源程序141 摘要众所周知单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。
本设计要制作的就是单片机于生活中最为常见的几种应用——时钟。
本设计以AT89S52单片机作为核心,可以显示当前的时间,时间也可以人为设定,显示格式为时(两位),分(两位),秒(两位)。
设置时间的数值、启动定时器。
时钟显示电路由数码管组成,制作该装置的材料需要有软硬件的支持,硬件方面AT89C51单片机,晶振,电源,数码管。
2 设计要求2.1 功能需求1、在数码管上显示初始时间如12-23-33,从初始设置的时间开始走时,每一秒自动加1,当59秒后自动向分进位、59分后自动向时进位。
2、通过按键设置时间,按下键1,时钟分加1;按下键2,时钟分减1,。
从而实现用按键设置时间的功能。
2.2 设计要求本次设计的是时钟,本电路是由AT89S52单片机为控制核心,通过按键实现时钟分的自增自减进行时间的设置,在数码管上进行显示。
3 硬件设计与描述3.1 总体描述单片机采用STC90C516RD+,采用MCS-51实验开发板。
概述单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。
此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。
因此,使用C语言进行程序设计已成为软件开发的一个主流。
C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可靠性,便于改进和扩展,从而研制出规模更大、性能更完备的系统。
因此,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。
本课程的目的是学习运用C语言开发单片机应用系统软件。
为将来从事单片机应用系统的开发打下坚实的基础。
一、题目电子钟二、课程设计目的(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
三、课程设计系统环境(1)ADEK5196ET;(2)AEDK机电实验平台;(3)Keil c51软件调试环境;四、课程设计要求(1)掌握ADEK5196实验开发系统中的实验模块原理;(2)综合运用实验模块,用C51开发设计具有一定功能的单片机控制系统,进行软、硬件设计及调试;(3)写出完整的设计任务书:课题的名称、系统的功能、硬件原理图、软件框图、程序清单、参考资料;五、系统功能说明利用8279键盘显示接口电路。
使用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,其具有显示稳定、程序简单、不会出现误动作等特点。
电子钟的格式为:XX XX XX,由左向右分别为:时、分、秒。
基于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单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。
中南大学《自动化工程训练》设计题目 LCD时钟程序设计指导老师设计者专业班级自动化级班号设计日期2016年9月目录一、设计任务要求分析 (1)1.1设计总体方案及其方案论证 (1)二、组成电路介绍 (1)2.1 复位电路: (1)2.2晶振电路: (1)2.3键盘控制系统设计: (2)2.4闹钟部分: (3)2.5显示电路设计 (3)2.5.1 LCD1602简介 (3)三、软件设计 (4)3.1程序主流程图 (5)3.2初始化流程图 (5)3.3延时中断子程序 (6)3.4时间设置子程序 (7)四、系统测试 (7)4.1 测试方法 (7)4.2 测试结果 (7)4.3 结果分析 (8)五、源程序 (8)一、设计任务要求分析本设计要实现的功能是:实时显示当前的时钟,并且可以设定闹铃,以蜂鸣器鸣响5秒的方式作为闹铃。
1.1设计总体方案及其方案论证按照系统的设计功能所要求的,液晶显示电子时钟原理图如图所示。
液晶显示电子时钟原理图本系统以AT89C51单片机为核心,该单片机可把数据进行处理,从而把数据传输到显示模块LCD1602液晶显示器,实现时间及日期的显示。
以LCD 液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化,还可以对时间和日期进行设置,主要靠按键来实现。
二、组成电路介绍2.1 复位电路:复位电路复位电路有两种方式:上电复位和按钮复位,我们主要用按钮复位方式。
如图所示:2.2晶振电路:晶振电路如图所示:晶振模块原理图选取原则:电容选取22pF,晶振为12MHz。
1)电源:AT89S51单片机的供电电源是5V的直流电。
2)EA非/Vpp脚:我们没有用外部扩展ROM,因此EA非/Vpp为高电平,即接+5V电源。
2.3键盘控制系统设计:按键需要4个,分别实现为时间调整、时间的加、时间的减、闹钟调整四个功能。
用单片机的4个I/O口接收控制信号,其电路如图所示:按键调时电路通过控制键来控制所要调节的是时、分、还是秒。
课程名称:单片机原理与接口技术实践设计课题:基于MCS 51单片机实现电子闹钟功能的设计学院:电子与信息工程学院专业:通信工程小组成员:电子闹钟在科学技术高度发展的今天,千家万户都少不了它,所以很多家庭个人都需要有一个电子闹钟,为人们提供报时方便,但普通电子闹钟不够方便实用。
本文给出了一种基于MCS51单片机实现电子闹钟功能的设计方法,从而给人们带来更为方便的工作与生活。
一.电子闹钟简介我们设计的电子闹钟是以MCS51单片机中的计时器作为时钟,用8位数码管显示当前时间,并且可以设置闹钟时间,并在设置的时间点发出闹铃。
简易闹钟具有以下功能:1.时钟能准确地走时,并可以通过数码管进行显示2.复位后可以进行当前时间的设置3.可以随意设置闹钟时间,闹钟会在设置时间响铃整个系统的任务要求:1)输入数字按键的功能。
保证数字的输入。
2)复位电路的功能。
所有时间回到初始化状态,用于启动设定时间参数(调时或设定闹钟时间);3)显示电路的功能。
当输入数字时显示24小时时间功能。
4)闹铃功能设置闹铃的时间后.能按设置好的时间准时闹铃。
二.系统方案的设计要求根据以上各模块并结合显示屏的功能及元器件材料的情况,决定采用AT89C51为内核显示设计方案。
先进行系统的整体规划确定整个系统的功能,然后按照每个功能的具体要求,进行各个模块的实物设计并逐个调试,待全部通过后,进行整个系统的联调,最终实现一个完整的系统。
整个系统的设计步骤如下:在单片机最小系统的基础上,完成按键电路和复位电路的设计。
完成显示电路、数字按键、单片机时钟电路。
Ⅰ硬件设计系统硬件的设计可以根据系统的各个功能,把整个系统划分成若干个模块,分别对这些模块来进行设计,然后在通过单片机程序来实现对各个硬件模块功能的调度。
本系统涉及到的硬件模块有:按键电路、数码管显示电路、单片机时钟电路、蜂鸣器电路。
各部分实现功能如下:按键电路:提供按键信号。
单片机时钟电路、复位电路:提供内部时钟。
基于51单片机的简易电子钟设计一、设计目的现代社会对于时间的要求越来越精确,电子钟成为家庭和办公场所不可缺少的设备之一、本设计基于51单片机,旨在实现一个简易的电子钟,可以显示当前的时间,并且能够通过按键进行时间的调整和设置闹钟。
二、设计原理本设计主要涉及到51单片机的IO口、定时器、中断、LCD显示技术等方面知识。
1.时钟模块时钟模块采用定时器0的中断进行时间的累加和更新。
以1秒为一个时间单位,每当定时器0中断发生,就将时间加1,并判断是否需要更新小时、分钟和秒的显示。
同时,根据用户按键的操作,可以调整时间的设定。
2.显示模块显示模块采用16x2字符LCD显示屏,通过51单片机的IO口与LCD连接。
可以显示当前时间和设置的闹钟时间。
初次上电或者重置后,LCD显示时间为00:00:00,通过定时器中断和键盘操作,实现时间的更新和设定闹钟功能。
3.键盘模块键盘模块采用矩阵键盘连接到51单片机的IO口上,用于用户进行时间的调整和设置闹钟。
通过查询键盘的按键状态,根据按键的不同操作,实现时间的调整和闹钟设定功能。
4.中断模块中断模块采用定时器0的中断,用于1秒的定时更新时间。
同时可以添加外部中断用于响应用户按键操作。
三、主要功能和实现步骤1.系统初始化。
2.设置定时器,每1秒产生一次中断。
3.初始化LCD显示屏,显示初始时间00:00:00。
4.查询键盘状态,判断是否有按键按下。
5.如果按键被按下,根据不同按键的功能进行相应的操作:-功能键:设置、调整、确认。
-数字键:根据键入的数字进行时间的调整和闹钟设定。
6.根据定时器的中断,更新时间的显示。
7.判断当前时间是否与闹钟设定时间相同,如果相同,则触发闹钟,进行提示。
8.循环执行步骤4-7,实现连续的时间显示和按键操作。
四、系统总结和改进使用51单片机设计的简易电子钟可以显示当前时间,并且实现时间的调整和闹钟设定功能。
但是由于硬件资源有限,只能实现基本的功能,不能进行其他高级功能的扩展,例如闹铃的音乐播放、温度、湿度的显示等。
单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
电子时钟设计一、设计目的在我们现代日常生活中,电子时钟已得到及其广泛的应用,已成为我们日常生活中的不可或缺的一部分。
本次设计的主要目的即是利用51单片机设计一个可实现24小时计时的电子时钟,计时从0时0分0秒开始,到23小时59分59秒后返回0时0分0秒自动重新开始计时。
本设计拥有时间调整功能和时间显示功能,无年、月计数和闹钟功能。
二、需求分析本设计中的时钟要求使用8个8段数码管显示当前时间,其中秒单元与分单元中间以“-”符号隔开,分单元与时单元中间同样以“-”符号隔开。
计时范围为从00-00-00到23-59-59,当计时到23-59-59后自动返回00-00-00并重新开始计时。
设计中使用3个按键分为set、add和sub,当在计时功能工作时按下set键即可进入调时模式,在调试模式下累计按6次set后便退出调时功能,重新返回计时功能。
三、总体设计1、总体设计框图图3-1 总体设计框图2、器件选型:主要使用的器件为STC89C51RC型单片机。
该型号的单片机有P1、P2、P3、P4共4个准双向口,且包含3个16位可编程定时/计数器T0、T1、T2。
其定时可由硬件电路与中断方式控制,而定时时间和范围则完全由所编写的代码来确定和改变。
在本次设计中主要实用0号和1号定时/计数器,通过设置使它们均实现50ms计数,其中0号计数器配合20次循环计数以实现1m计时,1号计数器配合10次循环计数以实现对相应调整位的0.5m闪烁。
设计中还主要使用到3个74LS373数据锁存器、1个74LS244输入缓冲器以及8个8段数码显示器。
四、硬件设计1、硬件框图图4-1 硬件框图2、硬件模块设计a、时间计时模块设计:该模块的功能实现是将十位时、个位时、十位分、个位分、十位秒和个位秒分别存入s_hou、g_hou、s_min、g_min、s_sec和g_sec中,每个数值对应一个无符号字节。
T0计数器实现计数功能,但计数满20次50ms即1000ms时,g_sec 的值加1,当g_sec计数值为10时将g_sec清零并使s_sec计数加1,以此类推,直到计数值为23-59-59,并在下一秒返回00-00-00。
单片机应用课程设计说明书数字电子钟学校:扬州职业大学院系:电子工程系学生姓名:周雄指导教师:李金奎专业:应用电子技术班级:09应用电子一班完成时间:2011.12.摘要钟表作为一个定时工具被广泛地应用于生产生活的各个方面,而电子表具有价格便宜、质量轻、定时误差小等优点。
本次设计的数字电子钟采用了AT89S52芯片进行汇编,由8位8段数码管进行动态刷新显示,有四个独立按键。
可以进行秒、分、时的调整,且操作简单,计时误差小,显示亮度高,具有良好的实用价值。
关键词数字电子钟;单片机;汇编语言目录1 设计课题任务、功能要求说明及总体方案介绍 (1)1.1 设计课题任务 (1)1.2 功能要求说明 (1)1.3 设计课题总体方案介绍及工作原理说明 (1)2 设计课题硬件系统的设计 (2)2.1 硬件总体设计 (2)2.2 设计课题硬件系统各模块功能简要介绍 (2)2.3 设计课题电路原理图、PCB图、元器件布局图 (3)2.4 设计课题元器件清单 (3)3 设计课题软件系统的设计 (4)3.1 设计课题使用单片机资源的情况 (4)3.2 数字电子钟软件系统主要模块功能简要介绍 (4)3.3 数字电子钟软件系统程序流程框图 (5)3.4 设计课题软件系统程序清单 (7)4 设计结论、仿真结果、误差分析 (16)4.1 设计课题的设计结论及使用说明 (16)4.2 设计课题的仿真结果 (17)4.3 设计课题的误差分析 (17)4.4 设计重点、难点,体会及不足之处 (18)参考文献 (19)致谢 (20)附录 (21)附录一数字电子钟原理图 (21)附录二数字电子钟PCB图………………………………………………………22附录三数字电子钟元件布局图 (24)附录四数字电子钟元件清单 (25)设计课题任务、功能要求说明及总体方案介绍1.1 设计课题任务通过理论设计和实物制作解决相应的实际问题,巩固和运用在《单片机技术》中所学的理论知识和实验技能,掌握单片机应用系统的一般设计方法,提高设计能力和实践动手能力,为以后从事电子电路设计、研发电子产品打下良好的基础。
1.2 功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。
1.3 设计课题总体方案介绍及工作原理说明方案一:采用时钟芯片DS1302,该芯片可以进行时分秒的计数,DS1302通过串行方式与单片机进行数据传送,向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整,但是需在单片机外部扩展,电路较复杂,成本较高。
方案二:采用单片机内部定时器,用软件对其进行秒、分、时的计数,单片机无法产生1s的定时时间,但是可以用硬件定时和软件计数相结合的方法实现,采用中断方式,即通过中断服务程序进行计数器溢出次数的累计,把定时器/计数器设定为62.5ms,计数溢出16次就可以得到1s,计60次为1分,60分计60次则为1小时,然后通过数码管动态刷新显示出来,再设四个按键进行时间的调整,一个键用作启动/调整键,其余三个分别用于时、分、秒的调整。
方案二不需要外部扩展芯片,电路较简单,成本较低,这里选用方案二。
数字电子钟硬件系统的设计2.1 硬件总体设计硬件系统总体设计如图2.1所示。
图2.1 硬件系统总体设计2.2 数字电子钟硬件系统主要模块功能简要介绍(1)功能芯片:本次设计采用ATMEL公司生产的AT89S52芯片,低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。
256字节RAM, 32 位I/O 口线,与工业80C51 产品指令和引脚完全兼容。
价格较低,能满足本次设计的要求。
(2)电源和复位模块:AT89S52需5V电压,所以可以采用USB接口的5V电源对其供电,复位电路可采用上电复位、按键电平复位、按键脉冲复位3种,本次采用按键电平复位。
如电路原理图中的电源和复位模块。
(3)显示模块:该模块由8位8段共阳极数码管组成,由8个PNP型三极管分别驱动其发光,从左至右位控分别接于单片机的P2.7-P2.0中上,段控a-dP接于单片机的P0.0-P0.7口上,使用动态显示从右向左循环点亮每一位数码管。
如电路原理图中的数码管电路。
(4)键盘模块:键盘由8个独立式按键组成,S0-S7键分别接在单片机的P1.0-P1.7口,并由上拉电阻上拉使其成为电位为高。
如电路原理图中的独立键盘模块。
(5)时钟模块:为了保证同步工作方式的思想,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。
如电路原理图中的晶振电路。
2.3 数字电子钟电路原理图、PCB图、元器件布局图数字电子钟电路原理图见附录一。
数字电子钟PCB图见附录二。
数字电子钟元件布局图见附录三。
2.4 数字电子钟元器件清单数字电子钟元器件清单见附录四。
数字电子钟软件系统的设计3.1 数字电子钟使用单片机资源的情况(1)时钟的时分秒在片内RAM存储地址如表3.1所示。
表 3.1 时钟存储地址名称时分秒十位78H 7BH 7EH个位79H 7CH 7FH(2)在AT89S52的P0口和P2口外接八个数码管,用P0口作数码管的段控码输出口(P0.0-P0.7对应于数码管的a-dp),P2.7-P2.0作数码管的位控码输出(P2.7-P2.0对应于LED7-LED0),20H.0-20H.3作为P1.0-P1.3的位标志存储地址。
(3)定时器0以中断方式工作,工作方式1。
3.2 数字电子钟软件系统主要模块功能简要介绍(1)主程序:主程序的主要功能是进行定时器/计数器,显示缓冲区的初始化,显示,以及判断是否有功能键按下,判断按下的键并调相应的键功能程序。
(2)键功能程序:键功能程序的主要功能是执行对应的功能,Menu键为启动/调整键,第一次按下则由待机状态进入运行状态启动时钟,从00-00-00开始显示,然后按下为奇数则暂停,进入调时状态,按下Sec键则秒加1,按下Min键则分加1,按下Hour键则时加1;若按下为偶数则进入时钟运行状态。
(3)中断服务程序:中断服务程序的主要功能是进行计时操作,程序开始先判断计数溢出是否满了16次,若不满16次则表明没有达到最小计时单位秒,则中断返回;若满16次表明已达到最小计时单位秒,则程序断续向下执行,进行分和时的计时。
(4)显示子程序:显示程序的主要功能是将显示缓冲区的段控码正确的显示在数码管上,采用动态显示,从右向左循环点亮每一位数码管。
(5)键扫子程序:键扫子程序的主要功能是判断是否有键按下,是哪个键按下,并将键值保存在20H中。
3.3 数字电子钟软件系统程序流程框图(1)主程序流程框图如图3.1所示。
(2)计时1秒子程序流程框图如图3.2所示。
(3)键扫子程序流程框图如图3.3所示。
(4)显示子程序流程框图如图3.4所示。
(5)键监控子程序流程框图如图3.5所示。
图3.1 主程序流程框图图3.2 计时1秒子程序流程框图图3.3 键扫子程序流程框图图3.4 显示子程序流程框图图3.5 键监控子程序流程框图3.4 数字电子钟软件系统程序清单;**********************************************************************:;项目名称:数字式电子钟;设计者:李松海;设计日期:2010年12月28日;**********************************************************************;;堆栈栈底80H;;**********************************************************************;;LED数码管显示器设定;;P0.7---P0.0段控线,接LED的显示段dp,g,f,e,d,c,b,a;P2.0---P2.7位控线,从左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0);显示缓冲区设定从左至右依次为78H,79H,7AH,7BH,7CH,7DH,7EH,7FH;**********************************************************************;;独立式键盘设定;;8个按键S2至S9分别依次接在P1.0至P1.7口线;;**********************************************************************;;20H字节单元:十六进制,S2键键值01H,S3键键值02H,S4键键值04H,S5键键值08H,S6键键值10H,S7键键值20H,S8键键值40H,S9键键值80H;**********************************************************************;;定时器/计数器资源:;T/C0:工作模式;功能;定时时间;查询或中断;**********************************************************************;;中断系统资源;;T/C0;**********************************************************************;;键功能程序;;KEYA (S2键键功能程序);KEYB (S3键键功能程序);KEYC (S4键键功能程序);KEYD (S5键键功能程序);**********************************************************************;;中断服务程序;;**********************************************************************;;常数表格;;DISBH(系统提示符P.字型代码序号表);DISBI(00-00-00字符的代码序号);TAB(共阳数码管字型代码表);**********************************************************************; ;子程序;;DL(2毫秒延时子程序);DISP(数码管显示子程序);KEY(键扫描子程序);;KEYCHULI(P1口数据处理子程序);加1子程序;**********************************************************************; ;伪指令定义SEC EQU 30HMIN EQU 31HHOUR EQU 32HSECGE EQU 7FHSECSHI EQU 7EHMINGE EQU 7CHMINSHI EQU 7BHHOURGE EQU 79HHOURSHI EQU 78H;**********************************************************************; ;系统起始程序区ORG 0000HSTART: LJMP MAINORG 000BHLJMP TC0;**********************************************************************; ;系统监控程序区ORG 0030HMAIN: MOV SP, #80H ;初始化数据MOV PSW, #00HMOV TMOD, #01H ;定时器0工作方式1MOV TH0, #0D8H ;10MSMOV TL0, #0F0HSETB EASETB ET0MOV R0, #20H ;RAM区首地址MOV R7, #5FH ;RAM区单元个数 95个CHUSHI:MOV @R0, #00HINC R0 ;将RAM全部清零,初始化DJNZ R7, CHUSHITSF: MOV DPTR, #DISBH ;系统初始化“P.”字符代码表首地址 MOV R5, #08HMOV R0, #78HDISPTSF:CLR AMOVC A, @A+DPTRMOV @R0, AINC R0INC DPTRDJNZ R5, DISPTSFD: LCALL DISP ;调显示子程序显示提示符“P.”LCALL KEYJB 20H.0, KEYALJMP D;**********************************************************************; ;键功能程序区;S2键功能程序KEYA: MOV SEC, #0 ;寄存器初始化,秒寄存器MOV MIN, #0 ;分寄存器MOV HOUR, #0 ;时寄存器MOV DPTR, #DISBI ;“00-00-00”字符代码表首地址MOV R5, #08HMOV R0, #78HDISPTSG:CLR AMOVC A, @A+DPTRMOV @R0, AINC R0INC DPTRDJNZ R5, DISPTSGKEYAS: SETB TR0 ;开定时器DI: LCALL DISPLCALL KEYJB 20H.0, CPLJMP DICP: CLR TR0 ;S2键按下,进入调整状态DD: LCALL DISPLCALL KEYJB 20H.0, KEYASJB 20H.1, KEYBJB 20H.2, KEYCJB 20H.3, KEYDLJMP DD;S3键功能程序KEYB: LCALL HOUR_ ;调时LC: LCALL DISPLCALL KEYJB 20H.0, KEYASJB 20H.1, KEYBJB 20H.2, KEYCJB 20H.3, KEYDLJMP LC;S4键功能程序KEYC: LCALL MIN_ ;调分DIIS: LCALL DISPLCALL KEYJB 20H.0, KEYASJB 20H.1, KEYBJB 20H.2, KEYCJB 20H.3, KEYDLJMP DIIS;S5键功能程序KEYD: LCALL SEC_ ;调秒DISS: LCALL DISPLCALL KEYJB 20H.0, KEYASJB 20H.1, KEYBJB 20H.2, KEYCJB 20H.3, KEYDLJMP DISS;中断服务程序TC0: PUSH ACCPUSH BPUSH PSWSETB RS1CLR RS0MOV TH0, #0D8HMOV TL0, #0F0HINC 33HMOV A, 33HCJNE A, #100, REMOV 33H, #0INC SECMOV A, SECMOV B, #10DIV ABMOV SECSHI,AMOV SECGE, BMOV A, SECCJNE A, #60, REINC MINMOV SEC, #00HMOV SECGE, #0MOV SECSHI,#0MOV A, MINMOV B, #10DIV ABMOV MINSHI, AMOV MINGE, BMOV A, MINCJNE A, #60, REINC HOURMOV MIN, #00HMOV MINGE, #0MOV MINSHI,#0MOV A, HOURMOV B, #10DIV ABMOV HOURSHI,AMOV HOURGE, BMOV A, HOURCJNE A, #24, REMOV HOUR, #0MOV HOURGE,#0MOV HOURSHI,#0RE: POP PSWPOP BPOP ACCRETI;延时1毫秒子程序DL: PUSH PSWSETB RS1SETB RS0MOV R7, #02HDL1: MOV R6, #0FFHDL2: DJNZ R6, DL2DJNZ R7, DL1POP PSWRET;显示子程序;入口: 77H,78H,79H,7AH,7BH,7CH,7DH,7EH,7FH,DISP: PUSH DPHPUSH DPLPUSH ACCPUSH PSWCLR RS1 ;改变当前寄存器组为组1SETB RS0MOV R1, #78H ;显示缓冲存储单元首地址MOV R2, #0FEH ;从右至左显示,共阳极DISP1:MOV A, @R1MOV DPTR, #TABMOVC A, @A+DPTRMOV P0, A ;送段控MOV P2, R2 ;送位控LCALL DL ;延时2毫秒为什么这里要延时MOV A, R2JNB ACC.7, DISP2 ;为0转移;RL AINC R1MOV R2, ALJMP DISP1DISP2: POP PSW ;恢复当前寄存器组的组号POP ACCPOP DPLPOP DPHRET;键扫描子程序KEY: LCALL KEYCHULI ;调P1口数据处理子程序JZ EXIT ;没有键按下,转返回LCALL DISP ;调显示子程序去抖动LCALL DISPLCALL KEYCHULI ;调P1口数据处理子程序JZ EXIT ;没有键按下,转返回MOV B, 20H ;保存取反后的键值KEYSF: LCALL KEYCHULI ;调P1口数据处理子程序JZ KEY1 ;键释放,转恢复键值LCALL DISP ;调显示子程序延时LJMP KEYSF ;等待释放KEY1: MOV 20H, B ;键值送20H保存EXIT: RET ;子程序返回;P1口数据处理子程序KEYCHULI:PUSH PSW ;保护现场CLR RS1 ;改变当前寄存器组为组1SETB RS0MOV P1, #0FFH ;先向P1口写1MOV A, P1 ;读P1口数据CPL A ;P1口数据取反MOV 20H, A ;保存取反后的键值CLR RS1 ;恢复当前寄存器组为组0CLR RS0POP PSW ;恢复现场RET ;子程序返回;加1子程序SEC_: INC SECMOV A, SECMOV B, #10DIV ABMOV SECSHI, AMOV SECGE, BMOV A, SECCJNE A, #60, EXIMOV SEC, #0MOV SECGE, #0MOV SECSHI, #0LJMP EXIMIN_: INC MINMOV A, MINMOV B, #10DIV ABMOV MINSHI, AMOV MINGE, BMOV A, MINCJNE A, #60, EXIMOV MIN, #0MOV MINGE, #0MOV MINSHI, #0LJMP EXIHOUR_: INC HOURMOV A, HOURMOV B, #10DIV ABMOV HOURSHI, AMOV HOURGE, BMOV A, HOURCJNE A, #24, EXIMOV HOUR, #0MOV HOURGE, #0MOV HOURSHI, #0EXI: RET;常数表格区------------------------------------------------------------;系统初始化后提示符“P.”字符代码表DISBH: DB 11H,10H,10H,10H,10H,10H,10H,10H ;“P.”字符序号DISBI: DB 00H,00H,12H,00H,00H,12H,00H,00H;显示字符段选码表(共阳极代码)TAB: DB 0C0H, 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H ;0-8DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0BFH;9,A,B,C,D,E,F,灭,p. END12设计结论、仿真结果、误差分析3 4.1 数字电子钟的设计结论及使用说明该电子钟上电或按键复位后能自动显示系统提示符“P.”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从0时0分0秒开始运行,进入时钟运行状态;再次按电子钟启动/调整键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按启动/调整键再次进入时钟运行状态。