单片机电子钟课程设计
- 格式:doc
- 大小:259.93 KB
- 文档页数:19
单片机MCS-51数钟课程设计系别:专业:班级:姓名及学号:日期:目录单片机MCS-51数钟 (1)课程设计 (1)一、课程设计的目的 (3)二、课程设计任务 (3)三、硬件结构概述 (4)(一)复位电路 (4)(二)晶振电路 (4)(三)按键电路 (4)(四)显示部分 (5)四、软件结构概述 (5)(一)代码说明 (5)(二)按键处理思路 (10)(三)秒表设计思路 (11)五、调试过程 (12)(一)系统仿真 (12)(二)仿真过程中出现的问题及解决方案 (12)六、心得体会 (13)七、参考文献 (14)一、课程设计的目的(1)巩固、加深和扩大单片机应用的知识面, 提高综合及灵活运用所学知识解决工业控制的能力;二、(2)培养针对课题需要, 选择和查阅有关手册、图表及文献资料的自学能力, 提高组成系统、编程、调试的动手能力;三、(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程, 软硬件设计的方法、内容及步骤。
四、课程设计任务(1)在ZY15MCU12BD型综合单片机实验箱的硬件结构上编写软件完成设计。
也可以在其它MCS—51单片机硬件板上完成, 或自行设计硬件并制做完成。
(2)程序的首地址应使目标机可以直接运行, 即从0000H开始。
在主程序的开始部分必须设置一个合适的栈底。
程序放置的地址须连续且靠前, 不要在中间留下大量的空闲地址, 以使目标机可以使用较少的硬件资源。
(3)6位LED数码管从左到右分别显示时、分、秒(各占用2位), 采用24小时标准计时制。
开始计时时为000000, 到235959后又变成000000。
(4)在键盘上选定3个键分别作为小时、分、秒的调校键。
每按一次键, 对应的显示值便加1。
分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。
在调校时均不向上一单位进位 (例如分加到59后变为00, 但小时不发生改变)。
(5) 软件设计必须使用MCS-51片内定时器, 采用定时中断结构, 不得使用软件延时法。
数字电子钟单片机课程设计一、课程目标知识目标:1. 学生能理解数字电子钟的基本工作原理,掌握单片机在数字电子钟中的应用。
2. 学生能掌握数字电子钟的各功能模块(如计时、闹钟、显示等)的设计与实现。
3. 学生了解并掌握数字电子钟程序编写的基本方法,学会运用编程语言(如C 语言)进行程序设计。
技能目标:1. 学生能运用所学知识,设计并制作一个简易的数字电子时钟,具备基本的时间显示、闹钟等功能。
2. 学生能够独立完成程序编写,实现数字电子钟的基本功能,并具备一定的调试与优化能力。
3. 学生能够通过团队合作,发挥各自专长,共同完成课程设计任务。
情感态度价值观目标:1. 学生在课程学习中,培养对电子技术的兴趣和爱好,激发创新意识。
2. 学生通过实践活动,培养动手能力、解决问题的能力和团队协作精神。
3. 学生在学习过程中,树立正确的价值观,认识到科技对生活的重要性,增强社会责任感。
本课程针对高年级学生,课程性质为实践性较强的设计与制作类课程。
学生在前期课程中已具备一定的电子技术基础和编程能力,本课程旨在巩固和拓展这些知识。
在教学过程中,要求教师注重引导学生主动探索、实践,鼓励学生发挥创新能力,同时关注学生的个体差异,提供有针对性的指导。
通过课程目标的实现,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续相关课程的学习打下坚实基础。
二、教学内容1. 数字电子钟原理及单片机基础:包括时钟电路、计数器、寄存器等基本原理,以及单片机的内部结构、工作原理和编程接口。
- 教材章节:第一章 电子时钟原理;第二章 单片机基础- 内容列举:时钟电路设计、计数器应用、寄存器配置、单片机内部结构、I/O 口编程。
2. 数字电子钟功能模块设计:讲解并实践计时、闹钟、显示等模块的设计方法。
- 教材章节:第三章 数字电子钟设计;第四章 模块化设计- 内容列举:计时模块、闹钟模块、显示模块设计,模块间通信协议。
3. 程序设计与编写:学习数字电子钟的程序编写方法,运用C语言进行程序设计。
单片机课程设计电子时钟一、课程目标知识目标:1. 让学生理解单片机的基本原理和编程方法,掌握单片机在电子时钟设计中的应用。
2. 使学生掌握电子时钟的组成和工作原理,包括时、分、秒的显示与计时功能。
3. 帮助学生了解电子时钟设计中涉及的硬件知识,如晶振、计数器、显示器件等。
技能目标:1. 培养学生运用单片机编程实现电子时钟功能的能力,提高学生的动手实践能力。
2. 培养学生分析问题、解决问题的能力,能够针对电子时钟设计过程中遇到的问题进行调试和优化。
3. 培养学生团队协作能力,通过分组合作完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养学生主动学习的积极性。
2. 培养学生严谨的科学态度,注重实验数据的真实性,养成良好的实验习惯。
3. 增强学生的创新意识,鼓励学生在课程设计中发挥想象力和创造力,提高学生的创新能力。
课程性质:本课程为实践性课程,注重培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的单片机基础知识和编程技能,对电子制作有较高的兴趣。
教学要求:结合课本内容,注重理论与实践相结合,通过课程设计提高学生的综合应用能力。
将课程目标分解为具体的学习成果,以便在教学设计和评估过程中有针对性地指导学生。
二、教学内容1. 理论知识:- 单片机原理与编程:复习课本第三章内容,重点掌握单片机的内部结构、工作原理、指令系统及编程方法。
- 电子时钟原理:学习课本第四章关于时钟电路的设计,了解时、分、秒的计数原理及显示技术。
2. 实践操作:- 硬件设计:根据课本第五章内容,选用51单片机及相关元器件,设计电子时钟的硬件电路,包括晶振、计数器、显示器件等。
- 软件编程:运用C语言或汇编语言,编写电子时钟的程序代码,实现时、分、秒的显示与计时功能。
3. 教学大纲:- 第一周:复习单片机基础知识,讲解电子时钟原理,分配课程设计任务。
- 第二周:进行硬件电路设计,学习并选用合适的元器件,绘制原理图。
单片机课程设计报告---单片机的电子钟设计单片机课程设计报告---单片机的电子钟设计一、设计简介本课程设计是以单片机为核心,设计一个具有显示时间和闹钟功能的电子钟。
电子钟是人们日常生活中必备的计时工具,其精度和稳定性直接影响到人们的时间安排和生活质量。
因此,本设计的目的是通过学习和实践,掌握单片机的应用和电子钟的设计方法,提高我们的实践能力和理论知识水平。
二、硬件设计1.单片机选择本设计选用AT89C51单片机作为主控制器。
AT89C51是一种低功耗、高性能的8位单片机,具有丰富的I/O口和片内资源,适合用于各种嵌入式系统开发。
2.显示模块显示模块采用LED数码管,用于显示时间、日期和闹钟状态。
为了方便调试和编程,我们选用4位一体式数码管。
3.按键模块按键模块包括功能键和调整键,用于设置时间、日期和闹钟。
我们选用4个独立式按键,分别实现上调、下调、设置和闹钟功能。
4.蜂鸣器模块蜂鸣器模块用于发出闹钟声音。
我们选用一款常见的无源蜂鸣器,通过单片机的一个IO口控制其频率,实现声音提示功能。
三、软件设计1.时钟芯片驱动本设计选用DS1302时钟芯片,用于提供实时时间和日期的信息。
DS1302与单片机通过I2C协议进行通信,需要编写相应的驱动程序。
驱动程序包括时钟芯片的初始化、数据读写和中断处理等。
2.显示驱动显示驱动程序负责控制数码管的显示。
驱动程序包括延时函数、位选函数和段选函数等。
通过调用这些函数,我们可以实现时间、日期和闹钟状态的动态显示。
3.按键驱动按键驱动程序负责识别用户的按键操作。
驱动程序通过检测独立式按键的状态变化,识别出不同的按键操作,并执行相应的功能。
例如,当用户按下上调键时,驱动程序将调用时钟芯片的读秒函数,并将时间的小时数加1。
4.蜂鸣器驱动蜂鸣器驱动程序负责控制蜂鸣器的声音频率。
驱动程序通过设置单片机的定时器寄存器,产生一定频率的方波信号,驱动蜂鸣器发声。
为了实现不同的声音效果,我们可以通过改变方波信号的频率和持续时间来实现。
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. 让学生掌握单片机的基本原理,理解其内部结构及工作流程;2. 使学生掌握电子时钟的基本原理,包括时、分、秒的计算与显示;3. 引导学生了解并运用编程语言(如C语言)实现对单片机的控制。
技能目标:1. 培养学生运用所学知识,独立设计并制作一个简单的电子时钟;2. 提高学生动手实践能力,学会使用编程软件、调试程序;3. 培养学生团队协作能力,共同完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子制作的兴趣,培养其创新意识;2. 培养学生面对问题主动思考、积极探究的良好习惯;3. 培养学生具备耐心、细心的品质,提高其克服困难的自信心。
课程性质:本课程属于实践性较强的课程,要求学生将理论知识与实际操作相结合,完成电子钟的设计与制作。
学生特点:学生具备一定的单片机基础知识,对编程有一定了解,但对于综合运用知识进行实践尚需引导。
教学要求:注重理论与实践相结合,引导学生通过自主探究、动手实践掌握知识,关注学生的个体差异,提供有针对性的指导。
在教学过程中,注重培养学生团队协作、创新精神和解决问题的能力。
通过课程目标的实现,使学生在知识、技能和情感态度价值观方面得到全面提升。
二、教学内容1. 单片机基础理论:- 单片机的内部结构及工作原理;- 单片机的指令系统及编程方法。
2. 电子时钟原理:- 电子时钟的基本构成,包括时钟芯片、显示模块等;- 时、分、秒的计算与显示方法。
3. 编程语言应用:- C语言基础,包括数据类型、运算符、控制结构等;- 单片机编程技巧,如中断处理、定时器应用等。
4. 实践操作:- 电子时钟的设计与制作,包括硬件电路搭建、程序编写及调试;- 熟悉编程软件(如Keil)的使用,完成程序下载与调试。
教学大纲安排:1. 第一周:单片机基础理论,电子时钟原理学习;2. 第二周:C语言基础知识学习,编程技巧讲解;3. 第三周:实践操作,分组进行电子时钟设计与制作;4. 第四周:课程总结与展示,学生汇报作品,教师点评。
单片机电子时钟课程设计实验报告(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. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
单片机课程设计 电子钟一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握单片机编程的基础知识。
2. 学生能掌握电子时钟的工作原理,理解时、分、秒的显示方式及其换算关系。
3. 学生能描述单片机在电子时钟中的应用,了解中断、定时器等概念。
技能目标:1. 学生能运用所学知识,设计并实现一个简单的电子时钟程序,具备初步的编程能力。
2. 学生能够通过实验操作,学会使用编程软件和烧录工具,完成程序的编写和下载。
3. 学生能够分析并解决电子时钟程序运行过程中出现的问题,提高问题解决能力。
情感态度价值观目标:1. 学生通过单片机课程的学习,培养对电子工程的兴趣,激发创新意识。
2. 学生在团队协作中学会沟通、分享和合作,培养良好的团队精神。
3. 学生在学习过程中,培养耐心、细致、严谨的科学态度,树立正确的价值观。
课程性质:本课程为实践性较强的课程,旨在让学生通过动手实践,掌握单片机编程和电子时钟的设计。
学生特点:学生为初中生,具备一定的物理知识和数学基础,对电子技术和编程有浓厚兴趣。
教学要求:教师需注重理论与实践相结合,引导学生通过动手实践,提高编程能力和问题解决能力。
在教学过程中,关注学生的个体差异,给予个性化指导。
同时,强调团队合作,培养学生的沟通与协作能力。
通过课程学习,使学生在知识、技能和情感态度价值观方面均取得具体的学习成果。
二、教学内容1. 单片机基本原理:介绍51单片机的内部结构、工作原理,重点讲解CPU、内存、I/O口等基础知识。
相关教材章节:第一章 单片机概述2. 单片机编程基础:讲解单片机编程语言(C语言),包括数据类型、运算符、控制语句等。
相关教材章节:第二章 单片机编程语言3. 电子时钟原理:介绍电子时钟的组成、工作原理,重点讲解时、分、秒的显示方式及换算关系。
相关教材章节:第三章 电子时钟原理4. 中断和定时器:讲解中断的概念、原理和应用,以及定时器的工作原理和编程方法。
相关教材章节:第四章 中断与定时器5. 电子时钟程序设计:结合以上知识,设计并实现一个简单的电子时钟程序,包括显示、计时等功能。
单片机电子时钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握电子时钟的工作原理;2. 使学生掌握单片机编程技术,能独立完成电子时钟的程序编写;3. 帮助学生了解电子时钟的设计过程,掌握相关电子元器件的使用。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高编程和调试技巧;2. 培养学生动手实践能力,能独立完成电子时钟的组装和调试;3. 提高学生的团队协作和沟通能力,能在小组项目中发挥积极作用。
情感态度价值观目标:1. 激发学生对电子技术和单片机编程的兴趣,培养创新意识;2. 培养学生严谨、细致的学习态度,养成良好的学习习惯;3. 增强学生的自信心和责任感,使其在项目实践中勇于面对挑战。
课程性质:本课程为实践性较强的课程,旨在通过项目实践,让学生掌握单片机编程和应用,培养实际操作能力。
学生特点:学生具备一定的单片机基础知识和编程技能,对电子技术有一定了解。
教学要求:注重理论与实践相结合,强调动手实践,鼓励学生创新和团队协作。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 单片机基础:回顾单片机的基本原理、结构、工作方式,重点掌握时钟电路、I/O 口编程、中断系统等基础知识。
教材章节:《单片机原理与应用》第1-3章2. 电子时钟原理:学习电子时钟的基本构成、工作原理,分析时钟芯片DS1302的功能和应用。
教材章节:《单片机原理与应用》第6章3. 程序设计:学习C语言编程,编写电子时钟程序,掌握定时器、中断处理、数据存储等编程方法。
教材章节:《单片机C语言程序设计》第4-6章4. 硬件设计:学习电子时钟硬件电路设计,包括单片机、时钟芯片、显示模块、按键模块等。
教材章节:《电子电路设计》第2-3章5. 调试与优化:学习电子时钟系统的调试方法,分析常见问题,进行程序和硬件优化。
教材章节:《单片机原理与应用》第8章6. 项目实践:分组进行电子时钟项目实践,从硬件组装、编程调试到产品展示,全面锻炼学生的动手能力。
单片机课程设计报告学院:机械与电子工程学院专业:自动化姓名:巫增华学号:1020620132指导老师:朱兆优单片机课程设计报告一、设计要求用8051单片机设计扩展6位数码管的静态或动态显示电路,再连接几个按键和一个蜂鸣器报警电路,设计出一个多功能电子钟,实现以下功能:(1)走时(能实现时分秒,年月日的计时)(2)显示(分屏切换显示时分秒和年月日,修改时能定位闪烁显示)(3)校时(能用按键修改和校准时钟)(4)定时报警(能定点报时) (未实现)二、设计方案本次设计时钟电路,使用了ATC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用汇编语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、ATC89C51单片机芯片芯片、扬声器、LED数码管显示即可满足设计要求。
(一)设计方案的选择1.计时方案使用单片机内部的可编程定时器。
利用单片机内部的定时计数器进行中端定时,配合软件延时实现时、分、秒的计时。
该方案节省硬件成本,但程序设计较为复杂。
2.显示方案对于实时时钟而言,显示显然是另一个重要的环节。
通常LED显示有两种方式:动态显示和静态显示。
静态显示的优点是程序简单、显示亮度有保证、单片机CPU的开销小,节约CPU的工作时间。
但占有I/O口线多,每一个LED都要占有一个I/O口,硬件开销大,电路复杂。
需要几个LED就必须占有几个并行口,比较适用于LED 数量较少的场合。
当然当LED数量较多的时候,可以使用单片机的串行口通过移位寄存器的方式加以解决,但程序编写比较麻烦。
LED动态显示硬件连接简单,但动态扫描的显示方式需要占有CPU较多的时间,在单片机没有太多实时测控任务的情况下可以采用。
本系统需要采用8位LED数码管来分别显示时、分、秒,因数码管个数较多,故本系统选择动态显示方式。
(二)硬件部分AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
1.主要特性:·与MCS-51 兼容·4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路2.管脚说明: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)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3.振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
AT89C51单片机管脚结构图各个端口对照朱兆优老师编写的《单片机原理与应用》4、总电路原理图(三)软件部分根据上述电子时钟的工作流程,软件设计可分为以下几个功能模块:(1)主程序模块。
主程序主要用于系统初始化:设置计时缓冲区的位置及初值,设置外部中断的工作方式、定时器的工作方式和计数初值、入口地址等参数。
(2)计时模块。
即定时器0中断子程序,完成刷新计时缓冲区的功能。
系统使用6MHz的晶振,假设定时器0工作在方式1,则定时器的最大定时时间为4.0ms,这个值远远小于1s。
因此本系统采用定时器与软件循环相结合的定时方法。
设定时器0工作在方式1,每隔4.0ms溢出中断一次,则循环中断250次延时时间是1s,上述过程重复60次为1分,分计时60次为1小时,小时计时24次则时间重新回到00:00:00。
因定时器0工作在方式1,则4ms定时对应的定时器初值为:65536-4ms/2us=0F05FH,即TH0=0F0H,TL0=5FH。
但应当指出:CPU从响应T0中断到完成定时器初值重装这段时间,定时器T0并不停止工作,而是继续计数。
因此,为了确保T0能准确定时4ms,重装的定时器初值必须加以修正,修正的定时器初值必须考虑到从原定时器初值中扣除计数器多计的脉冲个数。
由于定时器计数脉冲的周期恰好和机器周期吻合,因此修正量等于CPU从响应中断到重装完TL0为止所用的机器周期数。
CPU 响应中断通常要3~8个机器周期。
经过测试,定时器0重装的计数初值设为9E5FH~9E67H,可以满足精度要求。
另外,MCS-51单片机只有二进制加法指令,而时间是按十进制递增,因此用加法指令后必须进行二-十进制转换。
计时模块流程图如下图所示。
保护现场重装定时器初值循环次数减1否满250次?是秒单元加1否60s到?是秒单元清0,分单元加1否60分到?是分单元清0,时单元加1否24小时到?是时单元清0恢复现场返回保护现场重装定时器初值循环次数减1否满24次?是日单元加1否30日到?是日单元清0,月单元加1否12月到?是月单元清0,年单元加1恢复现场返回计时模块流程图1、设计程序构思:通过定时\计数器0的方式1对设计的电子时钟进行定时计数,将秒的个、十位分别存放在40H、41H单元,分的个,十位分别存放在42H、43H单元,时的个位、十位分别存放在44H、45H单元,日的个位十位分别存放在50H、51H单元,月的个位十位分别存放52H、53H单元,年的个位十位分别存放在54H、55H单元,通过定时器0中断对秒分时设计走时循环,外部1中断对日月年设计走时循环,通过查键从P0口输出笔形码,另通过P2对应走时程序每隔4ms逐个驱动数码管亮,对P1口进行调时按键设计,通过电平的跳变对P1.0-P1.5分别设计为秒时分逐个加1和逐个减1,从而实现电子钟的调时功能。
2、实验源程序:ORG 0000AJMP MAINORG 000BHAJMP INT0PORG 0013HAJMP INT1PORG 0030HMAIN: MOV 30H,#00 ;秒MOV 31H,#00 ; 分MOV 32H,#00 ;时MOV 33H,#00 ;日MOV 34H,#00 ;月MOV 35H,#00 ;年MOV R1,#00MOV R2,#00MOV TMOD,#01HMOV TH0,#0F0HMOV TL0,#5FHSETB TR0MOV IE,#86HMOV P2,#00SJMP $KEY_IN: MOV A,P1 ;按键调时ANL A,#3FHCJNE A,#3FH,KEYQDLJMP EXIT5KEYQD: LCALL DEL10MSMOV A,P1ANL A,#3FHCJNE A,#3FH,KEY1LJMP EXIT5KEY1: CJNE P1,#3EH, KEY2 ;查键ACALL DEL10MSLJMP KEYK1AJMP KEY_INKEY2: CJNE P1,#3DH,KEY3ACALL DEL10MSLJMP KEYK2AJMP KEY_INKEY3: CJNE P1,#3AH,KEY4ACALL DEL10MSLJMP KEYK3AJMP KEY_INKEY4: CJNE P1,#36H,KEY5ACALL DEL10MSLJMP KEYK4AJMP KEY_INKEY5: CJNE P1,#2FH,KEY6ACALL DEL10MSLJMP KEYK5AJMP KEY_INKEY6: CJNE P1,#1FH,EXIT5ACALL DEL10MSLJMP KEYK6AJMP KEY_INEXIT5: RETDEL10MS: MOV 60H,#10 ;延时程序LOOOP1: MOV 61H,#250DJNZ 61H,$DJNZ 60H,LOOOP1RETKEYK1: ACALL DEL10MSMOV R3,30HCJNE R3,#60,LOP1MOV 30H,#00AJMP EXIT5LOP1: INC 30HAJMP EXIT5KEYK2: ACALL DEL10MSMOV R3,31HCJNE R3,#60,LOP2MOV 31H,#00AJMP EXIT5LOP2: INC 31HAJMP EXIT5KEYK3: ACALL DEL10MSMOV R3,32HCJNE R3,#24,LOP3MOV 32H,#00AJMP EXIT5LOP3: INC 32HAJMP EXIT5KEYK4: ACALL DEL10MSMOV R3,30HCJNE R3,#00,LOP4MOV 30H,#59AJMP EXIT5LOP4: DEC 30HAJMP EXIT5KEYK5: ACALL DEL10MSMOV R3,31HCJNE R3,#00,LOP5MOV 31H,#59AJMP EXIT5LOP5: DEC 31HAJMP EXIT5KEYK6: ACALL DEL10MSMOV R3,32HCJNE R3,#00,LOP6MOV 32H,#23LOP6: DEC 32HAJMP EXIT5INT0P: PUSH PSWPUSH ACCMOV TH0,#0F0HMOV TL0,#5FHINC R2CJNE R2,#250,EXIT ;若循环到250次,秒加1,R2清0 MOV R2,#00INC 30HMOV A,30HCJNE A,#60,EXIT ;达到60秒,分加1MOV 30H,#00INC 31HMOV A,31HCJNE A,#60,EXIT ;达到60分,时加1MOV 31H,#00INC 32HMOV A,32HCJNE A,#24,EXITMOV 32H,#00INC 33HMOV A,33HCJNE A,#30,EXIT0MOV 33H,#00INC 34HMOV A,34HCJNE A,#12,EXIT0MOV 34H,#00INC 35HEXIT0: LCALL EXIT1EXIT: MOV DPTR,#TAB ;时分秒显示MOV A,30HMOV B,#10DIV ABMOV 40H,B ;秒个位送到40H,十位送到41H MOV 41H,AMOV A,31HMOV B,#10DIV ABMOV 42H,BMOV 43H,AMOV A,32HMOV B,#10DIV ABMOV 44H,BMOV 45H,AMOV A,R2MOV B,#08DIV ABMOV A,BMOV R0,#40HCJNE A,#00,LOOP1MOV P2,#01HMOV R0,#45HACALL CHAAJMP RETURNLOOP1: CJNE A,#01,LOOP2MOV P2,#80HACALL CHAAJMP RETURNLOOP2: INC R0CJNE A,#02,LOOP3MOV P2,#40HACALL CHAAJMP RETURNLOOP3: CJNE A,#03,LOOP4AJMP SUELOOP4: INC R0CJNE A,#04,LOOP5MOV P2,#10HACALL CHAAJMP RETURNLOOP5: INC R0CJNE A,#05,LOOP6MOV P2,#08HACALL CHAAJMP RETURNLOOP6: CJNE A,#06,LOOP7MOV P2,#04HMOV P0,#0BFHAJMP RETURNLOOP7: INC R0CJNE A,#07,RETURNMOV P2,#02HACALL CHAAJMP RETURNSUE: MOV A,40H ;秒闪烁MOV B,#2DIV ABMOV A,BCJNE A,#1,RANMOV P2,#20HMOV P0,#0BFHAJMP RETURNRAN: CLR P2.5AJMP RETURNCHA: MOV A,@R0 ;查表MOVC A,@A+DPTRMOV P0,ARETRETURN: POP ACCPOP PSWRETITAB: DB 0C0H,0F9H,0A4H,0B0HDB 99H,92H,82H,0F8HDB 80H,90H,88H,83HDB 0C6H,0A1H,86H,8EHINT1P: PUSH PSWPUSH ACCEXIT1: MOV A,33H ;年月日显示MOV B,#10DIV ABMOV 50H,BMOV 51H,AMOV A,34HMOV B,#10DIV ABMOV 52H,BMOV 53,AMOV A,35HMOV B,#10DIV ABMOV 54H,BMOV 55H,AMOV A,R2MOV B,#8DIV ABMOV A,BMOV R1,#50HCJNE A,#00,WUMOV P2,#01HMOV R1,#55HACALL CHA1ACALL RETURNNWU: LJMP LP1LP1: CJNE A,#01,LP2MOV P2,#80HACALL CHA1AJMP RETURNNLP2: INC R1CJNE A,#02,LP3MOV P2,#40HACALL CHA1AJMP RETURNN LP3: CJNE A,#03,LP4MOV P2,#20HMOV P0,#0BFHAJMP RETURNN LP4: INC R1CJNE A,#04,LP5MOV P2,#10HACALL CHA1AJMP RETURNNLP5: INC R1CJNE A,#05,LP6MOV P2,#08HACALL CHA1AJMP RETURNN LP6: CJNE A,#06,LP7MOV P2,#04HMOV P0,#0BFHAJMP RETURNN LP7: INC R1CJNE A,#07,RETURNNMOV P2,#02HACALL CHA1AJMP RETURNNCHA1: MOV A,@R1MOVC A,@A+DPTRMOV P0,ARETRETURNN: POP ACCPOP PSWRETIEND三、实验调试通过用TKStudio软件对程序进行调试,另外通过Proteus 7软件对所设计的仿真电路进行调试,通过调入所编程序,查看运行的仿真结果。