课程设计(单片机系统设计)单片机电子时钟
- 格式:doc
- 大小:1.23 MB
- 文档页数:19
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. 程序编写与调试:教授学生编写电子时钟程序,实现时、分、秒的显示功能,并进行程序调试。
目录1引言 (1)1.1设计内容和要 (1)1.2 工作原理 (2)2总体设计 (2)2.1 方案设计 (2)2.2 系统框图 (2)2.3 核心芯片简介 (3)2.3.1 DS1302简介 (3)2.3.2 AT89C51简介 (3)3 智能电子钟软硬件电路的设计 (4)3.1 硬件设计 (4)3.1.1 复位电路设计 (4)3.1.2 DS1302与单片机的接口设计 (5)3.1.3 LED显示设计 (5)3.1.4 电源设计 (6)3.1.5 按键开关去抖设计 (6)3.1.6 时钟电路的设计 (7)3.1.7 电路总原理图设计 (8)3.2 软件设计 (8)3.2.1 流程图 (8)4protues仿真与调试 (11)4.1 电路的仿真 (11)4.2软件调试 (11)结论……………………………………………………………………………………………错误!未定义书签。
参考文献 (14)附录 (15)源程序 (15)1 引言电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。
本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。
本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。
本设计应用AT89C51芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。
这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。
该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。
1.1设计内容和要求以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。
毕业设计论文_单片机电子时钟的设计摘要:电子时钟作为一种常见的时间显示装置,在现代社会中应用广泛。
本文设计了一款基于单片机的电子时钟,使用DS1307实时时钟芯片来获取系统时间,并通过数码管进行显示。
设计过程中,通过对单片机的编程和电路的连接,实现了时间的显示与调节功能,具有较高的准确性和稳定性。
该设计方案简单、实用,可用于各种场合。
关键词:单片机;电子时钟;DS1307;数码管1.引言电子时钟是一种利用电子技术构造的显示时间的装置,具有时间准确、使用简单、显示清晰等特点,广泛应用于生活和工作中。
本文以单片机为核心,设计了一款实时准确的电子时钟,提高了时间的准确度和稳定性。
2.设计原理该设计的核心是通过单片机与DS1307实时时钟芯片的连接,使得单片机可以获取到准确的系统时间,并通过数码管进行显示。
DS1307芯片通过I2C总线与单片机连接,通过读取芯片中的时间寄存器,单片机可以获得当前的时间信息。
3.硬件设计本设计中使用了AT89S52单片机作为主控芯片,通过引脚与DS1307芯片相连。
单片机的P0口接到数码管的段选信号,P1口接到数码管的位选信号,通过控制这两个口的输出状态,可实现对数码管上显示的数字进行控制。
同时,为了使时钟可以正常运行,需外接一个晶振电路为单片机提供时钟信号。
4.软件设计通过对单片机的编程,实现了以下功能:(1)初始化DS1307芯片,设置初始时间;(2)每隔一秒读取一次DS1307芯片的时间寄存器,将时间信息保存到单片机的RAM中;(3)根据当前时间信息,在数码管上显示对应的小时和分钟。
5.调试与测试经过硬件的连接以及软件的编写,进行了调试与测试。
将初始时间设置为08:30,观察数码管上的显示是否正确,以及时间是否准确。
同时,通过手动调节DS1307芯片中的时间,检查单片机是否能正确获取时间,并进行显示。
6.总结与展望本文设计了一款基于单片机的电子时钟,通过单片机与DS1307芯片的连接和编程,实现了准确的时间显示功能。
单片机课程设计电子时钟一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握单片机在电子时钟设计中的应用。
2. 使学生掌握电子时钟的组成和工作原理,包括时、分、秒的显示与计时功能。
3. 帮助学生了解电子时钟设计中涉及的硬件知识,如晶振、计数器、显示器件等。
技能目标:1. 培养学生运用单片机编程实现电子时钟功能的能力,提高学生的动手实践能力。
2. 培养学生分析问题、解决问题的能力,能够针对电子时钟设计过程中遇到的问题进行调试和优化。
3. 培养学生团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养学生主动学习的积极性。
2. 培养学生严谨的科学态度,注重实验数据的真实性,养成良好的实验习惯。
3. 增强学生的创新意识,鼓励学生在课程设计中发挥想象力和创造力,提高学生的创新能力。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的单片机基础知识和编程技能,对电子制作有较高的兴趣。
教学要求:结合课本内容,注重理论与实践相结合,通过课程设计提高学生的综合应用能力。
将课程目标分解为具体的学习成果,以便在教学设计和评估过程中有针对性地指导学生。
二、教学内容1. 理论知识:- 单片机原理与编程:复习课本第三章内容,重点掌握单片机的内部结构、工作原理、指令系统及编程方法。
- 电子时钟原理:学习课本第四章关于时钟电路的设计,了解时、分、秒的计数原理及显示技术。
2. 实践操作:- 硬件设计:根据课本第五章内容,选用51单片机及相关元器件,设计电子时钟的硬件电路,包括晶振、计数器、显示器件等。
- 软件编程:运用C语言或汇编语言,编写电子时钟的程序代码,实现时、分、秒的显示与计时功能。
3. 教学大纲:- 第一周:复习单片机基础知识,讲解电子时钟原理,分配课程设计任务。
- 第二周:进行硬件电路设计,学习并选用合适的元器件,绘制原理图。
一、设计内容该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。
二、电子时钟设计思想:用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY〔自己计算〕。
形成定时时间为50ms。
用片内RAM的7BH单元对50ms 计数,计20次产生秒计数器78H单元加1,秒计数器加到60那么分计数器79H单元加1,分计数器加到60那么时计数器7AH单元加1,时计数器加到24那么时计数器清0。
然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。
显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。
在处理过程中加上了按键判断程序,能对按键处理。
三、MCS-51单片机系统简介单片机应用系统由硬件系统和软件系统两局部组成。
硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。
软件系统包括监控程序和各种应用程序。
在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。
与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。
在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。
在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。
配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED 指示灯就可以进行处理了。
在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。
显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。
51单片机课程设计电子时钟课程设计:单片机课程设计课程名称:单片机电子时钟题目名称:电信学院学院:程工专业子电:姓名曾代科:学号 3201:国加杨指导教师2010月11年 7日一、课程设计名称:51单片机电子时钟二、设计方案:1、通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。
2、采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。
三、设计内容:这里采用应用广泛的AT89C52作为时钟控制芯片,利用单片机内部的定时/计数器T0 实现软时钟的目的。
首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒,妙计60次形成分,分计60形成小时,小时计到12。
最后通过数码管把它们的内容在相应的位置显示出来,达到时、分、秒计时的功能。
此外还要实现对时间的调整功能,89C52的、、外接三个独立按键,当按下按键时,系统进入调时间的状态或启动时间显示的功能;当按下按键时,对显示的数码管进行加一的功能;当按下按键时,对显示的数码管进行减一的功能,达到调整时间的目的。
四、系统软件程序设计1.主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。
2、数码管显示模块本实验有8个数码管,从右到左为妙、横线、分、横线、时。
在本系统中数码管显示采用软件译码动态显示。
在存储器中首先建立一张显示信息的字段码表,显示时,先中取出显示的信息,然后通过查表程序在从显示缓冲区字段表中查出所显示的信息的断码,从P0端口输出,同时在P2端口进行数码管显示。
3、定时器/计数器T0中断服务程序T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。
单片机电子时钟设计一、作品功能介绍该作品是个性化电子钟设计,技术上主要用单片机(AT89S52)主控,6位LED数码显示,分别显示“小时:分钟:秒”。
该作品主要用于24小时计时显示,能整时报时,能作为秒表使用,能定时闹铃1分钟。
功能介绍:(1)上电以后自动进入计时状态,起始于00:00:00。
(2)设计键盘调整时间,完成时间设计,并设置闹钟。
(3)定时时间为1/100秒,可采用定时器实现。
(4)采用LED数码管显示,时、分,秒采用数字显示。
(5)采用24小时制,具有方便的时间调校功能。
(6)具有时钟和秒表的切换功能。
使用方法:开机后时钟在00:00:00起开始计时。
(1)长按进入调分状态:分单元闪烁,按加1,按减1.再长按进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。
(2)(2)按进入设定闹时状态: 12:00: ,可进行分设定,按分加1,再按为时调整,按时加1,按调闹钟结束.在闹铃时可按停闹,不按闹铃1分钟。
(3)按下进入秒表状态:再按秒表又启动,按暂停,再按秒表清零,按退出秒表回到时钟状态。
二、电路原理图如原理图所示,硬件系统主要由单片机最小应用系统、LED数码管显示模块、电源模块、晶振模块、按键模块等组成。
电子时钟原理图各个模块设计1.单片机系统 AT89S52 AT89S52概述:是一款非常适合单片机初学者学习的单片机,它完全兼容传统的8051,8031的指令系统,他的运行速度要比8051快最高支持达33MHz的晶体震荡器,在此系统中使用12MHz的晶振。
AT89S52具有以下标准功能: 8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子时钟院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录 A (13)附录 B (21)附录 C (22)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容,要求实现在MCS51单片机上对数字电子钟的基本功能设计,对当前时间正确显示,并可根据需要对时间进行更改,以完成时间的校对和闹钟的设置。
时钟时间以时、分、秒在6位数码管上显示,小时以24小时计时模式,分秒均为60进位。
用6MHz晶振产生振荡脉冲,定时器进行秒计时。
调整设置时间的过程运用可编程键盘上的按键进行控制,共设有5个按键,首先按键A进入校时模式或E进入闹钟模式,再分别按键B对小时或C分钟进行更改,每按键一次数码管计数显示加一,更改结束后按键D退出设置,时钟正常显示。
闹钟时间到时,蜂鸣器鸣响10秒后时钟正常显示。
1.2 设计思路采用C语言程序设计结合硬件电路设计方法,利用Lab6000实验箱来实现数字电子钟的设计。
1)提出方案根据设计要求,可将本次设计分为3个模块进行:1)时钟显示模块:主要用于时间的正确显示。
2)校时模块:此模块用于时钟的校对,以完成用户更改时间的需求。
3)闹钟模块:用于实现闹钟的时间设置和定点闹铃的功能。
2)方案论证时钟显示模块中,利用可编程定时器中断进行秒计时,将时间显示在6位数码管上。
校时模块主要利用键盘上5个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。
闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。
单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
课程论文首页(单片机系统设计)课程设计----单片机电子时钟中文摘要:本课程设计是利用89C52单片机最小系统,综合应用单片机定时器、中断、液晶显示、蜂鸣报警、独立式键盘输入等知识,设计电子时钟。
采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。
在完成计时的基本要求之后对电子时钟的功能进行拓展,设计闹铃电路。
闹铃电路是根据计时系统的输出状态产生一脉冲信号,然后去触发蜂鸣器实现闹钟功能。
显示部分利用LCD1602显示,加上按键的人机交换可以随时对时间进行调整。
电源电路部分,使用开发板或者试验箱上的5V电源进行供电。
关键词:单片机电子时钟延时一、整体设计1、图1是电子时钟整体设计框图。
由电源、按键、蜂鸣器、液晶显示组成。
图1电子时钟总体方框图2、整机工作原理电子钟的工作主要框图如图1所示:电子钟电路的核心AT89S52单片机,其内部有8KB 的ROM,无须外扩程序储存器。
当从键盘电路获得按键信息,经过软件协调驱动硬件电路工作,由单片机生成相应操作代码并再通过限流传送给显示电路,从而显示出从键盘处获得的信息。
在整个过程中,由时钟电路提供单片机保持稳定工作的工作时钟;复位电路利用按键复位功能,其中按键是从键盘电路得到的。
整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发蜂鸣器实现报时。
另系统配备LCD显示,STC89C52的P0口和P1.0~P1.2口作为LCD的输入口。
二、硬件电路设计2. 1 89S52单片机最小系统AT89C52单片机作为电子时钟的最小系统与电源按键DS1302时钟芯片等完成设计功能是设计的核心部分其组成如图2.1所示:VCC:电源。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
图2.1 89S52单片机最小系统2.1.1.电子时钟设计的整体思想原理说明:利用定时器T0定时,每隔10ms产生一次中断,中断100次(1s)后秒单元加1;秒单元second满60后向分单元进位,分单元minute加1;当分单元满60后时单元hour加1。
2.1.2电子时钟显示思想利用1602液晶进行显示第一行显示年月日,第二行显示时分秒。
实物电路如图2.1.2图2.1.22.2电源电路没有制作电源电路部分。
使用开发板或者试验箱上的5V电源进行供电。
2.3按键电路独立式按键如图2.3●按键1为功能键按一次可分别进入调节时钟的秒和分、时、日、月、年,按两次可调节闹钟定时时间,按三次返回正常显示时间。
加键,每按一下相应位置数值加一。
●按键2设定调节时分秒的位置●按键3,按键4分别为数字加一和减一键。
●复位键,按一下时间复位。
图2.3 独立式按键2.4蜂鸣器单片机端口输出的方波经放大滤波后,驱动蜂鸣器发声。
如图2.4图2.42.5复位电路:STC89C52单片机通常采用上电自动复位和按钮复位(如图2.5)两种方式:(一)上电自动复位是通过外部复位电路的电容充电来实现,这样,只要电VCC 的上升时间不超过1ms,就可以实现上电自动复位。
(二)按键手动复位有电平方式和脉冲方式两种,其电平复位是通过使复位端通过VCC电源与电阻接通来实现的,而脉冲复位则是利用了RC微分电路产生的正脉冲来实现的。
本设计选用上电与按键均有效的复位电路,它不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作.图2.52.6时钟振荡电路:在MCS—52芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就0够成了一个稳定的自激振荡器。
如图2.6图2.6 2.7 PCB封装图如图2.7所示图2.7三、程序设计3.1主程序流程图:主程序先开始,然后启动定时器,并LCD初始化和显示时间,后扫描键盘,判断功能键是否按下。
图3.1 主程序流程图图3.2 延时程序约1ms图3.3子程序按键流程四、实验操作相关图:见附录1五、程序如下见附录2六、总结通过通过此次试验更加深刻的将课本理论与实际结合进一步熟悉单片机芯片的结构与掌握了其工作原理和具体使用方法与相关元件的参数计算方法,深刻了解电路板的开发和制作。
调试要点:首先确保各器件的完好性,其次检测各芯片的电源线和地线是否接触良好,然后焊接器件,接好电源用万用表检测各电源端、地端的状态是否正常。
拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。
若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位与其逻辑关系。
将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。
检查无误后插上AT89S51并烧写一简易的程序,观察电路是否能协同工作。
最后烧写工作程序,根据显示现象调试程序直至成功。
这次的设计使我认识到本人对单片机方面的知识知还不够全面,对于书本上的很多知识还不能灵活运用,在对电路的焊接处理还是不够熟练,从中学到了一些很重要的东西,可以很好的将理论转化成实践之后的产物。
我在这一次数字电子钟的设计过程中,很是受益匪浅。
通过对自己在大学三年时间里所学的知识的回顾,并充分发挥对所学知识的理解和对毕业设计的思考与书面表达能力,最终完成了。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
撰写论文的过程也是专业知识的学习过程,它使我运用已有的专业基础知识,对其进行设计,分析和解决一个理论问题或实际问题,把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个实验十分有意义我获得很深刻的经验。
七.元器件清单:参考文献:[1]薛小铃. 单片机系统设计课程设计指导书[R].福州:闽江学院电子工程教研室,2011.9[2]李朝青. 单片机原理与接口技术[M]北京:北京航空航天大学出版社,2006.12[3]张迎新,单片机原理、应用与接口技术(第二版)[M].北京:国防工业出版社,2010.9[4]潘永雄。
新编单片机原理与应用[M].西安:西安电子科技大学出版社,2009.2[5]付家才。
单片机控制实践技术[M].北京:化学工业出版社,2011.3[6]刘军等,单片机原理与接口技术[M].上海:华东理工大学出版社,2008.6[7]何书森等,电子线路设计速成[M].胡州:互见科学技术出版社,2009.10附录:1、与本次试验相关图如下:2.程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit key1=P1^0;sbit key2=P1^1;sbit keyup=P1^2;sbit keydw=P1^3;sbit beep=P2^3;sbit lcdrs=P1^4;sbit lcdrw=P1^5;sbit lcden=P1^6;uchar table2[]={"0123456789-"};intm1,m2,m3,m4,m5,m6,k,n,p,q,m8,w,a,ri,yue,ni an; void delayms(int j){int i;for(j;j>0;j--)for(i=125;i>0;i--);}// LCD写地址void writecom(uchar com) {lcden=0;lcdrs=0;lcdrw=0;delayms(1);lcden=1;delayms(1);P0=com;delayms(1);lcden=0;}//LCD写数据void writedata(uchar dat) {lcden=0;lcdrs=1;lcdrw=0;delayms(1);lcden=1;delayms(1);P0=dat;delayms(1);lcden=0;}// LCD初始化void LCD_Init(){delayms(15);writecom(0x38);delayms(5);writecom(0x38);delayms(5);writecom(0x38);writecom(0x38);writecom(0x08);writecom(0x01);writecom(0x06);writecom(0x0c);}void beepinit(void){beep=0;delayms(100);beep=1;}void beep2(){beep=0;delayms(500);beep=1;}void display(){writecom(0x80+0x02);writedata(table2[nian/1000]);writedata(table2[nian%1000/100]);writedata(table2[nian%100/10]);writedata(table2[nian%10]);writedata(table2[10]);writedata(table2[yue/10]);writedata(table2[yue%10]);writedata(table2[10]);writedata(table2[ri/10]);writedata(table2[ri%10]);writecom(0x80+0x40);writedata(table2[m1/10]);writedata(table2[m1%10]);writedata(table2[10]);writedata(table2[m2/10]);writedata(table2[m2%10]);writedata(table2[10]);writedata(table2[m3/10]);writedata(table2[m3%10]);writecom(0x80+0x48);writedata(table2[m4/10]);writedata(table2[m4%10]);writedata(table2[10]);writedata(table2[m5/10]);writedata(table2[m5%10]);writedata(table2[10]);writedata(table2[m6/10]);writedata(table2[m6%10]);if(k>=20){k=0;m3++;m8++;}if(m3>=60){m3=m3-60;m2++;}if(m2>=60){m2=m2-60;m1++;}if(m1>=24){m1=m1-24;ri++;}switch(yue){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(ri>=32){yue++;ri=ri-31;}break; case 4:case 6:case 9:case 11:if(ri>=31){yue++;ri=ri-30;}break;case 2:if((nian%100==0&nian%400==0)||(nian %100!=0&nian%4==0)){if(ri>=29){yue++;ri=ri-28;}}elseif(ri>=30){yue++;ri=ri-29;}break;default:yue=1;break;}if(m6>=60){m6=m6-60;m5++;}if(m5>=60){m5=m5-60;m4++;}if(m4>=24){m4=m4-24;}}//上调时钟void keyupinit(){if(p==1) //时间上调{if(!keyup){delayms(1);if(!keyup){switch(n){case 1: m3=m3+1; break;case 2: m3=m3+10; break;case 3: m2=m2+1; break;case 4: m2=m2+10; break;case 5: m1=m1+1; break;case 6: m1=m1+10; break;case 7: ri=ri+1; break;case 8: ri=ri+10; break;case 9: yue=yue+1; break;case 10: yue=yue+10; break;case 11: nian=nian+1; break;case 12: nian=nian+10; break;case 13: nian=nian+100; break;case 14: nian=nian+1000; break;}beepinit();while(!keyup);}}}if(p==2) // 闹钟上调{if(!keyup){delayms(1);if(!keyup){switch(n){case 1: m6=m6+1;break;case 2: m6=m6+10;break;case 3: m5=m5+1;break;case 4: m5=m5+10;break;case 5: m4=m4+1;break;case 6: m4=m4+10;break;}beepinit();while(!keyup);}}}}//下调时钟void keydwinit(){if(p==1) // 时间下调{if(!keydw){delayms(1);if(!keydw){switch(n){case 1: m3=m3-1; break;case 2: m3=m3-10; break;case 3: m2=m2-1; break;case 4: m2=m2-10; break;case 5: m1=m1-1; break;case 6: m1=m1-10; break;case 7: ri=ri-1; break;case 8: ri=ri-10; break;case 9: yue=yue-1; break;case 10: yue=yue-10; break;case 11: nian=nian-1; break;case 12: nian=nian-10; break;case 13: nian=nian-100; break;case 14: nian=nian-1000; break;}beepinit();while(!keydw);}}}if(p==2) // 闹钟下调{if(!keydw){delayms(1);if(!keydw){switch(n){case 1: m6=m6-1;break;case 2: m6=m6-10;break;case 3: m5=m5-1;break;case 4: m5=m5-10;break;case 5: m4=m4-1;break;case 6: m4=m4-10;break;}beepinit();while(!keydw);}}}}//选择位数//p:模式选择void xuanze(){n=1;p=1;while(p==1) //时间模式{if(!key2){delayms(5);beepinit();while(!key2);n=n+1;}if(n==15)n=1;keyupinit();keydwinit();if(m1<0) m1=m1+24;if(m2<0) m2=m2+60;if(m3<0) m3=m3+60;display();if(!key1){delayms(2);beepinit();while(!key1);p=2;}}delayms(1);n=1;while(p==2) //闹钟模式{if(!key2){delayms(5);beepinit();while(!key2);n=n+1;}if(n==7)n=1;keyupinit();keydwinit();if(m4<0) m4=m4+24;if(m5<0) m5=m5+60;if(m6<0) m6=m6+60;display();if(!key1){delayms(2);beepinit();while(!key1);p=3;}}}//选择模式void key1init(){TR0=0;xuanze();delayms(5);if(p==3){TR0=1;}}void main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1; //总开关ET0=1; //定时器t0中断允许TR0=1; //开启定时器m1=m2=m3=q=m4=m5=m6=0;nian=2014;yue=01;ri=01;LCD_Init();while(1){if(!key1){delayms(2);beepinit();while(!key1);key1init();delayms(3);}if((m4==0)&&(m5==0)&&(m6==0)) // 初始值不计闹钟{w=0;}else w=1;if((m1==m4)&&(m2==m5)&&(m3==m 6)&&w) //判断闹钟{q=1;m8=0;}if(q==1){if(m8<=30){beep2();}elseq=0;}display();}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;k++;}。