单片机课程设计报告-电子时钟
- 格式:doc
- 大小:309.50 KB
- 文档页数:16
单片机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. 帮助学生了解电子时钟设计中涉及的硬件知识,如晶振、计数器、显示器件等。
技能目标: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显示器。
单片机电子时钟设计一、作品功能介绍该作品是个性化电子钟设计,技术上主要用单片机(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个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。
闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。
多功能电子数字钟设计数字钟在日常生活中最常见, 应用也最广泛。
本文主要就是设计一款数字钟, 以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)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
一、引言随着科技的不断发展,单片机技术在电子领域得到了广泛的应用。
为了提高学生的实践能力,培养实际工程应用能力,我们进行了单片机设计时钟实训。
本实训以AT89C51单片机为核心,通过学习时钟电路的设计、编程和调试,使学生掌握单片机在时钟设计中的应用,提高学生的动手能力和创新思维。
二、实训目的1. 掌握单片机的基本原理和编程方法;2. 熟悉时钟电路的设计和调试;3. 培养学生的实际工程应用能力和创新思维;4. 提高学生的团队协作能力和沟通能力。
三、实训内容1. 硬件设计(1)单片机选型:选用AT89C51单片机作为核心控制单元;(2)时钟电路:采用晶振电路作为时钟源,实现1Hz的基准时钟;(3)显示电路:采用LCD1602液晶显示屏,实现时间、日期和星期等信息显示;(4)按键电路:设计4个按键,分别用于设置时间、日期、星期和闹钟功能;(5)复位电路:采用上电复位和按键复位两种方式,保证系统稳定运行。
2. 软件设计(1)系统初始化:初始化单片机,设置波特率、定时器等;(2)时间显示:通过读取实时时钟芯片(如DS1302)的数据,显示时间、日期和星期;(3)按键处理:根据按键输入,实现时间、日期、星期和闹钟的设置与修改;(4)闹钟功能:当设定的时间到达时,通过蜂鸣器发出提示音。
3. 调试与优化(1)调试方法:使用Proteus软件进行仿真调试,观察程序运行状态,分析故障原因;(2)优化方法:针对仿真过程中出现的问题,优化程序代码,提高程序运行效率。
四、实训过程1. 硬件制作(1)按照设计图纸,焊接电路板;(2)连接晶振、LCD显示屏、按键和蜂鸣器等元器件;(3)调试电路,确保各元器件正常工作。
2. 软件编写(1)使用Keil C51软件编写程序,实现时钟显示、按键处理和闹钟功能;(2)编译程序,生成HEX文件。
3. 调试与优化(1)使用Proteus软件进行仿真调试,观察程序运行状态;(2)针对仿真过程中出现的问题,优化程序代码,提高程序运行效率;(3)将优化后的程序烧录到单片机中,进行实际运行测试。
单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
实验四 电子钟(定时器、中断综合实验)一、实验目的熟悉MCS51类CPU 的定时器、中断系统编程方法, 了解定时器的应用、实时程序的设计和调试技巧。
二、实验内容编写一个时钟程序, 产生一个50ms 的定时中断, 对定时中断计数, 将时、分、秒显示在数码管上。
三、程序框图主程序中断处理电子钟程序框图四、实验步骤 1.连线说明: E5 区A0 ←→ A3 区A0 E5 区CS ←→ A3 区CS5 E5 区CLK ←→ B2 区2MHzE5 区A.B.C.D ←→ G5 区A.B.C.D (排线每个8 位, 注意高低位一致) 2.时间显示在数码管上五、程序清单 ms50 DATA 31H ;存放多少个50ms sec DATA 32H ;秒 min DATA 33H ;分hour DATA 34H ;时buffer DATA 35H ;显示缓冲区EXTRN CODE(Display8)ORG 0000HLJMP STARORG 000BH ;定时器T0中断处理入口地址LJMP INT_Timer0ORG 0100HSTAR: MOV SP,#60H ;堆栈MOV ms50,A ;清零ms50MOV hour,#12 ;设定初值: 12:59:50MOV min,#59MOV sec,#50MOV TH0,#60 ;定时中断计数器初值MOV TL0,#176 ;定时50msMOV TMOD,#1 ;定时器0: 方式一MOV IE,#82H ;允许定时器0中断SETB TR0 ;开定时器T0STAR1: LCALL Display ;调用显示JNB F0,$CLR F0SJMP STAR1 ;需要重新显示时间;中断服务程序INT_Timer0: MOV TL0,#176-5MOV TH0,#60PUSH 01HMOV R1,#ms50INC @R1 ;50ms单元加1CJNE @R1,#20,ExitIntMOV @R1,#0 ;恢复初值INC R1INC @R1 ;秒加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;分加1CJNE @R1,#60,ExitInt1MOV @R1,#0INC R1INC @R1 ;时加1CJNE @R1,#24,ExitInt1MOV @R1,#0ExitInt1: SETB F0ExitInt: POP 01HRETIHexToBCD: MOV B,#10DIV ABMOV @R0,BINC R0MOV @R0,AINC R0RETDisplay: MOV R0,#bufferMOV A,secACALL HexToBCDMOV @R0,#10H ;第三位不显示INC R0MOV A,minACALL HexToBCDMOV @R0,#10H ;第六位不显示INC R0MOV A,hourACALL HexToBCDMOV R0,#bufferLCALL Display8RETENDEXTRN CODE (Display8)BUFFER DA TA 60HORG 0000HAJMP MAINORG 000BHAJMP IT0PMAIN: MOV TMOD,#01HMOV 20H,#20HCLR AMOV 52H,A ;计数和显示MOV 51H,A ;空间清零MOV 50H,#50HMOV 40H,AMOV 41H,AMOV 43H,AMOV 44H,AMOV 46H,AMOV 47H,ASETB ET0SETB EAMOV TH0,#9EH ;计数器赋初值MOV TL0,#58HSETB TR0MOV 45H,#11HMOV 42H,#11HMOV R0,#BUFFERLCALL Display8HERE: AJMP HEREIT0P: PUSH PSWPUSH ACCMOV TH0,#9EH ;重新转入计数值MOV TL0,#58HDJNZ 20H,RETURN ;计数不满20返回MOV 20H,#20H ;重置中断次数MOV A,#01H ;秒加1ADD A,50HDA A ;秒单元十进制调制PUSH ACCCJNE A,#60H,SWS ;是否到60秒, 否则返回MOV A,#00HSWS: MOV R5,ASW AP AANL A,#0FHMOV 41H,AMOV A,R5ANL A,#0FHMOV 40H,A ;满60秒, 秒单元清零LCALL AAAPOP ACCMOV 50H,ACJNE A,#60H,RETURNMOV 50H,#00HMOV A,#01H ;分单元加1ADD A,51H ;分单元十进制调整DA APUSH ACCCJNE A,#60H,SWS1;是否到60分, 否则返回MOV A,#00HSWS1: MOV R5,A·SW AP AANL A,#0FHMOV 44H,AMOV A,R5ANL A,#0FHMOV 43H,ALCALL AAAPOP ACCMOV 51H,ACJNE A,#60H,RETURNMOV 51H,#00H ;满60分, 分单元清零MOV A,#01H ;时单元加1ADD A,52HDA APUSH ACCCJNE A,#24H,SWS2 ;是否到24小时, 否则返回MOV A,#00HSWS2: MOV R5,ASW AP AANL A,#0FHMOV 47H,AMOV A,R5ANL A,#0FHMOV 46H,ALCALL AAAPOP ACCMOV 52H,ACJNE A,#24H,RETURNMOV 52H,#00H ;满24小时, 时单元清零RETURN:POP PSWPOP ACCRETIAAA: MOV R0,#40H ;计数器的值赋MOV R1,#60H ;给显示空间MOV R5,#08HABC: MOV A,@R0MOV @R1,AINC R1INC R0DJNZ R5,ABCMOV R0,#BUFFERLCALL Display8RETEND六、思考题1.电子钟走时精度与哪些有关系?中断程序中给TL0赋值为什么与初始化程序中不一样?2、使用定时器方式二, 重新编写程序。
单片机课程设计报告电子时钟姓名: 阳林霞专业: 电子信息工程班级: 电子信息一班学号: 1020610161指导老师: 朱兆优2012-12-23目录一、设计目的 (1)二、设计要求 (1)三、设计思路 (2)四、按键分配 (3)五、地址分配 (3)六、程序原理与流程图 (4)七、编写程序 (7)八、设计心得 (14)电子时钟的设计一、设计目的1、增进对单片机的感性认识,加深对单片机理论方面的理解。
2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。
3、了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础4、加深对本门课程所学理论知识的理解与应用,提高对所学理论知识的综合运用能力,对计算机控制系统有一个整体认识,掌握计算机控制系统的设计方法。
通过课程设计,还可以培养独立工作能力,为将来毕业设计打好基础。
二、设计要求1.用80C51单片机及接口电路设计一个电子计时器。
①系统硬件设计:根据任务要求,完成单片机最小系统及其组成功能完整的系统。
②系统软件设计:根据数字电子计时器功能,完成控制软件的编写与调试,并对数码显示进行控制。
2.实现的功能:①运行时,电子钟从00.00开始自动计时。
②设置校正按键,能对闹钟时、闹钟分、时、分进行调整。
③设置时间与当前闹钟值切换显示键,能对时间与当前闹钟切换显示。
④设置+1键,能对所要校正单元内容+1。
⑤设置确定/开关闹钟键3.显示要求:①在没有键的情况下,四个数码管显示正常走时时间且显示时的第二个数码管小数点每秒内亮半秒、灭半秒,其余三个数码管小数均不亮。
②当按下切换显示键时,数码管由显示时间变为显示当前闹钟值,这时小数点常亮。
在按下回到走时。
③按下校正键后,开始时为校闹钟时,再按一下校正键,跳至校闹钟分,再按一下则为校时,再按一下后为校分,再按一次就回到校月,依次循环,当校闹钟时,该校正单元内容在数码管上每秒内亮半秒、灭半秒,且第二个数码码小数点为常亮。
当为校时或校分时,该校正单元内容在数码管上每秒内亮半秒、灭半秒,第二个数码管小数点每秒内亮半秒、灭半秒。
④按下确定键后,不管前一种按键是哪一种均跳至显示正常走时状态。
⑤当时钟走到设定的闹钟值时,蜂鸣器会以30MS的周期响六秒(时间可以通过程序设定)⑥确定键有开启/关闭蜂鸣器功能,并以P3.3口接LED灯(低电平亮)作指示,当P3.3为低电平时,闹钟开启,反之则为关闭)。
三、设计思路利用MCS-51单片机内部的定时/计数器、中断系统、以及独立键盘和数码管等部件,设计一个单片机电子时钟。
设计的电子时钟通过数码管显示,并能通过按键实现设置时间、闹钟值以及两者切换显示等操控。
用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为0BDCH,形成1/16S定时时间。
中断服务程序中对1/16S定时中断次数计数,若到计到了16次,秒单元内容加1,否则执行判键,当秒单元内容加至60时,自动清0秒单元同时分单元内容加1,同理对时、闹钟时、闹钟分处理,分别用片内RAM分别存秒、分、时、闹钟分、闹钟时,然后根据按键信息选择要显示的单元。
显示时,当显示时间时,小数点每秒内亮半秒、灭半秒,因为2FH.3位0和1每半秒切换一次,故实现这个可以利用2FH.3来判断,当显示闹钟值时,这时小数点常亮。
对于校时或校分显示,当校正其中一个单元内容时,显示该单元内容每秒内亮半秒、灭半秒,且小数点也随之一起闪烁;当校闹钟时或闹钟分时,校正单元闪烁,但小数点为常亮。
以校正指针21H底2位:00为校月,01为校日,10为校时,11为校分,若校正指针21H.0为1时,则为校闹钟分或校分,故使后两个数码闪烁,反之则前两个数码管闪烁,同时以20H.1来区分是校闹钟还是校时来确定小数点是常亮还是闪烁。
以此来区分当前校正的单元为哪个单元。
显示判断与判键思路:1.时间/闹钟值显示标志位上电时标志位置1显示时间,切换时标志位为0显示闹钟值。
2.校正状态标志位(20H.1)标志位为0时正常走时,KEY3键无效。
3.标志位位1时KEY2、KEY3、KEY4有效,KEY1键无效。
四、按键分配1:k1键(P1.4):时间/闹钟值切换显示键2:K2键(P1.5):校正键3:K3键(P1.6):+1键4:K4键(P1.7):确定键以及开关闹钟蜂鸣器(四个按键均以低电平有效,且不要同时按下多个键)五、地址分配1.闹钟时单元:30H2.闹钟分单元:31H3.时单元:32H4.分单元:33H5.秒单元:34H6.1/16秒计数单元:2FH7.校正指针:21H低两位(00为校月、01日、10时、11分)8.时间/闹钟状态标志: 20H.0(低电平为显示日期,反之为显示闹钟值)9.校正/走时标志:20H.1(低电平时为走时,反之为校正)10.显示缓冲单元:3BH,3AH11.按键信息存放单元: 50H六、程序原理与流程图<1>原理图<2>流程图①主程序②中断程序七、编写程序ORG 0000HSJMP MAINORG 000BHLJMP IT0P ;T0中断入口ORG 0030HMAIN: MOV 50H,#0FFH ;按键信息存放单元(作用:长按按键只当按一次)MOV 30H,#0 ;定时闹钟时单元MOV 31H,#1 ;定时闹钟分单元,开始默认为一分钟闹钟MOV 32H,#0 ;时单元MOV 33H,#0 ;分单元MOV 34H,#0 ;秒单元MOV 2FH,#16 ;1/16秒计数单元(定时器为1/16秒中断溢出)CLR 20H.1 ;20H.1为0走时,为1校正SETB 20H.0 ;20H.0为0显示当前闹钟值,为1显示走时MOV TMOD,#01H ;T0工作于定时,方式1MOV TH0,#0BH ;赋定时器T0初值,定时1/16S=62500USMOV TL0,#0DCHMOV IE,#82H ;允许定时器T0中断SETB TR0 ;启动定时器T0//////////////////////////////////////;显示模块////////////////////////////////////////////////////DISP: MOV DPTR,#TAB ;取笔型码表始地址JB 20H.1,DISP1 ;校正?若是跳至校正显示MOV A,3BH ;不是校正,显示走时/闹钟值ANL A,#0F0H ;取时高位BCD码SW AP AMOVC A,@A+DPTR ;读时高位BCD码笔型码并通过P0口输出SETB P2.0 ;数据片选74LS573芯片使能输入有效CLR P2.1 ;位选片选74LS573芯片工作于锁存方式MOV P0,A ;送时高位笔型码输出显示SETB P2.1 ;片选573芯片工作CLR P2.0 ;573锁存时高位MOV P0,#0FEH ;只允许第一个数码管亮LCALL DELAY ;延时,调节动态显示效果MOV A,3BHANL A,#0FH ;取时低位MOVC A,@A+DPTR ;读时低位笔型码JNB 20H.0,LOOP1 ;显示当前闹钟值?若是,秒常亮JB 2FH.3,LOOP1 ;显示走时,秒闪;半秒到?SJMP NEXT1 ;半秒到,秒灭LOOP1: ORL A,#80H ;秒亮NEXT1: SETB P2.0CLR P2.1MOV P0,A ;送时低位笔型码输出显示SETB P2.1CLR P2.0MOV P0,#0FDH ;只允许第二个数码管亮LCALL DELAY ;延时,调节动态显示效果MOV A,3AHANL A,#0F0H ;取分高位SW AP AMOVC A,@A+DPTRSETB P2.0CLR P2.1MOV P0,A ;输出显示分高位值SETB P2.1CLR P2.0MOV P0,#0FBH ;只允许第三个数码管亮LCALL DELAY ;延时,调节动态显示效果MOV A,3AHANL A,#0FH ;取分低位MOVC A,@A+DPTRSETB P2.0CLR P2.1MOV P0,A ;输出显示分低位值SETB P2.1CLR P2.0MOV P0,#0F7H ;只允许第四个数码管亮LCALL DELAY ;延时,调节动态显示效果LJMP EXT ;显示闹钟模块///////////////////////////////////;校闹钟时或校时显示代码////////////////////////////////////////DISP1: JB 21H.0,LOOP2 ;校闹钟分或校分?不是,跳至闹钟分或校分MOV A,3BH ;校闹钟时或校时ANL A,#0F0H ;显示时高位SW AP AMOVC A,@A+DPTRJNB 2FH.3,LP2 ;半秒到?没,跳正常显示MOV A,#0 ;半秒到,时高位灭LP2: SETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0FEH ;只允许第一个数码管显示LCALL DELAYMOV A,3BHANL A,#0FHMOVC A,@A+DPTRJNB 2FH.3,LP3 ;半秒到?没,显示时低位MOV A,#0 ;半秒到,时低位送灭码LP3: JNB 21H.1,LOOP3 ;校闹钟时?是,跳校闹钟时JB 2FH.3,NEXT2 ;校时,半秒到?没,秒灭ORL A,#80H ;半秒到,秒亮SJMP NEXT2LOOP3: ORL A,#80H ;校闹钟时,秒亮(校闹时,秒常亮;校时,秒闪)NEXT2: S ETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0FDH ;只允许第二位数码管显示LCALL DELAYMOV A,3AHANL A,#0F0H ;取分高位SW AP AMOVC A,@A+DPTRSETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0FBH ;只允许第三位数码管显示LCALL DELAYMOV A,3AHANL A,#0FH ;取分低位MOVC A,@A+DPTRMOV P0,AMOV P2,#0F7H ;只允许第四位数码管显示LCALL DELAYLJMP EXT ;跳至闹钟模块/////////////////////////////;校闹钟分或校分显示代码////////////////////////////////////LOOP2: MOV A,3BH ;校闹分校分ANL A,#0F0H ;取时高位SW AP AMOVC A,@A+DPTRSETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0FEH ;只允许第一位数码管显示LCALL DELAYMOV A,3BHANL A,#0FH ;取时低位MOVC A,@A+DPTRJNB 21H.1,LOOP4 ;校闹钟分?跳校闹分JB 2FH.3,NEXT3 ;校分,半秒到?没,秒灭LOOP4: ORL A,#80H ;校闹分,秒亮(校闹钟分,秒常亮;校分,秒闪)NEXT3: S ETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0FDH ;只允许第二位数码管显示LCALL DELAYMOV A,3AHANL A,#0F0H ;取分高位SW AP AMOVC A,@A+DPTRJNB 2FH.3,LP4CLR ALP4: SETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0FBH ;只允许第三位数码管显示LCALL DELAYMOV A,3AHANL A,#0FH ;取分低位MOVC A,@A+DPTRJNB 2FH.3,LP5CLR ALP5: SETB P2.0CLR P2.1MOV P0,ASETB P2.1CLR P2.0MOV P0,#0F7H ;只允许第四位数码管显示LCALL DELAY////////////////////////////////////////闹钟模块//////////////////////////////////////////EXT: JB P3.3,LOP ;是否允许闹钟?低电平允许MOV A,32H ;开CJNE A,30H,LOP ;判断是否到闹钟时间?MOV A,33HCJNE A,31H,LOPMOV A,#6 ;到闹钟值,设定蜂鸣器开启时间(默认为6S)SUBB A,34H ;设定值-秒值,当C=0时,开启蜂鸣JC LOPLCALL BUZZER ;调用蜂鸣器子程序LOP: LJMP DISP ;反复执行显示模块与闹钟模块/////////////////////////////////////////;中断服务程序///////////////////////////////////////////IT0P: MOV TH0,#0BH ;T0重赋初值,定时1/16S=62500US MOV TL0,#0DCHDJNZ 2FH,KEY ;到了1秒?没有跳至判键MOV 2FH,#16 ;1秒到,重赋1/16秒计数单元初值MOV A,34HADD A,#1 ;秒+1DA A ;秒值十进制调整MOV 34H,A ;送回秒单元CJNE A,#60H,KEY ;到了60秒?没有跳至判键MOV 34H,#0 ;到了,秒清0MOV A,33HADD A,#1 ;分+1DA AMOV 33H,ACJNE A,#60H,KEY ;到了60分钟?没有跳至判键MOV 33H,#0 ;到了,分清0MOV A,32HADD A,#1 ;时+1DA AMOV 32H,ACJNE A,#24H,KEY ;到了24小时?没有跳至判键MOV 32H,#0 ;到了,时清0///////////////////////////////////////////;判键及键处理//////////////////////////////////KEY:JNB 20H.1,ZOUSHI ;是否为走时?若是,跳到走时LJMP JIAOSHI ;不是,跳到显示闹钟值ZOUSHI: M OV A,P1 ;读入按键信息ORL A,#0EH ;消除闹钟启动位影响CJNE A,50H,KEY1 ;有键按下?LJMP NONE1 ;无按下跳至走时显示KEY1: MOV 50H,A ;有按下,按键信息存至按键存储单元JNB ACC.4,SWITCH1 ;若时间/闹钟切换键按下,跳至切换显示代码JNB ACC.5,SET1 ;若校时键按下时,跳至校时代码JNB ACC.7,SURELJMP NONE1 ;按下的键无效,跳至执行走时显示SWITCH1:CPL 20H.0 ;时间/闹钟显示切换键按下,状态标志切换NONE1: JNB 20H.0,CLOCK1 ;时间/闹钟显示标志为0,跳转至显示闹钟MOV 3BH,32H ;为1,显示时间MOV 3AH,33HLJMP EXT1 ;显示CLOCK1:MOV 3BH,30H ;闹钟时传给显缓MOV 3AH,31H ;闹钟分传给显缓LJMP EXT1 ;显示SET1: SETB 20H.1 ;校正键按下,走时标志切换至校时MOV 21H,#0 ;初始化校正指针CLR 20H.0 ;标志为显示闹钟时间MOV 3BH,30H ;将闹钟值送至显缓MOV 3AH,31HLJMP EXT1JIAOSHI:MOV A,P1 ;读入按键信息ORL A,#0EHCJNE A,50H,KEY2 ;有键按下?LJMP NONE2 ;无键按下跳至走时显示KEY2: MOV 50H,A ;有按下,按键信息存至按键存储单元JNB ACC.5,SET2 ;校时键按下?JNB ACC.6,ADD2 ;若+1键按下?JNB ACC.7,SURE ;若确定键按下?LJMP NONE2 ;无效键处理SET2: INC 21H ;校时键按下,调整校正指针ANL 21H,#03H ;屏弊高六位,取低两位作为校正指针SJMP NONE2ADD2: MOV A,#30H ;将闹钟时单元地址取出ADD A,21H ;根据校正指针确定校正单元MOV R0,AMOV A,@R0 ;取校正单元内容ADD A,#1 ;校正单元内容+1DA A ;十进制调整MOV @R0,A ;经校正后传回CJNE R0,#30H,C_HOUR ;校闹时?CJNE @R0,#24H,NONE2;24小时未满,校正显示MOV @R0,#0 ;时初始化SJMP NONE2C_HOUR:CJNE R0,#31H,C_MIN ;校闹分?CJNE @R0,#60H,NONE2;60分钟未满跳,校正显示MOV @R0,#0 ;分初始化SJMP NONE2C_MIN: CJNE R0,#32H,MIN ;校时?CJNE @R0,#24H,NONE2;校时,24小时未满跳,校正显示MOV @R0,#0 ;时初始化SJMP NONE2 ;MIN: CJNE @R0,#60H,NONE2;校分,60分钟未满跳,校正显示MOV @R0,#0 ;分初始化SJMP NONE2SURE: CPL P3.3 ;开/关闹钟功能,低电平开CLR 20H.1 ;校正确定,显示时间SJMP TIME2NONE2: JNB 21H.1,CLOCK2 ;校闹钟?跳至显示闹钟值TIME2: SETB 20H.0 ;校时,显示走时MOV 3BH,32H ;时传给显缓MOV 3AH,33H ;分传给显缓LJMP EXT1CLOCK2:CLR 20H.0 ;显示闹钟值MOV 3BH,30HMOV 3AH,31HEXT1 : RETI ;中断退出////////////////////////////////////延时子程序///////////////////////////////////////// DELAY: MOV 40H,#10 ;3MS子程序DL: MOV 41H,#82HDJNZ 41H,$DJNZ 40H,DLRET/////////////////////////////////////蜂鸣器子程序/////////////////////////////////// BUZZER: CPL P1.0 ;闹钟子程序MOV 36H,#5 ;T=30ms方波B_LP: ACALL DELAYDJNZ 36H,B_LPRETTAB: DB 77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH; 0~9笔型码END八、设计心得本次课程设计是用80C51单片机、74LS64芯片及接口电路设计一个电子时钟,经过认真地编写程序以及调试程序,结果满足设计要求,验证无误。